Programming Language

Download Report

Transcript Programming Language

ภาษาคอมพิวเตอร์
COMPUTER LANGUAGE
ภาษาคอมพิวเตอร์ (Computer Language)
2


ภาษาคอมพิวเตอร์ (Computer Language) หมายถึง ภาษาใดๆ ที่ถูกออกแบบ
โครงสร้างขึ้นมา เพือ่ ใช้ในการเขียนคาสัง่ ประกอบด้วยโครงสร้างภาษา
รู ปแบบไวยากรณ์ และความหมาย เพือ่ สัง่ ให้คอมพิวเตอร์ทางานตามที่ตอ้ งการ
ภาษาคอมพิวเตอร์ แบ่งออกเป็ น 2 ระดับ คือ
 ภาษาระดับต่า
 ภาษาระดับสู ง
Low level & High Level language
3




ภาษาระดับต่า (low level)
ภาษาเครื่ อง (Machine Language) ที่มีลกั ษณะการใช้คาสัง่ เป็ นชุดของตัว
เลขฐานสอง คือ 0 กับ 1
ภาษาแอสเซมบลี (Assembly Language) ที่ใช้สัญลักษณ์เป็ นอักษรภาษาอังกฤษ
ร่ วมกับเลขฐานอื่น ๆ ในการใช้งานจะถูกตัวแปลภาษา แปลงให้เป็ น
ภาษาเครื่ องอีกที
ภาษาระดับสูง (high level) เป็ นภาษาที่พฒั นาต่อเนื่องมาจากภาษาระดับต่า
เพือ่ ให้โปรแกรมเมอร์สามารถเขียนชุดคาสัง่ ได้ง่ายขึ้น จึงมีการกาหนด
สัญลักษณ์การใช้งานคาสัง่ เป็ นรู ปแบบของภาษาอังกฤษที่ใกล้เคียงกับภาษา
มนุษย์ เช่น Fortran, Basic, Cobol, Pascal, C, VB, Delphi, Java เป็ นต้น
ระดับของภาษาในทางคอมพิวเตอร์
(Levels of Language in Computing)
4
ตัวอย่างภาษาคอมพิวเตอร์ (แบ่งตามกลุ่มของภาษา)
5
ภาษาโปรแกรม
 ภาษามาร์ คอัพ
 ภาษาสคริ ป
 ภาษาสไตล์ชีท (Style Sheet Language)
 ภาษาสอบถาม (Query Language)

ภาษาโปรแกรม (Programming Language)
6



ภาษาที่สามารถใช้ ควบคุมกำหนดพฤติกรรมกำรทำงำนของคอมพิวเตอร์
(Flow control) ภาษาโปรแกรมก็เหมือนภาษามนุษย์จะต้องใช้ 
วำกยสั มพันธ์ (Syntax) และควำมหมำย (Semantic) เพือ่ กาหนดโครงสร้าง
และตีความหมายตามลาดับ
แต่ละภาษาจะมีโครงสร้างของภาษา รู ปแบบไวยากรณ์ และคาศัพท์ ที่ไม่
เหมือนกัน แต่หลักการของภาษา จะเหมือนกัน เช่น ตัวแปรชนิดต่างๆ, การ
ควบคุมการทางาน ฟังก์ชนั
เช่น ภาษา Pascal, C, VB, Java
ภาษาสคริ ป (Scripting Language)
7
ภาษา script (Scripting Language) จัดเป็ นภาษาโปรแกรมชนิดหนึ่ง แต่
มีลกั ษณะที่เรี ยนรู ้ได้ง่ายกว่าภาษาโปรแกรมโดยทัว่ ไป และ code ที่
เขียนจะถูกตีความ (Interpreted) และ execute ไปทีละคาสัง่ ผ่าน
software พวก Script Engine ที่สนับสนุนภาษา script นั้นๆ
 Scripting Language เป็ น interpreted language และต้องอาศัย run บน
โปรแกรมอื่น ในขณะที่ Programming Language เป็ น compiled
language
 เช่น Java script, PHP

