วันเสาร์ที่ ๒๓ มิถุนายน พ.ศ. ๒๕๕๐

ประวัติภาษา BASIC (BASIC Programming Language History)

มีคนถามผมบ่อยๆ ว่า VB6 กับ VB.NET มันต่างกันยังไง? ผมคิดว่ามันจำเป็นจะต้องรู้ประวัติศาสตร์ก่อน เพราะมันจะทำให้เรารู้ว่า ภาษามีพัฒนาการมาอย่างไร เริ่มต้นอย่างไร ปัจจุบันเป็นอย่างไร แล้วจะทำให้เราลุ่มลึกกับภาษาที่เราชอบมากขึ้น เริ่มกันที่จุดกำเนิดครับ

(ภาพ John George Kemeny ด้านขวา และ Thomas Eugene Kurtz ด้านซ้าย ผู้คิดค้นภาษา BASIC)

คำว่า BASIC ย่อมาจากคำว่า Beginner's All-purpose Symbolic Instruction Code ซึ่งถูกคิดค้นโดย John George Kemeny และ Thomas Eugene Kurtz ตอนนั้นทั้งคู่ทำงานที่ Dartmouth College ในอเมริกา เมื่อปี ค.ศ. 1963 (พ.ศ. 2506) โดยมีวัตถุประสงค์เพื่อให้นักศึกษาที่ไม่มีพื้นฐานคอมฯ หรือคณิตศาสตร์ ได้ใช้เพื่อสั่งงานคอมพิวเตอร์เมนเฟรม
(G.E.225) ได้ง่ายขึ้น โดยพัฒนามาจากภาษา FORTRAN II และภาษา ALGOL 60 รุ่นแรกของภาษาถูกเรียกว่า Dartmouth BASIC

กฎ 8 ข้อ ในการออกแบบตัวแปลภาษา BASIC ในยุคเริ่มต้น
1. ง่ายสำหรับผู้เริ่มต้นเขียนโปรแกรม
2. มีลักษณะภาษาแบบ general-purpose programming language หรือ domain-specific language ( DSL) เหมือนภาษา C
3. สามารถเพิ่มความสามารถขั้นสูง สำหรับผู้เชี่ยวชาญได้
4. ทำงานร่วมกันได้ (interactive)
5. มี error messages ที่เข้าใจง่าย ไม่เชิงเทคนิค
6. ต้องทำงานอย่างรวดเร็วกับโปรแกรมขนาดเล็ก
7. ผู้ใช้ไม่ต้องเข้าใจเรื่องอุปกรณ์คอมพิวเตอร์ (computer hardware)
8. ไม่ให้ผู้ใช้ติดต่อโดยตรงกับระบบปฏิบัติการ (operating system)

ในช่วงแรกตัวแปลภาษา BASIC ออกแบบเป็น Compiler ซึ่งเป็นที่นิยมอย่างแพร่หลาย ตั้งแต่ในโรงเรียนมัธยม ไปจนถึงโรงงานอุตสาหกรรม แต่ในปี 1968 Edsger W. Dijkstra ก็เผยแพร่วิธีการเขียนโปรแกรมอย่างเป็นระเบียบ ที่ถูกเรียกว่าการเขียนโปรแกรมแบบมีโครงสร้าง (Structured Programming) และพูดถึงการใช้คำสั่ง GOTO ในภาษา BASIC ว่าทำให้โครงสร้างโปรแกรมซับซ้อน ทำให้เกิดการปรับปรุงภาษาในช่วงหลังๆ

(ภาพ Bill Gates ในยุค 80 ที่บริษัท Micro-soft)

