Transcript

ภาษาโปรแกรม

Programming Language

Introduction

Course outline

ผู้��สอน : ร�ชดาพร คณาวงษ� email : [email protected] office : ตึ�กว�ทย์� 1 ช��น 6 Telephone : 8711

หน�งส!อ Programming Language : Concepts & Constructs

2nd Edition by Ravi Sethi, Addison-Wesley, 1996. Concepts of Programming Languages 6th Edition

by Robert W. Sebesta, Addison-Wesley, 2003.

2

เน!�อหาและการว�ดผู้ล Introduction

The role of programming language

Language Description : syntactic structure

Imperative programming Statement : Structured

programming Types : Data Representation Procedure Activations

Object-Oriented Programming

Functional Programming Logic Programming

เกณฑ์�การวัดผล สอบกลางภาค 30% สอบปลาย์ภาค 30% Assignments 20% การบ�าน 20%

ภาษาโปรแกรม

เคร!&องม!อ (tool) ท'&ส� &งให�คอมพ�วเตึอร�ท)างานตึามท'&ตึ�องการ ว�ธี'การหร!อเคร!&องม!อท'&ใช�ในการส!&อสารระหว+างโปรแกรมเมอร� เคร!&องม!อท'&ใช�ส)าหร�บแสดงการออกแบบขั้��นตึอนการท)างานในระด�บส�ง

- (high level designs) ส�ญล�กษณ�ท'&ส)าหร�บว�ธี'การแก�ป/ญหา (notation for algorithms) ว�ธี'การแสดงความส�มพ�นธี�ระหว+างแนวค�ด เคร!&องม!อส)าหร�บการทดลอง ว�ธี'การหร!อเคร!&องม!อท'&ใช�ควบค0มอ0ปกรณ�ทางคอมพ�วเตึอร�

4

Von Neumann Architecture

คอมพ�วเตึอร�ในอด'ตึจนถึ�งป/จจ0บ�น ถึ�กพ�ฒนาโดย์อ�างอ�งแนวค�ดด�งน'� คอมพ�วเตึอร�ประกอบด�วย์ส+วนส)าค�ญ 3 ส+วน ค!อ

หน+วย์ความจ)า , หน+วย์ควบค0ม และหน+วย์ประมวลผู้ล การตึ�ดตึ+อเพ!&อส+งผู้+านขั้�อม�ลระหว+างหน+วย์ความจ)าและ

หน+วย์ประมวลผู้ล สามารถึท)าได�คร��งละ 1 หน+วย์ขั้�อม�ล ขั้�อม�ลและค)าส� &งท'&ใช�การประมวลผู้ลจะถึ�กเก5บในหน+วย์

ความจ)า ซึ่�&งถึ�กระบ0ตึ)าแหน+งด�วย์ตึ)าแหน+งขั้องหน+วย์ความจ)า(Memory Address)

5

ภาษาโปรแกรม

ภาษาท'&ใช�ตึ�ดตึ+อก�บคอมพ�วเตึอร� เพ!&อให�คอมพ�วเตึอร�ท)างานตึามท'&ตึ�องการ

ออกแบบและสร�างขั้��นให�สามารถึท)างานได�ก�บคอมพ�วเตึอร�ท'&ม' สถึาป/ตึย์กรรมแบบ Von Neumann

ตึ�องท)างานท'ละค)าส� &งเร'ย์งก�นอย์+างเป7นล)าด�บ ตึ�องม'การน�ย์ามตึ�วแปร เพ!&อใช�ในการอ�างอ�งถึ�งตึ)าแหน+ง

ขั้�อม�ลในหน+วย์ความจ)า ภาษาในกล0+มน'� เร'ย์กว+า imperative หร!อ conventional

language : COBOL,FORTRAN,Pascal, C

6

ท)าไมตึ�องศึ�กษาภาษาโปรแกรม

พ�ฒนาความร� �เร!&องโครงสร�างท'&ส)าค�ญขั้องภาษาโปรแกรม

พ�ฒนาความร� �ความเขั้�าใจในภาษาโปรแกรมท'&เล!อกใช� เล!อกภาษาโปรแกรมท'&เหมาะสมก�บงานได� เร'ย์นร� �ภาษาโปรแกรมใหม+ได�ง+าย์ขั้��น เป7นพ!�นฐานในการสร�างภาษาโปรแกรมใหม+ได�

