29 พฤษภาคม 2552

[027] Which language is right for me?

เขียนประสบการณ์ที่ใช้งานภาษาโปรแกรมต่างๆ มา ปกติหลัก ๆ จะใช้ PHP JavaScript ก็ลองมาสรุปเอาไว้ว่าที่ผ่านมาเจออะไรมาบ้าง และคิดว่าจะเอาไงต่อไป

  • PHP ใช้ทำเว็บมาตลอด 5 ปีเต็ม ตั้งแต่จับมา ชอบมากๆ เลยทำให้ใช้งานมาตลอด เชี่ยวชาญ แทบจะไม่มีอะไรที่ PHP ทำไม่ได้ ติดตั้งง่าย เซิร์ฟเวอร์ก็หาง่าย เป็นภาษาที่ออกแบบมาคล้ายๆ C/C++ ซึ่งส่วนตัวชอบโครงสร้างของภาษาคือ จะเขียนแบบ sturcture ก็ทำได้ หรือจะ OOP ก็ไม่มีปัญหา ผสมกันได้อย่างลงตัว แต่หลังๆ รู้สึกว่า PHP5 จะออกไปทาง OOP มากขึ้น เลยทำให้รู้สึกว่ามันแปลกๆ ไป แต่ก็เริ่มจะชินแล้ว คำสั่งไม่สั้นหรือยาวจนรับไม่ได้ ทำให้ source code ที่ออกมาอ่านไม่ลำบากจนเกินไปโดยเฉพาะคนที่ชอบ C -- ข้อด้อย -- ของ PHP ที่ใช้มาก็มี IDE มันไม่ค่อยสะดวกสบายมากนัก ที่เสียเงินก็แพงซะจน ไปใช้ของ Microsoft ดีกว่าไหม แต่จะว่าไปมันก็คงทำ IDE ที่ฉลาดๆ ยากเพราะมันเป็น untyped variable เลยทำให้จัดการ auto completed ไม่ดี แถมมีเรื่อง include อีก ฯลฯ อีกเรื่องคือ เมื่อเขียนแบบ OOP ขนาดใหญ่ๆ หรือต้องมีไฟล์ include ในการทำงานขนาดใหญ่ๆ แทนที่จะเร็วกลายเป็นช้าไป เพราะต้องมา compile ใหม่ทุกครั้ง --> ข่าวร้ายเว็บเซิร์ฟที่เปิดให้ใช้ PHP ส่วนใหญ่ไม่มี cache ถ้าเคยลองใช้ ADODB จะเข้าใจว่ามันเสีย overhead แค่ไหน ช่วงหลังๆ ลองมาใช้ PDO ดูก็ไม่เลว แถมเร็วด้วย และคงเป็นเรื่องปกติของ Opensource มันหามาตรฐานไม่เจอสักที ทำให้มันไม่เหมาะกับงานระดับ enterprise เอาซะเลย จะเอาไป connect กับชาวบ้านก็ไม่ค่อยสะดวกอย่างที่เครื่องมืออื่นๆ เขาเป็นกัน
  • JSP - Java บนเว็บ ผ่านมา 2 งาน งานแรกทำเป็น data adapter เพื่อใช้ติดต่อกับ flex อีกงานเนี่ยใช้เขียนโปรแกรมพวกฐานข้อมูล ส่วนตัวมันเป็นเครื่องมือที่มีพลังมาก แต่ก็ต้องใช้กับระบบที่มีพลัง(มหาศาล)ด้วยเช่นกัน เดี๋ยวนี้อะไรก็ Java ทำให้มันเยี่ยมมากกับการหาพวก jar ไฟล์มาใช้งาน ตัวอย่างเช่น ส่งอีเมลล์ อ่านเขียนพวกไฟล์ MSOffice ฯลฯ ถือว่าเป็นจุดแข็งของ Java ที่สามารถ reuse module ไม่ต้องมา compile ใหม่ สิ่งที่ประทับใจมากๆ คือ การใช้งาน OOP นั้นเยี่ยมมากครับ complie ทีเดียว เอาไปใช้ได้ไม่จำกัด แม้ class ที่ทำมีขนาดใหญ่มากๆ ก็ไม่เป็นอุปสรรคต่อประสิทธิภาพของโปรแกรม (ไม่ต้อง compile ทุกครั้งก่อนใช้) ดังนั้นถ้างานใหญ่ๆ Java ดีกว่าไหม? อีกเรื่องคือมาตรฐาน ไม่ต้่องห่วงว่าจะคุยกับคนอื่นไม่รู้เรื่อง เมื่อ 10 ปีที่แล้วที่เริ่มรู้จัก Java ต้องบอกว่ามันไม่เหมาะกับยุคนั้นมากๆ เพราะเครื่องช้า หน่วยความจำน้อย (JVM ยุคแรกๆ ไม่ค่อยดีเท่าไหร่ ยิ่งใช้หน่วยความจำยิ่งหาย สุดท้ายเปิด-ปิดใหม่) แต่ตอนนี้อะไรมันก็เปลี่ยนไป จากเครื่อง 100MHz -> 2000MHz เร็วกว่าสมัยก่อน 20-40 เท่า ตอนนี้ถ้าจะใช้โปรแกรมที่เขียนด้วย Java ไม่ค่อยไม่ต่างจากโปรแกรมที่เขียนด้วยภาษาอื่นๆ แล้วครับ -- ข้อด้อย -- มันไม่ใช่ภาษา dynamic ทำให้ผมเขียนแล้วอึดอัดมากๆ คำสั่งยาววววว ถึงแม้จะมี auto complete แต่ source code มันยาวเกิน 60 ตัวอักษร/บรรทัดเลย -_-" มันเป็น OOP 100% ดังนั้นอยากเขียนแบบ Structure ลืมไปได้เลย เซิร์ฟเวอร์หายาก มันทำงานได้ช้าถ้าเทียบกับ PHP ดังนั้นเครื่องต้องแรง RAM เยอะๆ การใช้ทรัพยากรในการเขียนโปรแกรม จะเขียนเสร็จแล้วทิ้งๆ ขว้างๆ ปล่อยไว้ ไม่ release ไม่ได้ ขืนทำแบบนั้น อย่าคิด GC จะช่วยท่านได้ ถ้าเขียน database ใช้งานเสร็จต้อง close เปิดไฟล์ต้องอย่าลืมปิด ฯลฯ ยกเว้นว่าจะเอาไปใช้ต่อใน Session ก็อีกเรื่อง มันจึงไม่ค่อยเหมาะกับคนสบายๆ สักเท่าไหร่ ไม่ใช่แนว ทำได้ เขียนได้ แต่รู้สึกขัดๆ
  • Ruby - ภาษา dynamic ที่กำลังฮิตเชียว เพิ่งลองไปจับๆ ดู ก็ถือว่าเป็นภาษาที่เอาข้อดีของภาษา OOP อื่นๆ มายำๆๆๆๆ และตัดความน่ารำคาญของคำสั่งยาวววว หดสั้นมากๆ เท่าที่ดูน่าจะดีครับ ถือว่าเป็นภาษาที่น่าสนใจอีกอัน รองรับ .NET ด้วย ผ่าน IronRuby ครับ -- ข้อด้อย -- บางทีคำสั่งสั้นเกินไปหรือเปล่า? อ่านทำความเข้าใจยากเหมือนกัน อาจจะเพราะมาแนวใหม่ เป็น untyped ลำบากตอนใช้ method น่ะ แถมทำให้เข้าใจโปรแกรมยากขึ้น (อันนี้ PHP ก็เป็น)
  • Python - ยังไม่ได้ลองเลย แต่เป็นภาษา dynamic ที่มาแรงมากๆ ครับ
  • VB6 - หลังจากที่ VB5 รุ่งและเร็วขึ้น Microsoft ก็เข็น VB6 ออกมา ช่วงนี้ถือเป็นเครื่องมือและภาษาที่สุดยอดมาก เพราะมันทำ Form ง่ายๆ จนถึงเรียกใช้ Win API ได้เลย เป็นภาษาที่เป็นทั้ง Structure และเขียนแบบ OOP ได้ (ลูกผสม) มี ActiveX จำนวนมากให้เลือกใช้ -- ข้อด้อย -- มันช้าครับ ถึงแม้จะเร็วกว่า VB5 แล้วก็เถอะ ดังนั้นถ้าคิดจะเอาไปเขียนพวก algorithm เขียนด้วย VC ดีกว่าแล้วเรียกผ่าน DLL เอา เป็นข้อจำกัดของภาษา basic มันเขียนติดต่อ hardware ได้น้อยมาก แถมงานพวก data structure ก็ไม่ค่อยเหมาะเท่าไหร่ เป็นรุ่นสุดท้ายที่ Microsoft จะเปลี่ยนเป็น .Net (สิ้นสุดกันที ไม่ว่าชาตินี้ชาติไหนนนนน) ถ้าคิดว่าจะเอา source code ไป complie ใน .Net บางทีเขียนใหม่เร็วกว่าครับ
  • ASP - เอา VB + JScript มาใช้บนเว็บ ลองดูแล้วรู้สึกว่ามันขาดๆ เกินๆ ยังไงไม่รู้ หลังจากที่ได้ลองจับทำให้รู้สึกถึงความไม่มั่นคงของรูปแบบการพัฒนาและใช้งานผลิตภัณฑ์ของ Microsoft เป็นช่วงที่ Microsoft กำลังจะเปลี่ยนเป็น .Net ครับ เพราะที่ผ่านมาผมคิดว่า ActiveX มันไปไม่รอด (ถ้าให้เทียบกับ Java การ reuse และความปลอดภัยสู้ไม่ได้เลย)
  • ASP.Net - ตั้งแต่พอมี .Net 2005 ตัวเองก็เลิกจับ Visual Studio ไปเลย รู้สึกว่า Microsoft เปลี่ยนแนวอีกแล้ว... นั้นแหละครับ VB6 ที่ร่ำเรียนมา 3 ปี โยนลงถังขยะทันที ช่วงนั้นเหมือนกับว่าพักรอดูว่า พอเปลี่ยนแนวเป็น .Net แล้วจะรอดไหม ตอนนี้ 2009 แล้ว รอดแหะ จะว่าไปเหมือนกับเอา Java มา build ใหม่ JVM --> .Net Framework ยังไงอย่างนั้นเลย ส่วนภาษาก็มี VB.Net ดูแล้วก็เอา VB6 มา upgrade ให้ใช้ OOP เต็มรูปแบบ รู้สึกว่าเสน่ห์ของ VB ที่เคยเจอมันหายไปเยอะเลย สำหรับ .Net ตัวที่น่าจะใจจะอยู่ C# ก็เพราะเหมือนกับเอา Java มาลบยี่ห้อ Sun เป็น Microsoft แทน จะว่าไป Sun ก็เคยฟ้อง Microsoft ที่เอา JVM ของตัวเองติดตั้งแทนของ Sun คราวนี้เลยทำของตัวเองซะเลย