ในปี ค.ศ. 1975 หลังจากที่กำเนิด M.I.T.S.'s Altair personal computer เครื่องแรกได้ไม่นาน Bill Gates และ Paul Allen ก็ได้สร้างตัวแปลภาษา BASIC บน microcomputer สำเร็จและเจรจาร่วมค้ากับ MITS เป็นครั้งแรก ขณะนั้น Bill Gates ยังเรียนนิติศาสตร์อยู่ที่มหาวิทยาลัย Harvard และ Paul Allen ก็เป็นพนักงานอยู่ที่บริษัท Honeywell ที่จริงในปีเดียวกันนั้น Dennis Allison ได้สร้างตัวแปลภาษา BASIC ที่ชื่อ Tiny BASIC ที่คิดค้นโดย Dr. Li-Chen Wang บนเครื่องที่ใช้ CPU 8080 สำเร็จ โดยมี Bob Albrecht เป็นผู้กระตุ้นและสนับสนุนรวมทั้งช่วยเหลือ ซึ่งได้เผยแพร่วิธีการสร้างและให้ source code ในนิตยสารที่ต่อมาเปลี่ยนชื่อเป็น Dr. Dobb's Journal ซึ่งเป็นนิตยสารด้านการพัฒนาซอฟต์ที่โด่งดังทั่วโลก (และคนในวงการ com-sci ควรต้องรู้จักและเคยอ่าน - ผมไม่แน่ใจว่า คำาว่า Dobb จะเกิดจากชื่อของทั้งสองมารวมกันรึเปล่า Dennis + Bob) ณ เหตุการณ์นี้ สังเกตว่าความพยายามในการสร้างตัวแปลภาษา BASIC บน microcomputer ทำให้เกิดบุคคลสำคัญในวงการไอทีที่โด่งดังมากถึง 2 คนด้วยกัน คือ Bill Gates แห่ง Microsoft และ Bob Albrecht แห่ง Dr. Dobb's Journal และนี่อาจเป็นเหตุผลที่ microsoft จะยังคงผลิตตัวแปลภาษา BASIC อยู่ตราบใดที่ยังมี Bill Gates เพราะ Bill Gates สร้างเนื้อสร้างตัวมาจากภาษานี้นั้นเอง

หลังจากที่ทำสัญญาขาย BASIC ไปกับเครื่อง Altair แล้ว Bill Gates ก็ได้ เลิกเรียน แล้วมาตั้งบริษัท Micro-Soft และทำตัวแปลภาษา BASIC ขายในชื่อ Microsoft BASIC ไปยัง microcomputer แบบอื่นๆ และกลายเป็นภาษามาตรฐานบนเครื่อง Apple II จนปี 1979 บริษัท Microsoft ก็ได้งานจาก IBM ในการทำตัวแปลภาษา BASIC บน PC ในแบบ Interpreter (สมัยนั้นเริ่มนิยม Interpreter มากกว่า Compiler) ทำให้ในที่สุดภาษา BASIC ก็เป็นภาษามาตรฐานบน microcomputer ที่ทุกเครื่องต้องมี

ในปี 1981 BBC สถานีข่าวของอังกฤษได้ว่าจ้างให้บริษัท Acorn Computers ทำตัวแปลภาษา BASIC ในชื่อว่า BBC BASIC ซึ่งพัฒนามาจาก Atom BASIC ของบริษัท Acorn Computers เอง โดยเพิ่มความสามารถมากมาย เช่น การเข้าถึง OS และการนำตัวแปลภาษา Assembly มาทำร่วมด้วย เป็นต้น นอกจากนั้นนิตยสาร Creative Computing Magazine ก็ยังเผยแพร่ source code ที่เกี่ยวกับเกมส์และ utilities มากมาย

หลังจากที่ IBM-DOS/PC-DOS/MS-DOS ได้แพร่หลาย จากการเข้าทำตลาดของ IBM ทำให้มีการพัฒนาตัวแปลภาษา BASIC เพิ่มขึ้น เช่น Microsoft ผลิต BASICA, GW-BASIC, QuickBASIC ส่วน Borland ก็ผลิต Turbo BASIC ซึ่งพัฒนาเป็น PowerBASIC ทำให้ภาษา BASIC แข่งขันพัฒนากันไปอย่างมาก มีการเพิ่มความสามารถทางด้านการจัดการ string, ด้าน graphic, ด้านการจัดการ file และเพิ่ม data type ขึ้นอีก และที่สำคัญคือ การพัฒนาให้เป็น Structured Programming ซึ่งเป็นจุดที่โดนโจมตีมากที่สุด โดยการเพิ่มคำสั่งด้าน control structure, subroutine และตัวแปรแบบ local แต่ความนิยมในภาษา BASIC ก็ลดลงพร้อมกับความสำคัญของการเขียนโปรแกรม เพราะเครื่องสมัยใหม่มักจะมาพร้อมกับโปรแกรมสำเร็จรูป ที่ผู้ใช้ไม่จำเป็นต้องเขียนโปรแกรมอีกต่อไป