7

ส�&งท'&ม'อ�ทธี�ผู้ลตึ+อการพ�ฒนาภาษาโปรแกรม

เคร!&องคอมพ�วเตึอร�และโปรแกรมควบค0มระบบ(Computer Hardware and Operating System)

การประย์0กตึ�ใช�คอมพ�วเตึอร� (Application)

ว�ธี'การเขั้'ย์นโปรแกรม (Programming Methods)

ว�ธี'การน)าไปใช� (Implementation Methods)

การศึ�กษาทฤษฎี' (Theoretical Study)

ความเป7นมาตึราฐาน (Standardization)

8

ประว�ตึ�ขั้องภาษาโปรแกรม

ย์0คแรก : ควบค0มด�วย์ Hardwired ซึ่�&งเป7นการควบค0ม การท)างานขั้องฮาร�ดแวร�โดย์ใช�ฮาร�ดแวร� ท)าให�ไม+ม'ความ

ย์!ดหย์0+นในการใช�งาน เป7นการสร�างระบบคอมพ�วเตึอร�เพ!&อใช�งานเฉพาะอย์+าง

แนวค�ด : คอมพ�วเตึอร�ไม+ควรเป7นอ0ปกรณ�ท)างานเฉพาะ อย์+าง ควรจะท)างานตึามท'&ผู้��ใช�ตึ�องการ โดย์ใช�ช0ดขั้องค)าส�&ง

ในการควบค0มการท)างาน เก�ดการพ�ฒนาภาษาโปรแกรมตึ+าง ๆ ขั้��นพร�อม ๆ ก�บการ

พ�ฒนาระบบคอมพ�วเตึอร� (Hardware)

9

ระด�บขั้องภาษาในทางคอมพ�วเตึอร�(Levels of Language in Computing)

10

ย์0คขั้องภาษาโปรแกรม

ย์0คท'& 1 : ภาษาเคร!&อง (Machine Language)

ย์0คท'& 2 : ภาษาส�ญล�กษณ� (Symbolic Language)

ย์0คท'& 3 : ภาษาระด�บส�ง (High Level Language)

11

ภาษาโปรแกรม

Higher level แบ+งออกตึามระด�บขั้องการอ+านเขั้�าใจง+าย์ (readability)

เม!&อเท'ย์บก�บระด�บขั้องการอ+านเขั้�าใจในขั้�อความภาษาอ�งกฤษ

แบ+งตึามระด�บขั้องการไม+ขั้��นอย์�+ก�บเคร!&อง (machine independence)

G eneral purpose ความสามารถึในการประย์0กตึ�ขั้องภาษาโปรแกรมก�บงาน

หร!อป/ญหาด�านตึ+าง ๆ ซึ่�&งหลากหลาย์

12

ภาษาเคร!&อง

ก)าเน�ดมาพร�อมก�บคอมพ�วเตึอร� เป7นภาษาท'&เคร!&องเขั้�าใจได�

โดย์ตึรง เป7นท'&มาขั้องค)าว+า code ซึ่�&ง

ป/จจ0บ�นหมาย์ถึ�ง ขั้�อความท'&ประกอบขั้��นเป7นโปรแกรมใน

ภาษาใด ๆ (program text) เป7นภาษาระด�บตึ)&า มน0ษย์�ท)าความเขั้�าใจได�ย์าก ท)างานเร5ว

ตึ�วอย์+างบางส+วนขั้องโค�ด

00000010101111001010

00000010111111001000

00000011001110101000

บวกเลขั้ในตึ)าแหน+งท'& 10 ก�บเลขั้ ในตึ)าแหน+งท'& 11 แล�วเก5บผู้ลล�พธี�

ไว�ในตึ)าแหน+งท'& 12

13

ภาษาส�ญล�กษณ�

เน!&องจากภาษาเคร!&องเขั้�าใจย์ากและภาษาอ�งกฤษใช�ค)ามากเก�นกว+าท'&จะใช�ในการแสดงความ

หมาย์ (verbose) สร�างภาษา Assembly โดย์ใช�

