วันศุกร์ที่ 9 กันยายน พ.ศ. 2554

โอเพนซอร์สซอฟต์แวร์

     โอเพนซอร์สซอฟต์แวร์ (Open Source Software) คือ ซอฟต์แวร์ ที่สามารถนำไป ใช้งาน ศึกษา แก้ไข และ เผยแพร่ ได้อย่างเสรี ปราศจากเงื่อนไขเพิ่มเติม (เช่นคิดค่า license หรือต้องเซ็นสัญญาพิเศษ) การพัฒนาที่เปิดเผยซอร์สโค้ดให้สาธารณะนำไปพัฒนาต่อยอดได้ทำให้เกิดการร่วมมือกันทำงานอย่างไร้พรมแดนผ่านเครือข่ายอินเทอร์เน็ต

หมายถึง ชุดคำสั่งหรือโปรแกรมที่ใช้สั่งงานให้คอมพิวเตอร์ทำงาน ซอฟต์แวร์จึงหมายถึง ลำดับขั้นตอนการทำงานที่เขียนขึ้นด้วยคำสั่งของคอมพิวเตอร์ คำสั่งเหล่านี้เรียงกันเป็นโปรแกรมคอมพิวเตอร์ จากที่ทราบมาแล้วว่าคอมพิวเตอร์ทำงานตามคำสั่ง การทำงานพื้นฐานเป็นเพียงการกระทำกับข้อมูลที่เป็นตัวเลขฐานสอง ซึ่งใช้แทนข้อมูลที่เป็นตัวเลข ตัวอักษร รูปภาพ หรือแม้แต่เป็นเสียงพูดก็ได้ ซอฟต์แวร์นั้น นอกจากจะสามารถใช้งานบนคอมพิวเตอร์ได้แล้ว ยังสามารถใช้งานบนเครื่องใช้ หรืออุปกรณ์อื่น เช่น โทรศัพท์มือถือ หรือ หุ่นยนต์ในโรงงาน หรือ เครื่องใช้ไฟฟ้าต่างๆ


คำว่า "ซอฟต์แวร์" ใช้ครั้งแรกโดย จอห์น ดับเบิลยู. เทอร์กีย์ (John W. Turkey) ในปี พ.ศ. 2500 (ค.ศ. 1957) โดยแนวคิดของซอฟต์แวร์ปรากฏ ครั้งแรกในเรียงความของแอลัน ทัวริง บิดาของวิทยาการคอมพิวเตอร์ กล่าวกันว่าโปรแกรมคอมพิวเตอร์ชิ้นแรกของโลกเขียนโดยเอดา ไบรอน เป็นโปรแกรมที่ใช้สำหรับเครื่องวิเคราะห์ (analytical engine) ของชาร์ลส แบบเบจ


โปรแกรมคอมพิวเตอร์ (computer program) ที่ใช้สั่งงานคอมพิวเตอร์จึงเป็นซอฟต์แวร์ เพราะเป็นลำดับขั้นตอนการทำงานของคอมพิวเตอร์ คอมพิวเตอร์เครื่องหนึ่งทำงานแตกต่างกันได้มากมายด้วยซอฟต์แวร์ที่แตกต่างกัน ซอฟต์แวร์จึงหมายรวมถึงโปรแกรมคอมพิวเตอร์ทุกประเภทที่ทำให้คอมพิวเตอร์ทำงานได้
การที่เราเห็นคอมพิวเตอร์ทำงานให้กับเราได้มากมาย เพราะว่ามีผู้พัฒนาโปรแกรมคอมพิวเตอร์มาให้เราสั่งงานคอมพิวเตอร์  ร้านค้าอาจใช้คอมพิวเตอร์ทำบัญชีที่ยุ่งยากซับซ้อน บริษัทขายตั๋วใช้คอมพิวเตอร์ช่วยในระบบการจองตั๋ว คอมพิวเตอร์ช่วยในเรื่องกิจการงานธนาคารที่มีข้อมูลต่าง ๆ มากมาย คอมพิวเตอร์ช่วยงานพิมพ์เอกสารให้สวยงาม เป็นต้น การที่คอมพิวเตอร์ดำเนินการให้ประโยชน์ได้มากมายมหาศาลจะอยู่ที่ซอฟต์แวร์ ซอฟต์แวร์จึงเป็นส่วนสำคัญของระบบคอมพิวเตอร์ หากขาดซอฟต์แวร์คอมพิวเตอร์ก็ไม่สามารถทำงานได้ ซอฟต์แวร์จึงเป็นสิ่งที่จำเป็น และมีความสำคัญมาก และเป็นส่วนประกอบหนึ่งที่ทำให้ระบบสารสนเทศเป็นไปได้ตามที่ต้องการ