จนกระทั้งไมโครซอฟต์ได้ผลิตตัวแปลภาษาที่ชื่อว่า Visual Basic ในปี 1991 (พ.ศ.2534) ซึ่งทำให้ภาษา BASIC ได้รับความนิยมอีกครั้ง แต่รูปแบบภาษาก็เปลี่ยนไปอย่างมาก เช่น ไม่มี line number หรือคำสั่ง INPUT อีกเลย เพราะมีพื้นฐานบนแนวคิดแบบ object-based และ event-driven programming ซึ่งสมัยนั้นการใช้ระบบปฏิบัติการแบบมี GUI เช่น Windows กำลังได้รับความนิยมแพร่หลาย ในปีเดียวกันนั้นภาษา BASIC ก็ได้รับการบรรจุในมาตรฐาน ISO 10279-1991

บริษัทไมโครซอฟต์ได้ปรับปรุงตัวแปลภาษา Visual Basic เรื่อยมา พร้อมๆ กับระบบปฏิบัติการ Windows ที่เปลี่ยนไป จนปี 1997 Visual Basic 5.0 ก็เปิดตัวพร้อมทำงานกับ Windows 32bits เท่านั้น เช่น Windows95/98 ก็ได้รับความนิยมไปพร้อมๆ กับการขยายตัวของ Windows ระบบ GUI พัฒนาก้าวไกลอย่างมาก ด้วยความสามารถ ActiveX

ปี ค.ศ. 1998 Visual Basic 6 ก็ถูกพัฒนาให้มีความสามารถหลากหลายทั้งด้าน Graphic, Internet, Data Access(ODBC, OLE DB) และแนวทางการพัฒนาซอฟต์แวร์แบบ Component-based Programming รุ่นนี้ได้รับความนิยมมากที่สุด และกว่าจะปรับปรุงเป็นรุ่นถัดไปได้ก็ใช้เวลานานมาก ขณะที่ต้องขับเคี่ยวแข่งขันกับตัวแปลภาษา JAVA

ปี 2002 Visual Basic 7 หรือชื่อทางการตลาดคือ Visual Basic.NET หรือเรียกย่อๆ ว่า VB.NET ก็วางจำหน่าย แต่กลับประสบปัญหาในการจูงใจให้ผู้ใช้ VB6 หันมา upgrade เพราะโครงสร้าง .NET ตัวใหม่นั้น แตกต่างจากเดิมอย่างมาก เช่น Library, ลักษณะภาษาที่เป็น Hybrid Object-Oriented (เรียกได้ว่าลอก JAVA มาเลย) ซึ่งเป็นปัญหาต่อผู้ใช้ที่ไม่มีพื้นฐาน OO มาก่อน เวลาในการเรียนรู้นาน แต่ก็เป็นแนวทางที่จะต้องปรับปรุง เพราะโดนเปรียบเทียบกับภาษา JAVA เสมอว่า โครงสร้างไม่ดี และไม่เป็น OO ในปี ค.ศ.2003 ก็ออก VB.NET 2003 หรือ VB7.1 เพื่อปรับปรุงข้อบกพร่องบางส่วน

ในปี 2005 ทางไมโครซอฟต์ประกาศ .NET Framework 2.0 ซึ่งพัฒนา Visual Basic.NET 2005 หรือ VB8 มาด้วย ซึ่ง Visual Basic.net 2005 พัฒนาอะไรไปบ้าง จะขอกล่าวในอีกบทความนึงต่างหาก

ปัจจุบันตัวแปลภาษา BASIC ของบริษัทอื่นก็ยังมีให้เห็นบ้าง เช่น Bywater BASIC และ True BASIC ที่เป็นของบริษัทที่ John G. Kemeny และ Thomas E. Kurtz ผู้คิดค้น ได้ก่อตั้งมา (True BASIC มีเวอร์ชั่น ที่ทำงานได้หลายแพลตฟอร์ม เช่น DOS, Windows, Mac OS) หรือแม้กระทั่งในวงการ open-source ก็ยังมีการพัฒนาตัวแปลภาษานี้ เช่น MiniBASIC (interpreter) ซึ่งเขียนด้วยภาษา C

