ภาษาโปรแกรม 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
© Copyright 2025 ExpyDoc