ซอฟท์แวร์และภาษาคอมพิวเตอร์


เมื่อมนุษย์ต้องการใช้คอมพิวเตอร์ช่วยในการทำงาน มนุษย์จะต้องบอกขั้นตอนวิธีการให้คอมพิวเตอร์ทราบ การที่บอกสิ่งที่มนุษย์เข้าใจให้คอมพิวเตอร์รับรู้ และทำงานได้อย่างถูกต้อง จำเป็นต้องมีสื่อกลาง ถ้าเปรียบเทียบกับชีวิตประจำวันแล้ว เรามีภาษาที่ใช้ในการติดต่อซึ่งกันและกัน เช่นเดียวกันถ้ามนุษย์ต้องการจะถ่ายทอดความต้องการให้คอมพิวเตอร์รับรู้และปฏิบัติตาม จะต้องมีสื่อกลางสำหรับการติดต่อเพื่อให้คอมพิวเตอร์รับรู้ เราเรียกสื่อกลางนี้ว่าภาษาคอมพิวเตอร์

เนื่องจากคอมพิวเตอร์ทำงานด้วยสัญญาณทางไฟฟ้า ใช้แทนด้วยตัวเลข 0 และ 1 ได้ ผู้ออกแบบคอมพิวเตอร์ใช้ตัวเลข 0 และ 1 นี้เป็นรหัสแทนคำสั่งในการสั่งงานคอมพิวเตอร์ รหัสแทนข้อมูลและคำสั่งโดยใช้ระบบเลขฐานสองนี้ คอมพิวเตอร์สามารถเข้าใจได้ เราเรียกเลขฐานสองที่ประกอบกันเป็นชุดคำสั่งและใช้สั่งงานคอมพิวเตอร์ว่า ภาษาเครื่อง


ภาษาเครื่อง (Machine Language)


ภาษาเครื่องนั้น เป็นภาษาที่เครื่องคอมพิวเตอร์สามารถเข้าใจ และสามารถติดต่อได้โดยตรงกับเครื่องคอมพิวเตอร์
คอมพิวเตอร์ ชุดหนึ่ง ๆ ที่เขียนขึ้นเป็นระบบรหัส หรือที่เรียกว่า ภาษาเครื่อง มนุษย์ผู้ใช้จะมีข้อยุ่งยากมาก เพราะเข้าใจและจดจำได้ยาก จึงมีผู้สร้างภาษา คอมพิวเตอร์ในรูปแบบที่เป็นตัวอักษร เป็นประโยคข้อความ ซึ่งเริ่มใกล้เคียงภาษามนุษย์มากขึ้น เช่น ภาษาแอสเซมบลี (Assembly) ภาษาซี (C) ภาษาโคบอล (COBOL) ภาษาเบสิก (BASIC) หรือ เป็นภาษาที่ค่อนข้างจะสมัยใหม่ เช่น ภาษา C# ภาษาจาวา เป็นต้น
ภาษาในลักษณะดังกล่าวนี้เรียกว่า ภาษาคอมพิวเตอร์ระดับสูง ภาษาระดับสูงมีอยู่มากมาย บางภาษามีความเหมาะสมกับการใช้สั่งงานการคำนวณทางคณิตศาสตร์ และวิทยาศาสตร์ บางภาษามีความเหมาะสมไว้ใช้สั่งงานทางด้านการจัดการข้อมูล ในการทำงานของคอมพิวเตอร์ คอมพิวเตอร์จะแปลภาษาระดับสูง ให้เป็นภาษา เครื่อง ดังนั้น จึงมีผู้พัฒนาโปรแกรมคอมพิวเตอร์สำหรับแปลภาษาคอมพิวเตอร์ระดับสูงให้เป็น ภาษาเครื่อง โปรแกรมที่ใช้แปลภาษาคอมพิวเตอร์ระดับสูง ให้เป็นภาษาเครื่องเรียกว่า คอมไพเลอร์ (compiler) หรือ อินเทอร์พรีเตอร์ (interpreter)



