Kotchasan PHP Framework

เทคนิคการเลือกภาษาสำหรับการเขียนโปรแกรม

ถ้าคุณเป็น end user สิ่งที่คุณทำได้เมื่อพบว่า แอพพลิเคชั่นที่ใช้งานอยู่มันช้า คือเปลี่ยนไปใช้แอพพลิเคชั่นอันใหม่ (หรือไม่ก็ซื้อคอมใหม่ มือถือใหม่)
แต่ถ้าคุณเป็นโปรแกรมเมอร์ แล้วแอปที่คุณทำมันช้า แล้วคุณไม่คิดจะแก้ไข อนาคตคงอดตาย
โค้ดในภาษาเดียวกัน เขียนโดยโปรแกรมเมอร์คนละคน ทำงานเหมือนกันทุกอย่าง ไม่มีทางที่จะมีประสิทธิภาพเท่ากัน
การ benchmark โค้ดเป็นสิ่งที่ควรทำ เพราะมันทำให้เรารู้ว่า เราควรจะปรับปรุงอะไร และสิ่งที่เราได้ลงมือทำก็จะเป็นองค์ความรู้ติดตัวเราไปจนตาย การเขียนโค้ดครั้งต่อไปเราก็จะสามารถทำได้อย่างมีประสิทธิภาพมากขึ้น โดยไม่จำเป็นต้องมาคอย benchmark ใหม่ตลอด


การเลือกภาษาก็เหมือนกัน มันขึ้นกับว่าคุณทำอะไร ให้กับใคร ถ้าคุณทำงานให้องค์กร คุณคงต้องเลือกภาษาให้เหมาะกับองค์กรนั้นๆ เช่น องค์กรใช้ ASP แต่ดันไปเขียน PHP ให้เขา ด้วยเหตุผลว่า PHP มีชุมชนหนาแน่นกว่า (หรือเหตุผลอะไรก็ตาม) มันคงไม่ใช่

ทำนองเดียวกัน หากคุณเลือกได้ คุณจะเขียน phyton หรือ จะเขียน C ดี หากคุณต้องเขียนโปรแกรมเพื่อติดต่อ Hardware ต่อให้ C เขียนยาวกว่า คุณก็ยังคงต้องเลือก C เพราะมันมีประสิทธิภาพมากกว่าภาษาอื่นที่เขียนสั้นกว่า ง่ายกว่า

จริงๆแล้ว ภาษาใหม่ๆที่เกิดขึ้น มันก็เกิดจากความขี้เกียจของ โปรแกรมเมอร์นี่แหละ เมื่อเขาพบว่าภาษาที่ใช้งานอยู่ (เช่น C) มันเขียนยาก เขียนเยอะ เขาก็เอามาปรับปรุงใหม่ให้เขียนสั้นลง ง่ายขึ้น ก็แค่นั้นเอง และในความเป็นจริงอีกเช่นกัน การเขียนภาษาที่มีประสิทธิภาพอยู่แล้วให้ง่ายขึ้นด้วยมันก็มีวิธีอยู่ เช่นการสร้าง libraly มาใช้งาน ก็ทำให้ลดการเขียนลงได้โข ยกตัวอย่างที่ใช้กันทุกเมื่อเชื่อวัน เช่น JQuery ซึ่งเราใช้กันจนนึกว่ามันคือภาษาไปแล้ว

เราจำเป็นต้องเรียนรู้ภาษาใหม่ หรือ เทคโนโลยีใหม่ๆมั้ย ตอบได้เลยว่า จำเป็น แต่เราไม่จำเป็นต้องไปศึกษาให้ละเอียดยิบก็ได้ เอาแค่พอรู้ว่ามันคืออะไร จะได้เอาไว้คุยกับคนอื่นได้รู้เรื่อง เช่น docker, GIT คืออะไร ใช้ทำอะไร วันนึงข้างหน้าเราอาจได้หยิบมาใช้ ยกตัวอย่างที่เจอคำถามบ่อยๆเช่น PHP get mac address รู้อยู่ว่า php ทำไม่ได้ แทนที่จะมัวไปวิ่งหาวิธี (หรือ config server ให้สามารถรันคำสั่งที่อาจเป็นอันตรายได้) ก็เขียนภาษา C แค่ไม่กี่บรรทัดสร้าง libraly ให้ PHP เรียกใช้มันซะเลยง่ายกว่าอีก แถมเขียนครั้งเดียวใช้ได้ตลอดชีพ และจริงๆแล้วการรู้หลายๆภาษาก็เป็นการเปิดโอกาศให้เราได้งานเพิ่มขึ้นด้วย

