งานวิชาเทคโนโลยีสารสนเทศ 2
ใบงานที่ 1
ตอบ
ภาษาคอมพิวเตอร์สามารถแบ่งออกเป็น 3 ระดับ ดังนี้
3. ภาษาระดับสูง (High Level Language) เป็นภาษาที่ทาความเข้าใจได้ง่าย มีลักษณะของ การใช้คาสั่งเป็นภาษาอังกฤษซึ่งใกล้เคียงกับภาษามนุษย์มากการสั่งให้คอมพิวเตอร์ทางานจะต้องมีการแปลความหมายของคาสั่งโดยใช้ตัวแปลภาษาทีละชุดคาสั่งที่เรียกว่า Interpreter หรือแปลครั้งเดียวทั้งโปรแกรมที่เรียกว่า Compiler
2. วิวัฒนาการของภาษาคอมพิวเตอร์เป็นอย่างไร จงอธิบาย
ตอบ
วิวัฒนาการของภาษาคอมพิวเตอร์
ภาษาชั้นสูง (High - level Language)
คอมพิวเตอร์แต่ละระบบ โดยเขียนอยู่ในรูปของรหัสของระบบเลขฐานสอง ประกอบด้วย เลข 0 และเลข 1 ที่นำมาเขียนเรียงติดต่อกัน ประโยคคำสั่งของภาษาเครื่องจะประกอบด้วยส่วนที่ระบุให้คอมพิวเตอร์ทำงานอะไรเช่น สั่งให้ทำการ
บวกเลข สั่งให้ทำการเคลื่อนย้ายข้อมูล เป็นต้น และอีกส่วนเพื่อ บอกแหล่งข้อมูลที่จะนำมาทำงานตามที่ระบุในตอนแรก
โอเปอเรชันโคด (Operation Code) เป็นคำสั่งที่สั่งให้เครื่องคอมพิวเตอร์ปฏิบัติการ เช่นการบวก (Addition) การลบ (Subtraction) เป็นต้น
โอเปอแรนด์ (Operands)เป็นตัวที่ระบุตำแหน่งที่เก็บของข้อมูลที่จะเข้าคอมพิวเตอร์เพื่อนำไปปฏิบัติการตามคำสั่งในโอเปอเรชันโคด
เป็นภาษาที่มีการใช้สัญลักษณ์ข้อความ(mnemonic codes)แทนกลุ่มของเลขฐานสอง เพื่อให้ง่ายต่อการเขียนและการจดจำมากกว่าภาษาเครื่อง ตัวอย่างเช่นมีการใช้สัญลักษณ์ต่อไปนี้
A ย่อมาจาก ADD หมายถึงการบวก
S ย่อมาจาก SUBTRACT หมายถึงการลบ
C ย่อมาจาก COMPLARE หมายถึงการเปรียบเทียบ
MP ย่อมาจาก MULTIPLY หมายถึงการคูณ
ST ย่อมาจาก SRORE หมายถึง การเก็บข้อมูลไว้ในหน่วยความจำ เป็นต้น
ภาษาแอสเซมบลียังอนุญาติให้ผู้เขียนใช้ตัวแปรที่ตั้งขึ้นมาเองในการเก็บค่าข้อมมูลใด ๆ เช่น X, Y, RATE หรือ TOTAL แทนการอ้างอิงถึงตำแหน่งที่เก็บข้อมูลจริงๆ ภายในหน่วยความจำดังได้กล่าวแล้วว่าเครื่องคอมพิวเตอร์จะรู้จักเฉพาะภาษาเครื่องเท่านั้นดังนั้นจึงจำเป็นที่จะต้องมีการแปลโปรแกรมภาษาแอสเซมบลีนั้นให้เป็นภาษาเครื่องเสียก่อนเพื่อให้คอมพิวเตอร์สามารถทำงานตามคำสั่งในโปรแกรมได้การแปลภาษาแอสเซมบลีเป็นภาษาเครื่องนั้นจะต้องมีตัวแปลภาษาแอสเซมบลีที่เรียกว่า แอสเซมเบลอร์ (Assembler) เป็นตัวแปล ซึ่งภาษาแอสเซมบลี 1คำสั่งจะสามารถแปลเป็นภาษาเครื่องได้ 1 คำสั่งเช่นกัน ดังนั้นเขียนโปรแกรมภาษาแอสเซมบลี 10 คำสั่ง ก็จะถูกแปลเป็นภาษาเครื่อง 10 คำสั่งเช่นกันจึงเห็นได้ว่าภาษาแอสเซมบลีจะมีลักษณะที่เหมือนกับภาษาเครื่องคือ เป็นภาษาที่ขึ้นอยู่กับเครื่อง กล่าวคือเราไม่สามารถนำโปรแกรมที่เขียนด้วยแอสเซมบลีโปรแกรมเดียวกันไปใช้ในเครื่องต่างชนิดกันได้และนอกจากนี้ผู้ที่จะเขียนโปรแกรมภาษาแอสเซมบลีได้จะต้องมีความรู้
ความเข้าใจในเรื่องของฮาร์ดแวร์เป็นอย่างดีเนื่องจากจะต้องยุ่งเกี่ยวกับการใช้งานหน่วยความจำที่เป็นงานหน่วยความจำที่เป็นรีจิสเตอร์ภายในตลอดดังนั้นจึงเหมาะที่จะใช้เขียนในงานที่ต้องการความเร็วในการทำงานสูง เช่น งานทางด้านกราฟิกหรืองานพัฒนาซอฟต์แวร์ระบบต่าง ๆอย่างไรก็ตามถึงแม้ว่าภาษานี้จะง่ายกว่าการเขียนด้วยภาษาเครื่อง แต่ก็ยังถือว่าเป็นภาษาชั้นต่ำที่ยังยากต่อการเขียนและการเรียนรู้มากสำหรับผู้ที่ไม่ความรู้เกี่ยวกับฮาร์ดแวร์เท่าใดนัก
ภาษาระดับสูง
คอมไพเลอร์ (Compiler)
อินเตอร์พรีเตอร์ (Interpreter)
เป็นตัวแปลภาษาอีกตัวหนึ่งที่จะทำการแปลโปรแกรมภาษาชั้นสูงทีละคำสั่งให้เป็นภาษาเครื่องและทำการเอ็กซ์วีคิวท์หรือทำงานคำสั่งนั้นทันทีทันใดเลยก่อนที่จะไปทำการแปลต่อในบรรทัดถัดไปถ้าในระหว่างการแปลเกิดพบข้อผิดพลาดทีบรรทัดใดก็จะฟ้องให้ทำการแก้ไขทีละบรรทัดนั้นทันทีอินเตอร์พรีเตอร์นี้เมื่อโปรแกรมเสร็จแล้วจะไม่สามารถเก็บเป็นเอ็กซ์ซีคิวท์โปรแกรม (Execute Program) ได้ซึ่งต่างกับคอมไพเลอร์ดังนั้นเมื่อจะเรียกใช้งานหรือรันโปรแกรมก็จะต้องทำการแปลหรือคอมไพล์โปรแกรมใหม่ทุกครั้งไปดังนั้นเมื่อจะเรียกใช้งานเอ็กซ์ซีคิวท์โปรแกรมย่อมจะทำงานได้เร็วกว่าการเรียกใช้งานโปรแกรมที่ต้องผ่านการแปลด้วยอินเตอร์พรีเตอร์แต่ประโยชน์ของภาษาที่ถูกแปลด้วยอินเตอร์พรีเตอร์คือโปรแกรมจะมีโครงสร้างที่ง่ายต่อการพัฒนาตัวอย่างของภาษาโปแกรมที่มีการใช้อินเตอร์พรีเตอร์เป็นตัวแปลภาษาได้แก่ ภาษาเบสิก ภาษาเพร์ล เป็นต้น การเขียนโปรแกรมด้วยภาษาชั้นสูงนั้นนอกจากจะให้ความสะดวกแก่ผู้เขียนเป็นอันมากแล้วผู้เขียนแทบจะไม่ต้องมีความรู้เกี่ยวกับการทำงาน ของระบบฮาร์ดแวร์ก็สามารถเขียนโปรแกรมสั่งให้เครื่องคอมพิวเตอร์ทำงานได้นอกจากนี้ยังมีข้อดีอีกอย่างคือสามารถนำโปรแกรมที่เขียนนี้ ไปใช้งานบนเครื่องใดก็ได้ คือมีลักษณะที่ไม่ขึ้นอยู่กับกับเครื่อง(Hardware Indepent)เพียงแต่ต้องทำการการแปลโปรแกรมใหม่เท่านั้น แต่อย่างไรก็ตามภาษาเครื่องที่ได้จากการแปลภาษาชั้นสูงนี้อาจเยิ่นเย้อและไม่มีประสิทธิภาพเท่ากับการเขียนด้วยภาษาเครื่องหรือแอสเซมบลีโดยตรงภาษารุ่นที่ 3 นี้ส่วนใหญ่จะจัดอยู่ในกลุ่มของภาษาที่มีแบบแผน (Procedural language)เนื่องจากลักษณะการเขียนโปรแกรมจะมีโครงสร้างแบบแผนที่เป็นระเบียบ กล่าวคือ งานทุกอย่างผู้เขียนโปรแกรมต้องเขียนโปรแกรมควบคุมการทำงานเองทั้งหมด และต้องเขียนคำสั่งการทำงานที่เป็นขั้นตอนทุกอย่าง ไม่ว่าจะเป็นการสร้างแบบฟอร์มกรอกข้อมูล การประมวลผล หรือการสร้างรายงาน ซึ่งโปรแกรมที่เขียนจะค่อนข้างซับซ้อนและใช้เวลาในการพัฒนาค่อนข้างยาก
ภาษาชั้นสูงมาก (Very high - Level Language)
ลักษณะของ 4GL มีดังต่อไปนี้
ส่วนประกอบของภาษา 4GLs
เครื่องช่วยสร้างรายงาน (Report Generators)หรืออาจเรียกได้อีกอย่างว่า เครื่องมือช่วยเขียนรายงาน (Report Writer) เป็นโปรแกรมสำหรับผู้ใช้ (end - users) ให้สามารถสร้างรายงานอย่างง่ายได้ด้วยตนเอง โดยผู้ใช้สามารถกำหนดเงื่อนไขและข้อมูลที่จะออกมาพิมพ์ในรายงาน
รวมไปถึงรูปแบบ (format) ของการพิมพ์ไว้ โปรแกรมช่วยสร้างรายงานนี้จะทำการพิมพ์รายงานตามรูปแบบที่เรากำหนดไว้ให้ภาษาช่วยค้นหาข้อมูล (Query Languages)เป็นภาษาที่ช่วยในการค้นหาหรือดึงข้อมูลจากฐานข้อมูล ภาษานี้จะง่ายต่อการใช้งานมาก เนื่องจากจะอยู่ในรูปแบบที่ใกล้เคียงกับภาษาอังกฤษมาก ตัวอย่างของภาษาช่วยค้นหาข้อมูลนี้ได้แก่ ภาษา SQL (Structured Query Language)ภาษา QBE (Query - By - Example) และ Intellect เป็นต้น
เครื่องมือช่วยสร้างโปรแกรม (Application Generators)
4GLs จะมีรูปแบบการเขียนโปรแกรมเฉพาะตัว และสามารถเรียกใช้เครื่องมือช่วยสร้างโปรแกรมนี้ทำการแปลง 4GLs ให้กลายเป็นโปรกรมในภาษารุ่นที่ 3 ได้ เช่น ภาษาโคบอล หรือ ภาษาซี เป็นต้น ซึ่งอาจนำภาษาโคบอล หรือซีที่แปลงได้
ไปพัฒนาต่อเพื่อใช้กับงานที่มีความซับซ้อนมากๆ ต่อไปได้
ประโยชน์ของ 4GL
เป็นภาษาที่ง่ายต่อการเรียนรู้ คำสั่งแต่ละคำสั่งสื่อความหมายได้อย่างชัดเจน ดังนั้น
จึงสามารถใช้เวลาในการศึกษาสั้นกว่าภาษารุ่นที่ 3ประหยัดเวลาในการเขียนโปรแกรมได้มาก เนื่องจาก 1 คำสั่งของ 4GL ถ้าต้องเขียนด้วยภาษารุ่นที่ 3 อาจต้องเขียนถึง 100 กว่าคำสั่งในการทำงานแบบเดียวกันสนับสนุนระบบจัดการฐานข้อมูล ทำให้สามารถจัดการกับข้อมูลได้อย่างสะดวก และรวดเร็วสามารถสร้างแบบฟอร์มเพื่อจัดการกับข้อมูลในฐานข้อมูล และออกรายงานได้อย่างง่ายดาย ไม่ยุ่งยากมีเครื่องมือการใช้งานเพื่ออำนวยความสะดวกในการเขียนโปรแกรมมากพอสมควรสามารถทำงานได้ในลักษณะ Interactive คือมีการโต้ตอบกับผู้ใช้ได้ทันที
ภาษาธรรมชาติ
JAVA
กลับไปในปี 1990 บริษัทซันต้องการพัฒนาสินค้าอุปโภคอิเล็กทรอนิกส์ จึงตั้งกลุ่มการทำงานขึ้นมาในนามของ Green Group โดยต้องการสร้างสภาวะแวดล้อมการทำงานโดยไม่ขึ้นกับ platform ใดๆ และหวังว่าการพัฒนาจะสามารถใช้ได้กับอุปกรณ์อิเล็กทรอนิกส์ทุกชนิด ผู้ใช้สินค้าอิเล็กทรอนิกส์เหล่านั้นไม่ต้องการรู้ว่าข้างในอุปกรณ์เหล่านั้นใช้หน่วยประมวลผลอะไร เพียงต้องการอุปกรณ์ที่ใช้ได้ดีก็พอ Jame Gosling ได้รับมอบหมายในการพัฒนาครั้งนี้ Gosling เลือกภาษา C++ ในการพัฒนาระบบ แต่พบว่าการใช้ภาษา C++ นั้นมีระยะทางอันยาวไกลที่จะประสบความสำเร็จ (ในระหว่างพัฒนาพบข้อบกพร่อง [bug] มากมาย โดยเฉพาะการจัดการกับหน่วยความจำ) Gosling จึงเปลี่ยนใจพัฒนาภาษาขึ้นมาสำหรับโครงการนี้ ขณะที่เขาพัฒนาอยู่นั้น เขาสังเกต tree ภายนอก Windows ที่เขาจะเข้าไปสู่ไดเรคทอรีของภาษาใหม่ที่พัฒนาขึ้น เขาจึงเรียกภาษานี้ว่า OAK (ภายหลังไม่ประสบความสำเร็จในการจดเครื่องหมายการค้า จึงเปลี่ยนมาเป็นชื่อ JAVA ซึ่งนำมาจากเครื่องดื่มกาแฟที่ทีมพัฒนานิยมดื่ม)เทคโนโลยีที่ใช้ OAK ได้ปรากฏเป็นรูปร่างขึ้นในส่วนประกอบ 4 ส่วน คือ OAK, ระบบปฏิบัติการ Green OS, ระบบติดต่อผู้ใช้ (UI) และฮาร์ดแวร์ รวมกันเป็นอุปกรณ์คล้ายพีดีเอ (PDA) ในนาม *7 (star seven) ทีม Green Group หวังว่า *7 นี้จะปรากฏอยู่บนกล่องอุปกรณ์อิเล็กทรอนิกส์ต่างๆ คล้ายกับของ Dolby Lab ผู้บริหารของซันประทับใจ *7 มาก แต่ก็ไม่แน่ใจว่าอะไรคือขั้นตอนต่อไป
ในตอนต้นปี 1993 Time-Warner ต้องการหาบริษัทมาพัฒนาระบบปฏิบัติการสำหรับ Set-Top Box และ Video-On-Demand ทีม Green Group จึงตั้งบริษัท First Person เพื่อทำข้อเสนอกับทาง Time-Warner ขณะเดียวกันทางอินเตอร์เน็ตก็ได้ Graphical Web Browser ตัวแรก (Mosaic 1.0) มาใช้งานสำหรับ Web Page ในเดือนมิถุนายน 1993 Time-Warner ได้เลือกบริษัทซิลิคอนกราฟฟิค ในการพัฒนา Set-Top Box และ Video-On-Demand ต้นปี 1994 บริษัท First Person เกือบจะตกลงได้กับ 3DO แต่ก็ไม่สำเร็จ ภายหลังที่ไม่มีผู้พัฒนาร่วม (partners) แนวทางการตลาดก็ไม่แน่นอน First Person จึงล้มเลิกไปก่อนที่จะประกาศกับสาธารณชนว่า ครึ่งหนึ่งของทีมงานจากซันไปทำงานที่ Digital Video Server Bill Joy ผู้ที่ได้ยินเกี่ยวกับภาษา OAK จึงคิดว่าภาษานี้น่าจะเป็นภาษาสำหรับอินเตอร์เน็ต (Internet Programming) และต้องมีทุกหนทุกแห่ง ทีมที่เหลือจึงกลับมาใช้เทคโนโลยีของ First Person สำหรับ CD-ROM, Online Multimedia และ Network-Base Computing ขณะที่ First Person พ่ายแพ้กับการแข่งขันของ Interactive TV World Wide Web ก็ชนะในวงการ Internet ในเดือนกันยายน 1994 ภายหลังปรับภาษา Java (OAK) กับ World Wide Web, Naughton และ Jonathan Payne ได้ประสบความสำเร็จในการพัฒนา Browser สำหรับ Java และ World Wide Web ในนาม WebRunner (ภายหลังเปลี่ยนเป็น HotJava เนื่องจากติด เรื่องเครื่องหมายการค้าอีกเช่นเคย) Java ได้ถูกแนะนำกับสาธารณชนในงาน Sun World (23 พฤษภาคม 1995) และได้รับความนิยมอย่างแพร่หลาย เพราะพิสูจน์แล้วว่าไม่ใช่ภาษาสำหรับเด็ก เล่น (Toy Language)จากประวัติของ Java ทำให้เราทราบว่า Java มีจุดมุ่งหมายที่จะเป็นภาษาสำหรับทุก platform และเป็นภาษาสำหรับเน็ตเวิร์ค เนื่องจากเป็นภาษาที่พัฒนามาจาก C++ จึงคงความเป็น Object Oriented เต็มตัว (มากกว่า C++ เสียอีก เนื่องจากจำกัดการละเมิดกฎของเป็น Object Oriented เช่น การใช้ Global data) และ Java ได้ถูกพัฒนาโดยคำนึงถึงความปลอดภัย (security) จึงหมดปัญหาเรื่องไวรัส เรามาดูจุดเด่นของ Java
-ง่าย(simple) เนื่องจาก Java มีเค้าโครงมาจากภาษา C++ จึงง่ายสำหรับการพัฒนา เพราะภาษา C++ รู้จักกันแพร่หลาย นอกจากนั้นยังกำจัดบางส่วนของ C++ ทิ้งไป ได้แก่ ส่วนที่ใช้น้อย ลึกซึ้ง หรือเกินความจำเป็น Java ถูกออกแบบให้เขียนง่าย จึงทำให้การเขียนโปรแกรมผิดน้อยลง
-โปรแกรมเชิงวัตถุ(Object Oriented) Java ไม่เหมือน C++ ตรงที่ Java ต้องการทุกสิ่งทุกอย่างเป็นรูปแบบ Object ข้อมูลแบบ Global และ Standalone function น่าจะทำไม่ได้ใน Java คลาสทุกคลาสต้องสืบทอดจากคลาสบรรพบุรุษ โดยทางตรงหรือทางอ้อม
-ประมวลผลแบบกระจาย(Distributed) Java ได้ถูกพัฒนาเพื่อใช้กับเน็ตเวิร์ค Java ได้พัฒนามาจากความสามารถของ TCP/IP และ HTTP แต่ใช่ว่า Java จะสามารถทำงานได้กับ Web เท่านั้น Java ยังสามารถใช้แทน C++ ในการพัฒนางานภายในบริษัทได้เป็นอย่างดี บริษัทซันได้บอกกับเราว่า Java จะรวมเทคโนโลยีกับ COBRA ซึ่งจะทำให้เกิดการประมวลผลระยะไกลได้เป็นอย่างดี
-ผ่านการแปลมาแล้ว(Interpreted) ภาษา Java นั้นเหมือนกับภาษาอื่นๆ คือ เราต้องเขียนโปรแกรมต้นฉบับ (Source Code) ขึ้นมาก่อน โดยไฟล์ต้นฉบับของ Java จะมีนามสกุล .java แล้วแปลโปรแกรมต้นฉบับนั้นเป็นโปรแกรมที่สามารถใช้ปฏิบัติงาน (RUN) ภาษา Java ต่างกับภาษาอื่นๆ ตรงที่ Java จะถูกแปลเป็นรูปแบบ (format) ที่สามารถปฏิบัติงานได้ทุก platform รูปแบบที่ผ่านการแปลมาแล้วจะถูกเรียกว่า Java bytecode รูปแบบ bytecode ของ Java สามารถใช้ได้ทุก platform จึงไม่ใช้เรื่องแปลกที่อนาคตจะมีโปรแกรมหรือภาษาต้นฉบับหลายๆแบบที่สามารถแปลมาเป็น bytecode รูปแบบของ Java bytecode นี้พัฒนามาจาก P-system ของ Kenneth Bowles ที่ใช้ใน UCSD Pascal ซึ่งเรามักจะเรียกว่า P-code
-แข็งแกร่ง(Robust) คุณสมบัติที่ดีที่สุดและแย่ที่สุดของภาษาคอมพิวเตอร์อย่างเช่น C และ C++ ก็คือ การใช้ตัวชี้ (pointer) การใช้ตัวชี้และการจัดการกับตัวชี้จะมีประโยชน์มากสำหรับโปรแกรมเมอร์ที่มีความเชี่ยวชาญ แต่เรามักพบปัญหา (bug) อยู่มากมาย ปัญหาเล่านี้หลายๆ ครั้งทำให้โปรแกรมหยุดทำงานไปเฉยๆ โดยไม่รู้สาเหตุ การใช้ตัวชี้ทำให้เราต้องระมัดระวังว่าเราใช้หน่วยความจำส่วนใด มีการจอง (allocate) ยกเลิก (deallocate) แล้วหรือยัง มีการซ้อนทับกันหรือไม่ Java ได้ทำการกำจัดการจัดการกับตัวชี้ทั้งหมด (Java จะจัดการเกี่ยงกับหน่วยความจำให้เราทั้งหมด) นอกจากนี้ Java ยังมีส่วนการจัดการกับหน่วยความจำที่ว่างจากการใช้ (garbage collection)
-ปลอดภัย(secure) Java จะอยู่ในส่วนของไคล์เอ็นต์เทคโนโลยี หลังจาก Java ถูกแปลเป็น bytecode ตัว Java จะถูกนำมาจาก (Download) Web Server เนื่องจาก Java จะอยู่ทุกที่ในโลกของเรา จึงมีคนคิดที่จะทำไวรัสเพื่อแพร่กระจายสู่เครื่องต่างๆ สำหรับ Java นั้นตัวปฏิบัติงาน (Java Runtime) จะทำการตรวจพิสูจน์ (verify) bytecode ที่ทำงานบนเครื่องของเรา ถ้า bytecode ที่ได้มามีความปลอดภัย (safe) ตัวปฏิบัติงานจะยอมให้ bytecode ทำงาน แต่ถ้า bytecode ไม่ปลอดภัยตัวปฏิบัติงานจะปฏิเสธการทำงานของ bytecode
-สถาปัตยกรรมที่เป็นกลางและเคลื่อนย้ายได้สะดวก(Architecture-neutral and portable) ตัว Java bytecode จะเป็นอิสระจากสถาปัตยกรรมคอมพิวเตอร์ โดยออกแบบให้เป็นกลางมากที่สุด ไม่ยึดสถาปัตยกรรมใดๆ เป็นหลัก สำหรับตัวปฏิบัติงาน (Java Runtime) ก็เตรียมพร้อมสำหรับทุก platform นอกจากนั้น Java ยังใช้มาตรฐานการกำหนดตัวอักษรยูนิโค้ด (Unicode) ซึ่งทำให้Javaใช้กับข้อมูลของตัวอักษรใดๆ ก็ได้
-ทำงานหลายอย่างพร้อมกันในโปรแกรมเดียว(Multithreaded) การทำงานแบบ Multithreaded นั้น เพิ่มประสิทธิภาพในการโต้ตอบกับผู้ใช้ (Interactive) และยังเพิ่มประสิทธิภาพในการทำงาน ภายในโปรแกรมนั้น Java ได้ถูกออกแบบให้เป็น Multithread programming จึงทำให้ Java สามารถทำงานได้หลายๆ อย่างพร้อมกัน Java ได้ยืมสภาวะแวดล้อม Cedar จาก XEROX และรูปแบบภาษา seminal
-ไม่หยุดนิ่ง(Dynamic) ผู้ที่ทำงานกับการพัฒนาซอฟต์แวร์จะทราบว่าตัวซอฟต์แวร์ (และความต้องการ) นั้นมีการเปลี่ยนแปลงและพัฒนาอยู่เสมอ การเปลี่ยนแปลงแก้ไข (ปัญหาหรือความต้องการที่เพิ่มขึ้น) เพิ่มเติม เราจะพบปัญหาอยู่เสมอๆ การเปลี่ยนแปลงบางส่วนทำให้เราต้องทำการแปลใหม่ทั้งหมด ทำการติดตั้งกับผู้ใช้ ทดสอบ พบปัญหา แก้ปัญหา และนำไปติดตั้งใหม่ การใช้งานของ C++ เรามักจะพบกับการ recompile เมื่อมีการเปลี่ยนแปลง parent class ซึ่งเราเรียกว่าความเปราะบางของคลาสชั้นบน (fragile super class problem) ใน Java โปรแกรมสามารถแก้ไขในแบบทันที (dynamic patch) การแก้ไขเราแก้ไขที่บางคลาส และตัวโปรแกรมที่เราเขียนจะอยู่บน Web Server ซึ่งทำให้การแก้ไขนั้นมีผลกับทุกเครื่องคอมพิวเตอร์ที่เรียกใช้ Java ที่อยู่บน Web Server ทำให้เราไม่ต้องเดินไปทำการติดตั้งซอฟต์แวร์ใหม่บนเครื่องของผู้ใช้ แม้ว่าผู้ใช้นั้นจะอยู่คนละมุมโลกก็ตาม
3. ให้นักเรียนอธิบายว่า"ภาษาธรมชาติ" คืออะไรแล้วเกี่ยวข้องอย่างไรกับภาษาคอมพิวเตอร์
ตอบ
ภาษาธรรมชาติ คือ สามารถใช้ภาษาธรรมดา ๆ สั่งการให้คอมพิวเตอร์ปฏิบัติตามได้
ในปัจจุบัน คอมพิวเตอร์จะใช้ภาษาเฉพาะที่มีกฎเกณฑ์ ไวยากรณ์ และศัพท์ของตนเอง ที่เรียกว่า
ภาษาเชิงมนุษย์ (human oriented language)
เช่น ภาษา C ภาษา BASIC ภาษา COBOL ฯ ส่วนภาษาธรรมชาตินั้น หมายถึง ภาษาที่ใช้ในชีวิตประจำวัน เช่น
ภาษาอังกฤษ ภาษาไทย
เช่น ภาษามนุษย์ออกจากภาษาที่ถูกสร้างขึ้นอย่างเช่นภาษาโปรแกรมสำหรับสั่งงาน
คอมพิวเตอร์และที่เกี่ยวข้องกันคือถูกสร้างขึ้นมาจากเทคโนโลยีทางด้านระบบ
ผู้เชี่ยวชาญ (Expert System) ซึ่งเป็นงานที่อยู่ในสาขาปัญญาประดิษฐ์
ในการที่พยายามทำให้คอมพิวเตอร์เปรียบเสมือนกับเป็นผู้เชี่ยวชาญคนหนึ่งที่
สามารถคิดและตัดสินใจได้เช่นเดียวกับมนุษย์การที่เรียกว่าภาษาธรรมชาติ เพราะมนุษย์สามารถใช้ภาษาพูดป้อนเข้าไปในคอมพิวเตอร์ได้โดยตรงซึ่งอาจมีรูปแบบที่ไม่แน่นอนตายตัว
แล้วคอมพิวเตอร์ก็จะแปลคำสั่งเหล่านั้นให้อยู่ในรูปแบบที่คอมพิวเตอร์เข้าใจ
ถ้าคำถามใด ไม่กระจ่างก็จะมีการถามกลับเพื่อให้เข้าใจคำถามได้อย่างถูกต้อง