1 / 54

ภาษาคอมพิวเตอร์ Computer Language

ภาษาคอมพิวเตอร์ Computer Language. ภาษาคอมพิวเตอร์ ( Computer Language). ภาษาคอมพิวเตอร์ ( Computer Language ) หมายถึง ภาษาใดๆ ที่ถูกออกแบบโครงสร้างขึ้นมา เพื่อใช้ในการเขียนคำสั่ง ประกอบด้วยโครงสร้างภาษา รูปแบบไวยากรณ์ และความหมาย เพื่อสั่งให้คอมพิวเตอร์ทำงานตามที่ต้องการ

finian
Download Presentation

ภาษาคอมพิวเตอร์ Computer Language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ภาษาคอมพิวเตอร์Computer Language

  2. ภาษาคอมพิวเตอร์ (Computer Language) • ภาษาคอมพิวเตอร์ (Computer Language) หมายถึง ภาษาใดๆ ที่ถูกออกแบบโครงสร้างขึ้นมา เพื่อใช้ในการเขียนคำสั่ง ประกอบด้วยโครงสร้างภาษา รูปแบบไวยากรณ์ และความหมาย เพื่อสั่งให้คอมพิวเตอร์ทำงานตามที่ต้องการ • ภาษาคอมพิวเตอร์ แบ่งออกเป็น 2 ระดับ คือ • ภาษาระดับต่ำ • ภาษาระดับสูง

  3. Low level & High Level language • ภาษาระดับต่ำ (low level) • ภาษาเครื่อง (Machine Language) ที่มีลักษณะการใช้คำสั่งเป็นชุดของตัวเลขฐานสอง คือ 0 กับ 1 • ภาษาแอสเซมบลี (Assembly Language) ที่ใช้สัญลักษณ์เป็นอักษรภาษาอังกฤษร่วมกับเลขฐานอื่น ๆ ในการใช้งานจะถูกตัวแปลภาษาแปลงให้เป็นภาษาเครื่องอีกที • ภาษาระดับสูง (high level) เป็นภาษาที่พัฒนาต่อเนื่องมาจากภาษาระดับต่ำ เพื่อให้โปรแกรมเมอร์สามารถเขียนชุดคำสั่งได้ง่ายขึ้น จึงมีการกำหนดสัญลักษณ์การใช้งานคำสั่งเป็นรูปแบบของภาษาอังกฤษที่ใกล้เคียงกับภาษามนุษย์เช่น Fortran, Basic, Cobol, Pascal, C, VB, Delphi, Java เป็นต้น

  4. ระดับของภาษาในทางคอมพิวเตอร์(Levels of Language in Computing)

  5. ตัวอย่างภาษาคอมพิวเตอร์(แบ่งตามกลุ่มของภาษา)ตัวอย่างภาษาคอมพิวเตอร์(แบ่งตามกลุ่มของภาษา) • ภาษาโปรแกรม • ภาษามาร์คอัพ • ภาษาสคริป • ภาษาสไตล์ชีท (Style SheetLanguage) • ภาษาสอบถาม (Query Language)

  6. ภาษาโปรแกรม (Programming Language) • ภาษาที่สามารถใช้ ควบคุมกำหนดพฤติกรรมการทำงานของคอมพิวเตอร์ (Flow control) ภาษาโปรแกรมก็เหมือนภาษามนุษย์จะต้องใช้วากยสัมพันธ์ (Syntax)และความหมาย (Semantic) เพื่อกำหนดโครงสร้างและตีความหมายตามลำดับ • แต่ละภาษาจะมีโครงสร้างของภาษา รูปแบบไวยากรณ์ และคำศัพท์ ที่ไม่เหมือนกัน แต่หลักการของภาษา จะเหมือนกัน เช่น ตัวแปรชนิดต่างๆ, การควบคุมการทำงาน ฟังก์ชัน • เช่น ภาษา Pascal, C, VB, Java

  7. ภาษาสคริป (Scripting Language) • ภาษา script (Scripting Language) จัดเป็นภาษาโปรแกรมชนิดหนึ่ง แต่มีลักษณะที่เรียนรู้ได้ง่ายกว่าภาษาโปรแกรมโดยทั่วไป และ code ที่เขียนจะถูกตีความ (Interpreted) และ execute ไปทีละคำสั่ง ผ่าน software พวก Script Engine ที่สนับสนุนภาษา script นั้นๆ • Scripting Language เป็น interpreted languageและต้องอาศัย run บนโปรแกรมอื่นในขณะที่ Programming Language เป็น compiled language • เช่น Java script, PHP

  8. ภาษาสคริป (Scripting Language) • ภาษา 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 ในโปรแกรมเว็บเบราเซอร์

  9. ภาษาสอบถาม (Query Language) • เป็นภาษาคอมพิวเตอร์ที่ใช้สำหรับสอบถามหรือจัดการกับข้อมูลใน DBMS • ภาษาประเภทนี้ที่ได้รับความนิยมสูงสุดคือ ภาษาสอบถามเชิงโครงสร้าง (Structure Query Language: SQL) มีรูปแบบคำสั่งที่คล้ายกับประโยคในภาษาอังกฤษมาก • ปัจจุบัน ภาษาสอบถามเชิงโครงสร้าง เป็นภาษามาตรฐานสำหรับระบบการจัดการฐานข้อมูลเชิงสัมพันธ์(Relational Database management System หรือ RDBMS) ซึ่งเป็นระบบDBMSแบบที่ใช้กันแพร่หลายที่สุดในปัจจุบัน

  10. ภาษามาร์คอัพ (Markup Language) • ภาษาประเภท Markup เป็นภาษาคอมพิวเตอร์ที่แสดงทั้งข้อมูล และรูปแบบการแสดงผลเข้าด้วยกัน ได้แก่ HTML, XHTML, XML • ภาษา HTML จัดเป็นภาษาโปรแกรมหรือไม่ เพราะเหตุใด

  11. ภาษามาร์คอัพ (Markup Language) • ภาษาประเภท Markup เป็นภาษาคอมพิวเตอร์ที่แสดงทั้งข้อมูล และรูปแบบการแสดงผลเข้าด้วยกัน ได้แก่ HTML, XHTML, XML • ภาษา HTML ไม่ใช่ภาษาโปรแกรม เพราะโครงสร้างของภาษา รูปแบบไวยากรณ์ (Syntax) ของภาษา HTML ไม่มีเรื่องตัวแปร ไม่มีFlow Control เช่น คำสั่ง if…else…, for, while สำหรับควบคุมการทำงานของโปรแกรม

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

  13. ภาษาโปรแกรม • แนวคิดในยุคแรกเริ่มออกแบบและสร้างขึ้นให้สามารถทำงานได้กับคอมพิวเตอร์ที่มีสถาปัตยกรรมแบบ Von Neumann • การทำงานตามคำสั่งจะเป็นการทำแบบเรียงตามลำดับจากคำสั่งหนึ่งไปยังคำสั่งถัดไป (ยกเว้นบางกรณีที่มีการเปลี่ยนลำดับคำสั่ง) • มีการนิยามตัวแปร เพื่อใช้ในการอ้างอิงถึงตำแหน่งข้อมูลในหน่วยความจำ • ภาษาในกลุ่มนี้ เรียกว่า ………………………………………………เช่น …………………………………………………………………….

  14. The Von Neumann Architecture • Well-known computer architecture: Von Neumann • ข้อมูล และโปรแกรมอยู่ภายในหน่วยความจำ • หน่วยความจำ แยกกันอยู่กับ CPU • คำสั่งและข้อมูลจะถูกส่งจากหน่วยความจำมายัง CPU • พื้นฐานของ imperative languages • โมเดลทางด้านการใช้ตัวแปร การให้ค่าตัวแปร • มีลูป กระบวนการทำซ้ำ

  15. The Von Neumann Architecture

  16. Von Neumann Bottleneck • ความเร็วในการเชื่อมต่อระหว่างหน่วยความจำ กับ CPU เป็นตัวกำหนดความเร็วของคอมพิวเตอร์ • คำสั่งโปรแกรมจะถูก execute ได้เร็วกว่าการส่งข้อมูลจากหน่วยความจำมายัง CPU • เกิดปัญหาคอขวด (bottleneck) • Known as von Neumann bottleneck; เป็นปัญหาเบื้องต้นในการพัฒนาความเร็วของคอมพิวเตอร์

  17. วิวัฒนาการของภาษาโปรแกรมวิวัฒนาการของภาษาโปรแกรม • 1950s and early 1960s: Simple applications; worry about machine efficiency • Late 1960s: People efficiency became important; readability, better control structures • structured programming • top-down design • Late 1970s: Process-oriented to data-oriented • 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)

  19. ยุคที่ 1: ภาษาเครื่อง • ก่อนปี ค.ศ. 1952 มีภาษาคอมพิวเตอร์เพียงภาษาเดียวเท่านั้นคือ ภาษาเครื่อง (Machine Language) เป็นภาษาระดับต่ำที่สุด • ใช้เลขฐานสอง คือ 0 และ 1 ซึ่งจะสัมพันธ์กับการเปิด (On) และการปิด (Off) ของสัญญาณไฟฟ้า • มนุษย์ทำความเข้าใจได้ยาก แต่เครื่องนำไปทำงานได้เร็ว • เครื่องคอมพิวเตอร์แต่ละประเภทจะมีภาษาเครื่องที่เป็นของตนเอง ไม่สามารถนำภาษาเครื่องที่ใช้กับเครื่องประเภทหนึ่ง ไปใช้กับเครื่องประเภทอื่นได้ เนื่องจากแต่ละระบบก็จะมีชุดคำสั่งของภาษาเครื่องที่แตกต่างกันออกไป ซึ่งเป็นลักษณะของภาษาที่มีพัฒนาการนั้นขึ้นอยู่กับเครื่อง (Machine Dependent)

  20. ยุคที่ 1: ภาษาเครื่อง • คำสั่งในภาษาเครื่องจะประกอบด้วย 2 ส่วน คือ 1. ………………………………………………………….เป็นคำสั่งที่สั่งให้คอมพิวเตอร์ปฏิบัติการ เช่นการบวก (Addition) , การลบ (Substraction) เป็นต้น 2.………………………………………………………………เป็นตัวที่ระบุตำแหน่งที่เก็บของข้อมูลที่จะนำเข้าสู่คอมพิวเตอร์เพื่อนำไปปฏิบัติการตามคำสั่งในโอเปอเรชันโค้ด

  21. ยุคที่ 2 : ภาษาสัญลักษณ์ หรือ ภาษาแอสเซมบลี • ใช้ตัวอักษรในภาษาอังกฤษมาแทนคำสั่งที่เป็นเลขฐานสอง เรียกอักษรสัญลักษณ์ที่เป็นคำสั่งนี้ว่า สัญลักษณ์ข้อความ (mnemonic codes) เพื่อให้ง่ายต่อการเขียนและการจดจำมากกว่าภาษาเครื่อง • ผู้เขียนสามารถใช้ตัวแปรที่ตั้งขึ้นมาเองในการเก็บค่าข้อมูลใดๆ (รีจิสเตอร์) เช่น ax, bx • ตัวแปลภาษาแอสเซมบลีเรียกว่าแอสเซมเบลอร์(Assembler) ภาษาแอสเซมบลี 1 คำสั่งจะสามารถแปลเป็นภาษาเครื่อง 1 คำสั่ง • ภาษาแอสเซมบลี จะมีลักษณะที่เหมือนกับภาษาเครื่อง คือ เป็นภาษาที่ขึ้นอยู่กับเครื่อง คือเราไม่สามารถนำโปรแกรมที่เขียนด้วยแอสเซมบลี โปรแกรมเดียวกันไปใช้ในเครื่องต่างชนิดกันได้

  22. Assembly code Assembler Object code 22

  23. ยุคที่ 3 : ภาษาระดับสูง • เป็นภาษาที่ถูกสร้างขึ้นมาเพื่อให้สามารถเขียน และอ่านโปรแกรมได้ง่ายขึ้น เนื่องจากมีลักษณะเหมือนภาษาอังกฤษทั่วๆไป • โปรแกรมที่ถูกเขียนด้วยภาษาประเภทนี้จะทำงานได้ ก็ต่อเมื่อมีการแปลงให้เป็นภาษาเครื่องเสียก่อน ซึ่งต้องใช้ตัวแปลภาษาคอมไพเลอร์ (Compiler)หรือ อินเตอร์พรีเตอร์(Interpreter) โดยภาษาชั้นสูงแต่ละภาษาจะมีตัวแปลภาษาเฉพาะเป็นของตัวเอง • สามารถนำโปรแกรมไปใช้งานบนเครื่องที่ต่างกันได้โดยอาจมีการแก้ไขโค้ดเล็กน้อยหรือไม่ต้องแก้ไขเลยเพียงแต่ต้องทำการแปลโปรแกรมใหม่ คือมีลักษณะที่ไม่ขึ้นอยู่กับเครื่อง (Machine Independent)

  24. ยุคที่ 3 : ภาษาระดับสูง • มีชุดคำสั่งโปรแกรมให้ใช้(program libraries) • ภาษารุ่นที่ 3 นี้ ส่วนใหญ่จะจัดอยู่ในกลุ่มของ ภาษามีแบบแผน (Procedural Language) เนื่องจาก ลักษณะการเขียนโปรแกรม จะมีโครงสร้างแบบแผนที่เป็นระเบียบ กล่าวคือ งานทุกอย่างผู้เขียนโปรแกรม ต้องเขียนโปรแกรมควบคุม การทำงานเองทั้งหมด และต้องเขียนคำสั่งการทำงานที่เป็นขั้นเป็นตอนทุกอย่าง ไม่ว่าจะเป็นการสร้างแบบฟอร์มกรอกข้อมูล การประมวลผล หรือการสร้างรายงาน ซึ่งโปรแกรมที่เขียนจะค่อนข้างซับซ้อน และใช้เวลาในการพัฒนาค่อนข้างมาก • เช่น ภาษาฟอร์แทรน(Fortran) , โคบอล (Cobol) , เบสิก (Basic) , ปาสคาล (Pascal) , ซี(C) , เอดา(ADA) เป็นต้น

  25. ยุคที่ 3 : ภาษาระดับสูง

  26. ยุคที่ 4 : ภาษาระดับสูงมาก • ช่วยในเรื่องของการสร้างแบบฟอร์มบนหน้าจอ เพื่อจัดการเกี่ยวกับข้อมูล รวมไปถึงการออกรายงาน ซึ่งจะมีการจัดการที่ง่ายมากไม่ยุ่งยากเหมือนภาษารุ่นที่3 • โปรแกรมเมอร์สามารถใช้ visual environmentได้โดยใช้เครื่องมือทางด้านกราฟิก ทำให้สร้าง Prototype หรือ GUI ของโปรแกรมได้รวดเร็ว ประหยัดเวลา • รวมถึงภาษาโปรแกรมใช้รวบรวมการจัดการฐานข้อมูล • ภาษาที่อยู่ในกลุ่มนี้ ได้แก่…………………………………………………

  27. ยุคที่ 5 : ภาษาธรรมชาติ • คือ ภาษามนุษย์ที่สั่งให้คอมพิวเตอร์ทำงาน ซึ่งอาจมีรูปแบบที่ไม่แน่นอนตายตัว แต่คอมพิวเตอร์ก็สามารถแปลคำสั่งเหล่านั้นให้อยู่ ในรูปแบบที่คอมพิวเตอร์สามารถเข้าใจคำสั่งได้ ถ้าคำสั่งใดไม่กระจ่างชัดเจน  ก็จะมีการถามกลับ เพื่อให้เข้าใจคำสั่งได้อย่างถูกต้อง • ภาษาธรรมชาตินี้ ถูกสร้างขึ้นมาจากเทคโนโลยีทางด้านระบบผู้เชี่ยวชาญ (Expert System)ซึ่งเป็นงานที่อยู่ในสาขาปัญญาประดิษฐ์ (Artificial Intelligence)ในการที่พยายามทำให้คอมพิวเตอร์ เปรียบเสมือนกับเป็นผู้เชี่ยวชาญ คนหนึ่งที่สามารถคิด และตัดสินใจ ได้เช่นเดียวกับมนุษย์

  28. ยุคที่ 5 : ภาษาธรรมชาติ • ระบบผู้เชี่ยวชาญนี้จะใช้กับงานเฉพาะด้านใดด้านหนึ่ง เช่นในด้านการแพทย์ ในการพยากรณ์อากาศ ในการวิเคราะห์ทางเคมี การลงทุน ฯลฯ ซึ่งจะต้องมีการเก็บรวบรวมข้อมูล และข่าวสารจากผู้เชี่ยวชาญเฉพาะด้านนั้น ๆ และแปลงให้อยู่ในรูปของกฏเกณฑ์ และข้อความจริงต่าง ๆ เก็บไว้ในระบบฐานข้อมูล ของผู้เชี่ยวชาญ ที่เรียกว่า ฐานความรู้ (Knowledge Base)ซึ่งจะต้องเก็บข้อมูลที่มีอยู่เป็นจำนวนมหาศาล และให้ผู้ใช้สามารถใช้กับภาษาธรรมชาติ ในการดึงข้อมูลจากฐานความรู้นี้ได้ ดังนั้นเราจึงอาจเรียกระบบผู้เชี่ยวชาญนี้ได้อีกอย่างว่า ระบบฐานความรู้ (Knowledge Base System)

  29. ยุคที่ 5 : ภาษาธรรมชาติ • http://www.youtube.com/watch?v=42iQIbyCo-4&feature=related • http://www.youtube.com/watch?v=VfAOLJzBrOY&feature=related

  30. Low-level VS High-level language Low-level • ขึ้นอยู่กับเครื่อง/ประเภท • รันได้เฉพาะบนเครื่องนั้น • อ่านแล้วเข้าใจได้ยาก • ภาษาเครื่อง (ยุคที่1) • ภาษาแอสเซมบลี (ยุคที่2) High-level • ไม่ขึ้นอยู่กับเครื่อง • รันบนเครื่องอื่นได้ • อ่านเข้าใจได้ง่าย • ภาษายุคที่ 3, 4, 5

  31. Programming Language Paradigms

  32. LanguageCategories (Paradigms) • Paradigm ในทางการโปรแกรมนั้น หมายถึง รูปแบบของวิธีคิดในการแก้ปัญหาภายใต้ลักษณะเฉพาะของโปรแกรม และภาษา • ภาษาโปรแกรมบางภาษาออกแบบมาเพื่อรองรับมากกว่าหนึ่งรูปแบบ • เช่น ภาษา C++ ซึ่งเป็นทั้งภาษาเชิงคำสั่งและภาษาเชิงวัตถุ หรือภาษาเชิงทดลองอย่างเช่น ภาษา Leda ก็ออกแบบมาให้รองรับทุกรูปแบบ • โปรแกรมในยุคแรกๆ เช่น PL/I หรือ Algol 68 หรือ Ada มักออกแบบโดยรองรับเพียงรูปแบบเดียวเพื่อการใช้งานทั่วไป

  33. Language Categories (Paradigms) 1. …………………………………………………………. 2. …………………………………………………………. 3.…………………………………………………………. 4. ………………………………………………………….

  34. ภาษาเชิงคำสั่ง (Imperative Programming) • ภาษาเชิงคำสั่งเป็นรูปแบบที่เก่าแก่ที่สุด • โปรแกรมประกอบขึ้นจากชุดคำสั่งที่มีลำดับการทำงานแน่นอน • มีรากฐานมาจากคอมพิวเตอร์ที่มีสถาปัตยกรรมแบบ VonNeumannที่ออกแบบโดยมีลักษณะที่ต้องเก็บโปรแกรมและตัวแปรไว้ในหน่วยความจำ • หัวใจสำคัญของภาษาในกลุ่มนี้ คือ แนวคิดในการกำหนดค่า กล่าวคือ เป็นการเปลี่ยนแปลงค่าในหน่วยความจำหลักนั่นเอง การประกาศตัวแปรเป็นการเชื่อมโยงชื่อเข้ากับตำแหน่งและชนิดข้อมูลของค่าที่เก็บไว้ การตีความของนิพจน์ก็คือการคำนวณโดยดึงค่าของตัวแปรจากหน่วยความจำมาใช้

  35. ภาษาเชิงคำสั่ง (Imperative Programming) • ลักษณะที่สำคัญโดยทั่วไปที่สนับสนุนภาษาหนึ่งๆ ให้เป็นภาษาเชิงคำสั่ง มีดังต่อไปนี้ • คำสั่งกำหนดค่า (Assignment) (= จาก Fortran, := จากAlgo) • คำสั่งวนซ้ำ (Loop) • คำสั่งทำงานตามลำดับ (Sequence) • คำสั่งเงื่อนไข (Conditionalstatement) และ • คำสั่งในการจัดการความผิดปกติของโปรแกรม (Exceptionhandling หรือสิ่งที่ไม่คาดว่าจะเกิด ขึ้นในโปรแกรม) • Procedure abstraction มีลักษณะของ อัลกอริทึมร่วมกับโครงสร้างข้อมูล (algorithm plus data structures) อัลกอริทึมจะนำมาพัฒนาเป็นโปรแกรมโดยใช้แนวคิดที่สำคัญ 2 ประการ

  36. ภาษาเชิงคำสั่ง (Imperative Programming) • Procedure abstraction • procedure abstraction เป็นกระบวนการที่ทำให้โปรแกรมเมอร์สนใจเฉพาะการติดต่อระหว่างฟังก์ชันกับผลที่ได้รับ โดยไม่จำเป็นต้องสนใจรายละเอียดของการทำงาน เช่น การพัฒนา library ของฟังก์ชันมาตรฐานทางคณิตศาสตร์มาพร้อมกับภาษา • stepwise refinement เป็นกระบวนการที่ทำให้สามารถนำ procedure abstraction มาใช้ในการพัฒนาอัลกอริทึมจากรูปแบบทั่วไปมาเป็นการนำมาใช้แบบเฉพาะเจาะจง เช่น การพัฒนาฟังก์ชัน sorting ที่โปรแกรมต้องการอัลกอริทึมในการเรียกข้อมูลตัวเลขในอาร์เรย์ โดยไม่จำเป็นต้องรู้รายละเอียดว่าทำอย่างไร เช่น sort(list, len) • ตัวอย่างภาษาเชิงคำสั่งได้แก่ ภาษาโคบอล (Cobol) ฟอร์แทรน (Fortran) ซี (C) เอดา (Ada) และเพิร์ล (Perl)

  37. ภาษาเชิงคำสั่ง vsภาษาเชิงวัตถุ • 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();

  38. ภาษาเชิงวัตถุ (Object Oriented Programming) • เป็นภาษาที่มีวิวัฒนาการมาจากภาษาเชิงคำสั่ง บางตำราอาจจัดภาษาเชิงวัตถุว่าเป็นกลุ่มย่อยของภาษาเชิงคำสั่ง โดยเริ่มต้นจากการพัฒนา Procedure abstraction มาเป็นแนวคิดแบบ …………………………………………………. • ภาษาที่มี ADTs มีคุณสมบัติ 2 ประการ คือ • Encapsulation เป็นการนำข้อมูลกับ operations มาผูกติดกันเป็นหน่วยหนึ่ง • Information hiding เป็นการกำหนดขอบเขตในการอ้างถึงข้อมูลหรือ operations ของชนิดข้อมูลหนึ่งๆ ข้อมูลภายใน data นี้จะไม่ถูกอ้างถึงได้โดยตรง แต่ผ่านทาง operations ที่กำหนดไว้

  39. ภาษาเชิงวัตถุ (Object Oriented Programming) • แนวคิดที่สำคัญของภาษาเชิงวัตถุ คือ การมองปัญหาอยู่ในลักษณะของกลุ่มวัตถุ (Object) ซึ่งโดยทั่วไปจะเก็บสถานะ (state) ที่เป็นข้อมูลของตัวเองได้ และสามารถทำกิจกรรมบางอย่างได้ เช่น คำนวณเปลี่ยนแปลงข้อมูล ติดต่อหรือโต้ตอบกับวัตถุอื่นได้ • การโต้ตอบกับวัตถุนี้เองทำให้ข้อมูลของวัตถุมีลักษณะเป็นแบบ …………….....แทนที่จะเป็นแบบ …………………ซึ่งเป็นสิ่งที่ทำให้ภาษาเชิงวัตถุแตกต่างจากภาษาเชิงคำสั่งอย่างชัดเจน • การสร้างกลุ่มคำสั่งของภาษาเชิงวัตถุจะอาศัยหลักการพื้นฐานดังต่อไปนี้ • การสืบทอดคุณสมบัติ (Inheritance) • การมีหลายรูป (Polymorphism) • ตัวอย่างภาษาเชิงวัตถุ ได้แก่ ภาษาสมอลทอล์ก (Smalltalk) ซีพลัสพลัส (C++) จาวา (Java) และซีชาร์บ (C#)

  40. ภาษาเชิงฟังก์ชัน (Functional Programming) • เป็นภาษาที่ใช้หลักการของฟังก์ชันทางคณิตศาสตร์ คือเป็นการ mapping สมาชิกของเซตหนึ่ง เรียกว่า domain set หรือ input ไปยังสมาชิกของอีกเซ็ตหนึ่งเรียกว่า range set หรือ output โดยใช้รูปแบบของ lambdaexpression • ดังตัวอย่างของฟังก์ชัน cube (x) = x * x * x ซึ่งเขียนอยู่ในรูปแบบ lambda expression ได้ดังนี้ λ(x) x * x * x • Lambda expressions เป็นการอธิบายฟังก์ชันแบบไม่มีชื่อ การใช้งานทำได้โดยการแทนที่ค่าพารามิเตอร์ในนิพจน์ ตัวอย่างเช่น (λ(x) x * x * x)(3) มีค่าเท่ากับ 27

  41. ภาษาเชิงฟังก์ชัน (Functional Programming) • ภาษาโปรแกรมในกลุ่มนี้แตกต่างจากภาษาที่ใช้คำสั่งกำหนดค่า ตัวอย่างเช่น คำสั่งกำหนดค่า x = x+1 เป็นคำสั่งที่ไม่สมเหตุสมผลทางคณิตศาสตร์และในภาษาเชิงฟังก์ชันด้วย • การควบคุมการทำงานของโปรแกรมจะใช้ • การแปรค่าตามเงื่อนไข (conditional) • การเรียกตัวเองซ้ำ (recursion) • ตัวอย่างภาษาเชิงฟังก์ชันที่สำคัญ ได้แก่ ภาษาลิสพ์ (Lisp) สคีม (Scheme) แฮสเคล (Haskell) และภาษาเอ็มแอล (ML)

  42. ภาษาเชิงฟังก์ชัน (Functional Programming) • ข้อดีของภาษาเชิงฟังก์ชันเมื่อเทียบกับภาษาเชิงคำสั่ง คือ มี syntax และ semantic ที่เข้าใจได้ง่าย ซึ่งแตกต่างจากภาษาเชิงคำสั่งที่มักจะมีรูปแบบที่ซับซ้อน เข้าใจได้ยาก • ตัวอย่างการใช้งาน ได้แก่ ภาษา LISP ที่มักจะใช้ในงานทางด้านปัญญาประดิษฐ์ เช่น การแทนความรู้ (Knowledge representation) การเรียนรู้ด้วยเครื่อง (Machine learning) การประมวลผลภาษาธรรมชาติ (Natural language processing) เป็นต้น หรือภาษา Scheme ที่มักใช้ในการสอนวิชาการเขียนโปรแกรมเบื้องต้น เพราะเป็นภาษาที่รูปแบบการเขียนง่าย ไม่ซับซ้อน

  43. ภาษาเชิงฟังก์ชัน (Functional Programming) • http://forrest.psych.unc.edu/teaching/p285/p285pgmexmpchap3.html • http://norvig.com/paip/examples.lisp

  44. ภาษาเชิงตรรกะ (Logical Programming) • อาจเรียกว่าเป็นภาษา rule-basedlanguage เนื่องจากโปรแกรมมีลักษณะคล้ายกับเซตของกฎ หรือข้อบังคับของปัญหา แทนที่จะเป็นลำดับการทำงานของคำสั่ง • โปรแกรมจะประกอบไปด้วย ……………………………………………………..ที่ใช้แสดงความสัมพันธ์ในลักษณะ IF…THEN เพื่อเชื่อมโยงความจริงที่มีอยู่ไปสู่ความจริงใหม่อื่นๆ • การแปลความการประกาศของโปรแกรมเชิงตรรกะ จะสร้างเซตของการแก้ปัญหาที่เป็นไปได้ทั้งหมดตามที่โปรแกรมระบุไว้ ภาษาเชิงตรรกะเหมาะสำหรับการแก้ปัญหาที่มีรายละเอียดไม่สมบูรณ์

  45. ภาษาเชิงตรรกะ (Logical Programming) • องค์ประกอบของภาษา ประกอบด้วย • ข้อเท็จจริง (fact) ที่ใช้อธิบายข้อเท็จจริงในรูปความสัมพันธ์ของวัตถุ • ข้อคำถาม (query) ใช้ในการตั้งคำถามเพื่อให้โปรแกรมหาคำตอบได้ • ตัวแปร (variable) สามารถระบุตัวแปรในข้อคำถามได้ เพื่อให้โปรแกรมหาคำตอบได้เช่นกัน • กฎ (rules) ที่ใช้อธิบาย Object หรือ สิ่งที่เราสนใจ กับ Relation ที่ใช้อธิบายความสัมพันธ์ของobject • ตัวอย่างการใช้งาน ได้แก่ ภาษา Prologที่มักจะใช้ในงานทางด้านปัญญาประดิษฐ์ เช่น การประมวลผลภาษาธรรมชาติ (Natural language processing) หรือระบบผู้เชี่ยวชาญ (Expert system) เป็นต้น

  46. ภาษาเชิงตรรกะ (Logical Programming) • http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_1.html

  47. ขอบเขตของภาษาคอมพิวเตอร์ขอบเขตของภาษาคอมพิวเตอร์ • Scientific applications • Large number of floating point computations • Fortran • Business applications • Produce reports, use decimal numbers and characters • COBOL • Artificial intelligence • Symbols rather than numbers manipulated • LISP • Systems programming • 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)

More Related