ปัจจุบันกำลังลองเอา Visual Studio Express มาลองติดตั้งเพื่อใช้งาน C# และ SQL Server จริงๆ จัง หลังจากที่ห่างหายจาก Microsoft มาหลายปี ทำไมเหรอครับ
  • PHP มันชักจะเริ่มตันๆ แล้ว คนเป็นกันเกลื่อนเมือง ลำบากเหมือนกันกับการที่จะทำให้คนว่าจ้างรู้ว่าเราเป็นและทำได้แค่ไหน ตลาดเมืองไทย PHP เป็นตลาดล่างที่ราคาถูก เหมาะกับบริษัทห้างร้านที่ต้องการประหยัด งบน้อย (ทำให้จ้างเราถูกด้วย)
  • Java ก็ดีนะ แต่ไม่ใช่แนว ผ่านมา 6 เดือนชั่งใจอยู่นาน สุดท้ายของเลือกฝ่าย Microsoft ด้วยเหตุผลหลายประการเช่น กลุ่มลูกค้า นโยบายการพัฒนา ความมั่นคง (ปัจจุบัน Sun ก็เริ่มจะแย่ๆเหมือนกัน) ถึงแม้ว่ากลุ่มลูกค้าที่จะใช้บริการ จะยอมจ่ายหนัก เพราะส่วนมากเป็นลูกค้าระดับ Enterpise

เกี่ยวกับเจ้าของบล๊อก

รูปภาพของฉัน

เป็นโปรแกรมเมอร์ที่ฝันว่าจะได้นอนเกาพุงไปวัน ๆ จนพุงลดกลายเป็นเอว ได้เป็นบุคคลที่มีความสุขที่สุดในโลกจนคนอื่น ๆ อิจฉา