ประวัติภาษาเขียนโปรแกรม (Programming Language)

ตั้งแต่ชาร์ลส แบบเบจ (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 เนื่องจากเขาเห็นว่าระบบปฏิบัติการยูนิกซ์ไม่สามารถจัดการกับข้อมูลที่เป็นข้อความหรือชุดตัวอักษรได้ดีพอ

 
 
     Links อื่น ๆ
 



























 





 
       
 
 
<< กลับ
 
   

Copyright © 2004 Institute for Innovation and Development of Learning Process.  All rights reserved.