ภาษาสคริ ป (Scripting Language)
8
ภาษา script นิยมใช้ในการสร้างเว็บเพจ แบ่งได้เป็ น
1) Server-Side Script เช่น PHP, ASP, JSP, CGI เป็ นภาษา script ที่ประมวลผลที่
ฝั่ง server แล้วส่ งผลลัพธ์ไปแสดงผลที่ฝั่ง client ผ่านโปรแกรมเว็บบราวเซอร์
2) Client-Side Script เช่น JavaScript, VBScript, JScript เป็ นภาษา script ที่
ประมวลผลบนเครื่ องคอมพิวเตอร์ของผูเ้ ยีย่ มชมเว็บไซต์ โดยใช้โปรแกรมเว็บ
บราวเซอร์ ซึ่งจะช่วยแบ่งเบาการทางานให้กบั เครื่ อง web server ได้
 ในกรณี ที่ตอ
้ งการให้แอพพลิเคชันทางานร่ วมกันกับแอพพลิเคชันอื่น เช่น
ฐานข้อมูล จะใช้ Server-Side Script ผูใ้ ช้จะไม่เห็นคาสัง่ ของ Server-Side Script
ส่ วนการเขียนคาสัง่ แบบ Client-Side Script ที่ผอู ้ ื่นจะเห็นคาสัง่ ที่เขียนได้ ด้วย
การเลือกคาสัง่ view source ในโปรแกรมเว็บเบราเซอร์

ภาษาสอบถาม (Query Language)
9



เป็ นภาษาคอมพิวเตอร์ที่ใช้สาหรับสอบถามหรื อจัดการกับข้อมูลใน DBMS
ภาษาประเภทนี้ที่ได้รับความนิยมสูงสุ ดคือ ภาษาสอบถามเชิงโครงสร้าง
(Structure Query Language: SQL) มีรูปแบบคาสัง่ ที่คล้ายกับประโยคใน
ภาษาอังกฤษมาก
ปั จจุบนั ภาษาสอบถามเชิงโครงสร้าง เป็ นภาษามาตรฐานสาหรับระบบการ
จัดการฐานข้อมูลเชิงสัมพันธ์ (Relational Database management System หรื อ
RDBMS) ซึ่งเป็ นระบบ DBMS แบบที่ใช้กนั แพร่ หลายที่สุดในปั จจุบนั
ภาษามาร์คอัพ (Markup Language)
10


ภาษาประเภท Markup เป็ นภาษาคอมพิวเตอร์ที่แสดงทั้งข้อมูล และรู ปแบบการ
แสดงผลเข้าด้วยกัน ได้แก่ HTML, XHTML, XML
ภาษา HTML จัดเป็ นภาษาโปรแกรมหรื อไม่
เพราะเหตุใด
ภาษามาร์คอัพ (Markup Language)
11


ภาษาประเภท Markup เป็ นภาษาคอมพิวเตอร์ที่แสดงทั้งข้อมูล และรู ปแบบการ
แสดงผลเข้าด้วยกัน ได้แก่ HTML, XHTML, XML
ภาษา HTML ไม่ใช่ภาษาโปรแกรม เพราะโครงสร้างของภาษา รู ปแบบ
ไวยากรณ์ (Syntax) ของภาษา HTML ไม่มีเรื่ องตัวแปร ไม่มี Flow Control เช่น
คาสัง่ if…else…, for, while สาหรับควบคุมการทางานของโปรแกรม
ภาษาโปรแกรม
PROGRAMMING LANGUAGE
ภาษาโปรแกรม
13

แนวคิดในยุคแรกเริ่มออกแบบและสร้างขึ้ นให้สามารถทางานได้กบั
คอมพิวเตอร์ที่มีสถาปั ตยกรรมแบบ Von Neumann
 การทางานตามคาสัง่ จะเป็ นการทาแบบเรียงตามลาดับจากคาสัง่
หนึ่ งไปยังคาสัง่ ถัดไป (ยกเว้นบางกรณีที่มีการเปลี่ยนลาดับคาสัง่ )
 มีการนิ ยามตัวแปร
เพื่อใช้ในการอ้างอิงถึงตาแหน่ ง
ข้อมูลในหน่ วยความจา
 ภาษาในกลุ่มนี้ เรียกว่า ………………………………………………
เช่น …………………………………………………………………….
The Von Neumann Architecture
14

Well-known computer architecture: Von Neumann
่ ายในหน่วยความจา
 ข้อมูล และโปรแกรมอยูภ
่ บั CPU
 หน่วยความจา แยกกันอยูก
 คาสั่งและข้อมูลจะถูกส่ งจากหน่วยความจามายัง CPU
 พื้นฐานของ imperative languages
 โมเดลทางด้านการใช้ตวั แปร การให้ค่าตัวแปร
 มีลป
