สับสน … ชื่อภาษาโปรแกรม?

ช่วงนี้ตรวจข้อสอบเด็กเยอะแยะ ตาลาย ไม่พอ ยังไม่วายเข้าไปดูตาม webboard หลายที่ …​ ก็เจอเรื่องที่คาใจมาน้านนาน คือ มักที่จะเจอคนเรียก IDE หรือ Editor ปนกับชื่อภาษาโปรแกรม โดยเฉพพาะเมื่อตัว IDE นั้นๆ มันดันมีชื่อภาษาปนอยู่ด้วย เช่น

  • ภาษา Turbo C
  • ภาษา Dev-C++
  • ภาษา Visual C++
  • ภาษา RadRails
  • ยังมีอีก ฯลฯ

ซึ่งอ่านไปอ่านมาก็ตลกดี คิดในบางแง่มันก็อาจจะ make sense เนื่องจาก

  • ภาษาหลายภาษา (เช่น C, C++) เป็นเพียงแค่ข้อตกลง ข้อกำหนด เท่านั้น บางอย่างก็จะเป็น vendor-specific โดยเฉพาะในจุดที่ไม่นิยามในตัวข้อกำหนดมาตรฐานจริงๆ (undefined by standard) ซึ่งจะทำให้ภาษาเหล่านี้แตกต่างกันไปตาม vendor
  • Vendor หลายเจ้า โดยเฉพาะ Microsoft มักจะมีปัญหาประจำแหละ เรื่องนี้ คือไม่ได้ implement C++ ของตัวเองตามมาตรฐานของ C++ เสียทีเดียว อะไรหลายๆ อย่างที่มันถูกต้องตาม standard C++ ก็ไม่ถูกใน C++ ของ Microsoft
  • บางทีมันก็เป็นเรื่องของ library ด้วย คือ vendor หลายเจ้ามักจะ implement อะไรหลายๆ อย่างเพิ่มเข้าไปจากที่จำเป็นต้องมีอยู่แล้วใน standard library (ถ้าเป็น C ล่ะก็ ตัวยอดนิยมคงจะไม่พ้น itoa() ใน stdlib.h กระมัง)

แต่ว่ายังไงๆ ก็ตาม เราก็น่าจะเรียกตามชื่อ vendor ของมันมากกว่าจะเรียกตามชื่อ IDE ไม่ชื่อหรือ ไอ้พวก “ภาษา ​Turbo C” นี่คงไม่เท่าไหร่ เพราะว่า implementation ของ C ตามแบบนั้น คงจะไม่มีคนทำ IDE ขี้นมาใช้นอกจาก Turbo C เอง (แต่ว่าก็ไม่แน่ เพราะว่าจริงๆ ก็สามารถทำ modern IDE ขึ้นมาเรียกการทำงานของส่วน compiler ใน Turbo C ก็ได้)จริงๆ แล้ว Borland ก็มี compiler สำหรับ Windows นะ ให้ใช้งานได้ฟรีๆ นะ แต่ว่าเป็น command line ซึ่งจำเป็นต้องหา IDE มาครอบใช้งานเอง (เช่น JFE หรือ CPad ผมเคยใช้แต่ตัวหลัง ตัวแรกลองแล้วไม่ค่อยชอบ) โดยสำหรับตัว compiler ตัวนี้ผมเข้าใจว่าตัวนี้เป็น compiler ตัวเดียวกับที่ใช้ใน C++ Builder แต่ว่าไม่แน่ใจ เพราะว่าไม่มี C++ Builder แต่ว่านั่นแหละ ถ้าเป็นตัวเดียวกันจริง ก็จะมีคนเรียกมันว่า “ภาษา C++ Builder” แทนที่จะเป็น “ภาษา C++ ของ Borland” (Borland’s implementation of C++)เช่นเดียวกับการเรียก “ภาษา Visual C++” แทนการเรียก “ภาษา C++ ของ Microsoft” (Microsoft’s implementation of C++)แต่ว่าเจ้า “ภาษา Dev-C++” นี่สิ เรื่องใหญ่ ทั้งๆ ที่เรียกใช้งาน GNU GCC ซึ่งเป็น GNU’s implementation of C/C++ นะ … Misleading มากเลย