ภาษาคอมพิวเตอร์
ภาษาคอมพิวเตอร์
หมายถึง ภาษาใด ๆ
ที่ผู้ใช้งานใช้สื่อสารกับคอมพิวเตอร์
หรือคอมพิวเตอร์ด้วยกัน
แล้วคอมพิวเตอร์สามารถทำงานตามคำสั่งนั้นได้
ภาษาคอมพิวเตอร์มีมากมายหลายพันภาษา
แต่ภาษาที่สั่งให้คอมพิวเตอร์ทำงานได้จริงนั้นมีภาษาเดียว
คือ ภาษาเครื่อง (
machine language )
การจัดแบ่งภาษาคอมพิวเตอร์มีการแบ่งหลายแบบ
เช่น แบ่งเป็นยุคของภาษา
ดังนี้ (จาก
http://www.nectec.or.th/courseware/computer/comp-using/0064.html
เมื่อ
7
ส.ค.
2551)
1.ภาษารุ่นที่
1
ได้แก่
ภาษาเครื่อง(Machine
Language) ใช้อักขระเพียง
0
และ
1
ภาษาสัญลักษณะ
(Symbol
Language)
ภาษาแอสเซมบลี(
Assembly Language) ที่ใช้รหัสช่วยจำ
(Mnemonic
Code) แทนรหัสคำสั่งที่เป็นอักขระ
0
กับ
1
การเขียนคำสั่งภาษาเครื่อง
และภาษาสัญลักษณ์
จำเป็นต้องทราบขั้นตอน
การทำงานภายในของตัวประมวลผลอย่างละเอียด
ต้องทราบจำนวนรีจิสเตอร์
(Register)
และหน้าที่ของรีจิสเตอร์
ต้องทราบถึงการอ้างถึงข้อมูลในหน่วยความจำมีวิธี
และทำได้อย่างไร
ภาษารุ่นนี้จึงใช้งานได้ยาก
และมีความซับซ้อนในการสั่งงาน
2.ภาษารุ่นที่
2
เป็นภาษาที่พัฒนาที่นับได้ว่าเก่าแก่ที่สุด
และนับเป็นพื้นฐานในการพัฒนาภาษาคอมพิวเตอร์ใหม่ๆ
ด้วย โดยมีจุดอ่อน คือ
เป็นภาษาที่ไม่มีโครงสร้าง
ไม่สามารถกำหนดชนิดข้อมูลได้
เช่น ภาษาฟอร์แทรน (FORTRAN),
ภาษาโคบอล
(COBOL
- Common Business Oriented Language), ภาษา
ALGOL
(Algorithm Language) และภาษายอดนิยมที่สุด
คือ ภาษา BASIC
(Beginner's All Purpose Symbolic Instruction Code) ซึ่งหลายภาษา
ยังได้รับความนิยมจนถึงปัจจุบัน
3.ภาษารุ่นที่
3
เป็นภาษาที่นำเอาจุดด้อยของภาษารุ่นที่
2
มาปรับปรุงและพัฒนา
โดยปรับปรุงลักษณะ โครงสร้าง
ตลอดจนขีดความสามารถของภาษารุ่นที่
2
โดยแบ่งภาษารุ่นนี้
เป็นสองลักณะ คือ ภาษาสำหรับงานทั่วไป
ได้แก่ ภาษา PL/I,
Pascal, Modula-2, C, Ada โดยมีพื้นฐานการพัฒนามาจากภาษา
ALGOL
โดยนิยมนำมาใช้ในงานวิศวกรรม
วิทยาศาสตร์ ธุรกิจ
ตลอดจนงานระบบต่างๆ
และภาษาสำหรับงานพิเศษ
อันเป็นภาษาที่จัดทำขึ้นมาเพื่อใช้งานเฉพาะเจาะจง
มีรูปแบบพิเศษออกไป เช่น
ภาษา Lisp,
Prolog, Smalltalk, APL และ
FORTH
เป็นต้น
4.ภาษารุ่นที่
4
เป็นภาษาที่พัฒนาขึ้นมาเพื่อลดขั้นตอนการออกแบบระบบ
โดยผู้ใช้ระบุผลลัพธ์ที่ต้องการ
จากนั้นโปรแกรมก็จะใช้ความรู้ภายในตัวภาษา
มาหาผลลัพธ์นั้นๆ
แต่บางฟังก์ชันก็ยังต้องอาศัย
การกำหนดเงื่อนไข
และลำดับขั้นตอนของงานด้วย
ภาษารุ่นนี้ เช่น ภาษาสอบถาม
(Query
Language) ซึ่งใช้ในการสืบค้นข้อมูลในฐานข้อมูล
ได้แก่ ภาษา SQL
(Sturctured Query Language) นอกจากภาษาสอบถาม
ยังมีภาษาแบบตัวสร้างโปรแกรม
(Program
Generator) ซึ่งมักจะพบในโปรแกรมจัดการฐานข้อมูล
เช่น dBASE,
FoxPro เป็นต้น
5.ภาษารุ่นที่
5
เป็นภาษารุ่นใหม่ที่นิยมใช้กันอย่างแพร่หลายในปัจจุบัน
มีลักษณะการทำงานเชิงวัตถุ
มีระบบช่วยเหลือต่างๆ มากมาย
เช่น Visual
Basic, Visual FoxPro เป็นต้น
ภาษาคอมพิวเตอร์
อาจแบ่งภาษาระดับต่ำ
(Low
Level Language) กับ
ภาษาระดับสูง (High
Level Language)
จากhttp://www.fms.nrru.ac.th/fms2008/index.php?option=com_content&task=view&id=85&Itemid=1
เมื่อ
7
ส.ค.51
มีรายละเอียด
ดังนี้
ภาษาระดับต่ำ
(low
level language )
ภาษาระดับต่ำเป็นภาษาที่ขึ้นอยู่กับฮาร์ดแวร์ของคอมพิวเตอร์แต่ละระบบ
แบ่งเป็น
1. ภาษาเครื่อง
(Machine
Language)
เป็นภาษาต่ำสุดของคอมพิวเตอร์
ประกอบด้วยเลข 0
และเลข
1
ที่นำมาเขียนเรียงติดต่อกัน
ประโยคคำสั่งของภาษาเครื่องจะประกอบด้วยส่วนที่ระบุให้คอมพิวเตอร์ทำงานอะไร
เช่น สั่งให้ทำการบวกเลข
สั่งให้ทำการเคลื่อนย้ายข้อมูล
เป็นต้น
และอีกส่วนเพื่อบอกแหล่งข้อมูลที่จะนำมาทำงานตามที่ระบุในตอนแรก
การเขียนโปรแกรม
หรือชุดคำสั่งด้วยภาษาเครื่อง
นับเป็นเรื่องที่ยุ่งยากไม่สะดวกและเสียเวลา
เพราะผู้ใช้จะต้องทราบรหัสแทนการทำงานต่าง
ๆ และต้องรู้ขั้นตอนการทำงานภายในของเครื่องคอมพิวเตอร์โดยละเอียด
ถ้าใช้คำสั่งไม่ถูกต้องเกิดการผิดพลาด
โอกาสที่จะเข้าไปทำการแก้ไขก็ทำได้ยากและเสียเวลามาก
มนุษย์จึงพยายามคิดภาษาให้ติดต่อกับคอมพิวเตอร์ได้ง่ายขึ้นด้วยการสร้างภาษาระดับต่ำในเวลาต่อมา
2.
ภาษาแอสเซมบลี
(Assembly
Language)
ลักษณะของภาษานี้จะเป็นการใช้ตัวอักษรมาเรียงกันเป็นคำ
แทนเลขฐานสอง
โดยคำที่กำหนดขึ้นจะมีความหมายที่สามารถเข้าใจและจำได้ง่าย
เช่น จะใช้คำสั่ง ADD
แทนการบวก
คำสั่ง SUB
แทนการลบ
เป็นต้น ขณะเดียวกัน
ส่วนที่ใช้บอกแหล่งข้อมูลก็จะแทนด้วยชุดของตัวอักษรที่เรียกว่าตัวแปร
เช่น คำสั่ง ADD
A,B จะหมายถึงให้นำข้อมูลที่ตำแหน่ง
A
และตำแหน่ง
B
มาบวกรวมกันแล้วนำผลลัพธ์ไปเก็บที่ตำแหน่งAเป็นต้น
การเขียนโปรแกรมด้วยภาษาแอสแซมบลี
ถึงแม้ว่าจะง่ายและเสียเวลาน้อยกว่าการเขียนโปรแกรมด้วยภาษาเครื่อง
แต่มีข้อเสียคือผู้ใช้จะต้องเรียนรู้โครงสร้างของระบบเครื่องนั้นอย่างละเอียด
เพราะภาษาแอสแซมบลีเป็นภาษาที่ขึ้นกับฮาร์ดแวร์
จะใช้กับเครื่องระบบนั้น
ถ้าใช้เครื่องต่างระบบที่มีตัวประมวลผลต่างกัน
จะต้องเรียนรู้โครงสร้างภายในและชุดคำสั่งสำหรับเครื่องนั้นใหม่ทั้งหมด
ดังนั้นจึงเป็นเรื่องที่ยุ่งยากและไม่สะดวก
ภาษาระดับสูง
(High-level
Language)
ภาษาระดับสูง
การพัฒนาภาษาคอมพิวเตอร์ในยุคต่อมา
จึงพยายามให้เป็นภาษาที่สามารถนำไปใช้กับเครื่องต่างระบบกัน
ไม่ต้องเสียเวลาเรียนรู้ใหม่ทั้งหมด
โปรแกรมที่เขียนสั่งงานกับเครื่องระบบหนึ่ง
ก็สามารถนำไปใช้หรือดัดแปลงเพียงเล็กน้อยเพื่อสั่งงานกับเครื่องอีกระบบหนึ่งได้
ลักษณะของภาษาจะพยายามให้ใกล้เคียงกับภาษาธรรมชาติมากขึ้น
ทำให้เราสามารถศึกษาและเรียนรู้ได้ในเวลาอันรวดเร็ว
ภาษาในยุคหลังนี้ เรียกว่า
ภาษาระดับสูง
ซึ่งได้มีการคิดค้นพัฒนาออกมาหลายภาษาด้วยกัน
ที่เด่น ๆ และนิยมกันมาก
เช่น
ภาษาฟอร์แทรน
(FORTRAN-
FORmula TRANslator)
เป็นภาษาที่เก่าแก่ของโลกเหมาะกับงานด้านวิทยาศาสตร์
คณิตศาสตร์
ใช้ในงานค้นคว้าวิจัยและวิเคราะห์ปัญหาต่างทางวิทยาศาสตร์
ภาษาโคบอล
(COBOL-Common
Business Oriented Language)
เป็นภาษาที่เหมาะสำหรับงานด้านธุรกิจ
ที่มีข้อมูลจำนวนมากๆ
หรืองานด้านการจัดการฐานข้อมูล
แต่ไม่เหมาะสำหรับงานด้านคำนวณ
ภาษาเบสิก
(BASIC-
Beginner's All purpose Symbolic Instruction)
เป็นภาที่พัฒนาขึ้นมา
โดยที่ผู้ใช้ไม่จำเป็นต้องมีความรู้เรื่องระบบการทำงานของคอมพิวเตอร์
เหมาะสำหรับการเขียนโปรแกรมคอมพิวเตอร์และผู้เริ่มศึกษาภาษาคอมพิวเตอร์
ภาษาปาสคาล
(PASCAL)
เป็นภาษาที่ใช้สอนหลักการเขียนโปรแกรมได้ดีที่สุด
เหมาะสำหรับการเขียนโปรแกรมต่าง
ๆ เพื่อการเรียนการสอน
ภาษาซี
(C)
เป็นภาษาที่ได้รับความนิยมในการเขียนโปรแกรมการทำงานขนาดใหญ่
และใช้ในการเขียนโปรแกรมควบคุมการทำงานของฮาร์ดแวร์ด้วย
ข้อแตกต่างระหว่างภาษาระดับต่ำกับภาษาระดับสูง
(จาก
http://www.nectec.or.th/courseware/computer/comp-using/0064.html
เมื่อ
7
ส.ค.
2551)
ภาษาระดับต่ำจะมีความแตกต่างกันเมื่อใช้กับเครื่องคอมพิวเตอร์ต่างเครื่องกัน
ส่วนภาษาระดับสูงนั้นสามารถใช้ได้กับ
คอมพิวเตอร์ต่างเครื่องกัน
โดยอาจมีการปรับปรับปรุง
หรือ เปลี่ยนแปลงเพียงเล็กน้อยเท่านั้น
ภาษาระดับสูงมนุษย์สามารถอ่านเข้าใจได้ง่ายกว่าภาษาระดับต่ำ
เพราะภาษาระดับสูงมีลักษณะคล้ายกับมนุษย์ที่ใช้ในชีวิตประจำวัน
ส่วนภาษาระดับต่ำอาจใช้รหัสหรือคำย่อแทนคำสั่งให้ทำงาน
ภาษาระดับต่ำจะต้องเขียนขั้นตอนการทำงานอย่างละเอียด
จึงใช้เวลาในการเขียนโปรแกรมมากกว่าการเขียนโปรแกรมระดับสูง
การเขียนโปรแกรมด้วยภาษาระดับต่ำ
จำเป็นต้องศึกษาและเข้าใจระบบการทำงานภายในคอมพิวเตอร์
แต่การเขียนโปรแกรมด้วยภาษาระดับสูงไม่จำเป็นต้องศึกษาอย่างลึกซึ้ง
การจัดแบ่งภาษาคอมพิวเตอร์
ส่วนมากในปัจจุบันนิยมแบ่งภาษาคอมพิวเตอร์เป็น
ยุค
ดังนี้
(จาก
http://yalor.yru.ac.th/~nipon/Archi_STD43/chapter9/group_20/machine.html
เมื่อ
7
ส.ค.51)
1.ภาษาเครื่อง
(Machine
Language)
2.ภาษาแอสเซมบลี
(Assembly
Language)
3.ภาษาชั้นสูง
(High
- level Language)
4.ภาษาชั้นสูงมาก
(Very
High - level Language)
5.ภาษาธรรมชาติ
(Natural
Language)
ภาษาเครื่อง
ในยุคแรก
ๆ การใช้คอมพิวเตอร์ให้ทำงานตามต้องการนั้น
ผู้เขียนโปรแกรมจะต้องเขียนคำสั่งด้วยภาษาของเครื่องคอมพิวเตอร์ซึ่งเรียกว่า
ภาษาเครื่อง
คำสั่งของภาษาเครื่องนั้นจะประกอบด้วยกลุ่มของตัวเลขในระบบเลขฐานสอง
เป็นภาษาเดียวเท่านั้นที่เครื่องคอมพิวเตอร์เข้าใจได้โดยตรง
ลักษณะของภาษาเป็นภาษาที่ขึ้นอยู่กับฮาร์ดแวร์ของคอมพิวเตอร์แต่ละระบบ
โดยเขียนอยู่ในรูปของรหัสของระบบเลขฐานสอง
ประกอบด้วย เลข 0
และเลข
1
ที่นำมาเขียนเรียงติดต่อกัน
ประโยคคำสั่งของภาษาเครื่องจะประกอบด้วยส่วนที่ระบุให้คอมพิวเตอร์ทำงานอะไรเช่น
สั่งให้ทำการบวกเลข
สั่งให้ทำการเคลื่อนย้ายข้อมูล
เป็นต้น และอีกส่วนเพื่อ
บอกแหล่งข้อมูลที่จะนำมาทำงานตามที่ระบุในตอนแรก
โครงสร้างของคำสั่งในภาษาเครื่อง
คำสั่งในภาษาเครื่องจะประกอบfด้วย
2
ส่วนคือ
โอเปอเรชันโคด
(Operation
Code) เป็นคำสั่งที่สั่งให้เครื่องคอมพิวเตอร์ปฏิบัติการ
เช่น การบวก (Addition)
การลบ
(Subtraction)
เป็นต้น
โอเปอแรนด์
(Operands)เป็นตัวที่ระบุตำแหน่งที่เก็บของข้อมูลที่จะเข้าคอมพิวเตอร์เพื่อนำไป ปฏิบัติการตามคำสั่งในโอเปอเรชันโคด
ภาษาแอสเซมบลี
เป็นภาษาที่มีการใช้สัญลักษณ์ข้อความ
(mnemonic
codes) แทนกลุ่มของเลขฐานสอง
เพื่อให้ง่ายต่อการเขียนและการจดจำมากกว่าภาษาเครื่อง
ตัวอย่างเช่นมีการใช้สัญลักษณ์ต่อไปนี้
A
ย่อมาจาก
ADD
หมายถึงการบวก
S
ย่อมาจาก
SUBTRACT
หมายถึงการลบ
C
ย่อมาจาก
COMPLARE
หมายถึงการเปรียบเทียบ
MP
ย่อมาจาก
MULTIPLY
หมายถึงการคูณ
ST
ย่อมาจาก
SRORE
หมายถึง
การเก็บข้อมูลไว้ในหน่วยความจำ
เป็นต้น
ถึงแม้ว่าสัญลักษณ์เหล่านี้จะไม่ใช่คำที่มีความหมายในภาษาอังกฤษแต่ก็ทำให้นักเขียนโปรแกรมสามารถเขียนโปรแกรมได้สะดวกสะบายมากขึ้น
เนื่องจากไม่ต้องสะดวกสบายมากขึ้น
เนื่องจากไม่ต้องจดจำ 0
และ1
ของเลขฐานสองอีกนอกจากนี้
ภาษาแอสเซมบลียังอนุญาตให้ผู้เขียนใช้ตัวแปรที่ตั้งขึ้นมาเองในการเก็บค่าข้อมมูลใด
ๆ เช่น X,
Y, RATE หรือ
TOTAL
แทนการอ้างอิงถึงตำแหน่งที่เก็บข้อมูลจริงๆ
ภายในหน่วยความจำ
ดังได้กล่าวแล้วว่าเครื่องคอมพิวเตอร์จะรู้จักเฉพาะภาษาเครื่องเท่านั้นดังนั้นจึงจำเป็นที่จะต้องมีการแปล
โปรแกรมภาษาแอสเซมบลีนั้นให้เป็นภาษาเครื่องเสียก่อนเพื่อให้คอมพิวเตอร์สามารถทำงานตามคำสั่งในโปรแกรมได้การแปลภาษาแอสเซมบลีเป็นภาษาเครื่องนั้นจะต้องมีตัวแปลภาษาแอสเซมบลีที่เรียกว่า
แอสเซมเบลอร์ (Assembler)
เป็นตัวแปล
ซึ่งภาษาแอสเซมบลี
1คำสั่งจะสามารถแปลเป็นภาษาเครื่องได้
1
คำสั่งเช่นกัน
ดังนั้นเขียนโปรแกรมภาษาแอสเซมบลี
10
คำสั่ง
ก็จะถูกแปลเป็นภาษาเครื่อง
10
คำสั่งเช่นกันจึงเห็นได้ว่าภาษาแอสเซมบลีจะมีลักษณะที่เหมือนกับภาษาเครื่องคือ
เป็นภาษาที่ขึ้นอยู่กับเครื่อง
กล่าวคือเราไม่สามารถนำโปรแกรมที่เขียนด้วยแอสเซมบลี
โปรแกรมเดียวกันไปใช้ในเครื่องต่างชนิดกันได้และนอกจากนี้ผู้ที่จะเขียนโปรแกรมภาษาแอสเซมบลีได้จะต้องมีความรู้
ความเข้าใจในเรื่องของฮาร์ดแวร์เป็นอย่างดีเนื่องจากจะต้องยุ่งเกี่ยวกับการใช้งานหน่วยความจำที่เป็นงานหน่วยความจำ
ที่เป็นรีจิสเตอร์ภายในตลอดดังนั้นจึงเหมาะที่จะใช้เขียนในงานที่ต้องการความเร็วในการทำงานสูง
เช่น งานทางด้านกราฟิกหรืองานพัฒนาซอฟต์แวร์ระบบต่าง
ๆ
อย่างไรก็ตามถึงแม้ว่าภาษานี้จะง่ายกว่าการเขียนด้วยภาษาเครื่อง
แต่ก็ยังถือว่าเป็นภาษาชั้นต่ำที่ยังยากต่อการเขียนและ
การเรียนรู้มากสำหรับผู้ที่ไม่ความรู้เกี่ยวกับฮาร์ดแวร์เท่าใดนัก
ภาษาระดับสูง
สามารถเรียกได้อีกอย่างว่าเป็นภาษารุ่นที่
3
(3rd Generation Languages หรือ
3GLs)
เป็นภาษาที่ถูกสร้างขึ้นมาเพื่อให้สามารถเขียนและอ่านโปรแกรมได้ง่ายขึ้น
เนื่องจากมีลักษณะเหมือนภาษาอังกฤษทั่วๆ
ไป
และที่สำคัญคือผู้เขียนโปรแกรมไม่จำเป็นต้องมีความรู้เกี่ยวกับระบบฮาร์ดแวร์แต่อย่างใด
ตัวอย่างของภาษาประเภทนี้ได้แก่
ภาษาฟอร์แทรน (FORTRAN)
โคบอล
(COBOL)
เบสิก
(BASIC)
ปาสคาล
(PASCAL)
ซี
(C)
เอดา
(ADA)
อย่างไรก็ตามโปรแกรมที่ถูกเขียนด้วยภาษาประเภทนี้จะทำงานได้
ก็ต่อเมื่อมีการแปลงให้เป็นภาษาเครื่องเสียก่อน
ซึ่งวิธีการแปลงจากภาษาชั้นสูงให้เป็นภาษาเครื่องนั้น
จะทำได้โดยใช้โปรแกรมที่เรียกว่า
คอมไพเลอร์ (Compiler)
หรือ
อินเตอร์พรีเตอร์ (Interpreter)
อย่างใดอย่างหนึ่ง
โดยภาษาชั้นสูงแต่ภาษาจะมีตัวแปลภาษาเฉพาะเป็นของตัวเอง
ดังนั้นจึงไม่สามารถนำตัวแปลภาษาที่เรียกว่าคอมไพเลอร์ของภาษาหนึ่งไปใช้แปลภาษาอื่น
ๆ
สำหรับความแตกต่างระหว่างคอมไพเลอร์และอินเตอร์พรีเตอร์จะมีดังต่อไปนี้
คอมไพเลอร์
(Compiler)
จะทำการแปลโปรแกรมทั้งโปรแกรมให้เป็นภาษาเครื่องทีเดียว
การแปลนี้จะเป็นการตรวจสอบไวยากรณ์ของภาษา
ถ้ามีข้อผิดพลาดทางไวยากรณ์ของภาษาเกิดขึ้นก็จะแจ้งให้ทราบ
เรียกข้อผิดพลาดทางไวยากรณ์ของภาษา
(Syntax
Error) นี้ได้ว่าเป็น ข้อความไดแอคนอสติค
(Diagnostic
Message) เพื่อให้ผู้เขียนโปรแกรมทำการแก้ไขให้ถูกต้อง
แล้วจึงค่อยสั่งให้แปลใหม่
โปรแกรมที่ยังไม่ผ่านการแปลจะเรียกว่า
ซอร์สโปรแกรม (Source
Program) หรือ
ซอร์สโมดูล (Source
module) แต่ถ้าผ่านการแปลเรียบร้อยและไม่มีข้อผิดพลาดใดๆ
จะเรียกโปรแกรมส่วนนี้ว่า
ออปเจกต์โปรแกรม (Object
Program) หรือออปเจกต์โมดูล
(Object
Module) ออปเจกต์โปรแกรมนี้ยังไม่สามารถทำงานได้
จะต้องผ่านการลิงค์ (Link)
หรือรวมเข้ากับไลบรารี่
(Library)ของระบบก่อนจึงจะเป็นโปรแกรมที่สามารถทำงานได้หรือเป็นภาษาเครื่องทีเรียกว่า
เอ็กซ์ซีคิวท์โปรแกรม (Execute
Program) หรือ
โหลดโมดูล (Load
Module) ซึ่งโดยทั่วไปแล้วจะเป็นไฟล์ที่มีนามสกุลเป็น
.exe
หรือ.comและสามารถนำโปรแกรมนี้ไปใช้งานได้ตลอดโดยไม่ต้องสั่งแปลใหม่อีก
แต่ถ้ามีการแก้ไขโปรแกรมแม้เพียงเล็กน้อยก็ต้องทำการแปลใหม่หมดตั้งแต่ต้น
อินเตอร์พรีเตอร์
(Interpreter)
เป็นตัวแปลภาษาอีกตัวหนึ่งที่จะทำการแปลโปรแกรมภาษาชั้นสูงทีละคำสั่งให้เป็นภาษาเครื่องและทำการเอ็กซ์วีคิวท์หรือทำงานคำสั่งนั้นทันทีทันใดเลยก่อนที่จะไปทำการแปลต่อในบรรทัดถัดไปถ้าในระหว่างการแปลเกิดพบข้อผิดพลาดที่บรรทัดใดก็จะฟ้องให้ทำการแก้ไขทีละบรรทัดนั้นทันทีอินเตอร์พรีเตอร์นี้เมื่อโปรแกรมเสร็จแล้วจะไม่สามารถเก็บเป็นเอ็กซ์ซีคิวท์โปรแกรม
(Execute
Program)
ได้ซึ่งต่างกับคอมไพเลอร์ดังนั้นเมื่อจะเรียกใช้งานหรือรันโปรแกรมก็จะต้องทำการแปลหรือคอมไพล์โปรแกรมใหม่ทุกครั้งไปดังนั้นเมื่อจะเรียกใช้งานเอ็กซ์ซีคิวท์โปรแกรมย่อมจะทำงานได้เร็วกว่าการเรียกใช้งานโปรแกรมที่ต้องผ่านการแปลด้วยอินเตอร์พรีเตอร์แต่ประโยชน์ของภาษาที่ถูกแปลด้วยอินเตอร์พรีเตอร์
คือโปรแกรมจะมีโครงสร้างที่ง่ายต่อการพัฒนาตัวอย่างของภาษาโปแกรมที่มีการใช้อินเตอร์พรีเตอร์
เป็นตัวแปลภาษา เช่น
ภาษาเบสิกสมัยเดิม (GWBASIC)
(แต่
Visual
Basic มีตัวแปลภาษาเป็น
คอมไพเลอร์)
การเขียนโปรแกรมด้วยภาษาชั้นสูงนั้นนอกจากจะให้ความสะดวกแก่ผู้เขียนเป็นอันมากแล้วผู้เขียนแทบจะไม่ต้องมีความรู้เกี่ยวกับการทำงาน
ของระบบฮาร์ดแวร์ก็สามารถเขียนโปรแกรมสั่งให้เครื่องคอมพิวเตอร์ทำงานได้นอกจากนี้ยังมีข้อดีอีกอย่างคือสามารถนำโปรแกรมที่เขียนนี้
ไปใช้งานบนเครื่องใดก็ได้
คือมีลักษณะที่ไม่ขึ้นอยู่กับกับเครื่อง(Hardware
Indepent) เพียงแต่ต้องทำการการแปลโปรแกรมใหม่เท่านั้น
แต่อย่างไรก็ตามภาษาเครื่องที่ได้จากการแปลภาษาชั้นสูงนี้อาจเยิ่นเย้อและไม่มีประสิทธิภาพเท่ากับการเขียนด้วยภาษาเครื่องหรือแอสเซมบลีโดยตรง
ภาษารุ่นที่
3
นี้ส่วนใหญ่จะจัดอยู่ในกลุ่มของภาษาที่มีแบบแผน
(Procedural
language)เนื่องจากลักษณะ
การเขียนโปรแกรมจะมีโครงสร้างแบบแผนที่เป็นระเบียบ
กล่าวคือ
งานทุกอย่างผู้เขียนโปรแกรมต้องเขียน
โปรแกรมควบคุมการทำงานเองทั้งหมด
และต้องเขียนคำสั่งการทำงานที่เป็นขั้นตอนทุกอย่าง
ไม่ว่าจะเป็นการสร้างแบบฟอร์มกรอกข้อมูล
การประมวลผล หรือการสร้างรายงาน
ซึ่งโปรแกรมที่เขียนจะค่อนข้างซับซ้อนและใช้เวลาในการพัฒนาค่อนข้างยาก
ภาษาระดับสูงมาก
(Very
high - Level Language)
สามารถเรียกได้อีกอย่างว่าภาษาในรุ่นที่
4
(4GLs:
Fourth Generation
Languages)ภาษานี้เป็นภาษา
ที่อยู่ในระดับที่สูงกว่าภาษารุ่นที่
3
มีลักษณะของภาษาในรุ่นที่เป็นธรรมชาติคล้ายๆ
กับภาษาพูดของมนุษย์จะช่วย
ในเรื่องของการสร้างแบบฟอร์มบนหน้าจอเพื่อจัดการเกี่ยวกับข้อมูล
รวมไปถึงการออกรายงาน
ซึ่งจะมีการจัดการ
ที่ง่ายมากไม่ยุ่งยากเหมือนภาษารุ่นที่
3
ตัวอย่างของภาษาในรุ่นที่
4
ได้แก่
Informix-4GL,
Focus, Sybase,
InGres เป็นต้น
ลักษณะของ
4GL
มีดังต่อไปนี้
เป็นภาษาแบบ
Nonprocedural
ซึ่งหมายความว่าผู้ใช้เพียงแต่บอกว่าต้องการอะไร
แต่ไม่ต้องบอกถึงรายละเอียด ว่าต้องทำอย่างไร
คอมพิวเตอร์จะเป็นผู้จัดการให้เองหมด
ตัวอย่างเช่น
ถ้าต้องการสร้างแบบฟอร์มการรับข้อมูลจาก ผู้ใช้ผู้เขียนโปรแกรมเพียงแต่ทำการออกแบบหน้าตาของแบบฟอร์มนั้นบนโปรแกรมอิดิเตอร์
(Editor)
ใดๆ
และเก็บ เป็นไฟล์ไว้เมื่อจะเรียกใช้งานแบบฟอร์มนั้นเพียงแต่ใช้คำสั่งเปิดไฟล์นั้นขึ้นมาแสดงบนหน้าจอคอมพิวเตอร์ได้โดยทันทีซึ่งต่างจากภาษารุ่นที่
3
ซึ่งเป็นแบบ
Proceduralผู้เขียนโปรแกรม
จะต้องเขียนรายละเอียดของโปรแกรมทั้งหมดว่า ที่บรรทัดนี้คอลัมน์นี้จะให้แสดงข้อความหรือข้อมูลอะไรออกมา
ซึ่งถ้าต่อไปจะมีการปรับเปลี่ยนหน้าตาของแบบฟอร์ม ก็จะเป็นเรื่องที่ยุ่งยากอย่างยิ่ง
หรือในการสร้างรายงานด้วย
4GLs
ก็สามารถทำได้อย่างง่ายดายเพียงแต่ระบุลงไปว่าต้องการรายงานอะไร
มีข้อมูลใดที่จะนำมาแสดงบ้าง
โดยไม่ต้องบอกถึงวิธีการสร้าง
หรือการดึงข้อมูลแต่อย่างใด
4GLsจะจัดการให้เองหมด
ส่วนใหญ่จะพบว่า
4GLs
มักจะอยู่ควบคู่กับระบบฐานข้อมูล
โดยผู้ใช้ระบบฐานข้อมูลจะสามารถจัดการฐานข้อมูล
ได้โดยผ่านทาง 4GLs
นี้
ส่วนประกอบของภาษา
4GLs
โดยทั่วไปแล้ว
4GLs
จะประกอบด้วยส่วนสำคัญ
3
ส่วนดังต่อไปนี้
เครื่องช่วยสร้างรายงาน
(Report
Generators)หรืออาจเรียกได้อีกอย่างว่า
เครื่องมือช่วยเขียนรายงาน
(Report
Writer) เป็นโปรแกรมสำหรับผู้ใช้
(end
- users) ให้สามารถสร้างรายงานอย่างง่ายได้ด้วยตนเอง
โดยผู้ใช้สามารถกำหนดเงื่อนไขและข้อมูลที่จะออกมาพิมพ์ในรายงาน
รวมไปถึงรูปแบบ
(format)
ของการพิมพ์ไว้
โปรแกรมช่วยสร้างรายงานนี้จะทำการพิมพ์รายงานตามรูปแบบที่เรากำหนดไว้ให้
ภาษาช่วยค้นหาข้อมูล
(Query
Languages)เป็นภาษาที่ช่วยในการค้นหาหรือดึงข้อมูลจากฐานข้อมูล
ภาษานี้จะง่ายต่อการใช้งานมาก
เนื่องจากจะอยู่ในรูปแบบที่ใกล้เคียงกับภาษาอังกฤษมาก
ตัวอย่างของภาษาช่วยค้นหาข้อมูลนี้ได้แก่
ภาษา SQL
(Structured Query Language)ภาษา
QBE
(Query - By - Example) และ
Intellect
เป็นต้น
เครื่องมือช่วยสร้างโปรแกรม
(Application
Generators) 4GLs จะมีรูปแบบการเขียนโปรแกรมเฉพาะตัว
และสามารถเรียกใช้เครื่องมือช่วยสร้างโปรแกรมนี้ทำการแปลง
4GLs
ให้กลายเป็นโปรกรมในภาษารุ่นที่
3
ได้
เช่น ภาษาโคบอล หรือ ภาษาซี
เป็นต้น ซึ่งอาจนำภาษาโคบอล
หรือซีที่แปลงได้
ไปพัฒนาต่อเพื่อใช้กับงานที่มีความซับซ้อนมากๆ
ต่อไปได้
ประโยชน์ของ
4GL
เป็นภาษาที่ง่ายต่อการเรียนรู้
คำสั่งแต่ละคำสั่งสื่อความหมายได้อย่างชัดเจน
ดังนั้นจึงสามารถใช้เวลาในการศึกษาสั้นกว่าภาษารุ่นที่
3
ประหยัดเวลาในการเขียนโปรแกรมได้มาก
เนื่องจาก 1
คำสั่งของ
4GL
ถ้าต้องเขียนด้วยภาษารุ่นที่
3
อาจต้องเขียนถึง
100
กว่าคำสั่งในการทำงานแบบเดียวกัน
สนับสนุนระบบจัดการฐานข้อมูล
ทำให้สามารถจัดการกับข้อมูลได้อย่างสะดวก
และรวดเร็ว
สามารถสร้างแบบฟอร์มเพื่อจัดการกับข้อมูลในฐานข้อมูล
และออกรายงานได้อย่างง่ายดาย
ไม่ยุ่งยาก
มีเครื่องมือการใช้งานเพื่ออำนวยความสะดวกในการเขียนโปรแกรมมากพอสมควร
สามารถทำงานได้ในลักษณะ
Interactive
คือมีการโต้ตอบกับผู้ใช้ได้ทันที
ภาษาธรรมชาติ
เป็นภาษาในยุคที่
5
ที่มีรูปแบบเป็นแบบ
Nonprocedural
เช่นเดียวกับภาษารุ่นที่
4
การที่เรียกว่า
ภาษาธรรมชาติ
เพราะจะสามารถสั่งงานคอมพิวเตอร์ได้โดยใช้ภาษามนุษย์โดยตรง
ซึ่งโดยทั่วไปคำสั่งที่มนุษย์ป้อนเข้าไปในคอมพิวเตอร์จะอยู่ในรูปของภาษาพูดมนุษย์
ซึ่งอาจมีรูปแบบที่ไม่แน่นอนตายตัว
แต่คอมพิวเตอร์ก็สามารถแปลคำสั่ง
เหล่านั้นให้อยู่ในรูปแบบที่คอมพิวเตอร์เข้าใจได้
ถ้าตั้งคำถามใดไม่กระจ่างก็จะมีการถามกลับเพื่อให้เข้าใจคำถามได้อย่างถูกต้อง
ภาษาธรรมชาตินี้
ถูกสร้างขึ้นมาจากเทคโนโลยีทางด้านระบบผู้เชี่ยวชาญ
(Expert
System) ซึ่งเป็นงานที่อยู่ในสาขาปัญญาประดิษฐ์(Artificial
Intelligence)
ในการที่พยายามทำให้คอมพิวเตอร์เปรียบเสมือนกับเป็นผู้เชี่ยวชาญคนหนึ่งที่สามารถคิดและตัดสินใจได้เช่นเดียวกับมนุษย์
คอมพิวเตอร์สามารถตอบคำถามของมนุษย์ได้อย่างถูกต้องพร้อมทั้งมีข้อแนะนำต่างๆ
เพื่อช่วยในการตัดสินใจของมนุษย์ได้อีกด้วย
ระบบผู้เชี่ยวชาญนี้จะใช้กับงานเฉพาะด้านใดด้านหนึ่งเช่น
ในการแพทย์ ในการพยากรณ์อากาศ
ในการวิเคราะห์ทางเคมี
การลงทุน ฯลฯ
ซึ่งในการนี้จะต้องมีการเก็บรวบรวมข้อมูลที่มีอยู่เป็นจำนวนมหาศาลและให้ผู้ใช้สามารถใช้ภาษาธรรมชาติในการดึงข้อมูลจากฐานความรู้นี้ได้
ดังนั้นเราจึงอาจเรียกระบบผู้เชี่ยวชาญนี้ได้อีกอย่างว่าเป็น
ระบบฐานความรู้ (Knowledge
Base System)
อย่างไรก็ตามระบบผู้เชี่ยวชาญไม่สามารถนำมาแทนที่การทำงานของผู้เชี่ยวชาญที่เป็นมนุษย์ได้
เนื่องจากทั้งระบบผู้เชี่ยวชาญและมนุษย์จะต้องทำงานร่วมกัน
โดยมนุษย์จะนำข้อมูลที่ได้จากระบบผู้เชี่ยวชาญมาพิจารณาร่วมกับวิจารญาณของตนเองเพื่อตัดสินปัญหาที่ซับซ้อนอีกที
อย่างไรก็ตามระบบผู้เชี่ยวชาญนี้เป็นคลื่นแห่งอนาคต
ที่จะใช้เป็นเครื่องมือช่วยตัดสินใจการทำงานของมนุษย์ได้อย่างดีเยี่ยม
ภาษาคอมพิวเตอร์
จำแนกตามลักษณะการทำงาน
ได้เป็น ดังนี้
(http://th.wikipedia.org/wiki/
เมื่อ
7
ส.ค.
2551)
ภาษาโปรแกรม
ภาษาสคริปต์
ภาษามาร์กอัป
Query language
Transformation language
โดยภาษาแต่ละประเภท
มีลักษณะ ดังนี้
ภาษาโปรแกรม
คือ
ภาษาประดิษฐ์ที่สามารถใช้ควบคุมกำหนดพฤติกรรมการทำงานของเครื่องจักรได้
โดยเฉพาะคอมพิวเตอร์
ภาษาโปรแกรมก็เหมือนภาษามนุษย์ที่จะต้องใช้วากยสัมพันธ์
(syntax)
และความหมาย
(semantic)
เพื่อกำหนดโครงสร้างและตีความหมายตามลำดับ
ภาษาโปรแกรมช่วยให้การสื่อสารในภารกิจสารสนเทศสะดวกมากขึ้นและถูกต้องแม่นยำตามขั้นตอนวิธี
(algorithm)
ในโลกนี้มีภาษาโปรแกรมมากกว่า
8,500
ภาษาที่แตกต่างกันไป
และก็ยังมีภาษาใหม่เกิดขึ้นทุกๆ
ปี ผู้ที่ใช้งานภาษาโปรแกรมเพื่อเขียนโปรแกรมเรียกว่า
โปรแกรมเมอร์ (programmer)
ภาษามาร์กอัป
(Markup
language) คือประเภทภาษาคอมพิวเตอร์ที่แสดงทั้งข้อมูล
และข้อมูลรูปแบบเข้าด้วยกัน
โดยข้อมูลรูปแบบอธิบายถึงโครงสร้างหรือการแสดงผลซึ่งส่วนนี้เรียกว่า
มาร์กอัป โดยจะอยู่รวมกับข้อมูลปกติ
ภาษามาร์กอัปที่รู้จักกันดีที่สุดคือ
HTML
ตามความเป็นมาแล้ว
ภาษารูปแบบนี้ได้มีการใช้ในอุตสาหกรรมการพิมพ์ในการติดต่อสื่อสารงานพิมพ์ระหว่างผู้เขียน
บรรณาธิการ และเครื่องพิมพ์
ภาษาสอบถาม
(Query
language) เป็นภาษาคอมพิวเตอร์ที่ใช้สำหรับสอบถามหรือจัดการกับข้อมูลใน
DBMS
โดยภาษาประเภทนี้ที่ได้รับความนิยมสูงสุดคือ
ภาษาสอบถามเชิงโครงสร้าง
(Structure
Query Language: SQL) คิดค้นโดยนักวิทยาศาสตร์ของไอบีเอ็มในทศวรรษที่
1970
มีรูปแบบคำสั่งที่คล้ายกับ
ประโยคในภาษาอังกฤษมาก
ซึ่งปัจจุบันองค์กร แอนซี
ได้ประกาศให้ภาษาสอบถามเชิงโครงสร้าง
เป็นภาษามาตรฐานสำหรับระบบการจัดการฐานข้อมูลเชิงสัมพันธ์
(Relational
Database management System หรือ
RDBMS)
เป็นระบบ
DBMS
แบบที่ใช้กันแพร่หลายที่สุดในปัจจุบัน
ระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ทุกระบบจะใช้คำสั่งพื้นฐานของภาษา
SQL
ได้เหมือน
ๆ กัน แต่อาจมีคำสั่งพิเศษที่แตกต่างกันบ้าง
เนื่องจากบริษัทผู้ผลิตแต่ละรายก็พยายามที่จะพัฒนา
RDBMS
ของตนเองให้มีลักษณะที่เด่นกว่าระบบอื่นโดยเพิ่มคุณสมบัติที่เกินข้อกำหนดของ
แอนซี ซึ่งคิดว่าจะเป็นประโยชน์ต่อผู้ใช้เข้าไป
ภาษาคอมพิวเตอร์มีเป็นจำนวนมาก
มีช่วงพัฒนาของการคิดและพัฒนาการ
ดังตาราง
(จาก
http://www.thaiall.com/language/indexo.html
เมื่อ
7
ส.ค.
2551)
Timeline
of programming languages
|
Predecessor(s)
|
Year
|
Name
|
Chief
developer,
Company
|
Pre
1950
|
*
|
~1837
|
Analytical
Engine order code
|
Charles
Babbage
and Ada
Lovelace
|
*
|
1943-5
|
Plankalkl
(concept)
|
Konrad
Zuse
|
*
|
1943-6
|
ENIAC
coding system
|
John
Von Neumann,
John
Mauchly,
J.
Presper Eckert,
Herman
Goldstine
after Alan
Turing
|
ENIAC coding
system
|
1946
|
ENIAC
Short Code
|
Richard
Clippinger,
John
Von Neumann
after Alan
Turing
|
ENIAC coding
system
|
1946
|
Von
Neumann and Goldstine graphing system
(Notation)
|
John
Von Neumann
and Herman
Goldstine
|
ENIAC coding
system
|
1947
|
ARC
Assembly
|
Kathleen
Booth
|
Analytical
Engine order code
|
1948
|
CPC
Coding scheme
|
Howard
Aiken
|
ENIAC coding
system
|
1948
|
Curry
notation system
|
Haskell
Curry
|
ENIAC Short Code
|
1948
|
Brief
Code
|
John
Mauchly
|
ENIAC Short Code
|
1949
|
C-10
|
Betty
Holberton
|
CPC Coding
scheme
|
1949
|
Seeber
coding scheme
(concept)
|
Robert
Seeber
|
1950s
|
Brief Code
|
1950
|
Short
Code
|
William
F Schmidt,
A.B.
Tonik,
J.R.
Logan
|
ARC
|
1950
|
Birkbeck
Assembler
|
Kathleen
Booth
|
*
|
1951
|
ALGAE
|
Edward
A Voorhees
and Karl
Balke
|
Short Code
|
1951
|
Intermediate
Programming Language
|
Arthur
Burks
|
EDSAC
|
1951
|
Regional
Assembly Language
|
Maurice
Wilkes
|
Aiken
CPC system
|
1951
|
Boehm
unnamed coding system
|
Corrado
Boehm
|
Plankalkl
|
1951
|
Klammerausdrcke
|
Konrad
Zuse
|
Short Code
|
1951
|
OMNIBAC
Symbolic Assembler
|
Charles
Katz
|
*
|
1951
|
Stanislaus
(Notation)
|
Fritz
Bauer
|
EDSAC
|
1951
|
Whirlwind
assembler
|
Charles
Adams
and Jack
Gilmore
at MIT
Project
Whirlwind
|
EDSAC
|
1951
|
Rochester
assembler
|
Nat
Rochester
|
*
|
1951
|
Sort/Merge
|
Betty
Holberton
|
C-10 and Short
Code
|
1952
|
A-0
|
Grace
Hopper
|
Aiken CPC
|
1952
|
AUTOCODE
|
Alick
Glennie
after Alan
Turing
|
SORT/MERGE
|
1952
|
Editing
Generator
|
Milly
Koss
|
*
|
1952
|
COMPOOL
|
RAND/SDC
|
*
|
1953
|
Whirlwind
algebraic systems
|
Laning, Zierler,
Adams at MIT
Project
Whirlwind
|
*
|
1953
|
READ/PRINT
|
Don Harroff,
James Fishman, George Ryckman
|
Glennie Autocode
|
1954
|
Mark
I Autocode
|
Tony
Brooker
|
A-0
|
1954-1955
|
FORTRAN
"0"
(concept)
|
Team led by John
W. Backus
at IBM
|
A-0
|
1954
|
ARITH-MATIC
|
Team led by
Grace
Hopper
at UNIVAC
|
A-0
|
1954
|
MATH-MATIC
|
Team led by
Grace
Hopper
at UNIVAC
|
*
|
1954
|
MATRIX
MATH
|
H G Kahrimanian
|
*
|
1954
|
IPL
I
(concept)
|
Allen
Newell,
Cliff
Shaw,
Herbert
Simon
|
A-0
|
1955
|
FLOW-MATIC
|
Team led by
Grace
Hopper
at UNIVAC
|
FORTRAN, A-2
|
1955
|
PACT
I
|
SHARE
|
Boehm
|
1955-6
|
Sequentielle
Formelbersetzung
|
Fritz
Bauer
and Karl Samelson
|
Laning and
Zerler
|
1955-6
|
IT
|
Team led by Alan
Perlis
|
IPL I
|
1958
|
IPL
II
(implementation)
|
Allen
Newell,
Cliff
Shaw,
Herbert
Simon
|
IPL
|
1956-1958
|
LISP
(concept)
|
John
McCarthy
|
FLOW-MATIC
|
1957
|
COMTRAN
|
Bob
Bemer
|
FORTRAN 0
|
1957
|
FORTRAN
"I"
(implementation)
|
John
W. Backus
at IBM
|
*
|
1957
|
COMIT
(concept)
|
|
FORTRAN I
|
1958
|
FORTRAN
II
|
Team led by John
W. Backus
at IBM
|
FORTRAN, IT and
Sequentielle Formelbersetzung
|
1958
|
ALGOL
58
(IAL)
|
ACM/GAMM
|
IPL II
|
1958
|
IPL
V
|
Allen
Newell,
Cliff
Shaw,
Herbert
Simon
|
FLOW-MATIC,
COMTRAN
|
1959
|
COBOL
(concept)
|
The Codasyl
Committee
|
IPL
|
1959
|
LISP
(implementation)
|
John
McCarthy
|
|
1959
|
TRAC
(concept)
|
Mooers
|
1960s
|
ALGOL 58
|
1960
|
ALGOL
60
|
|
FLOW-MATIC,
COMTRAN
|
1960
|
COBOL
61
(implementation)
|
The Codasyl
Committee
|
*
|
1961
|
COMIT
(implementation)
|
|
FORTRAN II
|
1962
|
FORTRAN
IV
|
|
*
|
1962
|
APL
(concept)
|
Iverson
|
ALGOL 58
|
1962
|
MAD
|
Arden,
et
al.
|
ALGOL 60
|
1962
|
SIMULA
(concept)
|
|
FORTRAN II,
COMIT
|
1962
|
SNOBOL
|
Griswold,
et
al.
|
ALGOL 60
|
1963
|
CPL
|
Barron,
Strachey,
et
al.
|
SNOBOL
|
1963
|
SNOBOL3
|
Griswold,
et
al.
|
ALGOL 60
|
1963
|
ALGOL
68
(concept)
|
van
Wijngaarden,
et
al.
|
ALGOL 58
|
1963
|
JOSS
I
|
Cliff Shaw, RAND
|
MIDAS
|
1964
|
MIMIC
|
H.
E. Petersen,
et
al.
|
CPL, LISP
|
1964
|
COWSEL
|
Burstall,
Popplestone
|
ALGOL 60, COBOL,
FORTRAN
|
1964
|
PL/I
(concept)
|
IBM
|
FORTRAN II, JOSS
|
1964
|
BASIC
|
Kemeny
and Kurtz
|
FARGO
|
1964
|
RPG
|
IBM
|
|
1964
|
TRAC
(implementation)
|
Mooers
|
|
1964?
|
IITRAN
|
|
JOSS
|
1965
|
TELCOMP
|
BBN
|
JOSS I
|
1966
|
JOSS
II
|
Chuck Baker,
RAND
|
FORTRAN IV
|
1966
|
FORTRAN
66
|
|
LISP
|
1966
|
ISWIM
|
Landin
|
ALGOL 60
|
1966
|
CORAL66
|
|
CPL
|
1967
|
BCPL
|
Richards
|
FORTRAN, TELCOMP
|
1967
|
MUMPS
|
Massachusetts
General Hospital
|
*
|
1967
|
APL
(implementation)
|
Iverson
|
ALGOL 60
|
1967
|
SIMULA
67
(implementation)
|
Dahl,
Myhrhaug,
Nygaard
at Norsk
Regnesentral
|
SNOBOL3
|
1967
|
SNOBOL4
|
Griswold,
et
al.
|
PL/I
|
1967
|
XPL
|
W.
M. Mckeeman,
et
al.
at University
Of California
Santa
Cruz, California J.
J. Horning,
et
al.
at Stanford
University
|
DIBOL
|
1968
|
DIBOL-8
|
DEC
|
COWSEL
|
1968
|
POP-1
|
Burstall,
Popplestone
|
|
1968
|
FORTH
(concept)
|
Moore
|
LISP
|
1968
|
LOGO
|
Papert
|
*
|
1968
|
REFAL
(implementation)
|
Valentin
Turchin
|
ALGOL 60
|
1969
|
ALGOL
68
(implementation)
|
van
Wijngaarden,
et
al.
|
ALGOL 60, COBOL,
FORTRAN
|
1969
|
PL/I
(implementation)
|
IBM
|
BCPL
|
1969
|
B
|
Ken
Thompson,
with contributions from Dennis
Ritchie
|
|
1969
|
PPL
|
Thomas
A. Standish
at Harvard
University
|
1970s
|
|
1970?
|
FORTH
(implementation)
|
Moore
|
POP-1
|
1970
|
POP-2
|
|
ALGOL 60
|
1971
|
Pascal
|
Wirth,
Jensen
|
Pascal, XPL
|
1971
|
Sue
|
Holt
et
al.
at University
of Toronto
|
SIMULA 67
|
1972
|
Smalltalk-72
|
Xerox
PARC
|
PL/I, ALGOL, XPL
|
1972
|
PL/M
|
Kildall
at Digital
Research
|
B, BCPL, ALGOL
68
|
1972
|
C
|
Ritchie
|
*
|
1972
|
INTERCAL
|
|
2-level
W-Grammar
|
1972
|
Prolog
|
Colmerauer
|
Pascal, BASIC
|
1973
|
COMAL
|
Christensen,
L๘fstedt
|
Pascal, Sue
|
1973
|
LIS
|
Ichbiah
et
al.
at CII
Honeywell Bull
|
BASIC
|
1974
|
GRASS
|
DeFanti
|
Business BASIC
|
1974
|
BASIC
FOUR
|
BASIC
FOUR CORPORATION
|
LISP
|
1975
|
Scheme
|
Sussman,
Steele
|
Pascal
|
1975?
|
Modula
|
Wirth
|
BASIC
|
1975
|
Altair
BASIC
|
Gates,
Allen
|
ALGOL 68, BLISS,
ECL, HAL
|
1975
|
CS-4
|
Brosgol
at Intermetrics
|
Smalltalk-72
|
1976
|
Smalltalk-76
|
Xerox
PARC
|
C, FORTRAN
|
1976
|
Ratfor
|
Kernighan
|
APL, PPL, Scheme
|
1976
|
S
|
John
Chambers
at Bell
Laboratories
|
*
|
1977
|
FP
|
John
Backus
|
*
|
1977
|
Bourne
Shell
(sh)
|
Bourne
|
Fortran
|
1977
|
IDL
|
David Stern of
Research Systems Inc
|
MUMPS
|
1977
|
Standard
MUMPS
|
|
SNOBOL
|
1977
|
'ICON
(concept)
|
Griswold
|
ALGOL 68, LIS
|
1977
|
Green
|
Ichbiah
et
al.
at CII
Honeywell Bull
for US
Dept of Defense
|
ALGOL 68, CS-4
|
1977
|
Red
|
Brosgol
et
al.
at Intermetrics
for US
Dept of Defense
|
ALGOL 68,
|
1977
|
Blue
|
Goodenough
et
al.
at SofTech
for US
Dept of Defense
|
ALGOL 68,
|
1977
|
Yellow
|
Spitzen
et
al.
at SRI
International
for US
Dept of Defense
|
FORTRAN IV
|
1978
|
FORTRAN
77
|
|
Modula
|
1978?
|
Modula-2
|
Wirth
|
*
|
1978?
|
MATLAB
|
Moler
at the University
of New Mexico
|
Algol60
|
1978?
|
SMALL
|
Brownlee
at the University
of Auckland
|
Ingres
|
1978
|
SQL
aka structured
query language
|
IBM
|
*
|
1978
|
VISICALC
|
Bricklin,
Frankston
marketed by VisiCorp
|
PL/I, BASIC,
EXEC 2
|
1979
|
REXX
|
Cowlishaw
|
C, SNOBOL
|
1979
|
Awk
|
Aho,
Weinberger,
Kernighan
|
SNOBOL
|
1979
|
ICON
(implementation)
|
Griswold
|
*
|
1979
|
Vulcan
dBase-II
|
Ratliff
|
1980s
|
C, SIMULA 67
|
1980
|
C
with classes
|
Stroustrup
|
Smalltalk-76
|
1980
|
Smalltalk-80
|
Xerox
PARC
|
Smalltalk, C
|
1982
|
Objective-C
|
Brad
Cox
|
Green
|
1983
|
Ada
83
|
CII
Honeywell Bull
|
C with Classes
|
1983
|
C++
|
Stroustrup
|
BASIC
|
1983
|
True
BASIC
|
Kemeny,
Kurtz
at Dartmouth
College
|
COBOL
|
1983?
|
ABAP
|
SAP
|
sh
|
1984?
|
Korn
Shell
(ksh)
|
Dave
Korn
|
*
|
1984
|
Standard
ML
|
|
dBase
|
1984
|
CLIPPER
|
Nantucket
|
LISP
|
1984
|
Common
Lisp
|
Guy
Steele
and many others
|
1977MUMPS
|
1985
|
1984
MUMPS
|
|
Pascal
|
1985
|
Object
Pascal
|
Apple
Computer
|
dBase
|
1985
|
PARADOX
|
Borland
|
Interpress
|
1985
|
PostScript
|
Warnock
|
BASIC
|
1985
|
QuickBASIC
|
Microsoft
|
|
1986
|
Miranda
|
David
Turner
at University
of Kent
|
|
1986
|
LabVIEW
|
National
Instruments
|
SIMULA 67
|
1986
|
Eiffel
|
Meyer
|
|
1986
|
Informix-4GL
|
Informix
|
C
|
1986
|
PROMAL
|
|
INFORM
|
1986
|
CorVision
|
Cortex
|
Smalltalk
|
1987
|
Self
(concept)
|
Sun
Microsystems Inc.
|
*
|
1987
|
HyperTalk
|
Apple
|
*
|
1987
|
SQL-87
|
|
C, sed, awk, sh
|
1987
|
Perl
|
Wall
|
MATLAB
|
1988
|
Octave
|
|
dBase-III
|
1988
|
dBase-IV
|
|
Awk, Lisp
|
1988
|
Tcl
|
Ousterhout
|
REXX
|
1988
|
Object
REXX
|
Simon
C. Nash
|
Ada
|
1988
|
SPARK
|
Bernard
A. Carr้
|
APL
|
1988
|
A+
|
Arthur
Whitney
|
*
|
1987
|
Mathematica
|
Wolfram
Research
|
Turbo Pascal,
Object Pascal
|
1989
|
Turbo
Pascal OOP
|
Hejlsberg
at Borland
|
C
|
1989
|
Standard
C89/90
|
ANSI
X3.159-1989 (adopted by ISO in 1990)
|
Modula-2
|
1989
|
Modula-3
|
Cardeli, et al.
|
Modula-2
|
1989
|
Oberon
|
Wirth
|
1990s
|
Oberon
|
1990
|
Object
Oberon
|
Wirth
|
APL, FP
|
1990
|
J
|
Iverson,
R.
Hui
at Iverson Software
|
Miranda
|
1990
|
Haskell
|
|
1984 MUMPS
|
1990
|
1990
MUMPS
|
|
SML 84
|
1990
|
SML
90
|
Milner,
Tofte and Harper
|
Fortran 77
|
1991
|
Fortran
90
|
|
Object Oberon
|
1991
|
Oberon-2
|
Wirth
|
ABC
|
1991
|
Python
|
Van
Rossum
|
C
|
1991
|
Q
|
Albert Graf
|
QuickBASIC
|
1991
|
Visual
Basic
|
Alan
Cooper
at Microsoft
|
SQL-87
|
1992
|
SQL-92
|
|
Turbo Pascal OOP
|
1992
|
Borland
Pascal
|
|
ICI
|
1992
|
Tim Long
|
|
ksh
|
1993?
|
Z
Shell
(zsh)
|
|
Smalltalk
|
1993?
|
Self
(implementation)
|
Sun
Microsystems Inc.
|
Forth
|
1993
|
FALSE
|
Wouter
van Oortmerssen
|
*
|
1993
|
WinDev
|
PC Soft
|
FALSE
|
1993
|
Brainfuck
|
Mller
|
HyperTalk
|
1993
|
Revolution
Transcript
|
|
HyperTalk
|
1993
|
AppleScript
|
Apple
|
APL, Lisp
|
1993
|
K
|
Arthur
Whitney
|
Smalltalk, Perl
|
1993
|
Ruby
|
Yukihiro
Matsumoto
|
|
1993
|
Lua
|
Roberto
Ierusalimschy
et
al.
at Tecgraf,
PUC-Rio
|
C
|
1993
|
ZPL
|
Chamberlain et
al.
at University
of Washington
|
Lisp
|
1994
|
Dylan
|
many people at
Apple
Computer
|
Perl
|
1994
|
PHP
|
Rasmus Lerdof
|
Ada 83
|
1995
|
Ada
95
|
ISO
|
Borland Pascal
|
1995
|
Borland
Delphi
|
Anders
Hejlsberg
at Borland
|
|
1995
|
ColdFusion
|
Allaire
|
C, SIMULA67 OR
C++, Smalltalk, Objective-C
|
1995
|
Java
|
James
Gosling
at Sun
Microsystems
|
1990MUMPS
|
1995
|
1995
MUMPS
|
|
Self, Java
|
1995?
|
LiveScript
|
Brendan
Eich
at Netscape
|
Fortran 90
|
1996
|
Fortran
95
|
|
APL, Perl
|
1996
|
Perl
Data Language
(PDL)
|
Karl
Glazebrook,
Jarle
Brinchmann,
Tuomas
Lukka,
and Christian
Soeller
|
S
|
1996
|
R
|
Robert
Gentleman
and Ross
Ihaka
|
REXX
|
1996
|
NetRexx
|
Cowlishaw
|
|
1996
|
Lasso
|
Blue
World Communication
|
Joule,
Original-E
|
1997
|
E
|
Mark
S. Miller
|
LiveScript
|
1997?
|
JavaScript
|
Brendan
Eich
at Netscape
|
SML 90
|
1997
|
SML
97
|
Milner,
Tofte, Harper
and MacQueen
|
PHP 3
|
1997
|
PHP
|
PHP team
|
Scheme
|
1997
|
Pico
|
Free University
of Brussels
|
Smalltalk-80,
Self
|
1997
|
Squeak
Smalltalk
|
Alan
Kay,
et
al.
at Apple
Computer
|
JavaScript
|
1997?
|
ECMAScript
|
ECMA
TC39-TG1
|
Smalltalk, APL,
Objective-C
|
1997
|
F-Script
|
Philippe
Mougin
|
C++, Standard C
|
1998
|
Standard
C++
|
ANSI/ISO
Standard C++
|
Prolog
|
1998
|
Erlang
|
Open Source
Erlang at Ericsson
|
Standard C89/90
|
1999
|
Standard
C99
|
ISO/IEC
9899:1999
|
DSSSL
|
1999
|
XSLT
|
W3C
|
2000s
|
Java
|
2000
|
Join
Java
|
G
Stewart von Itzstein
|
FP, Forth
|
2000
|
Joy
|
von
Thun
|
C, C++, C#, Java
|
2000
|
D
|
Walter
Bright
at Digital Mars
|
C, C++, Java,
Delphi
|
2000
|
C#
|
Anders
Hejlsberg
at Microsoft(ECMA)
|
Java
|
2001
|
AspectJ
|
Xerox
PARC
|
Self,
NetwonScript
|
2002
|
Io
|
Steve
Dekorte
|
Perl, C++
|
2003
|
S2
|
Fitzpatrick,
Atkins
|
C#, ML,
MetaHaskell
|
2003
|
Nemerle
|
University of
Wroclaw
|
Joy, Forth, Lisp
|
2003
|
Factor
|
Slava Pestov
|
Fortran 95
|
2004
|
Fortran
2003
|
|
*
|
2004
|
Subtext
|
Jonathan Edwards
|
Python, C#, Ruby
|
2004
|
Boo
|
Rodrigo B. de
Oliveira
|
Object
Pascal,
C#
|
2004
|
Chrome
programming language
|
RemObjects
Software
|
Java
|
2004
|
Groovy
|
James
Strachan
|
*
|
2005
|
Corn
|
|
Haskell
|
2006
|
Links
|
Phil
Wadler,
University
of Edinburgh
|
ksh, C#, Ruby,
SQL
|
2006
|
Windows
PowerShell
|
Microsoft
|