ตั้งแต่ชาร์ลส แบบเบจ (Charles
Babbage) สร้างเครื่องหาผลต่างในปี 1822 นั้น เราก็ต้องการเครื่องมือที่สามารถสั่งงานคอมพิวเตอร์ให้ทำงานเฉพาะต่างๆได้
เครื่องมือนี้ก็คือภาษาสำหรับเขียนโปรแกรมคอมพิวเตอร์นั่นเอง
ภาษาเขียนสำหรับเขียนโปรแกรมหรือภาษาคอมพิวเตอร์ยุคแรก ประกอบด้วยชุดของขั้นตอนสลับสายซึ่งเป็นการสั่งให้ปิดเปิดวงจรตามที่โปรแกรมไว้
ภาษาคอมพิวเตอร์สมัยนั้นจึงแตกต่างกันตามสถาปัตยกรรมของเครื่อง
ต่อมามีการปรับปรุงให้มีความสามารถมากขึ้น มนุษย์เข้าใจได้มากขึ้น
ทั้งนี้เพื่ออำนวยความสะดวกในการเขียนโปรแกรมและพัฒนาให้ก้าวทันสมรรถนะทางด้านฮาร์ดแวร์นั่นเอง
เครื่องหาผลต่างของแบบเบจสามารถทำการคำนวณด้วยการเปลี่ยนฟันเฟืองให้เหมาะสมกับโจทย์
ดังนั้นภาษาคอมพิวตอร์ที่เก่าแก่ที่สุดจึงเป็นการเคลื่อนไหวเปลี่ยนแปลงทางกายภาพ
จนกระทั่งคอมพิวเตอร์ได้ถูกพัฒนามาใช้สัญญาณไฟฟ้าแทนเครื่องจักรกล
เช่นเครื่องอินิแอค ENIAC ในปี 1942 และอีกหลายเครื่องที่ถูกสร้างขึ้นมาตามแนวคิดการโปรแกรมของแบบเบจ
ด้วยการเปลี่ยนการตั้งค่าสวิตซ์วงจรใหม่และสับสายไฟใหม่เมื่อต้องการคำนวณตามโปรแกรมใหม่
ในปี 1945 จอห์น
วอน นอยแมนน (John Von Neumann) ซึ่งตอนนั้นเป็นอาจารย์อยู่ที่สถาบันเพื่อการศึกษาขึ้นสูง
เขาได้พัฒนาสองแนวคิดสำคัญที่มีผลโดยตรงต่อแนวทางของภาษาคอมพิวเตอร์
แนวคิดแรกคือ วิธีการที่คอมพิวเตอร์สามารถใช้โปรแกรมร่วมกันได้
(shared-program technique) ซึ่งฮาร์ดแวร์คอมพิวเตอร์ควรจะง่าย
ไม่ซับซ้อน และไม่ควรมีการสลับวงจรด้วยมือ คำสั่งที่ควบคุมฮาร์ดแวร์ควรมีการสร้างไว้เพื่อต่างหากเฉพาะเพื่อความรวดเร็ว
แนวคิดที่สองสำคัญมากต่อการพัฒนาภาษาคอมพิวเตอร์
นอยแมนน์เรียกแนวคิดนี้ว่า เงื่อนไขควบคุมการถ่ายโอน (conditional
control transfer, การถ่ายโอนคำสั่งของโปรแกรมหรือค่าของข้อมูลที่ใช้ภายในโปรแกรม)
ต่อมาแนวคิดนี้ทำให้เกิดการสร้างโปรแกรมย่อยสำหรับงานที่ต้องทำบ่อย
ๆ ไว้เพื่อเรียกใช้งานได้ในภายหลังโดยไม่ต้องสร้างส่วนของโปรแกรมนั้นใหม่
โปรแกรมย่อยนี้เราเรียกว่า subroutine นั่นหมายความว่าชุดคำสั่งโปรแกรมอาจจะไม่เรียงไปตามลำดับ
สามารถข้ามไปทำงานตามชุดคำสั่งย่อย และกลับมาทำงานเดิมที่เหลือ
โดยมีเงื่อนไขในการควบคุมการข้าม เช่นชุดคำสั่งเงื่อนไข ถ้า
(เงื่อนไข) แล้ว ... , การใช้คำสั่งวนซ้ำด้วยชุดคำสั่ง FOR,
หรือแม้แต่ชุดคำสั่งย่อยในการทำงานเฉพาะงานจะถูกสร้างและเก็บไว้ใน
libraries เพื่อให้สามารถเรียกใช้ได้อีกอย่างไม่จำกัด
ในปี 1949 ภาษาที่ชื่อว่า Short
Code (รหัสสั้น ๆ) ซึ่งเป็นภาษาคอมพิวเตอร์ภาษาแรกสำหรับคอมพิวเตอร์อิเล็กทรอนิกส์
โดยผู้เขียนโปรแกรมต้องเขียนชุดคำสั่งที่ประกอบด้วย 0 กับ
1 เอง ถือเป็นขั้นเริ่มต้นของการมีภาษาที่ซับซ้อนเช่นทุกวันนี้
ในปี 1951 เกรซ ฮอปเปอร์ (Grace
Hopper) ได้สร้างตัวแปลภาษาซึ่งทำการรวบรวม (compile)
คำสั่ง ข้อมูล และชุดคำสั่งย่อยที่ถูกเรียกใช้มาทำการแปลงไปเป็นภาษาเครื่อง
(0 กับ 1) ที่คอมพิวเตอร์เข้าใจ นั่นเป็นจุดเริ่มต้นที่ทำให้นักเขียนโปรแกรมเขียนโปรแกรมได้เร็วขึ้น
เนื่องจากไม่ต้องเขียนรหัส 0 กับ 1 เอง
ปี 1957 ภาษาคอมพิวเตอร์หลักภาษาแรกได้ถูกพัฒนาขึ้น
คือ ภาษาฟอร์แทรน (FORTRAN
: FORmula TRANslating) โดยบริษัทไอบีเอ็มเพื่อการคำนวณทางวิทยาศาสตร์
ภาษานี้มีส่วนประกอบไม่ซับซ้อนและทำให้นักเขียนโปรแกรมไม่ต้องยุ่งเกี่ยวกับฮาร์ดแวร์ของคอมพิวเตอร์
ปัจจุบันภาษาฟอร์แทรนไม่ได้รับความนิยมแล้ว เนื่องจากมีเพียงคำสั่ง
IF (ตรวจสอบเงื่อนไข ถ้าเป็นจริงให้ทำอะไร ถ้าเป็นเท็จให้ทำอะไร)
, DO (คำสั่งให้ทำซ้ำตามเงื่อนไขที่กำหนด) , GOTO (ข้ามไปทำตามคำสั่งตามตำแหน่งที่กำหนด)
แต่สำหรับสมัยนั้นแล้ว ถือว่าภาษานี้มีความสามารถและเตรียมความก้าวหน้าสำหรับภาษาคอมพิวเตอร์มาก
ข้อมูลที่ภาษาฟอร์แทรนสามารถนำไปประมวลผลได้คือ ข้อมูลตรรกะ
(เป็นจริง หรือเท็จ อย่างใดอย่างหนึ่ง) จำนวนเต็ม (integer)
จำนวนจริง (real) และจำนวนที่มีความแม่นยำของจุดทศนิยมสูง
(double precision number)
ภาษาฟอร์แทรนจัดการกับตัวเลขได้ดี
เน้นการคำนวณ แต่ไม่เหมาะกับการจัดการการนำข้อมูลเข้าและการแสดงผลการทำงาน
ซึ่งการคำนวณงานทางธุรกิจต้องคำนึงถึงส่วนนี้ จึงมีการพัฒนาภาษาโคบอล
(COBOL) ขึ้นสำเร็จในปี ค.ศ. 1959 โดยกลุ่มนักพัฒนาภาษาคอมพิวเตอร็สำหรับธุรกิจโดยเฉพาะ
ข้อมูลของภาษาโคบอลเป็นจำนวนและชุดตัวอักษรของข้อความ ข้อมูลเหล่านี้สามารถถูกรวมเป็นกลุ่มรายการ
(array และ record) ดังนั้นจึงสามารถติดตามและจัดการกับข้อมูล
เช่น เรียงลำดับ หาค่าทางสถิติที่จำเป็นต่อการทำธุรกิจจากข้อมูลได้
แต่ที่น่าสนใจกว่านั้นคือ ภาษาโคบอลมีไวยากรณ์หรือกฎการเขียนคำสั่งคล้ายภาษาอังกฤษ
เพื่อให้เหมาะกับกลุ่มเป้าหมายซึ่งทำงานด้านธุรกิจ ทำให้ค่อนข้างง่ายต่อการเรียนรู้
ปี
1958 จอห์น แมคคาร์ที ได้สร้างภาษาลิสพ์ LISP (List
Processing) ภาลิสพ์นี้ถูกพัฒนาขึ้นเพื่อเขียนโปรแกรมด้านปัญญาประดิษฐ์
(artificial intelligent program) ซึ่งมีคุณลักษณะเฉพาะ แตกต่างจากภาษาอื่น
คือข้อมูลเป็นเพียงรายการ (list)เท่านั้น รายการนี้เป็นชุดลำดับของข้อมูลในเครื่องหมายวงเล็บ
ข้อมูลแต่ละตัวถูกแยกด้วยเครื่องหมายจุลภาค ไวยากรณ์ของภาษาลิสพ์เป็นชุดของรายการ
เช่น
OR(x,y) เป็นคำสั่งหาค่าความจริงของ ประพจน์ x or y
ปัจจุบันยังมีผู้ใช้ภาษาลิสพ์อยู่เนื่องจากความสามาถเฉพาะทางสูง
ภาษาอัลกอล (Algo) ถูกพัฒนาขึ้นเมื่อปี
1958 ภาษานี้ถือเป็นรากฐานของการสร้างภาษาหลัก ๆ หลายภาษาคือภาษาซี
(C) ภาษาปาสคาล (Pascal) ภาษาซี ++ (C++) และภาษาจาวา (Java)
นอกจากนี้ภาษาอัลกอลยังป็นภาษาแรกที่มีไวยากรณ์อย่างเป็นแบบแผน
(formal grammar, ไวยากรณ์ของอัลกอลอยู่ในรูปแบบ Backus-Naur
Form: BNF) แนวคิดใหม่ของภาษานี้คือการใช้ฟังก์ชันที่สามารถเรียกตัวเองซ้ำ
(recursive) ภาษาอัลกอลได้ถูกพัฒนาให้มีความสามารถมากขึ้น
เป็นอัลกอล 68 แต่ไม่เป็นที่นิยมเพราะยุ่งยากเกินไป นักเขียนโปรแกรมหันไปนิยมภาษาที่มีความกะทัดรัด
เขียนง่าย อย่างเช่นภาษาปาสคาล
ภาษาปาสคาล
(Pascal) ถูกพัฒนาโดยนิเคลาส์ เวิร์ธ (Niklaus Wirth)
ในปี 1968 ตั้งชื่อเพื่อเป็นเกียรติแก่ Bliase Pascal ภาษาปาสคาลสำหรับใช้เป็นภาษาสำหรับการเรียนการสอน
เนื่องจากตอนเริ่มต้นนั้น ผู้พัฒนาได้ออกแบบเครื่องมือประกอบต่างๆให้เหมาะกับการนำไปใช้สอนเขียนโปรแกรมเช่น
เครื่องมือหาข้อผิดพลาดของโปรแกรม (debugger) และระบบการอำนวยความสะดวกในการเขียนโปรแกรม
และเพื่อให้เหมาะสมกับสมรรถนะของคอมพิวเตอร์ที่ใช้สอนในสมัยนั้น
การออกแบบภาษาปาสคาลนั้นได้รวมเอาความสามารถของภาษาต่าง ๆ
ก่อนหน้านี้เข้าด้วยกันคือภาษาโคบอล ฟอร์แทรน และอัลกอล จึงต้องมีการปรับปรุงใหม่ให้เหมาะสม
การที่ภาษาปาสคาลมีระบบอินพุต เอาท์พุตที่ดีและมีความสามารถในการคำนวณทางคณิตศาสตร์สูงจึงทำให้ภาษานี้ได้รับความนิยมสูงตามไปด้วย
นอกจากนี้ยังมีความสามารถเพิ่มเติมคือการใช้ข้อมูลประเภทดัชนี
(pointer ,ข้อมูลประเภทนี้นอกจากจะเก็บข้อมูลของตนแล้ว ยังมีส่วนที่ชี้เชื่อมโยงไปยังข้อมูลตัวที่อยู่ถัดไป)
ซึ่งมีความยืดหยุ่นสูง และมีคำสั่งเพิ่มเติมอีกคือคำสั่ง CASE
ที่สามารถเปรียบเทียบและทำตามคำสั่งเงื่อนไขหลาย ๆ เงื่อนไข
แตกออกเหมือนเกิ่งของต้นไม้ เช่น
CASE expression OF
possible-expression-value-1:
statements
to execute...
possible-expression-value-2:
statements
to execute...
END
ภาษาปาสคาลมีความสามารถใช้ตัวแปรแบบพลวัติ(dynamic
variable) ซึ่งตัวแปรคือพื้นที่หน่วยความจำที่บรรจุข้อมูลอยู่
ในการเขียนโปรแกรมจะมีชื่อตัวแปรเพื่ออ้างอิงถึงตำแหน่งของข้อมูลในหน่วยความจำ
(ก่อนหน้านี้การใช้ตัวแปรเป็นแบบคงที่ (static) ต้องมีการบอกไว้ตอนต้นของโปรแกรมเพื่อเป็นการจับจองพื้นที่หน่วยความจำนั้นไว้
และหน่วยความจำส่วนที่ถูกจองนี้จะไม่สามารถใช้งานโดยโปรแกรมอื่นหรือตัวแปรอื่นได้อีก
จนกว่าจะโปรแกรมจะจบการทำงาน ซึ่งเป็นข้อเสียเนื่องจากหน่วยความจำหลักนั้นมีจำกัด)
การใช้ตัวแปรแบบพลวัติเป็นการสร้างตัวแปรขณะที่โปรแกรมกำลังทำงานอยู่ได้
และละทิ้งตัวแปรหรือคืนหน่วยความจำให้กับระบบด้วยคำสั่ง NEW
และ DISPOSE ตามลำดับ อย่างไรก็ตาม ภาษาปาสคาลก็ไม่มีความสามารถในการทำข้อมูลชนิดกลุ่มของตัวแปร
(array) ให้เป็นแบบพลวัติได้ ต่อมาเวิร์ธได้พัฒนาภาษา Modula-2
ต่อยอดจากภาษาปาสคาล ได้ไม่ได้รับความนิยมมากนัก เนื่องจากมีภาษาซี
(C) เกิดขึ้นและได้รับความนิยมอย่างรวดเร็ว
ภาษาซี (C) ได้รับการพัฒนาขึ้นเมื่อปี
1972 โดยเดนนิส ริทชี (Dennis
Ritchie) ขณะที่เขาทำงานอยู่ในศูนย์วิจัยปฏิบัติการเบล
(Bell Labs) ที่รัฐนิวเจอร์ซี มีการเปลี่ยนแปลงครั้งใหญ่จากการที่ภาษาคอมพิวเตอร์หลักของโลกได้เปลี่ยนจากภาษาปาสคาลเป็นภาษาซี
ภาษาซีถูกพัฒนามาจากภาษา B และภาษา BCPL แต่มีความล้ายคลึงกับภาษาปาสคาล
ทุกความสามารถที่ภาษาปาสคาลมี ภาษาซีก็มีด้วย และมีความสามารถมากกว่าในการใช้ตัวแปรแบบดัชนี
มีความเร็วเนื่องจากใกล้เคียงกับภาษาระดับต่ำมากกว่า และแก้ไขข้อผิดพลาดของภาษาปาสคาล
นักเขียนโปรแกรมปาสคาลจึงหันมาใช้ภาษาซี
ริทชีพัฒนาภาษาซีสำหรับระบบปฏิบัติการยูนิกซ์ซึ่งกำบังได้รับการพัฒนาอยู่ในตอนนั้น
ดังนั้นทั้งภาษาซีและระบบปฏิบัติการยูนิกซ์จึงได้รับการพัฒราควบคู่สนับสนุนซึ่งกันและกัน
โดยระบบปฏิบัติการยูนิกซ์ได้เตรียมความสามารถด้านตัวแปรพลวัติ
การทำหลายงานพร้อมกัน (multitasking) การจัดการกับการถูกขัดจังหวะโดยโปรแกรมอื่น
(interrupt handling) เป็นต้น ดังนั้นภาษาซีจึงสามารถทำงาน
สื่อสารกับระบบปฏิบัติการได้ดี แม้แต่ระบบปฏิบัติการวินโดวส์
แมค (MacOS) และลีนุกซ์
ตอนปลายทศวรรษที่
1970 และต้นทศวรรษ 1980 ได้มีแนวการเขียนโปรแกรมแบบใหม่ถูกพัฒนาขึ้น
นั่นคือแนวคิดการเขียนโปรแกรมเชิงวัตถุ (Object Oriented
Programming หรือ OOP) โดยมองข้อมูลเสมือนเป็นวัตถุ
ซึ่งมีคุณสมบัติของตนเอง และมีการระบุประเภท (class) ดังนั้นจึงมีความสามารถในการถ่ายทอดคุณสมบัติไปสู่ประเภทย่อย
(subclass) ได้ ซึ่งภาษาซีได้ถูกพัฒนาต่อให้มีความสามารถทางด้าน
OOP และได้รับการตั้งชื่อว่าภาษา C++ เผยแพร่ให้ใช้ในปี
1983
ภาษา C ++ ใช้ความสามารถของภาษาซีจัดการกับข้อมูลเชิงวัตถุ
คงความเร็วและความสามารถในการทำงานบนเครื่องคอมพิวเตอร์แบบต่าง
ๆ ได้ นักเขียนโปรแกรมนิยมใช้ภาษาซี++ เขียนโปรแกรมจำลองสถานการณ์
(simulation) เช่น เกม เนื่องจากวัตถุที่ถูกจัดการนี้สามารถแทนอะไรก็ได้
และได้จำนวนมาก เช่นแทนนักรบเป็นร้อย ๆ คนในเกม นักรบแต่ละคนจะถือว่าเป็นวัตถุหนึ่งซึ่งอยู่ในประเภท
(class) นักรบ แต่นักรบแต่ละคนก็มีความแตกต่างกันเช่น เครื่องแต่งตัว
อาวุธ การเคลื่อนไหว การปรากฏของนักรบในขณะนั้น เป็นต้น
ในต้นทศวรรษ
1990 โทรทัศน์แบบโต้ตอบเป็นทคโนโลยีแห่งอนาคต บริษัท Sun Microsystems
ได้ตัดสินใจพัฒนาโทรทัศน์แบบโต้ตอบ ซึ่งต้องมีภาษาพิเศษซึ่งสามารถทำงานได้บนเครื่องคอมพิวเตอร์หรืออุปกรณ์อิเล็กทรอนิกส์ได้อย่างดี
จึ้งได้พัฒนาภาษาใหม่ขึ้นมา คือภาษาจาวา (Java) แต่ในปี
1994 ทีมพัฒนาภาษาจาวาได้เบนความสนใจไปสู้อินเตอร์เน็ตและเว็บแทน
จึงทำให้โครงการสร้างโทรทัศน์แบบโต้ตอบล้มเหลว ในปีถัดมา (1995)
โปรแกรมแสดงผลเว็บเน็ตสเคป Netscape ได้รับการพัฒนาสำเร็จด้วยภาษาจาวา
เริ่มจากนั้นภาษาจาวาก็ได้กลายเป็นภาษาแห่งอนาคต
แม้ว่าภาษาจาวามีเป้าหมายสูง และมีหนังสือมากมายเขียนถึงจาวา
ว่าเป็นภาษาที่ดี มีความสามารถสำหรับการเขียนโปรแกรมเชิงวัติถุ
แต่มีข้อเสียอยู่บ้างที่โปรแกรมทำงานช้า เนื่องจากต้องมีการปรับโปรแกรมให้เหมาะสมอีกขั้นหนึ่งก่อนที่จะทำการประมวลผลจริง
ภาษา VB (Visual Basic)
เป็นภาษาที่มักจะใช้ในการเรียนการสอนเขียนโปรแกรมในปัจจุบัน
ซึ่งมีพื้นฐานมาจากภาษาเบสิก (Basic) พัฒนาโดยจอห์น เคมินี
(John Kemeny) และโธมัส เคิร์ซ (Thomas Kurtz) เมื่อปี 1964)
ภาษาเบสิมีข้อจำกัดเนื่องจากถูกพัฒนาขึ้นมาสำหรับคนที่ไม่ใช่นักวิทยาการคอมพิวเตอร์
ประโยคคำสั่งของภาษาเบสิกทำงานเป็นลำดับต่อเนื่อง แต่สามารถข้ามไปทำงานส่วนของโปรแกรมที่กำหนดได้โดยตรวจสอบเงื่อนไขด้วยคำสั่ง
IF
THEN และ GOSUB
บริษัทไมโครซอฟต์ได้พัฒนาภาษาเบสิกเพิ่มเติม
กลายเป็นภาษาวิชวลเบสิค Visual Basic (VB) หัวใจของภาษา VB
อยู่ที่การใช้หน้าต่างแม่แบบ (form) ซึ่งเป็นหน้าต่าง (window)
เปล่า ๆ ที่สามารถเพิ่มเมนู รูปภาพ ปุ่มควบคุมได้อย่างสะดวก
โดยสิ่งที่เพิ่มเข้าไปนี้เราเรียกว่า widget แปลว่าเครื่องมือชิ้นเล็ก
ๆ มีคุณสมบัติเช่น สี ขนาด และมีเหตุการณ์ที่โต้ตอบได้ (event)
เช่น เมื่อถูกคลิกจะโต้ตอบอย่างไร เป็นต้น แนวคิดนี้เป็นที่นิยมเนื่องจากง่ายในการสร้างส่วนของโปรแกรมติดต่อกับผู้ใช้เพื่อรับคำสั่ง
ข้อมูล แสดงผลข้อมูล โต้ตอบ นอกจากนี้ซอฟต์แวร์ของบริษัทไมโครซอฟต์ยังเตรียมคุณสมบัติให้ผู้ใช้สามารถเขียนโปรแกรมเพิ่มเติมโดยใช้ภาษา
VB เช่น โปรแกรมคำนวณตาราง Excel และ โปรแกรมจัดการฐานข้อมูล
Access
ภาษาเพิร์ล
(Perl) มักจะถูกใช้ในการพัฒนาส่วนติดต่อกับผู้ใช้บนเว็บ
มีความสามารถพิเศษในการจัดการ เปรียบเทียบ ค้นหาชุดตัวอักษร
จึงเหมาะกับงานด้านเว็บ เช่น search engine แลรี่
วอลล์ (Lary Wall) พัฒนาเพิร์ลขึ้นเมื่อปี 1987 เนื่องจากเขาเห็นว่าระบบปฏิบัติการยูนิกซ์ไม่สามารถจัดการกับข้อมูลที่เป็นข้อความหรือชุดตัวอักษรได้ดีพอ
|