ภาษาโปรแกรม Programming Language

Download Report

Transcript ภาษาโปรแกรม Programming Language

ภาษาโปรแกรม
Programming Language
Introduction
Course outline

ผูส้ อน : ทัศนวรรณ ศูนย์กลาง



email : [email protected]
icq : 29883888
หนังสื อ

Programming Language : Concepts & Constructs
by Ravi Sethi, Addison-Wesley, 1996.

Concepts of Programming Languages by Robert W.
Sebesta, Addison-Wesley, 1999.
2
เนื้อหาและการวัดผล

Introduction



Imperative programming






The role of programming language
Language Description : syntactic
structure
Statement : Structured
programming
Types : Data Representation
Procedure Activations
Object-Oriented Programming
Functional Programming
Logic Programming
เกณฑ์ การวัดผล




สอบกลางภาค
สอบปลายภาค
Assignments
Report
35%
35%
20%
10%
ภาษาโปรแกรม

เครื่ องมือ (tool) ที่สั่งให้คอมพิวเตอร์ทางานตามที่ตอ้ งการ

วิธีการหรื อเครื่ องมือที่ใช้ในการสื่ อสารระหว่างโปรแกรมเมอร์

เครื่ องมือที่ใช้สาหรับแสดงการออกแบบขั้นตอนการทางานในระดับสู ง (high-level
designs)

สัญลักษณ์ที่สาหรับวิธีการแก้ปัญหา (notation for algorithms)

วิธีการแสดงความสัมพันธ์ระหว่างแนวคิด

เครื่ องมือสาหรับการทดลอง

วิธีการหรื อเครื่ องมือที่ใช้ควบคุมอุปกรณ์ทางคอมพิวเตอร์
4
Von Neumann Architecture
คอมพิวเตอร์ในอดีตจนถึงปั จจุบนั ถูกพัฒนาโดยอ้างอิง
แนวคิดดังนี้

คอมพิวเตอร์ประกอบด้วยส่ วนสาคัญ 3 ส่ วน คือ
หน่วยความจา, หน่วยควบคุม และหน่วยประมวลผล

การติดต่อเพื่อส่ งผ่านข้อมูลระหว่างหน่วยความจาและ
หน่วยประมวลผล สามารถทาได้ครั้งละ 1 หน่วยข้อมูล

ข้อมูลและคาสั่งที่ใช้การประมวลผลจะถูกเก็บในหน่วย
ความจา ซึ่ งถูกระบุตาแหน่งด้วยตาแหน่งของหน่วยความจา (Memory Address)
5
ภาษาโปรแกรม

ภาษาที่ใช้ติดต่อกับคอมพิวเตอร์ เพื่อให้คอมพิวเตอร์ทางานตามที่ตอ้ งการ

ออกแบบและสร้างขึ้นให้สามารถทางานได้กบั คอมพิวเตอร์ที่มีสถาปั ตยกรรมแบบ Von
Neumann

ต้องทางานทีละคาสั่งเรี ยงกันอย่างเป็ นลาดับ

ต้องมีการนิยามตัวแปร เพื่อใช้ในการอ้างอิงถึงตาแหน่ง
ข้อมูลในหน่วยความจา
ภาษาในกลุ่มนี้ เรี ยกว่า imperative หรื อ conventional language :
COBOL,FORTRAN,Pascal, C

6
ทาไมต้องศึกษาภาษาโปรแกรม

พัฒนาความรู้เรื่ องโครงสร้างที่สาคัญของภาษาโปรแกรม

พัฒนาความรู้ความเข้าใจในภาษาโปรแกรมที่เลือกใช้

เลือกภาษาโปรแกรมที่เหมาะสมกับงานได้

เรี ยนรู้ภาษาโปรแกรมใหม่ได้ง่ายขึ้น

เป็ นพื้นฐานในการสร้างภาษาโปรแกรมใหม่ได้
7
สิ่ งที่มีอิทธิผลต่อการพัฒนาภาษาโปรแกรม

เครื่ องคอมพิวเตอร์และโปรแกรมควบคุมระบบ(Computer
Hardware and Operating System)

การประยุกต์ใช้คอมพิวเตอร์ (Application)

