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
 การทางานตามคาสัง่ จะเป็ นการทาแบบเรียงตามลาดับจากคาสัง่
หนึ่ งไปยังคาสัง่ ถัดไป (ยกเว้นบางกรณีที่มีการเปลี่ยนลาดับคาสัง่ )
 มีการนิ ยามตัวแปร
เพื่อใช้ในการอ้างอิงถึงตาแหน่ ง
ข้อมูลในหน่ วยความจา
 ภาษาในกลุ่มนี้ เรียกว่า
……………………………………………………………………………
COBOL,FORTRAN, ALGO, Pascal, C
The Von Neumann Architecture
14

Well-known computer architecture: Von Neumann
่ ายในหน่วยความจา
 ข้อมูล และโปรแกรมอยูภ
่ บั CPU
 หน่วยความจา แยกกันอยูก
 คาสั่งและข้อมูลจะถูกส่ งจากหน่วยความจามายัง CPU
 พื้นฐานของ imperative languages
 โมเดลทางด้านการใช้ตวั แปร การให้ค่าตัวแปร
 มีลป
ู กระบวนการทาซ้ า
The Von Neumann Architecture
15
Von Neumann Bottleneck
16
……………………………………………………………………….
เป็ นตัวกาหนดความเร็ วของคอมพิวเตอร์
 คาสัง
่ โปรแกรมจะถูก 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) หรือ
(………………………………………………………….……….)
 ยุคที่ 4 (Fourth Generation Language : 4GL) หรือ
(………………………………………………………….……….)
 ยุคที่ 5 (Fifth Generation Language : 5GL) หรือ
(………………………………………………………….……….)
ยุคที่ 1: ภาษาเครื่อง
19




ก่อนปี ค.ศ. 1952 มีภาษาคอมพิวเตอร์เพียงภาษาเดียวเท่านั้นคือ
ภาษาเครื่อง (Machine Language) เป็ นภาษาระดับตา่ ที่สุด
ใช้เลขฐานสอง คือ 0 และ 1 ซึ่งจะสัมพันธ์กบั การเปิ ด (On) และการปิ ด (Off)
ของสัญญาณไฟฟ้ า
มนุ ษย์ทาความเข้าใจได้ยาก แต่เครื่องนาไปทางานได้เร็ว
เครื่องคอมพิวเตอร์แต่ละประเภทจะมีภาษาเครื่องที่เป็ นของตนเอง ไม่สามารถ
นาภาษาเครื่องที่ใช้กบั เครื่องประเภทหนึ่ ง ไปใช้กบั เครื่องประเภทอื่นได้
เนื่ องจากแต่ละระบบก็จะมีชุดคาสัง่ ของภาษาเครื่องที่แตกต่างกันออกไป ซึ่ง
เป็ นลักษณะของภาษาที่มีพฒ
ั นาการนั้น…………………………………………………………..
……………………………………………………………
ยุคที่ 1: ภาษาเครื่อง
20

คาสัง่ ในภาษาเครื่องจะประกอบด้วย 2 ส่วน คือ
1. โอเปอร์เรชันโค้ด (Operation code) เป็ นคาสัง่ ที่สงั ่ ให้คอมพิวเตอร์
ปฏิบตั ิการ เช่นการบวก (Addition) , การลบ (Substraction) เป็ นต้น
2. โอเปอแรนด์ (Operands) เป็ นตัวที่ระบุตาแหน่ งที่เก็บของข้อมูลที่จะ
นาเข้าสู่คอมพิวเตอร์เพื่อนาไปปฏิบตั ิการตามคาสัง่ ในโอเปอเรชันโค้ด
ยุคที่ 2 : ภาษาสัญลักษณ์ หรือ ภาษาแอสเซมบลี
21




ใช้ตวั อักษรในภาษาอังกฤษมาแทนคาสัง่ ที่เป็ นเลขฐานสอง เรียกอักษร
สัญลักษณ์ที่เป็ นคาสัง่ นี้ ว่า ………………………………………………………………………………………….
เพื่อให้ง่ายต่อการเขียนและการจดจามากกว่าภาษาเครื่อง
ผูเ้ ขียนสามารถใช้ตวั แปรที่ต้งั ขึ้ นมาเองในการเก็บค่าข้อมูลใดๆ (รีจิสเตอร์)
เช่น ax, bx
ตัวแปลภาษาแอสเซมบลีเรียกว่า …………………………………………………………………….
ภาษาแอสเซมบลี 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