ู กระบวนการทาซ้ า
The Von Neumann Architecture
15
Von Neumann Bottleneck
16
ความเร็ วในการเชื่อมต่อระหว่างหน่วยความจา กับ CPU เป็ นตัวกาหนด
ความเร็ วของคอมพิวเตอร์
 คาสัง
่ โปรแกรมจะถูก execute ได้เร็ วกว่าการส่ งข้อมูลจากหน่วยความจา
มายัง CPU
 เกิดปั ญหาคอขวด (bottleneck)
 Known as von Neumann bottleneck; เป็ นปั ญหาเบื้องต้นในการพัฒนา
ความเร็ วของคอมพิวเตอร์

วิวฒ
ั นาการของภาษาโปรแกรม


1950s and early 1960s: Simple applications; worry about
machine efficiency
Late 1960s: People efficiency became important; readability,
better control structures



Late 1970s: Process-oriented to data-oriented


structured programming
top-down design
data abstraction
Middle 1980s: Object-oriented programming

Data abstraction + inheritance + polymorphism
ยุคของภาษาคอมพิวเตอร์
18

ยุคที่ 1 (First Generation Language : 1GL)
 ยุคที่ 2 (Second Generation Language : 2GL)
 ยุคที่ 3 (Third Generation Language : 3GL) หรือ
(High Level Language)
 ยุคที่ 4 (Fourth Generation Language : 4GL) หรือ
(Very High Level Language)
 ยุคที่ 5 (Fifth Generation Language : 5GL) หรือ
(Natural Language)
ยุคที่ 1: ภาษาเครื่อง
19




ก่อนปี ค.ศ. 1952 มีภาษาคอมพิวเตอร์เพียงภาษาเดียวเท่านั้นคือ
ภาษาเครื่อง (Machine Language) เป็ นภาษาระดับตา่ ที่สุด
ใช้เลขฐานสอง คือ 0 และ 1 ซึ่งจะสัมพันธ์กบั การเปิ ด (On) และการปิ ด (Off)
ของสัญญาณไฟฟ้ า
มนุ ษย์ทาความเข้าใจได้ยาก แต่เครื่องนาไปทางานได้เร็ว
เครื่องคอมพิวเตอร์แต่ละประเภทจะมีภาษาเครื่องที่เป็ นของตนเอง ไม่สามารถ
นาภาษาเครื่องที่ใช้กบั เครื่องประเภทหนึ่ ง ไปใช้กบั เครื่องประเภทอื่นได้
เนื่ องจากแต่ละระบบก็จะมีชุดคาสัง่ ของภาษาเครื่องที่แตกต่างกันออกไป ซึ่ง
เป็ นลักษณะของภาษาที่มีพฒ
ั นาการนั้นขึ้นอยูก่ บั เครื่อง (Machine
Dependent)
ยุคที่ 1: ภาษาเครื่อง
20

คาสัง่ ในภาษาเครื่องจะประกอบด้วย 2 ส่วน คือ
1. …………………………………………………………. เป็ นคาสัง่ ที่สงั ่ ให้คอมพิวเตอร์
ปฏิบตั ิการ เช่นการบวก (Addition) , การลบ (Substraction) เป็ นต้น
2. ……………………………………………………………… เป็ นตัวที่ระบุตาแหน่ งที่เก็บ
ของข้อมูลที่จะนาเข้าสู่คอมพิวเตอร์เพือ่ นาไปปฏิบตั ิการตามคาสัง่ ในโอเปอเรชัน
โค้ด
ยุคที่ 2 : ภาษาสัญลักษณ์ หรือ ภาษาแอสเซมบลี
21




ใช้ตวั อักษรในภาษาอังกฤษมาแทนคาสัง่ ที่เป็ นเลขฐานสอง เรียกอักษร
สัญลักษณ์ที่เป็ นคาสัง่ นี้ ว่า สัญลักษณ์ขอ้ ความ (mnemonic codes) เพื่อให้ง่าย
ต่อการเขียนและการจดจามากกว่าภาษาเครื่อง
ผูเ้ ขียนสามารถใช้ตวั แปรที่ต้งั ขึ้ นมาเองในการเก็บค่าข้อมูลใดๆ (รีจิสเตอร์)
เช่น ax, bx
ตัวแปลภาษาแอสเซมบลีเรียกว่า แอสเซมเบลอร์(Assembler)
ภาษาแอสเซมบลี 1 คาสัง่ จะสามารถแปลเป็ นภาษาเครื่อง 1 คาสัง่
ภาษาแอสเซมบลี จะมีลกั ษณะที่เหมือนกับภาษาเครื่อง คือ เป็ นภาษาที่ขึ้นอยู่
กับเครื่อง คือเราไม่สามารถนาโปรแกรมที่เขียนด้วยแอสเซมบลี โปรแกรม
เดียวกันไปใช้ในเครื่องต่างชนิ ดกันได้
Assembly
code
22
Assembler
Object code
22
ยุคที่ 3 : ภาษาระดับสูง
23