วิธีการเขียนโปรแกรม (Programming Methods)

วิธีการนาไปใช้ (Implementation Methods)

การศึกษาทฤษฎี (Theoretical Study)

ความเป็ นมาตราฐาน (Standardization)
8
ประวัติของภาษาโปรแกรม



ยุคแรก : ควบคุมด้วย Hardwired ซึ่งเป็ นการควบคุมการทางานของ
ฮาร์ดแวร์โดยใช้ฮาร์ดแวร์ ทาให้ไม่มีความยืดหยุน่ ในการใช้งาน เป็ นการสร้าง
ระบบคอมพิวเตอร์เพื่อใช้งานเฉพาะอย่าง
แนวคิด : คอมพิวเตอร์ไม่ควรเป็ นอุปกรณ์ทางานเฉพาะอย่าง ควรจะทางานตามที่
ผูใ้ ช้ตอ้ งการ โดยใช้ชุดของคาสัง่ ในการควบคุมการทางาน
เกิดการพัฒนาภาษาโปรแกรมต่าง ๆ ขึ้นพร้อม ๆ กับการพัฒนาระบบคอมพิวเตอร์
(Hardware)
9
ระดับของภาษาในทางคอมพิวเตอร์(Levels of
Language in Computing)
10
ยุคของภาษาโปรแกรม

ยุคที่ 1 : ภาษาเครื่ อง (Machine Language)

ยุคที่ 2 : ภาษาสัญลักษณ์ (Symbolic Language)

ยุคที่ 3 : ภาษาระดับสูง (High Level Language)
11
ภาษาโปรแกรม

Higher level



แบ่งออกตามระดับของการอ่านเข้าใจง่าย (readability) เมื่อเทียบกับระดับ
ของการอ่านเข้าใจในข้อความภาษาอังกฤษ
แบ่งตามระดับของการไม่ข้ ึนอยูก่ บั เครื่ อง (machine independence)
General purpose

ความสามารถในการประยุกต์ของภาษาโปรแกรมกับงานหรื อปั ญหาด้านต่าง ๆ ซึ่ ง
หลากหลาย
12
ภาษาเครื่ อง






กาเนิดมาพร้อมกับคอมพิวเตอร์
เป็ นภาษาที่เครื่ องเข้าใจได้
โดยตรง
เป็ นที่มาของคาว่า code ซึ่ งปั จจุบนั
หมายถึง ข้อความที่ประกอบขึ้นเป็ นโปรแกรม
ในภาษาใด ๆ (program text)
เป็ นภาษาระดับต่า
มนุษย์ทาความเข้าใจได้ยาก
ทางานเร็ ว

ตัวอย่างบางส่ วนของโค้ด
00000010101111001010
00000010111111001000
00000011001110101000

บวกเลขในตาแหน่งที่ 10 กับเลขใน
ตาแหน่งที่ 11 แล้วเก็บผลลัพธ์ไว้ใน
ตาแหน่งที่ 12
13
ภาษาสัญลักษณ์
Program




เนื่องจากภาษาเครื่ องเข้าใจยาก และ
ภาษาอังกฤษใช้คามากเกินกว่าที่จะใช้ในการ
แสดงความหมาย (verbose)
สร้างภาษา Assembly โดยใช้
สัญลักษณ์และชื่อแทนโค้ดจริ ง
เป็ นภาษาระดับต่าที่อ่านเข้าใจได้ง่ายขึ้น
เป็ นภาษาที่ข้ ึนอยูก่ บั เครื่ อง
1: M[0] := 0;
2: read(M[1])
3: if M[1] > 0 then goto 5
4: goto 7
5: M[3] := M[0] - M[1];
6: if M[3] > then goto 16
7: writeln(M[1])
8: read(M[2])
9: M[3] := M[2] - M[1];
10: if M[3] > then goto 12
….
….
16: halt
14
Assembly
code
Assembler
Object code
15
ภาษาระดับสูง

ใช้สัญลักษณ์ที่คุน้ เคยและอ่านเข้าใจง่าย