คอมไพเลอร์ (compiler)
หรือ โปรแกรมแปลโปรแกรม, ตัวแปลโปรแกรม เป็น โปรแกรมคอมพิวเตอร์ ที่ทำหน้าแปลโปรแกรมที่เขียนเป็นภาษาระดับสูงทั้ง โปรแกรมให้เป็นภาษาเครื่องก่อน แล้วจึงให้คอมพิวเตอร์ทำงานตามภาษาเครื่องนั้น ขึ้นตอนการทำงานหลัก ๆ ของคอมไพเลอร์ ซึ่งในปัจจุบัน คอมไพเลอร์สมัยใหม่ อาจมีขั้นตอนมากกว่า และมีเทคนิคเพิ่มเติมขึ้นมาก ซึ่งแต่ละผลิตภัณฑ์ จะไม่บอกรายละเอียดการทำงาน เนื่องจากเป็นความลับของแต่ละผลิตภัณฑ์ของตน
ในปัจจุบันนี้มีภาษาจาวา (Java) , ดอดเน็ต (.NET FramWork) การคอมไพล์ได้เปลี่ยนไปเป็นการแปลเป็นภาษาเป้าหมาย และหากเป็นจาวา ก็ใช้ จาวาวิชวลเมอฃีน (Java Visual Machine : JVM) หรือหากเป็น ดอดเน็ต จะใช้ (Just In Time :JIT Compiler) เพื่อแปลไปเป็นภาษาเครื่อง ตามแต่สภาวะแวดล้อมของเครื่อง (Environment) ในขณะนั้น เพื่อทำงานต่อไป
ตัวแปลโปรแกรมส่วนใหญ่ จะทำการแปล รหัสต้นแบบ (source code) ที่เขียนในภาษาระดับสูง เป็น ภาษาระดับต่ำ หรือภาษาเครื่อง ซึ่งคอมพิวเตอร์สามารถที่จะทำงานได้โดยตรง. อย่างไรก็ตาม การแปลจากภาษาระดับต่ำเป็นภาษาระดับสูง ก็เป็นไปได้ โดยใช้ตัวแปลโปรแกรมย้อนกลับ (decompiler)

ขั้นตอนการทำงานของตัวแปลโปรแกรม

ผลลัพธ์ของการแปลโปรแกรม (คอมไพล์) โดยทั่วไป ที่เรียกว่า ออบเจกต์โค้ด จะประกอบด้วยภาษาเครื่อง (Machine code)ที่เต็มไปด้วยข้อมูลเกี่ยวกับ ชื่อและ สถานที่ของแต่ละจุด และการเรียกใช้วัตถุภายนอก (Link object)(สำหรับ ฟังก์ชันที่ไม่ได้อยู่ใน อ็อบเจกต์) สำหรับเครื่องมือที่เราใช้รวม อ็อบเจกต์เข้าด้วยกัน จะเรียกว่าโปรแกรมเชื่อมโยงเพื่อที่ผลลัพธ์ที่ออกมาในขั้นสุดท้าย เป็นไฟล์ที่ผู้ใช้งานทั่วไปสามารถใช้งานได้สะดวก
ตัวแปลภาษาตัวที่สมบูรณ์ตัวแรก คือ ภาษาฟอร์แทรน (FORTRAN) ของ ไอบีเอ็ม ในปี ค.ศ. 1957 และ ภาษาโคบอล (COBOL) ก็เป็นตัวแปลภาษาตัวแรก ๆ ที่สามารถทำงานได้บนหลาย ๆ สถาปัตยกรรมทางคอมพิวเตอร์. การพัฒนาตัวแปลภาษารุดหน้าอย่างรวดเร็ว และเริ่มมีรูปแบบที่ชัดเจนยิ่งขึ้นต่อมา ในช่วงทศวรรษ 1960

การแปลโปรแกรม