ดัชนีชื่อตัวแปลภาษา BASIC
Dartmouth BASIC - BASIC ตัวแรกของโลก

ฟรี
Bas BASIC Interpreter - Unix-based BASIC interpreter
Basic4GL - free BASIC compiler บน Windows พร้อม built-in OpenGL 1.1 มาด้วย สำหรับทำเกมส์ 3D หรือ 2D โดยเฉพาะ
Blassic -GNU GPL Basic interpreter รองรับ Windows และ Linux
Bywater BASIC Interpreter - GPL BASIC รองรับ DOS และ POSIX (Unix, Linux)
BCX BASIC Compiler - Open Source BASIC to C Converter รองรับ Windows
Chipmunk BASIC Interpreter - free BASIC interpreter บน Mac OS X หรือ PowerMac (รองรับทั้งบน Windows, Linux, Sun Sparc, HPUX/HPPA/IA64, PlamOS)
Envelop Basic Compiler - free BASIC ซึ่งเป็น
cloning ของ Visual Basic 3 มีความสามารถเรื่อง OO, ODBC, OLE2, MAPI เป็น RAD Tool รับรองเฉพาะ Windows
FreeBASIC - open source 32-bits BASIC compiler (LGPL) compatible กับ MS-QuickBASIC ซึ่ง support Windows, Dos, Linux
GNU/LibertyBasic - open source กำเนิดจาก LibertyBasic รองรับบน Windows และ Linux
GW-BASIC - ฟรี เล็ก, เหมาะสำหรับใช้ตามบ้าน
Just BASIC - ฟรี, support Windows
Microsoft Visual Basic 2005 Express Edition - Visual Baisc.NET รุ่นฟรี มี Tool พร้อม จาก Microsoft
MiniBASIC - open source เขียนด้วยภาษา C
Mole Basic - มาจาก Merty's Own Language Extension Basic รองรับ Linux, AIX, Sun และ BSD
Mono Visual Basic compiler - open source cross-platform (.NET) รองรับ Windows, Linux, Sun Sparc, S390, Strong/ARM
MoonRock compiler - ฟรี compiler คล้าย BASIC
ScriptBasic - Open Source GPL BASIC interpreter รันได้ทั้ง Windows, Unix มากมาย ใช้ภาษา C เขียน
SmallBASIC - Free BASIC for Unix, PalmOS. Runs on PalmOS, Linux, Win32 and DOS.
Win32 PS2 YaBasic Port - open source project ให้เกมส์บน PlayStation2 รันบน Windows ได้
wxBasic - open source BASIC interpreter มี library GUI ที่รันได้ทั้ง Windows และ Linux
XBASIC BASIC Compiler - free BASIC compiler เป็น IDE Tool รองรับ Windows และ Linux
XBLite - xbasic BASIC lite compiler - เป็น open source รองรับ Windows
Yabasic - free BASIC interpreter รองรับ Windows

ขาย
Atom BASIC - ของบริษัท Acorn Computers
BBC BASIC - ของสำนักข่าว BBC
BlitzBasic
Business BASIC
DarkBasic - ถูกสร้างใน ปี ค.ศ.1999 มีวัตถุประสงค์ในงานด้าน 3D
Liberty BASIC - commercial BASIC รองรับเฉพาะ Windows แต่ไม่รับรอง Windows Programming
MediaBASIC
Pick BASIC
PowerBASIC
QBasic and QuickBasic
Rapid-Q
REALBasic - commercial cross-platform BASIC, ทั้ง Windows, Unix และ Mac
Serial Basic - ลักษณะคล้าย BASIC ออกแบบมาสำหรับควบคุม RS232 (Serial Port) (Shareware)
True BASIC - ของบริษัทที่มีบิดาของ BASIC เป็นผู้ก่อตั้ง รองรับทั้ง MacOS, DOS, Windows
UniVerse BASIC
Visual Basic - ของบริษัท Microsoft ทำให้ BASIC ฟื้นมาอีกครั้ง ในยุค Windows ปัจจุบันเป็นเวอร์ชั่น .NET

แหล่งข้อมูล :
Wikipedia
Wikipedia Thai
DMOZ
The Encyclopedia of Computer Languages, Murdoch University.
thefreecountry
Chipmunk Basic for Mac OS

Related Post