1.02k likes | 2.2k Views
ภาษาคอมพิวเตอร์ Computer Language. ภาษาคอมพิวเตอร์ ( Computer Language). ภาษาคอมพิวเตอร์ ( Computer Language ) หมายถึง ภาษาใดๆ ที่ถูกออกแบบโครงสร้างขึ้นมา เพื่อใช้ในการเขียนคำสั่ง ประกอบด้วยโครงสร้างภาษา รูปแบบไวยากรณ์ และความหมาย เพื่อสั่งให้คอมพิวเตอร์ทำงานตามที่ต้องการ
E N D
ภาษาคอมพิวเตอร์Computer Language
ภาษาคอมพิวเตอร์ (Computer Language) • ภาษาคอมพิวเตอร์ (Computer Language) หมายถึง ภาษาใดๆ ที่ถูกออกแบบโครงสร้างขึ้นมา เพื่อใช้ในการเขียนคำสั่ง ประกอบด้วยโครงสร้างภาษา รูปแบบไวยากรณ์ และความหมาย เพื่อสั่งให้คอมพิวเตอร์ทำงานตามที่ต้องการ • ภาษาคอมพิวเตอร์ แบ่งออกเป็น 2 ระดับ คือ • ภาษาระดับต่ำ • ภาษาระดับสูง
Low level & High Level language • ภาษาระดับต่ำ (low level) • ภาษาเครื่อง (Machine Language) ที่มีลักษณะการใช้คำสั่งเป็นชุดของตัวเลขฐานสอง คือ 0 กับ 1 • ภาษาแอสเซมบลี (Assembly Language) ที่ใช้สัญลักษณ์เป็นอักษรภาษาอังกฤษร่วมกับเลขฐานอื่น ๆ ในการใช้งานจะถูกตัวแปลภาษาแปลงให้เป็นภาษาเครื่องอีกที • ภาษาระดับสูง (high level) เป็นภาษาที่พัฒนาต่อเนื่องมาจากภาษาระดับต่ำ เพื่อให้โปรแกรมเมอร์สามารถเขียนชุดคำสั่งได้ง่ายขึ้น จึงมีการกำหนดสัญลักษณ์การใช้งานคำสั่งเป็นรูปแบบของภาษาอังกฤษที่ใกล้เคียงกับภาษามนุษย์เช่น Fortran, Basic, Cobol, Pascal, C, VB, Delphi, Java เป็นต้น
ระดับของภาษาในทางคอมพิวเตอร์(Levels of Language in Computing)
ตัวอย่างภาษาคอมพิวเตอร์(แบ่งตามกลุ่มของภาษา)ตัวอย่างภาษาคอมพิวเตอร์(แบ่งตามกลุ่มของภาษา) • ภาษาโปรแกรม • ภาษามาร์คอัพ • ภาษาสคริป • ภาษาสไตล์ชีท (Style SheetLanguage) • ภาษาสอบถาม (Query Language)
ภาษาโปรแกรม (Programming Language) • ภาษาที่สามารถใช้ ควบคุมกำหนดพฤติกรรมการทำงานของคอมพิวเตอร์ (Flow control) ภาษาโปรแกรมก็เหมือนภาษามนุษย์จะต้องใช้วากยสัมพันธ์ (Syntax)และความหมาย (Semantic) เพื่อกำหนดโครงสร้างและตีความหมายตามลำดับ • แต่ละภาษาจะมีโครงสร้างของภาษา รูปแบบไวยากรณ์ และคำศัพท์ ที่ไม่เหมือนกัน แต่หลักการของภาษา จะเหมือนกัน เช่น ตัวแปรชนิดต่างๆ, การควบคุมการทำงาน ฟังก์ชัน • เช่น ภาษา Pascal, C, VB, Java
ภาษาสคริป (Scripting Language) • ภาษา script (Scripting Language) จัดเป็นภาษาโปรแกรมชนิดหนึ่ง แต่มีลักษณะที่เรียนรู้ได้ง่ายกว่าภาษาโปรแกรมโดยทั่วไป และ code ที่เขียนจะถูกตีความ (Interpreted) และ execute ไปทีละคำสั่ง ผ่าน software พวก Script Engine ที่สนับสนุนภาษา script นั้นๆ • Scripting Language เป็น interpreted languageและต้องอาศัย run บนโปรแกรมอื่นในขณะที่ Programming Language เป็น compiled language • เช่น Java script, PHP
ภาษาสคริป (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 ในโปรแกรมเว็บเบราเซอร์
ภาษาสอบถาม (Query Language) • เป็นภาษาคอมพิวเตอร์ที่ใช้สำหรับสอบถามหรือจัดการกับข้อมูลใน DBMS • ภาษาประเภทนี้ที่ได้รับความนิยมสูงสุดคือ ภาษาสอบถามเชิงโครงสร้าง (Structure Query Language: SQL) มีรูปแบบคำสั่งที่คล้ายกับประโยคในภาษาอังกฤษมาก • ปัจจุบัน ภาษาสอบถามเชิงโครงสร้าง เป็นภาษามาตรฐานสำหรับระบบการจัดการฐานข้อมูลเชิงสัมพันธ์(Relational Database management System หรือ RDBMS) ซึ่งเป็นระบบDBMSแบบที่ใช้กันแพร่หลายที่สุดในปัจจุบัน
ภาษามาร์คอัพ (Markup Language) • ภาษาประเภท Markup เป็นภาษาคอมพิวเตอร์ที่แสดงทั้งข้อมูล และรูปแบบการแสดงผลเข้าด้วยกัน ได้แก่ HTML, XHTML, XML • ภาษา HTML จัดเป็นภาษาโปรแกรมหรือไม่ เพราะเหตุใด
ภาษามาร์คอัพ (Markup Language) • ภาษาประเภท Markup เป็นภาษาคอมพิวเตอร์ที่แสดงทั้งข้อมูล และรูปแบบการแสดงผลเข้าด้วยกัน ได้แก่ HTML, XHTML, XML • ภาษา HTML ไม่ใช่ภาษาโปรแกรม เพราะโครงสร้างของภาษา รูปแบบไวยากรณ์ (Syntax) ของภาษา HTML ไม่มีเรื่องตัวแปร ไม่มีFlow Control เช่น คำสั่ง if…else…, for, while สำหรับควบคุมการทำงานของโปรแกรม
ภาษาโปรแกรม • แนวคิดในยุคแรกเริ่มออกแบบและสร้างขึ้นให้สามารถทำงานได้กับคอมพิวเตอร์ที่มีสถาปัตยกรรมแบบ Von Neumann • การทำงานตามคำสั่งจะเป็นการทำแบบเรียงตามลำดับจากคำสั่งหนึ่งไปยังคำสั่งถัดไป (ยกเว้นบางกรณีที่มีการเปลี่ยนลำดับคำสั่ง) • มีการนิยามตัวแปร เพื่อใช้ในการอ้างอิงถึงตำแหน่งข้อมูลในหน่วยความจำ • ภาษาในกลุ่มนี้ เรียกว่า ………………………………………………เช่น …………………………………………………………………….
The Von Neumann Architecture • Well-known computer architecture: Von Neumann • ข้อมูล และโปรแกรมอยู่ภายในหน่วยความจำ • หน่วยความจำ แยกกันอยู่กับ CPU • คำสั่งและข้อมูลจะถูกส่งจากหน่วยความจำมายัง CPU • พื้นฐานของ imperative languages • โมเดลทางด้านการใช้ตัวแปร การให้ค่าตัวแปร • มีลูป กระบวนการทำซ้ำ
Von Neumann Bottleneck • ความเร็วในการเชื่อมต่อระหว่างหน่วยความจำ กับ CPU เป็นตัวกำหนดความเร็วของคอมพิวเตอร์ • คำสั่งโปรแกรมจะถูก 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 • structured programming • top-down design • Late 1970s: Process-oriented to data-oriented • data abstraction • Middle 1980s: Object-oriented programming • Data abstraction + inheritance + polymorphism
ยุคของภาษาคอมพิวเตอร์ยุคของภาษาคอมพิวเตอร์ • ยุคที่ 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)
ยุคที่ 1: ภาษาเครื่อง • ก่อนปี ค.ศ. 1952 มีภาษาคอมพิวเตอร์เพียงภาษาเดียวเท่านั้นคือ ภาษาเครื่อง (Machine Language) เป็นภาษาระดับต่ำที่สุด • ใช้เลขฐานสอง คือ 0 และ 1 ซึ่งจะสัมพันธ์กับการเปิด (On) และการปิด (Off) ของสัญญาณไฟฟ้า • มนุษย์ทำความเข้าใจได้ยาก แต่เครื่องนำไปทำงานได้เร็ว • เครื่องคอมพิวเตอร์แต่ละประเภทจะมีภาษาเครื่องที่เป็นของตนเอง ไม่สามารถนำภาษาเครื่องที่ใช้กับเครื่องประเภทหนึ่ง ไปใช้กับเครื่องประเภทอื่นได้ เนื่องจากแต่ละระบบก็จะมีชุดคำสั่งของภาษาเครื่องที่แตกต่างกันออกไป ซึ่งเป็นลักษณะของภาษาที่มีพัฒนาการนั้นขึ้นอยู่กับเครื่อง (Machine Dependent)
ยุคที่ 1: ภาษาเครื่อง • คำสั่งในภาษาเครื่องจะประกอบด้วย 2 ส่วน คือ 1. ………………………………………………………….เป็นคำสั่งที่สั่งให้คอมพิวเตอร์ปฏิบัติการ เช่นการบวก (Addition) , การลบ (Substraction) เป็นต้น 2.………………………………………………………………เป็นตัวที่ระบุตำแหน่งที่เก็บของข้อมูลที่จะนำเข้าสู่คอมพิวเตอร์เพื่อนำไปปฏิบัติการตามคำสั่งในโอเปอเรชันโค้ด
ยุคที่ 2 : ภาษาสัญลักษณ์ หรือ ภาษาแอสเซมบลี • ใช้ตัวอักษรในภาษาอังกฤษมาแทนคำสั่งที่เป็นเลขฐานสอง เรียกอักษรสัญลักษณ์ที่เป็นคำสั่งนี้ว่า สัญลักษณ์ข้อความ (mnemonic codes) เพื่อให้ง่ายต่อการเขียนและการจดจำมากกว่าภาษาเครื่อง • ผู้เขียนสามารถใช้ตัวแปรที่ตั้งขึ้นมาเองในการเก็บค่าข้อมูลใดๆ (รีจิสเตอร์) เช่น ax, bx • ตัวแปลภาษาแอสเซมบลีเรียกว่าแอสเซมเบลอร์(Assembler) ภาษาแอสเซมบลี 1 คำสั่งจะสามารถแปลเป็นภาษาเครื่อง 1 คำสั่ง • ภาษาแอสเซมบลี จะมีลักษณะที่เหมือนกับภาษาเครื่อง คือ เป็นภาษาที่ขึ้นอยู่กับเครื่อง คือเราไม่สามารถนำโปรแกรมที่เขียนด้วยแอสเซมบลี โปรแกรมเดียวกันไปใช้ในเครื่องต่างชนิดกันได้
Assembly code Assembler Object code 22
ยุคที่ 3 : ภาษาระดับสูง • เป็นภาษาที่ถูกสร้างขึ้นมาเพื่อให้สามารถเขียน และอ่านโปรแกรมได้ง่ายขึ้น เนื่องจากมีลักษณะเหมือนภาษาอังกฤษทั่วๆไป • โปรแกรมที่ถูกเขียนด้วยภาษาประเภทนี้จะทำงานได้ ก็ต่อเมื่อมีการแปลงให้เป็นภาษาเครื่องเสียก่อน ซึ่งต้องใช้ตัวแปลภาษาคอมไพเลอร์ (Compiler)หรือ อินเตอร์พรีเตอร์(Interpreter) โดยภาษาชั้นสูงแต่ละภาษาจะมีตัวแปลภาษาเฉพาะเป็นของตัวเอง • สามารถนำโปรแกรมไปใช้งานบนเครื่องที่ต่างกันได้โดยอาจมีการแก้ไขโค้ดเล็กน้อยหรือไม่ต้องแก้ไขเลยเพียงแต่ต้องทำการแปลโปรแกรมใหม่ คือมีลักษณะที่ไม่ขึ้นอยู่กับเครื่อง (Machine Independent)
ยุคที่ 3 : ภาษาระดับสูง • มีชุดคำสั่งโปรแกรมให้ใช้(program libraries) • ภาษารุ่นที่ 3 นี้ ส่วนใหญ่จะจัดอยู่ในกลุ่มของ ภาษามีแบบแผน (Procedural Language) เนื่องจาก ลักษณะการเขียนโปรแกรม จะมีโครงสร้างแบบแผนที่เป็นระเบียบ กล่าวคือ งานทุกอย่างผู้เขียนโปรแกรม ต้องเขียนโปรแกรมควบคุม การทำงานเองทั้งหมด และต้องเขียนคำสั่งการทำงานที่เป็นขั้นเป็นตอนทุกอย่าง ไม่ว่าจะเป็นการสร้างแบบฟอร์มกรอกข้อมูล การประมวลผล หรือการสร้างรายงาน ซึ่งโปรแกรมที่เขียนจะค่อนข้างซับซ้อน และใช้เวลาในการพัฒนาค่อนข้างมาก • เช่น ภาษาฟอร์แทรน(Fortran) , โคบอล (Cobol) , เบสิก (Basic) , ปาสคาล (Pascal) , ซี(C) , เอดา(ADA) เป็นต้น
ยุคที่ 4 : ภาษาระดับสูงมาก • ช่วยในเรื่องของการสร้างแบบฟอร์มบนหน้าจอ เพื่อจัดการเกี่ยวกับข้อมูล รวมไปถึงการออกรายงาน ซึ่งจะมีการจัดการที่ง่ายมากไม่ยุ่งยากเหมือนภาษารุ่นที่3 • โปรแกรมเมอร์สามารถใช้ visual environmentได้โดยใช้เครื่องมือทางด้านกราฟิก ทำให้สร้าง Prototype หรือ GUI ของโปรแกรมได้รวดเร็ว ประหยัดเวลา • รวมถึงภาษาโปรแกรมใช้รวบรวมการจัดการฐานข้อมูล • ภาษาที่อยู่ในกลุ่มนี้ ได้แก่…………………………………………………
ยุคที่ 5 : ภาษาธรรมชาติ • คือ ภาษามนุษย์ที่สั่งให้คอมพิวเตอร์ทำงาน ซึ่งอาจมีรูปแบบที่ไม่แน่นอนตายตัว แต่คอมพิวเตอร์ก็สามารถแปลคำสั่งเหล่านั้นให้อยู่ ในรูปแบบที่คอมพิวเตอร์สามารถเข้าใจคำสั่งได้ ถ้าคำสั่งใดไม่กระจ่างชัดเจน ก็จะมีการถามกลับ เพื่อให้เข้าใจคำสั่งได้อย่างถูกต้อง • ภาษาธรรมชาตินี้ ถูกสร้างขึ้นมาจากเทคโนโลยีทางด้านระบบผู้เชี่ยวชาญ (Expert System)ซึ่งเป็นงานที่อยู่ในสาขาปัญญาประดิษฐ์ (Artificial Intelligence)ในการที่พยายามทำให้คอมพิวเตอร์ เปรียบเสมือนกับเป็นผู้เชี่ยวชาญ คนหนึ่งที่สามารถคิด และตัดสินใจ ได้เช่นเดียวกับมนุษย์
ยุคที่ 5 : ภาษาธรรมชาติ • ระบบผู้เชี่ยวชาญนี้จะใช้กับงานเฉพาะด้านใดด้านหนึ่ง เช่นในด้านการแพทย์ ในการพยากรณ์อากาศ ในการวิเคราะห์ทางเคมี การลงทุน ฯลฯ ซึ่งจะต้องมีการเก็บรวบรวมข้อมูล และข่าวสารจากผู้เชี่ยวชาญเฉพาะด้านนั้น ๆ และแปลงให้อยู่ในรูปของกฏเกณฑ์ และข้อความจริงต่าง ๆ เก็บไว้ในระบบฐานข้อมูล ของผู้เชี่ยวชาญ ที่เรียกว่า ฐานความรู้ (Knowledge Base)ซึ่งจะต้องเก็บข้อมูลที่มีอยู่เป็นจำนวนมหาศาล และให้ผู้ใช้สามารถใช้กับภาษาธรรมชาติ ในการดึงข้อมูลจากฐานความรู้นี้ได้ ดังนั้นเราจึงอาจเรียกระบบผู้เชี่ยวชาญนี้ได้อีกอย่างว่า ระบบฐานความรู้ (Knowledge Base System)
ยุคที่ 5 : ภาษาธรรมชาติ • http://www.youtube.com/watch?v=42iQIbyCo-4&feature=related • http://www.youtube.com/watch?v=VfAOLJzBrOY&feature=related
Low-level VS High-level language Low-level • ขึ้นอยู่กับเครื่อง/ประเภท • รันได้เฉพาะบนเครื่องนั้น • อ่านแล้วเข้าใจได้ยาก • ภาษาเครื่อง (ยุคที่1) • ภาษาแอสเซมบลี (ยุคที่2) High-level • ไม่ขึ้นอยู่กับเครื่อง • รันบนเครื่องอื่นได้ • อ่านเข้าใจได้ง่าย • ภาษายุคที่ 3, 4, 5
LanguageCategories (Paradigms) • Paradigm ในทางการโปรแกรมนั้น หมายถึง รูปแบบของวิธีคิดในการแก้ปัญหาภายใต้ลักษณะเฉพาะของโปรแกรม และภาษา • ภาษาโปรแกรมบางภาษาออกแบบมาเพื่อรองรับมากกว่าหนึ่งรูปแบบ • เช่น ภาษา C++ ซึ่งเป็นทั้งภาษาเชิงคำสั่งและภาษาเชิงวัตถุ หรือภาษาเชิงทดลองอย่างเช่น ภาษา Leda ก็ออกแบบมาให้รองรับทุกรูปแบบ • โปรแกรมในยุคแรกๆ เช่น PL/I หรือ Algol 68 หรือ Ada มักออกแบบโดยรองรับเพียงรูปแบบเดียวเพื่อการใช้งานทั่วไป
Language Categories (Paradigms) 1. …………………………………………………………. 2. …………………………………………………………. 3.…………………………………………………………. 4. ………………………………………………………….
ภาษาเชิงคำสั่ง (Imperative Programming) • ภาษาเชิงคำสั่งเป็นรูปแบบที่เก่าแก่ที่สุด • โปรแกรมประกอบขึ้นจากชุดคำสั่งที่มีลำดับการทำงานแน่นอน • มีรากฐานมาจากคอมพิวเตอร์ที่มีสถาปัตยกรรมแบบ VonNeumannที่ออกแบบโดยมีลักษณะที่ต้องเก็บโปรแกรมและตัวแปรไว้ในหน่วยความจำ • หัวใจสำคัญของภาษาในกลุ่มนี้ คือ แนวคิดในการกำหนดค่า กล่าวคือ เป็นการเปลี่ยนแปลงค่าในหน่วยความจำหลักนั่นเอง การประกาศตัวแปรเป็นการเชื่อมโยงชื่อเข้ากับตำแหน่งและชนิดข้อมูลของค่าที่เก็บไว้ การตีความของนิพจน์ก็คือการคำนวณโดยดึงค่าของตัวแปรจากหน่วยความจำมาใช้
ภาษาเชิงคำสั่ง (Imperative Programming) • ลักษณะที่สำคัญโดยทั่วไปที่สนับสนุนภาษาหนึ่งๆ ให้เป็นภาษาเชิงคำสั่ง มีดังต่อไปนี้ • คำสั่งกำหนดค่า (Assignment) (= จาก Fortran, := จากAlgo) • คำสั่งวนซ้ำ (Loop) • คำสั่งทำงานตามลำดับ (Sequence) • คำสั่งเงื่อนไข (Conditionalstatement) และ • คำสั่งในการจัดการความผิดปกติของโปรแกรม (Exceptionhandling หรือสิ่งที่ไม่คาดว่าจะเกิด ขึ้นในโปรแกรม) • Procedure abstraction มีลักษณะของ อัลกอริทึมร่วมกับโครงสร้างข้อมูล (algorithm plus data structures) อัลกอริทึมจะนำมาพัฒนาเป็นโปรแกรมโดยใช้แนวคิดที่สำคัญ 2 ประการ
ภาษาเชิงคำสั่ง (Imperative Programming) • Procedure abstraction • procedure abstraction เป็นกระบวนการที่ทำให้โปรแกรมเมอร์สนใจเฉพาะการติดต่อระหว่างฟังก์ชันกับผลที่ได้รับ โดยไม่จำเป็นต้องสนใจรายละเอียดของการทำงาน เช่น การพัฒนา library ของฟังก์ชันมาตรฐานทางคณิตศาสตร์มาพร้อมกับภาษา • stepwise refinement เป็นกระบวนการที่ทำให้สามารถนำ procedure abstraction มาใช้ในการพัฒนาอัลกอริทึมจากรูปแบบทั่วไปมาเป็นการนำมาใช้แบบเฉพาะเจาะจง เช่น การพัฒนาฟังก์ชัน sorting ที่โปรแกรมต้องการอัลกอริทึมในการเรียกข้อมูลตัวเลขในอาร์เรย์ โดยไม่จำเป็นต้องรู้รายละเอียดว่าทำอย่างไร เช่น sort(list, len) • ตัวอย่างภาษาเชิงคำสั่งได้แก่ ภาษาโคบอล (Cobol) ฟอร์แทรน (Fortran) ซี (C) เอดา (Ada) และเพิร์ล (Perl)
ภาษาเชิงคำสั่ง 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();
ภาษาเชิงวัตถุ (Object Oriented Programming) • เป็นภาษาที่มีวิวัฒนาการมาจากภาษาเชิงคำสั่ง บางตำราอาจจัดภาษาเชิงวัตถุว่าเป็นกลุ่มย่อยของภาษาเชิงคำสั่ง โดยเริ่มต้นจากการพัฒนา Procedure abstraction มาเป็นแนวคิดแบบ …………………………………………………. • ภาษาที่มี ADTs มีคุณสมบัติ 2 ประการ คือ • Encapsulation เป็นการนำข้อมูลกับ operations มาผูกติดกันเป็นหน่วยหนึ่ง • Information hiding เป็นการกำหนดขอบเขตในการอ้างถึงข้อมูลหรือ operations ของชนิดข้อมูลหนึ่งๆ ข้อมูลภายใน data นี้จะไม่ถูกอ้างถึงได้โดยตรง แต่ผ่านทาง operations ที่กำหนดไว้
ภาษาเชิงวัตถุ (Object Oriented Programming) • แนวคิดที่สำคัญของภาษาเชิงวัตถุ คือ การมองปัญหาอยู่ในลักษณะของกลุ่มวัตถุ (Object) ซึ่งโดยทั่วไปจะเก็บสถานะ (state) ที่เป็นข้อมูลของตัวเองได้ และสามารถทำกิจกรรมบางอย่างได้ เช่น คำนวณเปลี่ยนแปลงข้อมูล ติดต่อหรือโต้ตอบกับวัตถุอื่นได้ • การโต้ตอบกับวัตถุนี้เองทำให้ข้อมูลของวัตถุมีลักษณะเป็นแบบ …………….....แทนที่จะเป็นแบบ …………………ซึ่งเป็นสิ่งที่ทำให้ภาษาเชิงวัตถุแตกต่างจากภาษาเชิงคำสั่งอย่างชัดเจน • การสร้างกลุ่มคำสั่งของภาษาเชิงวัตถุจะอาศัยหลักการพื้นฐานดังต่อไปนี้ • การสืบทอดคุณสมบัติ (Inheritance) • การมีหลายรูป (Polymorphism) • ตัวอย่างภาษาเชิงวัตถุ ได้แก่ ภาษาสมอลทอล์ก (Smalltalk) ซีพลัสพลัส (C++) จาวา (Java) และซีชาร์บ (C#)
ภาษาเชิงฟังก์ชัน (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
ภาษาเชิงฟังก์ชัน (Functional Programming) • ภาษาโปรแกรมในกลุ่มนี้แตกต่างจากภาษาที่ใช้คำสั่งกำหนดค่า ตัวอย่างเช่น คำสั่งกำหนดค่า x = x+1 เป็นคำสั่งที่ไม่สมเหตุสมผลทางคณิตศาสตร์และในภาษาเชิงฟังก์ชันด้วย • การควบคุมการทำงานของโปรแกรมจะใช้ • การแปรค่าตามเงื่อนไข (conditional) • การเรียกตัวเองซ้ำ (recursion) • ตัวอย่างภาษาเชิงฟังก์ชันที่สำคัญ ได้แก่ ภาษาลิสพ์ (Lisp) สคีม (Scheme) แฮสเคล (Haskell) และภาษาเอ็มแอล (ML)
ภาษาเชิงฟังก์ชัน (Functional Programming) • ข้อดีของภาษาเชิงฟังก์ชันเมื่อเทียบกับภาษาเชิงคำสั่ง คือ มี syntax และ semantic ที่เข้าใจได้ง่าย ซึ่งแตกต่างจากภาษาเชิงคำสั่งที่มักจะมีรูปแบบที่ซับซ้อน เข้าใจได้ยาก • ตัวอย่างการใช้งาน ได้แก่ ภาษา LISP ที่มักจะใช้ในงานทางด้านปัญญาประดิษฐ์ เช่น การแทนความรู้ (Knowledge representation) การเรียนรู้ด้วยเครื่อง (Machine learning) การประมวลผลภาษาธรรมชาติ (Natural language processing) เป็นต้น หรือภาษา Scheme ที่มักใช้ในการสอนวิชาการเขียนโปรแกรมเบื้องต้น เพราะเป็นภาษาที่รูปแบบการเขียนง่าย ไม่ซับซ้อน
ภาษาเชิงฟังก์ชัน (Functional Programming) • http://forrest.psych.unc.edu/teaching/p285/p285pgmexmpchap3.html • http://norvig.com/paip/examples.lisp
ภาษาเชิงตรรกะ (Logical Programming) • อาจเรียกว่าเป็นภาษา rule-basedlanguage เนื่องจากโปรแกรมมีลักษณะคล้ายกับเซตของกฎ หรือข้อบังคับของปัญหา แทนที่จะเป็นลำดับการทำงานของคำสั่ง • โปรแกรมจะประกอบไปด้วย ……………………………………………………..ที่ใช้แสดงความสัมพันธ์ในลักษณะ IF…THEN เพื่อเชื่อมโยงความจริงที่มีอยู่ไปสู่ความจริงใหม่อื่นๆ • การแปลความการประกาศของโปรแกรมเชิงตรรกะ จะสร้างเซตของการแก้ปัญหาที่เป็นไปได้ทั้งหมดตามที่โปรแกรมระบุไว้ ภาษาเชิงตรรกะเหมาะสำหรับการแก้ปัญหาที่มีรายละเอียดไม่สมบูรณ์
ภาษาเชิงตรรกะ (Logical Programming) • องค์ประกอบของภาษา ประกอบด้วย • ข้อเท็จจริง (fact) ที่ใช้อธิบายข้อเท็จจริงในรูปความสัมพันธ์ของวัตถุ • ข้อคำถาม (query) ใช้ในการตั้งคำถามเพื่อให้โปรแกรมหาคำตอบได้ • ตัวแปร (variable) สามารถระบุตัวแปรในข้อคำถามได้ เพื่อให้โปรแกรมหาคำตอบได้เช่นกัน • กฎ (rules) ที่ใช้อธิบาย Object หรือ สิ่งที่เราสนใจ กับ Relation ที่ใช้อธิบายความสัมพันธ์ของobject • ตัวอย่างการใช้งาน ได้แก่ ภาษา Prologที่มักจะใช้ในงานทางด้านปัญญาประดิษฐ์ เช่น การประมวลผลภาษาธรรมชาติ (Natural language processing) หรือระบบผู้เชี่ยวชาญ (Expert system) เป็นต้น
ภาษาเชิงตรรกะ (Logical Programming) • http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_1.html
ขอบเขตของภาษาคอมพิวเตอร์ขอบเขตของภาษาคอมพิวเตอร์ • 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)