ผมอ่านรายงาน benchmark มาสองสามที่ เรื่องหนึ่งที่แปลกใจคือภาษาจาวานั้นทำผลการทดสอบได้ในระดับดีเยี่ยมเสมอๆ เรียกว่าขี่ๆ กับ C/C++ กันเลยทีเดียว
เรื่องน่าแปลกใจคือ ในโลกความเป็นจริง ผมไม่ค่อยเจอโปรแกรมจาวาความเร็วเป็นที่น่าพอใจเท่าใหร่เลย แม้จะทำงานในเครื่องที่มีแรมให้สูบอย่างเหลือเฟือแล้วก็ตาม
ความเชื่ออย่างหนึ่งของผมในเรื่องนี้คือ ที่โปรแกรมจาวามันช้า เพราะน้อยคนจะเขียนให้มันเร็ว มันไม่ใช่เรื่องแปลกอะไรที่เราจะเห็นประโยคประมาณว่า “เพราะคอมพิวเตอร์ทุกวันนี้เร็วขึ้นมาก เราจึงสามารถ…” ในหนังสือจาวาระดับเริ่มต้นจำนวนมาก
โปรแกรมเมอร์จาวาจำนวนมากในโลก จึงถูกสอนการเขียนโปรแกรมมาด้วยความคิดพื้นฐานที่ว่าคอมพิวเตอร์นั้นเร็วเหลือเฟือ และสามารถหาเครื่องที่เร็วกว่า หากเราต้องการได้ไม่ยากนัก นี่อาจจะเป็นเหตุผลที่ว่าทำไมเราจึงไม่ค่อยเห็นโปรแกรมที่ทำความเร็วได้ดีในภาษาจาวากันเท่าใหร่
ปัญหาประมาณนี้ไม่ได้มีในจาวาอย่างเดียวเท่านั้น ก่อนหน้านี้ปรัชญาที่สร้างความปวดเศียรเวียนกล้าให้กับการทำงานก่อนหน้านี้คงเป็นภาษา Perl ที่สนับสนุนการใช้ Regular Expression อย่างสุดโต่ง แถมยังมีปรัชญาแนบท้ายว่า “There’s more than one way to do it.”
ผลที่ได้คือโค้ด Perl ที่ไม่ค่อยมีใครอ่านออกจำนวนมากในโลกทุกวันนี้
ผมเคยถกกับพี่คนหนึ่งที่เข้าใจว่าชอบ Perl พอควร ส่วนผมน่ะเกลียดมาก พี่คนนั้นยกประเด็นว่าเราสามารถเขียน Perl ให้อ่านง่ายๆ ได้ถ้าเราต้องการ แต่การสอน Regular Expression และการใช้ตัวแปร Global ตั้งแต่บทแรกๆ ก็ดูเหมือนจะไม่สนับสนุนให้ Perl มีโปรแกรมเมอร์ที่เน้นความอ่านง่ายของโปรแกรมกันเท่าใหร่ แต่เน้นว่าโปรแกรมสั้น ยิ่งสั้นจะดูยิ่งเจ๋งไปซะอย่างนั้น
Python สอนผมสองเรื่อง คือการ Refactoring ที่ให้ทำเสมอๆ เมื่อมันควรทำ ข้อนี้อาจจะเป็นหนังสือที่ผมอ่านเอง แต่โดยส่วนตัวแล้วผมก็ยังเชื่อว่าตัวภาษามีส่วนค่อนข้างมาก ไม่ว่าจะเป็นการบังคับใช้ self เมื่อต้องการใช้ตัวแปรในออปเจกต์ ไปจนถึงฟังก์ชั่น property ที่ทำให้เราสามารถประกาศตัวแปรในออปเจกต์ไปก่อน แล้วไปใส่ฟังก์ชั่น get/set เอาทีหลัง โดยไม่ต้องไปแก้จากภายนอก เรื่องที่สองคือแนวคิด battery included ของ Python ทำให้ผมเลิก reinvent the wheel ไปได้มาก ด้วยความที่เคยชินที่จะหาโมดูลที่ทำงานตามที่เราต้องการก่อน เมื่อไม่มีค่อยเขียนใหม่ แทนที่จะเป็นการเขียนเองเรื่อยๆ เหมือนเมื่อตอนเขียน C/C++ นิสัยพวกนี้อาจจะบอกได้ว่าเกิดขึ้นมา by design ของภาษากันเลยทีเดียว
หรือไม่จริง?