สามารถนาโปรแกรมไปรันบนเครื่ องที่ต่างกันโดยทาการ
แก้ไขโค้ดเล็กน้อยหรื อไม่ตอ้ งแก้ไขเลย (portability / machine
independence)

มีชุดคาสัง่ โปรแกรมให้ใช้ (program libraries)

มีการตรวจสอบข้อผิดพลาด (error) ในช่วงที่ทาการเขียน
(implementation)
16
ภาษาระดับสูง
แบ่งย่อยเป็ น 3 ประเภท คือ

ภาษายุคที่ 3 (3GL- Fourth General Language)

ภาษายุคที่ 4 (4GL- Fourth General Language)

ภาษายุคที่ 5 (5GL- Fourth General Language)
17
ภาษายุคที่ 3

เป็ นภาษาแรกที่มีใช้คาสัง่ คล้ายกับประโยคในภาษาอังกฤษ
ทาให้ใช้งานง่ายกว่าภาษาในยุคก่อน

มีคุณสมบัติ portable ทาให้สามารถนา object code ที่สร้าง (compile)
จากระบบหนึ่งไปใช้ระบบที่ต่างกันได้

ภาษาที่อยูใ่ นกลุ่มนี้ ได้แก่
FORTAN
COBOL
BASIC
Pascal
C
C++
Java
ActiveX
18
ภาษายุคที่ 4

เป็ นภาษาเหมาะกับงานเฉพาะด้านและใช้งานง่ายกว่า 3GL

ใช้ลกั ษณะ text-based environment (คล้าย 3GL)

โปรแกรมเมอร์สามารถใช้ visual environment ได้โดยใช้เครื่ องมือทางด้าน
กราฟิ ก ทาให้สร้าง Prototype หรื อ GUIของโปรแกรมได้รวดเร็ว

ส่ วนใหญ่เป็ นโปรแกรมที่รวบรวมการจัดการฐานข้อมูลด้วย

ภาษาที่อยูใ่ นกลุ่มนี้ ได้แก่
Visual Basic (VB)
VisualAge
Authoring environments
19
ภาษายุคที่ 5

เป็ นภาษาที่รวมเอาปัญญาประดิษฐ์ (Artificial Intelligence) และระบบ
ผูเ้ ชี่ยวชาญ (Expert Systems) มาใช้ในการสร้างโปรแกรม ซึ่งทาได้ยาก

ระบบจะสนใจที่จะคิดและมีส่วนร่ วมในการตัดสิ นใจของผูใ้ ช้

อาจเป็ นการหาคาตอบที่เหมาะสาหรับคาถามที่ผใู้ ช้ป้อน และคาตอบที่ได้จะเหมือนกับเป็ น
คาตอบจากมนุษย์

ยังเป็ นที่ถกเถียงกันในหมู่โปรแกรมเมอร์วา่ มีอยูห่ รื อไม่
20
ภาษาโปรแกรมที่ดี

ความชัดเจนและง่ายของการนิยามภาษา (Concept)

ความชัดเจนของรู ปแบบโปรแกรม (Program Syntax)

ความเป็ นธรรมชาติสาหรับการประยุกต์ใช้ (Application)

ความง่ายของการตรวจสอบโปรแกรม (Verification)

สิ่ งแวดล้อมของการเขียนโปรแกรม (Environment)

การเคลื่อนย้ายโปรแกรม (Portability)

ค่าใช้จ่าย (cost)
21
Programming Environments
เครื่ องมือต่าง ๆ ที่ใช้ในการพัฒนาโปรแกรม
(Tools used in software development)
 Unix


Borland C++


เครื่ องมือที่ใช้ในการเขียน C และ C++ บน PC
Smalltalk


ระบบปฏิบตั ิการที่มีเครื่ องมือพัฒนาโปรแกรมมาพร้อม
Language Processor/Environment
Microsoft Visual C++

visual environment ที่มีขนาดใหญ่และซับซ้อน
22
กระบวนการพัฒนาโปรแกรม





การวิเคราะห์ความต้องการ (Needs analysis)
การออกแบบระบบ (System)
การพัฒนา (Development)
การนาไปใช้ (Implementation)
การบารุ งรักษา (Maintenance)
23
Programming Domains

Scientific Application

Business Application