การเลือกภาษาขึ้นมาใช้งานจริงๆ (ในกรณีที่เลือกได้) ผมให้คะแนน 3 ข้อตามลำดับ
        
  1. ประสิทธิภาพ ผมเลือกข้อนี้เป็นอันดับแรกตลอดไม่ว่าจะทำอะไร เหตุผลที่ผมเลือก เพราะมันดีสำหรับ ลูกค้า 
  2.     
  3. ชุมชน แน่นอนว่าชุมชนอันแข็งแกร่งอาจช่วยเราแก้ปัญหาได้ แต่ผมเลือกข้อนี้เป็นข้อรอง เพราะส่วนตัว ผมจะเลือกใช้วิธีที่ผมถนัดมากกว่าการเลือกสอบถามเอาจากชุมชน หากเรามีความเข้าใจในตัวภาษาดีพอแล้ว เราแทบไม่จำเป็นต้องถามเลย ทุกปัญหามีทางออกมากกว่า 1 วิธีเสมอ (ถามมากบางทีงงกว่าเดิม เพราะแต่ละคนก็ให้เหตุผลตามประสบการณ์ของตัวเอง และจริงๆแล้ว ผมให้คะแนนการค้นหามากว่าคะแนนจากการสอบถาม)
  4.     
  5. อนาคต แน่นอนว่าเราคงไม่อยากเลือกใช้ภาษาที่รอวันตายครับ การที่ภาษาดูมีอนาคตสดใส ก็เป็นเครื่องการันตีว่า สิ่งที่เราพยายามที่จะศึกษาหรือใช้งานอยู่ เรายังทำมาหากินกับมันอีกได้นาน

วิธีทำงานให้ไว แถมมีประสิทธิภาพด้วย มีหลายวิธีครับ ผมยกตัวอย่างวิธีที่ผมใช้
1.วางกรอบการทำงานให้ตัวเอง (เช่นการทำ Framework ของตัวเองนี่แหละครับ) จริงๆการเขียน Framework ขึ้นมาไม่ได้มีจุดประสงค์เพื่อสร้าง Framework จริงๆหรอก แต่จุดประสงค์หลักคือการสร้างกรอบการทำงานให้ตัวเอง โดยการรวบรวมองค์ความรู้ที่มีมาจัดระเบียบเป็น Framework ซะ ซึ่งก็จะทำให้การทำงานครั้งต่อไปด้วย Framework ที่ออกแบบเองง่ายขึ้น เขียนโค้ดน้อยลง
2.เขียน libraly ก็ได้ ฟังก์ชั่นไหนใช้บ่อยๆ แถมถ้าเขียนด้วยภาษาหลักแล้วมันยาว ก็เขียนมันเป็นฟังก์ชั่นเก็บไว้ แล้วรวมกันเป็น libraly ส่วนตัวซะ เวลาจะใช้ก็อาจเขียนโค้ดเพียงแค่บรรทัดเดียวเพื่อเรียกใช้ จะไปเสียเวลาเขียนคำสั่งยาวๆไปทำไม
3.ศึกษาภาษาให้ถึงกึ๋น ข้อนี้สำคัญมาก (แต่มันอยู่เป็นข้อสุดท้าย เพราะมันเป็นสิ่งที่ผมทำตลอดจนเป็นนิสัยอยู่แล้ว) ถ้าเราใช้สิ่งที่เรารู้จริงๆและเข้าใจมันจริงๆ เราจะสามารถปรับปรุงแก้ไขมันได้ โดยไม่จำเป็นต้องเปลี่ยนภาษา หรือไปคอยวิ่งหา solution เพื่อแก้ปัญหา และหากเรารู้จักมันจริงๆ นอกจากจะแก้ปัญหาได้ทุกรื่องแล้ว ยังพ่วงด้วยการเขียนแบบมีประสิทธิภาพได้อีก