เป็ นภาษาที่ถกู สร้างขึ้ นมาเพื่อให้สามารถเขียน และอ่านโปรแกรมได้ง่ายขึ้ น
เนื่ องจากมีลกั ษณะเหมือนภาษาอังกฤษทัว่ ๆไป

โปรแกรมที่ถกู เขียนด้วยภาษาประเภทนี้ จะทางานได้ ก็ต่อเมื่อมีการแปลงให้
เป็ นภาษาเครื่องเสียก่อน ซึ่งต้องใช้ตวั แปลภาษา คอมไพเลอร์
(Compiler) หรือ อินเตอร์พรีเตอร์(Interpreter) โดยภาษาชั้นสูงแต่ละภาษา
จะมีตวั แปลภาษาเฉพาะเป็ นของตัวเอง

สามารถนาโปรแกรมไปใช้งานบนเครื่องที่ต่างกันได้โดยอาจมีการแก้ไขโค้ด
เล็กน้อยหรือไม่ตอ้ งแก้ไขเลยเพียงแต่ตอ้ งทาการแปลโปรแกรมใหม่ คือมี
ลักษณะที่ไม่ข้ ึนอยูก่ บั เครื่อง (Machine Independent)
ยุคที่ 3 : ภาษาระดับสูง
24

มีชุดคาสัง่ โปรแกรมให้ใช้ (program libraries)

ภาษารุ่นที่ 3 นี้ ส่วนใหญ่จะจัดอยูใ่ นกลุ่มของ ภาษามีแบบแผน
(Procedural Language) เนื่ องจาก ลักษณะการเขียนโปรแกรม จะมี
โครงสร้างแบบแผนที่เป็ นระเบียบ กล่าวคือ งานทุกอย่างผูเ้ ขียนโปรแกรม
ต้องเขียนโปรแกรมควบคุม การทางานเองทั้งหมด และต้องเขียนคาสัง่ การ
ทางานที่เป็ นขั้นเป็ นตอนทุกอย่าง ไม่วา่ จะเป็ นการสร้างแบบฟอร์มกรอก
ข้อมูล การประมวลผล หรือการสร้างรายงาน ซึ่งโปรแกรมที่เขียนจะค่อนข้าง
ซับซ้อน และใช้เวลาในการพัฒนาค่อนข้างมาก
เช่น ภาษาฟอร์แทรน(Fortran) , โคบอล (Cobol) , เบสิก (Basic) ,
ปาสคาล (Pascal) , ซี(C) , เอดา(ADA) เป็ นต้น

ยุคที่ 3 : ภาษาระดับสูง
25
ยุคที่ 4 : ภาษาระดับสูงมาก
26


ช่วยในเรื่องของการสร้างแบบฟอร์มบนหน้าจอ เพื่อจัดการเกี่ยวกับข้อมูล
รวมไปถึงการออกรายงาน ซึ่งจะมีการจัดการที่งา่ ยมากไม่ยุง่ ยากเหมือน
ภาษารุ่นที่3
โปรแกรมเมอร์สามารถใช้ visual environment ได้โดยใช้เครื่องมือทางด้าน
กราฟิ ก ทาให้สร้าง Prototype หรื อ GUI ของโปรแกรมได้รวดเร็ว
ประหยัดเวลา

รวมถึงภาษาโปรแกรมใช้รวบรวมการจัดการฐานข้อมูล

ภาษาที่อยูใ่ นกลุ่มนี้ ได้แก่…………………………………………………
27
28
ยุคที่ 5 : ภาษาธรรมชาติ
29

คือ ภาษามนุ ษย์ที่สงั ่ ให้คอมพิวเตอร์ทางาน ซึ่งอาจมีรปู แบบที่ไม่แน่ นอน
ตายตัว แต่คอมพิวเตอร์ก็สามารถแปลคาสัง่ เหล่านั้นให้อยู่ ในรูปแบบที่
คอมพิวเตอร์สามารถเข้าใจคาสัง่ ได้ ถ้าคาสัง่ ใดไม่กระจ่างชัดเจน ก็จะมีการ
ถามกลับ เพื่อให้เข้าใจคาสัง่ ได้อย่างถูกต้อง