ส�ญล�กษณ�และช!&อแทนโค�ดจร�ง เป7นภาษาระด�บตึ)&าท'&อ+านเขั้�าใจได�

ง+าย์ขั้��น เป7นภาษาท'&ขั้��นอย์�+ก�บเคร!&อง

1: M[0] := 0;2: read(M[1])3: if M[1] > 0 then goto 54: goto 75: 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

Program

14

Assembler

Assemblycode

Object code

15

ภาษาระด�บส�ง

ใช�ส�ญล�กษณ�ท'&ค0�นเคย์และอ+านเขั้�าใจง+าย์ สามารถึน)าโปรแกรมไปร�นบนเคร!&องท'&ตึ+างก�นโดย์ท)าการ

แก�ไขั้โค�ดเล5กน�อย์หร!อไม+ตึ�องแก�ไขั้เลย์ (portability / machine independence)

ม'ช0ดค)าส�&งโปรแกรมให�ใช� (program libraries) ม'การตึรวจสอบขั้�อผู้�ดพลาด (error) ในช+วงท'&ท)าการเขั้'ย์น

(implementation)

16

ภาษาระด�บส�ง

แบ+งย์+อย์เป7น 3 ประเภท ค!อ

ภาษาย์0คท'& 33 GL- Fourth General Language) ภาษาย์0คท'& 4 4( GL- Fourth General Language) ภาษาย์0คท'& 5 5( GL- Fourth General Language)

17

ภาษาย์0คท'& 3

เป7นภาษาแรกท'&ม'ใช�ค)าส�&งคล�าย์ก�บประโย์คในภาษาอ�งกฤษท)าให�ใช�งานง+าย์กว+าภาษาในย์0คก+อน

ม'ค0ณสมบ�ตึ� portable ท)าให�สามารถึน)า object code ท'& สร�าง (compile) จากระบบหน�&งไปใช�ระบบท'&ตึ+างก�นได�

ภาษาท'&อย์�+ในกล0+มน'� ได�แก+

FORTAN CCOBOL C++BASIC JavaPascal ActiveX

18

ภาษาย์0คท'& 4 เป7นภาษาเหมาะก�บงานเฉพาะด�านและใช�งานง+าย์กว+า 3GL ใช�ล�กษณะ text-based environment ( คล�าย์ 3 GL) โปรแกรมเมอร�สามารถึใช� visual environment ได�โดย์ใช�

เคร!&องม!อทางด�านกราฟิ@ก ท)าให�สร�าง Prototype หร!อ GUIขั้องโปรแกรมได�รวดเร5ว

ส+วนใหญ+เป7นโปรแกรมท'&รวบรวมการจ�ดการฐานขั้�อม�ลด�วย์ ภาษาท'&อย์�+ในกล0+มน'� ได�แก+

Visual Basic (VB)VisualAgeAuthoring environments

19

ภาษาย์0คท'& 5

เป7นภาษาท'&รวมเอาป/ญญาประด�ษฐ� (Artificial Intelligence) และระบบผู้��เช'&ย์วชาญ (Expert Systems)

มาใช�ในการสร�างโปรแกรม ซึ่�&งท)าได�ย์าก ระบบจะสนใจท'&จะค�ดและม'ส+วนร+วมในการตึ�ดส�นใจขั้องผู้��ใช� อาจเป7นการหาค)าตึอบท'&เหมาะส)าหร�บค)าถึามท'&ผู้��ใช�ปAอน และค)า

ตึอบท'&ได�จะเหม!อนก�บเป7นค)าตึอบจากมน0ษย์� ย์�งเป7นท'&ถึกเถึ'ย์งก�นในหม�+โปรแกรมเมอร�ว+าม'อย์�+หร!อไม+

20

ภาษาโปรแกรมท'&ด'

ความช�ดเจนและง+าย์ขั้องการน�ย์ามภาษา (Concept)

ความช�ดเจนขั้องร�ปแบบโปรแกรม (Program Syntax)

ความเป7นธีรรมชาตึ�ส)าหร�บการประย์0กตึ�ใช� (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) การบ)าร0งร�กษา (Maintenance)

23

Programming Domains

Scientific Application

Business Application

Artificial Intelligence

