แน่นอน ภาษา Programming นะครับ ไม่ใช่ จีน ญี่ปุ่น อังกฤษ :P
ไปเจอคำถามนี้และคำตอบที่น่าสนใจมาก ว่าการเกลียดภาษาอื่นๆมักจะแบ่งเป็น 3 แบบ
เกลียด เพราะได้ยินข่าวลือแย่ๆมา เช่น
- “Ruby ช้า เขียนแล้วโค้ดสวยก็จริงแต่ทำงานช้าโคดๆ”
- “เขียน VB, C#, .NET แล้วโง่ เอะอะอะไรก็ลากแปะ”
- “Java ช้า”
- “C++ มีแต่ไดโนเสาร์เขียน”
พวกนี้ส่วนใหญ่พอได้ยินข่าวลือพวกนี้มาจาก forums หรือเว็บข่าว ก็มักจะฝังใจแล้วบอกต่อๆกัน แต่ก็ไม่เคยลองเอง และก็ไม่รู้ว่ามันไม่ดีตามที่บอกรึเปล่า
เกลียด เพราะใช้แล้วไม่พอใจ
พวกนี้เคยใช้จริง แล้วไม่พอใจจริง ซึ่งอาจเกิดจากสาเหตุ เช่น
- โดนหัวหน้า อาจารย์ เจ้านาย บังคับให้ทำ ซึ่งทำแล้วปรากฎว่าใช้แล้วได้ผลไม่ดี (อาจจะแบบว่าใช้อย่างอื่นแล้วเหมาะกว่า เช่น เคยเอา C++ ไปเขียน Web App) ก็เลยไม่ชอบ
- ใช้แล้วมัน “ไม่ใช่ว่ะ”
- ไม่ค่อยมีข้อมูลในการใช้เรียนรู้ หรือ learning curve ชันไป
เกลียด โดยหลักการ
ไม่ชอบลักษณะ / คุณสมบัติ บางอย่างของภาษา โดยอาจจะรู้สึกว่าภาษาหนึ่งดีกว่าอีกภาษา ตรงที่ … เช่น
- “ไม่ชอบ Java เพราะต้องทำงานบน JVM … มันไม่ถูกต้องนะ! เขียน C++ แล้วให้ compile เป็น native สิ!” -- คลั่ง C++
- “ไม่ชอบ C++ เพราะต้องมารับผิดชอบการเขียนให้มัน cross platform เอง ต้องมาเช็ค #ifdef เบื้อกอะไรตั้งมากมาย แล้วต้องมาเรียนรู้ platform-specific system calls เอง เฮ้อ” -- ผมเขียน Java
- “ไม่ชอบ Java เพราะ syntax มันช่างบุโรคั่งและยืดเยื้อ รวมถึงแคร์เรื่อง backward compatibility เหลือเกิน ไม่ Elegant เหมือนภาษาผมเอาซะเลย” -- ผมเขียน C#
ส่วนตัวผมมีประสบการณ์กับการไม่ชอบทั้ง 3 แบบ
แบบ 1 สมัยเด็กๆผมรู้สึกว่า VB 6 ดูดีมีอนาคตกว่า VC++ มากๆ เพราะแค่ new project ใหม่ก็ได้ Window เปล่าๆมาอันนึงแล้ว ส่วน VC++ ต้องเขียนโค้ดเองกว่า 80 บรรทัดกว่าจะได้หน้าต่างว่างๆมา ผมก็เลยไม่เข้าใจอย่างยิ่งว่าทำไมคนถึงยังชอบไปเขียน C++ กัน ประกอบกับเจอพวก C++ หัวแข็งมากมายใน forum ดังสมัยนั้น (thaidev.com) ซึ่งบางที task VC++ บางอย่างที่มาถามๆกันในเว็บบอร์ด ผม “Thinking in VB 6” พรืดเดียวก็ออกแล้ว ผมจึงไม่ชอบ C++ และเป็นผู้ ไม่สนับสนุน อย่างเป็นทางการ ตั้งแต่นั้น
ผมมาค้นพบอีกทีตอนหลังว่า มันใช้ในงานคนละประเภทกัน (จริงๆคนในบอร์ดเค้าก็พูดกันอยู่ปาวๆ แต่ด้วยความที่โลกของเราตอนนั้นมันแคบ ก็เลยไม่ค่อยเข้าใจ) แล้วไอ้ภาษาสุดวิเศษของผม เวลาจะทำอะไรระดับกลางๆ (ไม่ต้องถึงระดับลึกหรอกนะ) กับระบบ นี่นั่งเขียน Declare WinAPI กันอ้วกแตกเลยทีเดียว
แบบ 2 ผมเกลียด C บน Microcontroller มากๆครับ! เนื่องจากว่ามันเป็นภาษาที่ค่อนข้างพิกา… เอ้ย จำกัด ไม่สามารถใช้ประโยชน์ของ C ได้อย่างเต็มที่, call stack ก็มีขนาดจำกัด แล้วยังมี bahavior ที่คาดเดาไม่ได้อีกหลายอย่าง (ขนาดผมเขียน C แบบพื้นฐานมากๆแล้วนะ) ประกอบกับผมขาด resource (เวลา + ฮาร์ดแวร์ที่ใช้เบิร์นโปรแกรมลงบอร์ด) ทำให้สุดท้ายผลมันออกมาไม่ดี แล้วก็มีเรื่องไม่ดีมากตามมาอีกหลายอย่าง (เพื่อนสนิทรู้กัน - -‘’) ผมเลย “พาล” เกลียด C บน Micro แบบฝังใจไปเลยจนทุกวันนี้
เปรียบเทียบกับประสบการณ์เดียวกันบน Verilog (มันใช้งานละแบบกันน่ะ แค่เป็น hardware เหมือนกันเลยเอามาเทียบ) ผมประทับใจมากกก
แบบ 3 ถ้าจะมีคงเป็น PHP ซึ่งตอนนั้นผมขยับจาก ASP ไปเป็น ASP.NET พอดี สมัยนั้น ผมดูภาษามันแล้วรู้สึกว่าวิธีการ extends ภาษาด้วยการลง mod เพิ่มมันดูพิลึกๆ (มาก) แล้วก็ยังมีเรื่องต้อง compile คู่กับ MySQL lib ให้ตรงเวอร์ชันอีกไม่งั้นจะใช้ด้วยกันไม่ได้ ก็เลยไม่คิดจะศึกษาเพิ่มเติมนอกจากเขียนอะไรง่ายๆที่สมัยนั้นคนชอบเขียนกัน (Counter, Webboard, GuestBook) ซึ่งการไม่ศึกษา PHP ทำผมเสียโอกาสไปเยอะพอควร
เอาจริงๆผมไม่ค่อยเกลียดอะไรในระดับนี้เท่าไหร่นะ ด้วยเหตุผลที่ว่า ภาษาไหนที่มันไม่ดังผมก็จะไม่ค่อยสนใจ แล้วภาษาที่ดังขึ้นมาได้ก็แปลว่ามันผ่านกระบวนการ natural selection และมันโดนทดสอบด้วย “เวลา” มาระดับนึงแล้ว มันก็คงมีข้อดีของมันแหละ
ที่เห็นแล้วหงุดหงิดใจมากกว่าคือการเลือก tecnhology แล้วไม่ค่อยคำนึงความเป็นไปได้ + ความเหมาะสม ถ้าเป็นคนใกล้ตัวก็จะพยายามแนะนำและโน้มน้าว 555+ แต่ก็ยอมรับว่าบางทีเราก็ไม่ได้รู้ requirement เท่ากับเจ้าของงานเองก็อาจจะบอกอะไรไม่ได้มากเท่าเค้าเหมือนกัน
โดยสรุปคือ ไม่ว่าจะเป็นความเกลียดแบบไหน ล้วนแล้วแต่มีผลเสียทั้งสิ้น ถ้าเป็นไปได้ควรมองให้เห็นข้อดีข้อเสียของแต่ละอย่างมากกว่า (จบบลอกเหมือนนิทานอิสป)
Tags: language-agnostic