ภาษาธรรมชาตินี้ ถูกสร้างขึ้ นมาจากเทคโนโลยีทางด้านระบบผูเ้ ชี่ยวชาญ
(Expert System) ซึ่งเป็ นงานที่อยูใ่ นสาขาปั ญญาประดิษฐ์ (Artificial
Intelligence) ในการที่พยายามทาให้คอมพิวเตอร์ เปรียบเสมือนกับเป็ น
ผูเ้ ชี่ยวชาญ คนหนึ่ งที่สามารถคิด และตัดสินใจ ได้เช่นเดียวกับมนุ ษย์
ยุคที่ 5 : ภาษาธรรมชาติ
30

ระบบผูเ้ ชี่ยวชาญนี้ จะใช้กบั งานเฉพาะด้านใดด้านหนึ่ ง เช่นในด้านการแพทย์
ในการพยากรณ์อากาศ ในการวิเคราะห์ทางเคมี การลงทุน ฯลฯ ซึ่งจะต้องมี
การเก็บรวบรวมข้อมูล และข่าวสารจากผูเ้ ชี่ยวชาญเฉพาะด้านนั้น ๆ และ
แปลงให้อยูใ่ นรูปของกฏเกณฑ์ และข้อความจริงต่าง ๆ เก็บไว้ในระบบ
ฐานข้อมูล ของผูเ้ ชี่ยวชาญ ที่เรียกว่า ฐานความรู ้ (Knowledge Base) ซึ่ง
จะต้องเก็บข้อมูลที่มีอยูเ่ ป็ นจานวนมหาศาล และให้ผใู้ ช้สามารถใช้กบั
ภาษาธรรมชาติ ในการดึงข้อมูลจากฐานความรูน้ ี้ ได้ ดังนั้นเราจึงอาจเรียก
ระบบผูเ้ ชี่ยวชาญนี้ ได้อีกอย่างว่า ระบบฐานความรู ้ (Knowledge Base
System)
ยุคที่ 5 : ภาษาธรรมชาติ
31


http://www.youtube.com/watch?v=42iQIbyCo4&feature=related
http://www.youtube.com/watch?v=VfAOLJzBrOY&f
eature=related
Low-level VS High-level language
32
Low-level
High-level


ขึ้ นอยูก่ บั เครื่อง/ประเภท
 รันได้เฉพาะบนเครื่องนั้ น
 อ่านแล้วเข้าใจได้ยาก
 ภาษาเครื่อง (ยุคที่1)
 ภาษาแอสเซมบลี (ยุคที่2)
ไม่ขึ้นอยูก่ บั เครื่อง
 รันบนเครื่องอื่นได้
 อ่านเข้าใจได้ง่าย
 ภาษายุคที่ 3, 4, 5
PROGRAMMING LANGUAGE
PARADIGMS
Language Categories (Paradigms)
34
Paradigm ในทางการโปรแกรมนั้น หมายถึง รู ปแบบของวิธีคิดในการ
แก้ปัญหาภายใต้ลกั ษณะเฉพาะของโปรแกรม และภาษา
 ภาษาโปรแกรมบางภาษาออกแบบมาเพื่อรองรับมากกว่าหนึ่ งรู ปแบบ
 เช่น ภาษา C++ ซึ่ งเป็ นทั้งภาษาเชิ งคาสัง
่ และภาษาเชิงวัตถุ หรื อภาษาเชิง
ทดลองอย่างเช่น ภาษา Leda ก็ออกแบบมาให้รองรับทุกรู ปแบบ
 โปรแกรมในยุคแรกๆ เช่น PL/I หรื อ Algol 68 หรื อ Ada มักออกแบบ
โดยรองรับเพียงรู ปแบบเดียวเพื่อการใช้งานทัว่ ไป

Language Categories (Paradigms)
35
1. ………………………………………………………….
2. ………………………………………………………….
3. ………………………………………………………….
4. ………………………………………………………….
ภาษาเชิงคาสัง่ (Imperative Programming)
36