คือ ภาษามนุ ษย์ที่สงั ่ ให้คอมพิวเตอร์ทางาน ซึ่งอาจมีรปู แบบที่ไม่แน่ นอน
ตายตัว แต่คอมพิวเตอร์ก็สามารถแปลคาสัง่ เหล่านั้นให้อยู่ ในรูปแบบที่
คอมพิวเตอร์สามารถเข้าใจคาสัง่ ได้ ถ้าคาสัง่ ใดไม่กระจ่างชัดเจน ก็จะมีการ
ถามกลับ เพื่อให้เข้าใจคาสัง่ ได้อย่างถูกต้อง
ภาษาธรรมชาตินี้ ถูกสร้างขึ้ นมาจากเทคโนโลยีทางด้าน…………………………
........................................................................ ซึ่งเป็ นงานที่อยูใ่ นสาขา
ปั ญญาประดิษฐ์ (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


Imperative

Imperative

Object-Oriented

Logic

Functional
Procedural :- C
 Block-Structured :-Pascal,
Ada

Object-based :- Ada
 Object-oriented :- Ada,
Object-Pascal, C++, Java
Parallel Processing :- Ada, Pascal-S,
Occam, C-Linda
Declarative
 Logic :- Prolog
 Functional :- LISP, Scheme
 Database :- SQL


ภาษาเชิงคาสัง่ (Imperative Programming)
36




ภาษาเชิงคาสัง่ เป็ นรูปแบบที่เก่าแก่ที่สุด
โปรแกรมประกอบขึ้ นจากชุดคาสัง่ ที่มีลาดับการทางานแน่ นอน
มีรากฐานมาจากคอมพิวเตอร์ที่มีสถาปั ตยกรรมแบบ Von Neumann
ที่ออกแบบโดยมีลกั ษณะที่ตอ้ งเก็บโปรแกรมและตัวแปรไว้ในหน่ วยความจา
หัวใจสาคัญของภาษาในกลุ่มนี้ คือ แนวคิดในการกาหนดค่า กล่าวคือ เป็ นการ
เปลี่ยนแปลงค่าในหน่ วยความจาหลักนัน่ เอง การประกาศตัวแปรเป็ นการ
เชื่อมโยงชื่อเข้ากับตาแหน่ งและชนิ ดข้อมูลของค่าที่เก็บไว้ การตีความของ
นิ พจน์ก็คือการคานวณโดยดึงค่าของตัวแปรจากหน่ วยความจามาใช้
ภาษาเชิงคาสัง่ (Imperative Programming)
37

ลักษณะที่สาคัญโดยทัว่ ไปที่สนับสนุ นภาษาหนึ่ งๆ ให้เป็ นภาษาเชิงคาสัง่ มี
ดังต่อไปนี้
 คำสั่ งกำหนดค่ ำ (Assignment) …………………………………………………….
 คำสั่ งวนซ้ำ (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 ประการ คือ
 ……………………………………………………………………….. เป็ นการนาข้อมูลกับ
operations มาผูก
ติดกันเป็ นหน่ วยหนึ่ ง
 …………………………………………………………………………….เป็ นการกาหนดขอบเขตในการอ้างถึง
ข้อมูลหรือ operations ของชนิ ดข้อมูลหนึ่ งๆ ข้อมูลภายใน data นี้ จะไม่ถกู อ้างถึง
ได้โดยตรง แต่ผ่านทาง operations ที่กาหนดไว้
ภาษาเชิงวัตถุ (Object Oriented Programming)
41



แนวคิดที่สาคัญของภาษาเชิงวัตถุ คือ การมองปั ญหาอยูใ่ นลักษณะของกลุ่มวัตถุ
(Object) ซึ่งโดยทัว่ ไปจะเก็บสถานะ (state) ที่เป็ นข้อมูลของตัวเองได้ และ
สามารถทากิจกรรมบางอย่างได้ เช่น คานวณเปลี่ยนแปลงข้อมูล ติดต่อหรือ
โต้ตอบกับวัตถุอื่นได้
การโต้ตอบกับวัตถุนี้เองทาให้ขอ้ มูลของวัตถุมีลกั ษณะเป็ นแบบ active แทนที่จะ
เป็ นแบบ passive ซึ่งเป็ นสิ่งที่ทาให้ภาษาเชิงวัตถุแตกต่างจากภาษาเชิงคาสัง่ อย่าง
ชัดเจน
การสร้างกลุ่มคาสัง่ ของภาษาเชิงวัตถุจะอาศัยหลักการพื้ นฐานดังต่อไปนี้

การสืบทอดคุณสมบัติ (…………………………………………….…………..)
 การมีหลายรูป (…………………………………………………………)

ตัวอย่างภาษาเชิงวัตถุ ได้แก่ ภาษาสมอลทอล์ก (Smalltalk) ซีพลัสพลัส (C++)
จาวา (Java) และซีชาร์บ (C#)
ภาษาเชิงฟังก์ชนั (Functional Programming)
42



เป็ นภาษาที่ใช้หลักการของฟั งก์ชนั ทางคณิตศาสตร์ คือเป็ นการ mapping
สมาชิกของเซตหนึ่ ง เรียกว่า domain set หรือ input ไปยังสมาชิกของอีกเซ็ต
หนึ่ งเรียกว่า range set หรือ output โดยใช้รปู แบบของ
…………………………………………………………………………………..
ดังตัวอย่างของฟั งก์ชนั 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 เนื่องจากโปรแกรมมีลกั ษณะคล้ายกับ
เซตของกฎ หรื อข้อบังคับของปั ญหา แทนที่จะเป็ นลาดับการทางานของคาสัง่
โปรแกรมจะประกอบไปด้วย ข้อความที่เป็ นจริ ง (facts) และกฎ (rules) ที่ใช้แสดง
ความสัมพันธ์ในลักษณะ IF…THEN เพือ่ เชื่อมโยงความจริ งที่มีอยูไ่ ปสู่ความจริ ง
ใหม่อื่นๆ
การแปลความการประกาศของโปรแกรมเชิงตรรกะ จะสร้างเซตของการแก้ปัญหา
ที่เป็ นไปได้ท้ งั หมดตามที่โปรแกรมระบุไว้ ภาษาเชิงตรรกะเหมาะสาหรับการ
แก้ปัญหาที่มีรายละเอียดไม่สมบูรณ์
ภาษาเชิงตรรกะ (Logical Programming)
47

องค์ประกอบของภาษา ประกอบด้วย
 ………………………………………………ที่ใช้อธิบายข้อเท็จจริงในรูปความสัมพันธ์ของวัตถุ
 ……………………………………………… ใช้ในการตั้งคาถามเพื่อให้โปรแกรมหาคาตอบได้
 ……………………………………………… สามารถระบุตวั แปรในข้อคาถามได้ เพื่อให้โปรแกรม
หาคาตอบได้เช่นกัน
 ……………………………………………… ที่ใช้อธิบาย 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
52
ภาษาในปั จจุบนั : Major languages
53
Paradigm
 Imperative
 Object-oriented
Programming domain
 Visual programming
 Internet programming
แนวโน้มของภาษาโปรแกรม
54

Commercial trend ในช่วงห้าปี ที่ผ่านมา
 ความนิ ยมของภาษาเช่น JAVA, C#
 ภาษา Script

ต่างๆ เช่นใน web application ต่างๆ
ภาษาที่นิยมใช้ในการเรียนการสอน
 เริ่มมีความนิ ยมให้ใช้ Java
เป็ นภาษาแรกแทนที่ C
55
56
เอกสารอ้างอิง
57




http://en.wikipedia.org/wiki/List_of_programming_languages_by_category
แบ่งประเภทภาษาต่างๆ
http://smartprogrammer.blogspot.com/2006/04/15-exercises-for-learningnew.html 15 โจทย์เริ่มต้นสาหรับผูห้ ดั เขียนโปรแกรม
http://en.wikipedia.org/wiki/Timeline_of_programming_languages
ช่วงเวลากาเนิ ดของภาษาต่างๆ
เอกสารประกอบการสอนนี้ ดัดแปลงเพิ่มเติมจากเอกสารประกอบการสอน
จาก อ.สิรกั ข์ แก้วจานงค์
ทาไมต้องศึกษาภาษาโปรแกรม
58
1
พัฒนำควำมรู้ ควำมเข้ ำใจในภำษำโปรแกรมทีเ่ ลือกใช้
2
เลือกภำษำโปรแกรมทีเ่ หมำะสมกับงำนได้
3
เรียนรู้ ภำษำโปรแกรมใหม่ ได้ ง่ำยขึน้
4
เป็ นพืน้ ฐำนในกำรสร้ ำงภำษำโปรแกรมใหม่ ได้
ข้อกาหนดของภาษาโปรแกรม
59


ภาษาโปรแกรมแต่ละภาษาสามารถพิจารณาว่าเป็ นเซตของข้อกาหนด
อย่างเป็ นทางการของ Syntax (วากยสัมพันธ์) ซึง่ เป็ นส่วนของคาศัพท์
พืน้ ฐานทีใ่ ช้ในโครงสร้างของภาษา และ Semantics (ความหมายของ
คาศัพท์เหล่านัน้ ทัง้ ในแง่ของคาและในแง่ของการทางานในทางปฎิบตั )ิ
ข้อกาหนดเหล่านี้ มักรวมถึง:
 ข้อมูล
และโครงสร้างข้อมูล
 คาสัง่ และลาดับการทางาน
 ปรัชญาในการออกแบบ
 สถาปั ตยกรรมของภาษา
วากยสัมพันธ์ (Syntax)
60


ใช้อธิบายส่วนประกอบของโครงสร้างโปรแกรมที่ถกู ต้อง
เช่น รูปแบบของไวยากรณ์ที่ใช้ในการเขียนโปรแกรมในภาษานั้นๆ เป็ น
อย่างไร กลุ่มคาและสัญลักษณ์พื้นฐานที่โปรแกรมเมอร์ใช้ในการเขียน
โปรแกรมที่โครงสร้างถูกต้องมีอะไรบ้าง
ความหมาย (Semantics)
61


เมื่อรันโปรแกรม ผลกระทบของแต่ละคาสัง่ ที่เกิดกับค่าของตัวแปรใน
โปรแกรมจะถูกกาหนดโดยความหมายของภาษา
ดังนั้น เมื่อเราเขียนโปรแกรม เราจะต้องเข้าใจแนวคิดพื้ นฐานก่อน เช่น เมื่อ
เราใช้คาสัง่ ในการกาหนดค่าจะเกิดผลอะไรขึ้ นกับตัวแปร ถ้าเรามี
semantic model ที่ไม่ขนกั
ึ้ บแพลตฟอร์มใดๆ เราก็จะสามารถนา
model นี้ ไปใช้ได้กบั เครื่องที่แตกต่างกันได้
ประวัติของภาษาโปรแกรม
62


ยุคแรก : ควบคุมด้วย Hardwired ซึ่งเป็ นการควบคุมการทางานของฮาร์ดแวร์
โดยใช้ฮาร์ดแวร์ ทาให้ไม่มีความยืดหยุน่ ในการใช้งาน เป็ นการสร้างระบบ
คอมพิวเตอร์เพือ่ ใช้งานเฉพาะอย่าง
แนวคิด : คอมพิวเตอร์ไม่ควรเป็ นอุปกรณ์ทางานเฉพาะอย่าง ควรจะทางาน
ตามที่ผใู้ ช้ตอ้ งการ โดยใช้ชุดของคาสัง่ ในการควบคุมการทางาน
ภาษาโปรแกรมที่ดี
63

การนิ ยามภาษา (Concept) : ความเข้าใจที่ตรงกันและง่าย

รูปแบบโปรแกรม (Program Syntax) : ความชัดเจน

การประยุกต์ใช้ (Application) : เหมาะสมและเป็ นธรรมชาติ

ตรวจสอบโปรแกรม (Verification) : ง่าย และไม่ผดิ พลาด

สิ่งแวดล้อมของการเขียนโปรแกรม (Environment)

การเคลื่อนย้ายโปรแกรม (Portability)

ค่าใช้จา่ ย (cost)
กระบวนการพัฒนาโปรแกรม
64
กำรวิเครำะห์ ควำมต้ องกำร (Requirement analysis)
กำรออกแบบระบบ (Design System)
กระบวนการพัฒนาโปรแกรม
กำรพัฒนำ (Development)
กำรบำรุงรักษำ (Maintenance)
กำรนำไปใช้ (Implementation)
Implementation Methods
65

Compilation
 แปล
(translate) จากภาษาโปรแกรมชั้นสูงเป็ นภาษาเครื่อง
 ใช้เวลาแปลนาน (slow translation)
 ทางานเร็ว (fast execution)

Interpreter
 ทางานช้า (slow execution)

Hybrid Implementation
 cost ในการแปลไม่มาก
 ทางานเร็วปานกลาง
Source
program
Symbol
table
Lexical analyzer
Lexical units
Syntax analyzer
Parse tree
Intermediate
code generator
Optimization
(and semantic analyzer)
Intermediate code
Code generator
Machine language
Computer
Input data
Results
66
Compilation
Source
program
Lexical analyzer
Lexical units
Syntax analyzer
Parse tree
Intermediate
code generator
Intermediate code
Input data
Interpreter
Results
Pure Interpretation
Hybrid Implementation
66
กระบวนการแปลภาษา
67
1.
2.
3.
4.
5.
เลกซิคลั อนาไลเซอร์ (Lexical Analyzer)
ซินแทกซ์ อนาไลเซอร์ (Syntax Analyzer)
ซีแมนติก อนาไลเซอร์ (Semantic Analyzer)
โค้ด ออฟติไมเซอร์ (Code Optimizer)
โค้ด เจนเนอเรเตอร์ (Code Generator)
Lexical Analyzer
68
ขั้นตอนแรก ทาหน้าที่ อ่าน Source Code แล้วแยกอักขระออกตาม
ลักษณะ และหน้าที่ เช่น คาสัง่ ตัวแปร ค่าคงที่ เป็ นต้น รวมถึงการ
ขจัด ส่วนหมายเหตุ(Comment) ช่องว่างขาว(White space) เช่น blank,
tab และ new line เป็ นต้น
ผลของขั้นตอนนี้ จะแยกทุกสิ่งที่ควรแยกออกจากกัน เพื่อนาไปตรวจสอบ
ในขั้นต่อไป
Syntax Analyzer
69
ตรวจสอบความสัมพันธ์ การจัดเรียง และความถูกต้องของแต่ละคา แต่
ละประโยค ซึ่งมีวิธีตรวจสอบหลายวิธี
เช่น ตรวจสอบ parse tree ว่ามีไวยากรณ์ถูกต้องตามที่กาหนดไว้หรือไม่
Semantic Analyzer
70
เมื่อรันโปรแกรมแล้ว ผลกระทบของแต่ละคาสัง่ ที่เกิดกับค่าของตัวแปรใน
โปรแกรม(หน่วยความจา) จะถูกกาหนดโดยความหมายของภาษา
สร้างรหัสของชุดคาสัง่ ที่ผ่านการตรวจสอบความถูกต้องของโครงสร้าง
แล้ว ให้อยูใ่ นรูปแบบ หรือขั้นตอนที่ใกล้เคียงกับภาษาเครื่อง ซึ่งเป็ น
ภาษากลางที่ง่ายต่อการปรับปรุง หรือนาไปแปลงเป็ นภาษาเครื่อง
ต่อไป
ขั้นตอนนี้ อาจนาไปรวมกับ Code Generator แล้วสร้างภาษาเครื่องก็ได้
Code Optimizer
71
ปรับปรุง code ที่ได้ให้มีประสิทธิภาพในการทางาน
เช่น การตัดส่วนของโปรแกรมหรือตัวแปรที่ไม่มีการทางาน หรือไม่ถูก
เรียกใช้ออกไป
Code Generator
72
เปลี่ยนรหัสที่ได้ให้เป็ นภาษาแอสเซมบลี หรือภาษาเครื่อง ซึ่ง code ที่ได้
มีลกั ษณะขึ้ นอยูก่ บั เครื่อง ที่ให้บริการ หน่ วยความจา และ register ที่
แตกต่างกันไป