System Programming

Scripting Language

Special Purpose Language

24

Implementation Methods

Compilation แปล (translate) จากภาษาโปรแกรมช��นส�งเป7นภาษาเคร!&อง ใช�เวลาแปลงนาน ท)างาน (execute) เร5ว

Interpreter ไม+ตึ�องท)าการแปลก+อนเร'ย์กใช� ท)างานช�า

Hybrid Implementation cost ในการแปลไม+มาก ท)างานเร5วปานกลาง

25

Source program

Lexical analyzer

Intermediate code generator

(and semantic analyzer)Optimization

Symboltable

Code generator

Computer

Lexical units

Parse tree

Intermediate code

Machine language

Input data

Results

Syntax analyzer

Source program

Input data

Results

Lexical analyzer

Intermediate code generator

Lexical units

Parse tree

Intermediate code

Syntax analyzer

Interpreter

CompilationCompilationPure InterpretationPure Interpretation

Hybrid ImplementationHybrid Implementation26

Language Categories (Paradigms)

Imperative

Object-Oriented

Logic

Functional

Imperative - 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

27

1957 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

58Algol60Algol

SSS S SS Algol W SIMULA67 68

SSSSSS

-MODULA 2

Smalltalk80

Ada C++

S SSSSS - MODULA 3 ANSI C SSSSSS

Ada95 Java

ร�ปแสดงแผู้นผู้�งประว�ตึ�โดย์ส�งเขั้ปขั้องก)าเน�ดภาษาโปรแกรมท'&ส)าค�ญ

28

ราย์งาน ร�ปแบบงาน : ราย์งานภาษาโปรแกรมคอมพ�วเตึอร� 10( %)

เล!อกภาษาท'&ตึ�องการ (เล!อกก+อนม'ส�ทธี�ก+อน) http://directory.google.com/Top/Computers/Programming/Langua

ges/

http://dir.lycos.com/Computers/Programming/Languages/ หร!อ site อ!&น ๆ ท'&เก'&ย์วขั้�อง

ตึรวจสอบว+าม'คนเล!อกไปแล�วหร!อไม+ ส+ง mail เพ!&อบอกภาษาท'&ตึ�องการท)าพร�อมก�บ URL ท'&เก'&ย์วขั้�องก�บภาษาน��นมา

ถึ�าเห5นสมควรจะ mail ตึอบกล�บไป ศึ�กษาภาษาน��นอย์+างละเอ'ย์ด เขั้'ย์นราย์งานส+ง 1 ฉบ�บ ส+งมาในร�ปขั้อง PDF format ใช�ตึ�วอ�กษร Cordia New 16

29

ราย์งาน (ตึ+อ)

ราย์ละเอ'ย์ด (อย์+างน�อย์ ) ท'&ควรม'ในราย์งาน ประกอบด�วย์ ประว�ตึ�ความเป7นมา บอกความเป7นมา จ0ดก)าเน�ด บ0คคลหร!อหน+วย์งานท'&เก'&ย์วขั้�อง พ�ฒนาการ

ในช+วงแรก จ0ดเด+นขั้องภาษา ค0ณสมบ�ตึ�ท'&ส)าค�ญขั้องภาษาท'&เป7นจ0ดเด+น ท)าให�แตึกตึ+างจากภาษาอ!&น เปAาหมาย์ในการใช�งาน ภาษาน'�เหมาะ หร!อสร�างขั้��น เพ!&องานใดเป7นเฉพาะ สถึานภาพ ขั้ณะน'�ม'สถึานภาพเป7นอย์+างไร เล�กไปแล�ว ย์�งม'คนใช�อย์�+ กลาย์พ�นธี�เป7นภาษาใหม+ไป

แล�ว เป7นตึ�น ทร�พย์ากร ม'อะไรน+าสนใจให�ใช�ได�บ�าง ตึ�วอย์+าง code หร!อ compiler แหล+งขั้+าว mailing

list หร!อ chat room เป7นตึ�น แหล+งอ�างอ�ง เอกสารอ�างอ�งตึ+าง ๆ จาก web site ก5ได�

ก)าหนดส+ง : 20 ธี�นวาคม 2547 เวลา 1600. น.

30


Top Related