ภาษาเชิงคาสัง่ เป็ นรูปแบบที่เก่าแก่ที่สุด
โปรแกรมประกอบขึ้ นจากชุดคาสัง่ ที่มีลาดับการทางานแน่ นอน
มีรากฐานมาจากคอมพิวเตอร์ที่มีสถาปั ตยกรรมแบบ Von Neumann
ที่ออกแบบโดยมีลกั ษณะที่ตอ้ งเก็บโปรแกรมและตัวแปรไว้ในหน่ วยความจา
หัวใจสาคัญของภาษาในกลุ่มนี้ คือ แนวคิดในการกาหนดค่า กล่าวคือ เป็ นการ
เปลี่ยนแปลงค่าในหน่ วยความจาหลักนัน่ เอง การประกาศตัวแปรเป็ นการ
เชื่อมโยงชื่อเข้ากับตาแหน่ งและชนิ ดข้อมูลของค่าที่เก็บไว้ การตีความของ
นิ พจน์ก็คือการคานวณโดยดึงค่าของตัวแปรจากหน่ วยความจามาใช้
ภาษาเชิงคาสัง่ (Imperative Programming)
37

ลักษณะที่สาคัญโดยทัว่ ไปที่สนับสนุ นภาษาหนึ่ งๆ ให้เป็ นภาษาเชิงคาสัง่ มี
ดังต่อไปนี้
 คำสั่ งกำหนดค่ ำ (Assignment) (= จำก Fortran, := จำก Algo)
 คำสั่ งวนซ้ำ (Loop)
 คำสั่ งทำงำนตำมลำดับ (Sequence)
 คำสั่ งเงือ
่ นไข (Conditional statement) และ
 คำสั่ งในกำรจัดกำรควำมผิดปกติของโปรแกรม (Exception handling หรื อสิ่ งที่ไม่ คำด
ว่ ำจะเกิด ขึน้ ในโปรแกรม)
 Procedure abstraction มีลกั ษณะของ อัลกอริ ทึมร่ วมกับโครงสร้างข้อมูล (algorithm
plus data structures) อัลกอริ ทึมจะนามาพัฒนาเป็ นโปรแกรมโดยใช้แนวคิดที่สาคัญ 2
ประการ
ภาษาเชิงคาสัง่ (Imperative Programming)
38

Procedure abstraction
 procedure
abstraction เป็ นกระบวนการที่ทาให้โปรแกรมเมอร์สนใจเฉพาะการ
ติดต่อระหว่างฟั งก์ชนั กับผลที่ได้รบั โดยไม่จาเป็ นต้องสนใจรายละเอียดของการ
ทางาน เช่น การพัฒนา library ของฟั งก์ชนั มาตรฐานทางคณิตศาสตร์มาพร้อม
กับภาษา
 stepwise refinement เป็ นกระบวนการที่ทาให้สามารถนา procedure
abstraction มาใช้ในการพัฒนาอัลกอริทึมจากรูปแบบทัว่ ไปมาเป็ นการนามาใช้
แบบเฉพาะเจาะจง เช่น การพัฒนาฟั งก์ชนั sorting ที่โปรแกรมต้องการ
อัลกอริทึมในการเรียกข้อมูลตัวเลขในอาร์เรย์ โดยไม่จาเป็ นต้องรูร้ ายละเอียดว่า
ทาอย่างไร เช่น sort(list, len)

ตัวอย่างภาษาเชิงคาสัง่ ได้แก่ ภาษาโคบอล (Cobol) ฟอร์แทรน (Fortran)
ซี (C) เอดา (Ada) และเพิรล์ (Perl)
ภาษาเชิงคาสัง่ vs ภาษาเชิงวัตถุ
39

Eg. ตัวอย่างโปรแกรมระบบบริหารโรงแรม
int room;
room = 11;
init(room);
clean(room);
book(room);
checkin(room);
checkout(room);
New room;
room = 11;
room.init();
room.clean();
room.book();
room.checkin();
room.checkout();
ภาษาเชิงวัตถุ (Object Oriented Programming)
40


เป็ นภาษาที่มีววิ ฒ
ั นาการมาจากภาษาเชิงคาสัง่ บางตาราอาจจัดภาษาเชิง
วัตถุวา่ เป็ นกลุ่มย่อยของภาษาเชิงคาสัง่ โดยเริ่มต้นจากการพัฒนา
Procedure abstraction มาเป็ นแนวคิดแบบ ………………………………………………….
ภาษาที่มี ADTs มีคุณสมบัติ 2 ประการ คือ
 Encapsulation