Artificial Intelligence

System Programming

Scripting Language

Special Purpose Language
24
Implementation Methods

Compilation




Interpreter



แปล (translate) จากภาษาโปรแกรมชั้นสูงเป็ นภาษาเครื่ อง
ใช้เวลาแปลงนาน
ทางาน (execute) เร็ว
ไม่ตอ้ งทาการแปลก่อนเรี ยกใช้
ทางานช้า
Hybrid Implementation


cost ในการแปลไม่มาก
ทางานเร็วปานกลาง
25
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
Compilation
Source
program
Lexical analyzer
Lexical units
Syntax analyzer
Parse tree
Intermediate
code generator
Intermediate code
Input data
Interpreter
Results
Pure Interpretation
Hybrid Implementation
26
Language Categories (Paradigms)

Imperative

Object-Oriented

Logic


Imperative

Procedural :- C


Object-based :- Ada

Functional


Block-Structured :-Pascal, Ada
Object-oriented :- Ada,
Object-Pascal, C++, Java
Parallel Processing :- Ada,
Pascal-S, Occam, C-Linda
Declarative



Logic :- Prolog
Functional :- LISP, Scheme
Database :- SQL
27
1957
รู ป58
แสดงAlgol58
59
60 Algol60
แผนผั
61 งประวัติ
62
63 งเขปของ
โดยสั
SIMULA
64
65
กาเนิ
Algol W
66ดภาษา
SIMULA67
67
Algol68
68
โปรแกรมที
่สาคัญ
69
70
Pascal
71
72
73
74
75
76
77 MODULA-2
78
79
Smalltalk80
80
81
82
Ada
83
84
85
86
87
88 Oberon
MODULA-3
89
Eiffel
90
91
92
93
94
Ada95
95
28
C++
ANSI C
Java
Assignment 1

รู ปแบบงาน : รายงานภาษาโปรแกรมคอมพิวเตอร์ (10%)


เลือกภาษาที่ตอ้ งการ (เลือกก่อนมีสิทธ์ก่อน)

http://directory.google.com/Top/Computers/Programming/Languages/

http://dir.lycos.com/Computers/Programming/Languages/
หรื อ site อื่น ๆ ที่เกี่ยวข้อง
ตรวจสอบว่ามีคนเลือกไปแล้วหรื อไม่

ส่ ง mail เพื่อบอกภาษาที่ตอ้ งการทาพร้อมกับ URL ที่เกี่ยวข้องกับภาษานั้นมา
ถ้าเห็นสมควรจะ mail ตอบกลับไป

ศึกษาภาษานั้นอย่างละเอียด

เขียนรายงานส่ ง 1 ฉบับ ส่ งมาในรู ปของ PDF format ใช้ตวั อักษร Cordia New 16
29
Assignment 1 (ต่อ)


รายละเอียด (อย่างน้อย) ที่ควรมีในรายงาน ประกอบด้วย

ประวัติความเป็ นมา บอกความเป็ นมา จุดกาเนิด บุคคลหรือหน่วยงานที่
เกี่ยวข้อง พัฒนาการในช่วงแรก

จุดเด่นของภาษา คุณสมบัตท
ิ ส
ี่ าคัญของภาษาทีเ่ ป็ นจุดเดน
่ ทาให้แตกตาง
่
จากภาษาอื่น

เป้ าหมายในการใช้งาน ภาษานี้เหมาะ หรือสรางขึ
น
้ เพือ
่ งานใดเป็ นเฉพาะ
้

สถานภาพขณะนี้มีสถานภาพเป็ นอย่างไร เลิกไปแล้ว ยังมีคนใช้อยู่ กลายพันธ์เป็ นภาษาใหม่ไปแล้ว เป็ นต้น

ทรัพยากร มีอะไรน่าสนใจให้ใช้ไดบ
ตัวอยาง
code หรื อ compiler
้ าง
้
่
แหล่งข่าว mailing list หรื อ chat room เป็ นต้น

แหล่งอ้างอิงเอกสารอ้างอิงต่าง ๆ จาก web site ก็ได้
กาหนดส่ ง : 19 กันยายน 2546 เวลา 16.00 น.
30