กระบวน การแปลโปรแกรมแบบอ่านทีเดียวแล้วแปล เครื่องมือที่ใช้แปลโปรแกรมเรียกว่าตัวแปลโปรแกรม การทำงานเริ่มจากตัวแปลโปรแกรมจะอ่านซอร์สโค้ด ของภาษานั้นๆ แล้วเริ่มตรวจสอบความผิดพลาด ถ้าพบก็จะแปลโปรแกรมไม่ผ่านและให้ผู้ใช้แก้ไขซอร์สโค้ดก่อน เมื่อคอมไพล์ผ่าน ตัวแปลโปรแกรมก็จะสร้าง ไฟล์วัตถุ (.obj บนดอส และ .o บนลินุกซ์) ขึ้นมา แล้วตัวแปลโปรแกรมจะทำการเชื่อมโยงแฟ้มข้อมูลวัตถุเข้ากับซอร์สโค้ด และสร้างไฟล์เอ็กซ์คิวต์ (.exe บนดอส) ขึ้นมา


อินเทอร์พรีเตอร์ (interpreter)
หรือ โปรแกรมแปลคำสั่ง, ตัวแปลคำสั่ง, หรือ อินเทอร์พรีเตอร์ (interpreter) หมายถึงโปรแกรมคอมพิวเตอร์ ที่ทำงานตาม ชุดคำสั่งที่เขียนไว้ทันที ซึ่งจะทำการแปลทีละคำสั่ง แล้วให้คอมพิวเตอร์ทำตามคำสั่งนั้น เมื่อทำเสร็จแล้วจึงมาทำการแปลคำสั่งลำดับต่อไป
โดยทั่วไปแล้วการทำงานของโปรแกรมผ่านโปรแกรมแปลคำสั่งจะช้ากว่าทำงาน จากโปรแกรมที่ผ่านการแปลโปรแกรมเป็นภาษาเครื่องแล้ว เพราะโปรแกรมแปลคำสั่งจะต้องแปลแต่ละคำสั่งในระหว่างการทำงานว่าจะต้องทำ อะไรต่อไป


ตัวอย่างภาษาที่มีการใช้โปรแกรมแปลคำสั่ง เช่น ภาษาเบสิก, ภาษาเพิร์ล, ภาษาพีเอชพี


ชนิดของซอฟต์แวร์
   ซอฟต์แวร์หรือโปรแกรม คอมพิวเตอร์ที่มีผู้พัฒนาขึ้นเพื่อใช้งานกับ คอมพิวเตอร์มีมากมาย ซอฟต์แวร์เหล่านี้อาจได้รับการพัฒนาโดยผู้ใช้งานเอง หรือผู้พัฒนาระบบ หรือผู้ผลิตจำหน่าย ซอฟต์แวร์หรือโปรแกรมคอมพิวเตอร์สามารถแบ่งได้เป็นหลายประเภท เช่น
          - ซอฟต์แวร์ที่ผู้ใช้เขียนขึ้นเองเพื่อให้ตรงกับความต้องการ
          - ซอฟต์แวร์ที่มีคนทำสำเร็จรูปไว้ขาย เช่น ซอฟต์แวร์สำหรับวาดภาพ (graphics) ซอฟต์แวร์ประมวลผลคำ (word processing) ซอฟต์แวร์ตารางจัดการ (spread sheet)
          - ซอฟต์แวร์ระบบ (systems software) ซึ่งเป็นโปรแกรมซอฟต์แวร์ที่ควบคุมการทำงานของเครื่องคอมพิวเตอร์ มีบางส่วนติดตั้งมาจากโรงงานที่ผลิต
           - ซอฟต์แวร์ระบบปฏิบัติการ (operating system) ที่จะทำหน้าที่เหมือนแม่บ้านคอยดูแลให้อุปกรณ์ต่าง ๆ ทำงานให้ประสานกัน    หากแบ่งแยกประเภทของซอฟต์แวร์ตามสภาพการทำงาน พอแบ่งแยกซอฟต์แวร์ได้เป็นสองประเภท คือ ซอฟต์แวร์ระบบ (system software) และซอฟต์แวร์ประยุกต์ (application software)

ไม่มีความคิดเห็น:

แสดงความคิดเห็น