เป็ นการนาข้อมูลกับ operations มาผูกติดกันเป็ นหน่ วยหนึ่ ง
 Information hiding เป็ นการกาหนดขอบเขตในการอ้างถึงข้อมูลหรือ operations
ของชนิ ดข้อมูลหนึ่ งๆ ข้อมูลภายใน data นี้ จะไม่ถกู อ้างถึงได้โดยตรง แต่ผ่านทาง
operations ที่กาหนดไว้
ภาษาเชิงวัตถุ (Object Oriented Programming)
41



แนวคิดที่สาคัญของภาษาเชิงวัตถุ คือ การมองปั ญหาอยูใ่ นลักษณะของกลุม่ วัตถุ
(Object) ซึ่งโดยทัว่ ไปจะเก็บสถานะ (state) ที่เป็ นข้อมูลของตัวเองได้ และสามารถ
ทากิจกรรมบางอย่างได้ เช่น คานวณเปลี่ยนแปลงข้อมูล ติดต่อหรือโต้ตอบกับวัตถุ
อื่นได้
การโต้ตอบกับวัตถุนี้เองทาให้ขอ้ มูลของวัตถุมีลกั ษณะเป็ นแบบ ……………..... แทนที่จะ
เป็ นแบบ ………………… ซึ่งเป็ นสิ่งที่ทาให้ภาษาเชิงวัตถุแตกต่างจากภาษาเชิงคาสัง่ อย่าง
ชัดเจน
การสร้างกลุ่มคาสัง่ ของภาษาเชิงวัตถุจะอาศัยหลักการพื้ นฐานดังต่อไปนี้
 การสืบทอดคุณสมบัติ
(Inheritance)
 การมีหลายรูป (Polymorphism)

ตัวอย่างภาษาเชิงวัตถุ ได้แก่ ภาษาสมอลทอล์ก (Smalltalk) ซีพลัสพลัส (C++) จา
วา (Java) และซีชาร์บ (C#)
ภาษาเชิงฟังก์ชนั (Functional Programming)
42



เป็ นภาษาที่ใช้หลักการของฟั งก์ชนั ทางคณิตศาสตร์ คือเป็ นการ mapping
สมาชิกของเซตหนึ่ ง เรียกว่า domain set หรือ input ไปยังสมาชิกของอีกเซ็ต
หนึ่ งเรียกว่า range set หรือ output โดยใช้รปู แบบของ lambda expression
ดังตัวอย่างของฟั งก์ชนั cube (x) = x * x * x ซึ่งเขียนอยูใ่ นรูปแบบ lambda
expression ได้ดงั นี้ λ (x) x * x * x
Lambda expressions เป็ นการอธิบายฟั งก์ชนั แบบไม่มชี ื่อ การใช้งานทาได้
โดยการแทนที่ค่าพารามิเตอร์ในนิ พจน์ ตัวอย่างเช่น (λ(x) x * x * x)(3) มี
ค่าเท่ากับ 27
ภาษาเชิงฟังก์ชนั (Functional Programming)
43


ภาษาโปรแกรมในกลุ่มนี้แตกต่างจากภาษาที่ใช้คาสัง่ กาหนดค่า ตัวอย่างเช่น
คาสัง่ กาหนดค่า x = x+1 เป็ นคาสัง่ ที่ไม่สมเหตุสมผลทางคณิ ตศาสตร์และใน
ภาษาเชิงฟังก์ชนั ด้วย
การควบคุมการทางานของโปรแกรมจะใช้
 กำรแปรค่ ำตำมเงือ
่ นไข (conditional)
 กำรเรี ยกตัวเองซ้ำ (recursion)

ตัวอย่างภาษาเชิงฟังก์ชนั ที่สาคัญ ได้แก่ ภาษาลิสพ์ (Lisp) สคีม (Scheme)
แฮสเคล (Haskell) และภาษาเอ็มแอล (ML)
ภาษาเชิงฟังก์ชนั (Functional Programming)
44


ข้อดีของภาษาเชิงฟั งก์ชนั เมื่อเทียบกับภาษาเชิงคาสัง่ คือ มี syntax และ
semantic ที่เข้าใจได้งา่ ย ซึ่งแตกต่างจากภาษาเชิงคาสัง่ ที่มกั จะมีรปู แบบที่
ซับซ้อน เข้าใจได้ยาก
ตัวอย่างการใช้งาน ได้แก่ ภาษา LISP ที่มกั จะใช้ในงานทางด้าน
ปั ญญาประดิษฐ์ เช่น การแทนความรู ้ (Knowledge representation) การ
เรียนรูด้ ว้ ยเครื่อง (Machine learning) การประมวลผลภาษาธรรมชาติ
(Natural language processing) เป็ นต้น หรือภาษา Scheme ที่มกั ใช้ในการ
สอนวิชาการเขียนโปรแกรมเบื้ องต้น เพราะเป็ นภาษาที่รปู แบบการเขียนง่าย
ไม่ซบั ซ้อน
ภาษาเชิงฟังก์ชนั (Functional Programming)
45


http://forrest.psych.unc.edu/teaching/p285/p285
pgmexmpchap3.html
http://norvig.com/paip/examples.lisp
ภาษาเชิงตรรกะ (Logical Programming)
46



อาจเรี ยกว่าเป็ นภาษา rule-based language เนื่องจากโปรแกรมมีลกั ษณะคล้ายกับ
เซตของกฎ หรื อข้อบังคับของปั ญหา แทนที่จะเป็ นลาดับการทางานของคาสัง่
โปรแกรมจะประกอบไปด้วย ……………………………………………………..
ที่ใช้แสดงความสัมพันธ์ในลักษณะ IF…THEN เพือ่ เชื่อมโยงความจริ งที่มีอยูไ่ ปสู่
ความจริ งใหม่อื่นๆ
การแปลความการประกาศของโปรแกรมเชิงตรรกะ จะสร้างเซตของการแก้ปัญหา
ที่เป็ นไปได้ท้ งั หมดตามที่โปรแกรมระบุไว้ ภาษาเชิงตรรกะเหมาะสาหรับการ
แก้ปัญหาที่มีรายละเอียดไม่สมบูรณ์
ภาษาเชิงตรรกะ (Logical Programming)
47

องค์ประกอบของภาษา ประกอบด้วย
 ข้อเท็จจริง
(fact) ที่ใช้อธิบายข้อเท็จจริงในรูปความสัมพันธ์ของวัตถุ
 ข้อคาถาม (query) ใช้ในการตั้งคาถามเพื่อให้โปรแกรมหาคาตอบได้
 ตัวแปร (variable) สามารถระบุตวั แปรในข้อคาถามได้ เพื่อให้โปรแกรมหา
คาตอบได้เช่นกัน
 กฎ (rules) ที่ใช้อธิบาย Object หรือ สิ่งที่เราสนใจ กับ Relation ที่ใช้อธิบาย
ความสัมพันธ์ของobject

ตัวอย่างการใช้งาน ได้แก่ ภาษา Prolog ที่มกั จะใช้ในงานทางด้าน
ปั ญญาประดิษฐ์ เช่น การประมวลผลภาษาธรรมชาติ (Natural language
processing) หรือระบบผูเ้ ชี่ยวชาญ (Expert system) เป็ นต้น
ภาษาเชิงตรรกะ (Logical Programming)
48

http://www.csupomona.edu/~jrfisher/www/prolog
_tutorial/2_1.html
ขอบเขตของภาษาคอมพิวเตอร์

Scientific applications



Business applications




Symbols rather than numbers manipulated
LISP
Systems programming



Produce reports, use decimal numbers and characters
COBOL
Artificial intelligence


Large number of floating point computations
Fortran
Need efficiency because of continuous use
C
Web Software

Eclectic collection of languages: markup (e.g., XHTML), scripting (e.g., PHP),
general-purpose (e.g., Java)
ภาษาที่ได้รบั ความนิ ยมในปั จจุบนั
51
The TIOBE Programming Community index is an indicator of the popularity of programming languages.
The index is updated once a month. The ratings are based on the number of skilled engineers world-wide,
courses and third party vendors. The popular search engines Google, Bing, Yahoo!, Wikipedia, Amazon,
YouTube and Baidu are used to calculate the ratings.
52
ภาษาในปั จจุบนั : Major languages
53
Paradigm
 Imperative
 Object-oriented
Programming domain
 Visual programming
 Internet programming
 Mobile programming
แนวโน้มของภาษาโปรแกรม
54

Commercial trend ในช่วงห้าปี ที่ผ่านมา
 ความนิ ยมของภาษาเช่น JAVA, C#
 ภาษา Script

ต่างๆ เช่นใน web application ต่างๆ
ภาษาที่นิยมใช้ในการเรียนการสอน
 เริ่มมีความนิ ยมให้ใช้ Java
เป็ นภาษาแรกแทนที่ C