วันอาทิตย์ที่ 24 กรกฎาคม พ.ศ. 2554

ซอฟต์แวร์






ความหมายของซอฟต์แวร์

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

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

การแบ่งประเภทของซอฟต์แวร์  มี 3 ประเภท คือ
1.      การแบ่งเชิงเทคนิค อาจแบ่งซอฟต์แวร์เป็น 2 ประเภทหลัก คือ
·       ซอฟต์แวร์ระบบ ( System/Infrastructure software )
·       ซอฟต์แวร์ประยุกต์ ( Application software )
2.      การแบ่งตามรูปแบบการส่งมอบ แบ่งได้เป็น 2 กลุ่ม คือ
·       ซอฟต์แวร์สำเร็จรูป ( Package software )
·       ซอฟต์แวร์ที่พัฒนาเงินเดือน ( Outsources software development )
3.      การแบ่งตามประเภทของการนำไปใช้งานหลัก แบ่งได้เป็น 3 กลุ่ม คือ
·       ซอฟต์แวร์ช่วยในการบริหารจัดการทั่วไป ( Enterprise software )
·       ซอฟต์แวร์สำหรับอุปกรณ์พกพาขนาดเล็ก ( Mobile applications software )
·       ซอฟต์แวร์สมองกลฝั่งตัว ( Embedded system software )

1.การแบ่งเชิงเทคนิค
     แบ่งซอฟต์แวร์เป็น 2 ประเภทหลัก คือ
   ซอฟต์แวร์ระบบ (System/Infrastructure software)
        ซอฟต์แวร์ระบบประกอบด้วย ซอฟต์แวร์ 2 ประเภท คือ
ระบบปฏิบัติการ (Operating System)
          ระบบปฏิบัติการ หมายถึง ชุดของโปรแกรมที่อยู่ระหว่างฮาร์ดแวร์และซอฟต์แวร์ประยุกต์ มีหน้าที่ในการควบคุมการปฏิบัติงานของฮาร์ดแวร์ และสนับสนุนคำสั่งสำหรับควบคุมการทำงานของฮาร์ดแวร์ประยุกต์ ตัวอย่างของซอฟต์แวร์ระบบปฏิบัติการที่นิยมใช้ในปัจจุบัน เช่น MS - DOS , UNIX , Windows 95 , และ Mac System 7 เป็นต้น ระบบปฏิบัติงานมีหน้าที่หลัก ๆ คือ
1.     จัดส่วนประกอบต่าง ๆ ของระบบคอมพิวเตอร์ เช่น หน่วยประมวลผลกลาง หน่วยความจำ ที่เก็บข้อมูลสำรอง และเครื่องพิมพ์
2.     จัดการงานในส่วนของการติดต่อกับผู้ใช้
3.     ให้บริการโปรแกรมประยุกต์อื่น เช่น การรับข้อมูล และการแสดงผล  เป็นต้น ปกติแล้วโปรแกรมประยุกต์จะถูกเรียกให้เริ่มต้นทำงานผ่านระบบปฏิบัติการ
          ระบบปฏิบัติการทำงานอยู่เบื้องหลังการทำงานของผู้ใช้ โดยเฉพาะระบบปฏิบัติการบนเครื่องเมนเฟรมหรือเครื่องที่มีขนาดใหญ่ก็ย่อมมีการทำงานที่ซับซ้อนมากขึ้น เพราะต้องดูแลการทำงานหลายอย่างจากผู้ใช้หลายคนพร้อมกัน
    ระบบปฏิบัติการบนเครื่องไมโครคอมพิวเตอร์
          ในปัจจุบันนี้ ระบบปฏิบัติการบนเครื่องไมโครคอมพิวเตอร์ที่ได้รับความนิยม จะแยกตามฮาร์ดแวร์ที่ใช้งานได้   เป็น 2 ระบบ คือระบบปฏิบัติการที่ทำงานบนเครื่อง ไอบีเอ็มพีซี (IBM personal Computer) หรือ ลียนแบบไอบีเอ็มพีซี (IBM PC Compatible) และระบบปฏิบัติการที่ทำงานบนเครื่องแมคอินทอช (Macintosh) โดยปกติแล้ว โปรแกรมประยุกต์ใด ๆ จะสามารถทำงานบนระบบปฏิบัติการตัวใดตัวหนึ่งเท่านั้น เช่น โปรแกรมไมโครซอฟต์เวิร์ดที่ถูกออกแบบมาให้ทำงานบนเครื่องไอบีเอ็มพีซี ก็จะไม่สามารถนำไปใช้งานบนเครื่องแมคอินทอช เพราะเครื่องไอบีเอ็มพีซี จะนิยมใช้ระบบปฏิบัติการของไมโครซอฟต์ที่เรียกว่าอ็มเอสดอส (MS - DOS)หรืออาจใช้ระบบที่ใหม่กว่าคือไมโครซอฟต์วินโดว์ (Microsoft Windows) หรือระบบปฏิบัติการแบบเปิดในตระกูลยูนิกซ์ เช่น SCO UNIX หรือ LINUX ในขณะที่เครื่องแมคอินทอชใช้ระบบปฏิบัติการที่เรียกว่าแมคอินทอชซิสเต็มเซเว่น (Macintosh System 7) ซึ่งออกแบบโดยบริษัทแอปเปิล การที่เครื่องสองชนิดใช้ระบบปฏิบัติการต่างกัน เนื่องมาจากมีหน่วยประมวลผลกลางไม่เหมือนกัน ผู้ที่

จะผลิตซอฟต์แวร์คอมพิวเตอร์จะต้องเลือกที่จะผลิตซอฟต์แวร์ให้ใช้บนระบบใดระบบหนึ่ง หรือถ้าจะให้ใช้ได้บนระบบปฏิบัติการทั้งสองชนิดก็ต้องพัฒนาซอฟต์แวร์ขึ้นมาสองชุด
          โดยมากแล้วผู้ใช้เครื่องคอมพิวเตอร์จะไม่สนใจว่าจะใช้ระบบปฏิบัติการใด แต่จะเลือกซอฟต์แวร์ประยุกต์ที่สามารถทำงานให้ได้ประโยชน์สูงสุดตามต้องการ แล้วจึงพิจารณาว่าซอฟต์แวร์นั้นทำงานบนระบบปฏิบัติการชนิดใด แต่ผู้ใช้บางกลุ่มก็เจาะจงเลือกใช้ระบบปฏิบัติการเอ็มเอสดอส เพราะมีซอฟต์แวร์ประยุกต์ให้เลือกใช้ได้มากมาย และผู้ใช้บางกลุ่มก็ต้องการใช้เครื่องแมคอินทอช เพราะมีระบบโต้ตอบผู้ใช้ที่ได้ง่ายและสวยงาม
·      ระบบปฏิบัติการเอ็มเอสดอส (MS - DOS)
          ผู้ใช้เครื่องคอมพิวเตอร์ในปัจจุบันนี้มักจะมีฮาร์ดดิสก์ติดอยู่ด้วยเสมอ เมื่อผู้ใช้เปิดเครื่องคอมพิวเตอร์ ระบบปฏิบัติการก็จะถูกเรียกจากฮาร์ดดิสก์มาไว้ในหน่วยความจำของเครื่องเพื่อเตรียมที่จะใช้งานได้ทันทีที่ต้องการ ขั้นตอนที่ย้ายระบบปฏิบัติการเข้าสู่หน่วยความจำของเครื่องนั้นเรียกว่าการบูตระบบ (Booting) หรือ บูตแสตป (bootstrap) ซึ่งมีขั้นตอนคือเมื่อเปิดสวิทช์เครื่องคอมพิวเตอร์ขึ้น โปรแกรมเล็ก ๆ ที่อยู่ในหน่วยความจำรอม (ROM) จะเรียกเอาส่วนประกอบพื้นฐานที่จำเป็นของระบบปฏิบัติการจากฮาร์ดดิสก์เข้ามาไว้ในหน่วยความจำหลัก ซึ่งจะได้ผลลัพธ์บนจอภาพเป็น C > หรือ C:\ > โดยที่หมายถึงดิสก์ไดรฟ์ที่ทำงานอยู่ และเครื่องหมาย > หมายถึงการเตรียมพร้อมที่จะทำงาน (prompt) จากนั้นผู้ใช้ก็จะสามารถพิมพ์คำสั่งของเอ็มเอสดอสได้ทันที
·      ไมโครซอฟต์วินโดว์
          ไมโครซอฟต์วินโดว์ หรือที่นิยมเรียกสั้น ๆ ว่าวินโดว์ มีระบบการติดต่อกับผู้ใช้เป็นแบบกราฟิกที่มีสีสันสวยงามและสามารถใช้ได้ง่าย เรียกระบบที่ติดต่อกับผู้ใช้ลักษณะนี้ว่า GUI (Graphic user Interface) ซึ่งผู้ใช้บนระบบวินโดว์จะทำงานกับเมนู (menu) และรูปภาพที่เรียกว่าไอคอน (icon) แทนที่จะเป็นการพิมพ์คำสั่งต่าง ๆ ดังรูป
แสดงไอคอนและเมนูบนระบบวินโดว์

         เมนูดังรูปจะเรียกว่า พูลดาวน์เมนู (Pull down menu) ซึ่งจะเป็นเมนูที่เมื่อทำการเลือกรายการที่ต้องการแล้วจะมีรายการย่อยถูกถึงลง (pull down) ให้ปรากฏออกมาก นอกจากนี้จะมี เมนูอีกชนิดกนึ่งเรียกว่า ป๊อปอัพเมนู (pop-up menu) ซึ่งจะปรากฏเป็นหน้าต่างย่อยซ้อนขึ้นมาด้านหน้าเมื่อเลือกรายการที่ต้องการ
          ระบบวินโดว์มีข้อดีคือเอื้ออำนวยให้ผู้ใช้สามารถทำงานได้ง่าย โดยการแสดงภาพกราฟฟิกบนจอภาพเมื่อผู้ใช้เปิดเครื่องขึ้นมา และผู้ใช้สามารถใช้เมาส์ในการชี้และคลิกที่ภาพเพื่อเลือกซอฟต์แวร์ที่ต้องการ แทนที่จะต้องพิมพ์คำสั่งเช่นเดียวกับระบบดอส ดังนั้นระบบวินโดว์จึงได้รับความนิยมอย่างกว้างขวาง และได้มีการพัฒนาเป็นเวอร์ชั่นใหม่ ๆ อย่างต่อเนื่อง นับจาก Windows 3.0, Window for Workgroup ซึ่งเป็น cooperative multitasking จนมาถึง Windows 95 ซึ่งเป็น preemptive multitasking และ Windows NT ซึ่งเป็นระบบปฏิบัติการเครือข่ายแบบ Client/Server
ระบบปฏิบัติการเครือข่าย
          ระบบปฏิบัติการเครือข่าย (Network operating System หรือ NOS) จะเป็นระบบปฏิบัติการที่ถูกออกแบบมาสำหรับจัดการงานด้านการติดต่อสื่อสารระหว่างคอมพิวเตอร์ และช่วยให้คอมพิว- เตอร์ที่ต่ออยู่กับเครือข่ายสามารถใช้อุปกรณ์ต่าง ๆ เช่น ฮาร์ดดิสก์ หรือเครื่องพิมพ์ร่วมกันได้ ระบบ ปฏิบัติการเครือข่ายมีคุณสมบัติต่างๆ คล้ายระบบปฏิบัติการเอ็มเอสดอส แต่เพิ่มการจัดการเกี่ยวกับเครือข่ายและการใช้อุปกรณ์ร่วมกัน รวมทั้งมีระบบการป้องกันการสูญหายของข้อมูลด้วย
         ระบบปฏิบัติการเครือข่ายที่นิยมใช้ปัจจุบัน จะใช้หลักการประมวลผลแบบ ไคลเอนต์เซิร์ฟเวอร์ (Client / Server) โดยส่วนประกอบสำหรับการเรียกใช้แฟ้มข้อมูลและการจัดการโปรแกรมจะทำงานอยู่บนเครื่องเซิร์ฟเวอร์ ในขณะที่ส่วนประกอบอื่น ๆ ของระบบปฏิบัติการเครือข่ายจะอยู่บนเครื่องไคลเอนต์ เช่น การติดต่อกับผู้ใช้ การประมวลผล เป็นต้น การจัดการให้ผู้ใช้เห็นว่างานและอุปกรณ์ทั้งหลายที่ใช้นั้นเสมือนอยู่บนเครื่องไคลเอนต์เอง ถือว่าเป็นหน้าที่หลักอันหนึ่งของระบบปฏิบัติการเครือข่าย
ระบบปฏิบัติการบนเครื่องคอมพิวเตอร์ขนาดใหญ่
          เครื่องคอมพิวเตอร์ขนาดใหญ่เช่นเครื่องระดับเมนเฟรม ได้ถูกพัฒนาขึ้นกว่าสองทศวรรษก่อนที่จะมีเครื่องไมโครคอมพิวเตอร์เสียอีก เครื่องระดับเมนเฟรมจะนำมาใช้ในด้านธุรกิจและการศึกษา ซึ่งจะมีผู้ใช้งานพร้อม ๆ กันจำนวนมาก ทำให้ระบบปฏิบัติการของเครื่องระดับนี้มีการทำงานที่ซับซ้อนมากขึ้น โดยต้องทำการดูแลสั่งงานโปรแกรมพร้อม ๆ กันจำนวนหลาย ๆ โปรแกรม (Multitasking) การเข้าใช้งานเครื่องของผู้ใช้จำนวนหลาย ๆ คน (Multiuser) การจัดลำดับและแบ่งปันทรัพยากรให้กับผู้ใช้ ตลอดจนการรักษาความเป็นส่วนตัวและความลับของผู้ใช้แต่ละคน
     ระบบปฏิบัติการแบบเปิด (Open Operating System)
         ในสมัยก่อนผู้ที่พัฒนาระบบปฏิบัติการคือบริษัทที่ผลิตคอมพิวเตอร์ ดังนั้นระบบปฏิบัติการจึงถูกออกแบบให้สามารถใช้ได้เฉพาะกับเครื่องของบริษัทเท่านั้น เรียกระบบปฏิบัติการประเภทนี้ว่า ระบบปฏิบัติการแบบปิด (Proprietary operating system) ซึ่งแม้แต่ในปัจจุบันนี้เครื่องระดับเมนเฟรมผู้ขายก็ยังคงเป็นผู้กำหนดความสามารถของระบบปฏิบัติการของเครื่องที่ขายอยู่ อย่างไรก็ดี ปัจจุบันนี้เริ่มมีแนวโน้มที่จะทำให้ระบบการสามารถนำไปใช้งานบนเครื่องต่าง ๆ กันได้ (Portable operating system) เช่น ระบบปฏิบัติการยูนิกซ์ (UNIX) เป็นต้น
          ระบบปฏิบัติการยูนิกซ์ เป็นระบบปฏิบัติการที่พัฒนาขึ้นในปี ค.ศ. 1971 โดย และ จากห้อง ปฏิบัติการเบลล์ของบริษัท AT& T ซึ่งได้ทำการพัฒนาบนเครื่องมินิคอมพิวเตอร์ของ DEC ระบบ ปฏิบัติการยูนิกซ์เป็นระบบที่สนับสนุนผู้ใช้งานจำนวนหลายคนพร้อม ๆ กัน โดยใช้หลัก การแบ่งเวลา (time sharing) ต่อมาในปี ค.ศ. 1970 ได้มีการบริจาคระบบปฏิบัติการนี้ให้กับวงการศึกษา และมีการนำไปใช้ทั้งในมหาวิทยา และวิทยาลัยต่าง ๆ มากมาย นักศึกษาจำนวนมากจึงได้ใช้ระบบ ปฏิบัติการยูนิกซ์ เป็นผลให้เมื่อนักศึกษาเหล่านั้นจบออกไปทำงาน ก็ยังคงเคยชินกับระบบปฏิบัติ การยูนิกซ์และจัดหามาใช้ในองค์กรที่ทำงานอยู่ระบบปฏิบัติการยูนิกซ์จึงได้รับการยอมรับในวงการอุตสาหกรรมและวงการอื่น ๆ อย่างแพร่หลายและมีการใช้งานอยู่ตั้งแต่เครื่องระดับไมโครคอมพิว- เตอร์ ไปจนถึงเครื่องระดับซูเปอร์คอมพิวเตอร์
·         ตัวแปลภาษาคอมพิวเตอร์ (Translator)
       ในการพัฒนาซอฟต์แวร์คอมพิวเตอร์นั้น โปรแกรมเมอร์จะเขียนโปรแกรมในภาษาคอมพิวเตอร์ แบบต่าง ๆ ตามแต่ความชำนาญของแต่ละคน โปรแกรมที่ได้จะเรียกว่า โปรแกรมต้นฉบับ หรือ ซอร์สโคด (Source code) ซึ่งมนุษย์จะอ่านโปรแกรมต้นฉบับนี้ได้แต่คอมพิวเตอร์จะไม่เข้าใจคำสั่งเหล่า นั้น เนื่องจากคอมพิวเตอร์เข้าใจแต่ภาษาเครื่อง (Machine Language) ซึ่งประกอบขึ้นจากรหัสฐานสองเท่านั้น จึงต้องมีการใช้โปรแกรม ตัวแปลภาษาคอมพิวเตอร์ (Translator) ในการแปลภาษาคอมพิวเตอร์ภาษาต่าง ๆ ไปเป็นภาษาเครื่องโปรแกรมที่แปลจากโปรแกรมต้นฉบับแล้วเรียกว่า ออบเจคโคด (object code) ซึ่งจะประกอบด้วยรหัสคำสั่งที่คอมพิวเตอร์สามารถเข้าใจและนำไปปฏิบัติได้ต่อไป
      ตัวแปลภาษาที่มีการใช้อยู่ในปัจจุบัน จะต่างกันที่ขั้นตอนที่ใช้ในการแปลภาษาให้อยู่ในรูปแบบ ที่คอมพิวเตอร์สามารถเข้าใจได้ สามารถแบ่งได้เป็น
1.     แอสเซมเบลอ (Assembler) เป็นตัวแปลภาษาแอสแซมบลีซึ่งเป็นภาษาระดับต่ำให้เป็นภาษาเครื่อง
2.     อินเตอร์พรีเตอร์ (Interpreter) เป็นตัวแปลภาษาระดับสูงซึ่งเป็นภาษาที่ใกล้เคียงกับภาษามนุษย์ ไปเป็นภาษาเครื่อง โดยใช้หลักการแปลพร้อมกับงานตามคำสั่งทีละบรรทัดตลอดทั้งโปรแกรม ทำให้การแก้ไขโปรแกรมทำได้ง่ายและรวดเร็วแต่ออบเจคโคดที่ได้จากการแปลโดยการใช้อินเตอร์พรีเตอร์นั้นไม่สามารถเก็บไว้ใช้ใหม่ได้จะต้องแปลโปรแกรมใหม่ทุกครั้งที่ต้องการใช้งาน
3.     คอมไพเลอร์ (Compiler) จะเป็นตัวแปลภาษาระดับสูงเช่นเดียวกับอินเตอร์พรีเตอร์แต่จะใช้วิธีแปลโปรแกรมทั้งโปรแกรมให้เป็นออบเจคโคด ก่อนที่จะสามารถนำไปทำงานเช่นเดียว กับแอสแซมเบลอ ออบเจคโคดที่ได้จากการแปลนั้นสามารถจัดเก็บไว้เป็นแฟ้มข้อมูล เพื่อให้นำไปใช้ในการทำงานเมื่อใดก็ได้ตามต้องการ ซึ่งเป็นข้อดีของคอมไพเลอร์ที่จะนำผลที่ได้จากการแปลนั้นไปใช้งานกี่ครั้งก็ได้ไม่จำกัด ไม่ต้องเสียเวลาในการแปลใหม่ทุกครั้ง ทำให้เป็นรูปแบบการแปลที่ได้รับความนิยมอย่างมาก
         ในปัจจุบัน มีหลักการแปลภาษาคอมพิวเตอร์แบบใหม่เกิดขึ้น คือแปลจากซอร์สโคดไปเป็นรหัสชั่วคราวหรืออินเทอมีเดียตโคด (Intermediate code) ซึ่งสามารถนำไปทำงานได้ด้วยการใช้โปรแกรมในการอ่านและทำงานตามรหัสชั่วคราวนั้น โดยโปรแกรมนี้จะมีหลักการทำงานคล้ายกับอินเทอพรีเตอร์ แต่จะทำงานได้เร็วกว่าเนื่องจากรหัสชั่วคราวจะใกล้เคียงกับภาษาเครื่องมาก มีข้อดีคือสามารถนำรหัสชั่วคราวนั้นไปใช้ได้กับทุก ๆ เครื่องที่มีโปรแกรมตีความได้

ซอฟต์แวร์ประยุกต์ (Application software) ซอฟต์แวร์ประยุกต์สามารถจำแนกได้เป็น 2 ประเภท คือ
·       ซอฟต์แวร์สำหรับงานเฉพาะด้าน (Special Purpose Software)
          จะมีความเหมาะสมกับงานเฉพาะด้าน เช่น โปรแกรมด้านการคำนวณราคาค่าน้ำของแต่ละบ้าน จะมีประโยชน์กับงานด้านการประปา หรือโปรแกรมสำหรับฝากถอนเงิน ก็จะมีประโยชน์กับองค์กรเกี่ยวกับการเงิน เช่น ธนาคาร
          ซอฟต์แวร์สำหรับงานเฉพาะด้านส่วนมากจะไม่มีการจำหน่ายอยู่ทั่วไป องค์กรที่ต้องการใช้งานมักจะต้องพัฒนาด้วยตนเอง หรือว่าจ้างบริษัทซอฟต์แวร์พัฒนาให้โดยเฉพาะ อย่างไรก็ตามถึง แม้จะมีบริษัทซึ่งพัฒนาซอฟต์แวร์เฉพาะด้านมาวางจำหน่ายก็มักจะมีราคาสูง รวมทั้งมีข้อเสนอในการพัฒนาเพิ่มเติมเพื่อให้เหมาะสมกับองค์กรต่าง ๆ ด้วย
·       ซอฟต์แวร์สำหรับงานทั่วไป (General purpose Software)
          จะเป็นซอฟต์แวร์ที่ออกแบบมาสำหรับงานทั่ว ๆ ไป สามารถนำมาประยุกต์ใช้กับงานส่วนตัวได้อย่างหลากหลาย ทำให้เป็นซอฟต์แวร์ประเภทที่ได้รับความนิยมสูงสุดในปัจจุบัน ซึ่งส่วนมากจะเป็นซอฟต์แวร์ที่ทำงานอยู่ในเครื่องระดับไมโครคอมพิวเตอร์
          ซอฟต์แวร์สำหรับงานทั่วไป สามารถแบ่งตามประเภทของงานได้ดังนี้
1.      ซอฟต์แวร์ตารางวิเคราะห์แบบอิเล็กทรอนิกส์ (Electronic Spreadsheet)
         ธุรกิจในสมัยก่อนนั้นการทำงบประมาณ หรือการวางแผนต่าง ๆ ต้องใช้กระดาษบัญชีและเครื่องคิดเลขเท่านั้น สำหรับสมัยนี้ด้วยซอฟต์แวร์ตารางวิเคราะห์แบบอิเล็กทรอนิกส์ ผู้ใช้สามารถพิมพ์หัวข้อหรือชื่อของข้อมูล และตัวเลขข้อมูลต่าง ๆ เข้าในคอมพิวเตอร์ โดยที่ในคอมพิวเตอร์จะมีตารางที่เปรียบเสมือนกระดาษบัญชีขนาดใหญ่ ซึ่งสามารถคำนวณได้ตามสูตรที่ผู้ใช้ทำการกำหนด โดยที่สูตรเหล่านั้นจะไม่ปรากฏในช่องของข้อมูลเลย ยิ่งไปกว่านั้นหากผู้ใช้เปลี่ยนตัวเลขหรือข้อมูลใดๆก็ตาม จะเห็นการเปลี่ยนแปลงข้อมูลอื่นที่เกี่ยวข้องกันในทันที ปัจจุบันมีผู้ใช้ประโยชน์ของตาราง  วิเคราะห์แบบอิเล็กทรอนิกส์มากมาย ไม่เฉพาะแต่ในทางบัญชีเท่านั้น แต่ยังนิยมใช้ในการวิเคราะห์ข้อมูลทางสถิติ บริหารการเงิน และอื่น ๆ อีกมาก
2.      ซอฟต์แวร์ประมวลผลคำ (Word processing)
       ปัจจุบันเครื่องคอมพิวเตอร์มากกว่า 85 เปอร์เซ็นต์ ต้องติดตั้งโปรแกรมสำหรับงานพิมพ์เอกสารรวมอยู่ด้วย ซึ่งโปรแกรมนี้ทำให้คอมพิวเตอร์เป็นเครื่องมือสำหรับสร้าง แก้ไข ตรวจสอบ พิมพ์ และจัดเก็บข้อความต่าง ๆ หนังสือที่จำหน่ายในท้องตลาดในปัจจุบันนี้ ส่วนมากก็เริ่มต้นจากการพิมพ์ข้อความลงในคอมพิวเตอร์ด้วยซอฟต์แวร์ที่ประมวลคำ


 ซอฟต์แวร์การพิมพ์แบบตั้งโต๊ะ (Desktop Publishing)
ปัจจุบัน เช่น ร่วมคุยกับกลุ่มที่สนใจเรื่องเดียวกัน แลกเปลี่ยนจดหมายกับผู้อื่นในระบบหรือแม้กระทั่งจองตั๋วเครื่องบินและจองโรงแรมผ่านทางจอคอมพิวเตอร์ เป็นต้น 
     
      ในสมัยก่อนการจัดทำหนังสือพิมพ์ หรือวารสารต่าง ๆ นั้นต้องผ่านกระบวนการต่าง ๆ มากมายหลายขั้นตอนซึ่งรวมเรียกว่าการเรียงพิมพ์ โดยที่จะต้องมีผู้ตัดต่อรูปภาพที่ต้องการ วาดกรอบของภาพหรือกรอบหัวเรื่อง และเขียนข้อความ และนำข้อความ ภาพ และกรอบมาประกอบกันตามแบบที่ออกแบบไว้ การทำงานที่ยุ่งยากเหล่านี้นี่เองที่ทำให้เอกสารเหล่านั้นมีราคาแพง แต่ในปัจจุบันนี้ขอเพียงมีคอมพิวเตอร์ และโปรแกรมการจัดพิมพ์แบบตั้งโต๊ะ เท่านั้น ก็สามารถที่จะออกแบบงานหรือเอกสารให้เป็นที่น่าสนใจได้ โดยซอฟต์แวร์การพิมพ์แบบตั้งโต๊ะจะมีความสามารถด้านการจัดการเอกสาร ความสามารถด้านการเรียงพิมพ์ รวมทั้งการจัดสีที่สูงกว่าซอฟต์แวร์ประมวลผลคำ
2.      ซอฟต์แวร์นำเสนอ (Presentation Software)
          เป็นซอฟต์แวร์ที่ใช้ในการนำเสนอข้อมูลด้วยคอมพิวเตอร์ โดยอาจประกอบด้วยตัวอักษร รูปภาพ แผนผัง รายงาน ตลอดจนภาพเคลื่อนไหว เป็นต้น นิยมใช้ในการเรียนการสอน หรือการประชุม เพื่อนำเสนอข้อมูลให้การบรรยายนั้นน่าสนใจยิ่งขึ้น
3.      ซอฟต์แวร์กราฟิก (Graphic Software)
          เป็นซอฟต์แวร์สำหรับสร้างภาพกราฟิกแบบต่าง ๆ การใช้งานในระดับเบื้องต้นอาจนำไปใช้ประกอบการสร้างเอกสาร หรือการนำเสนอข้อมูล ส่วนการใช้ในระดับสูงอาจใช้สำหรับการตกแต่งภาพหรือรูปถ่าย หรือใช้สำหรับงานด้านศิลปกรรม สถาปัตยกรรม วิศวกรรม เป็นต้น
4.      ซอฟต์แวร์ฐานข้อมูล (Database)
       โปรแกรมฐานข้อมูลเป็นโปรแกรมสำหรับสร้างแฟ้มข้อมูลต่าง ๆ เก็บไว้ในสื่ออิเล็กทรอนิกส์ โดยโปรแกรมจะมีเครื่องมือต่างๆ ในการอำนวยความสะดวกเกี่ยวกับการจัดการแฟ้มข้อมูล เช่น มีเครื่อง มือสำหรับการเพิ่มหรือแก้ไขข้อมูลที่จัดเก็บอยู่ หรือ สามารถเรียกแฟ้มข้อมูลขึ้นมาแสดงบนจอภาพ โดยกำหนดเงื่อนไขให้เลือกข้อมูลมาแสดงเพียงบางส่วน เป็นต้น
5.      ซอฟต์แวร์สื่อสารโทรคมนาคม (Telecommunication Software)
     ถ้าผู้ใช้ต้องการติดต่อกับคอมพิวเตอร์ที่อยู่ห่างไกลออกไป สามารถทำได้โดยใช้ซอฟต์แวร์สำหรับติดต่อสื่อสารข้อมูล ซอฟต์แวร์ประเภทนี้จะจำลองเครื่องคอมพิวเตอร์ให้เป็นเทอร์มินัล (Terminal) ที่สามารถติดต่อไปยังระบบคอมพิวเตอร์ขนาดใหญ่ที่มีผู้ใช้หลายคนได้โดยใช้สายโทรศัพท์ในการโทรติดต่อ และเมื่อติดต่อได้แล้วก็จะสามารถใช้งานระบบต่าง ๆ ที่อยู่ในเครื่องนั้นได้ เสมือนกับนั่งใช้เครื่องอยู่ข้าง ๆ เครื่องที่เราติดต่อเข้าไป การใช้งานที่ได้รับความนิยมใน




ปัจจุบัน เช่น ร่วมคุยกับกลุ่มที่สนใจเรื่องเดียวกัน แลกเปลี่ยนจดหมายกับผู้อื่นในระบบหรือแม้กระทั่งจองตั๋วเครื่องบินและจองโรงแรมผ่านทางจอคอมพิวเตอร์ เป็นต้น 

โปรแกรมสื่อสารโทรคมนาคม 

1.      ซอฟต์แวร์ค้นหาข้อมูล (Resource Discovery Software)
หมายถึง ซอฟต์แวร์ที่เป็นเครื่องมือสำหรับค้นหาข้อมูลที่ต้องการ จากแหล่งข้อมูลในที่ต่าง ๆ เนื่องจากปัจจุบันนี้ความนิยมในการใช้การติดต่อสื่อสารผ่านเครือข่ายคอมพิวเตอร์ เช่น อินเตอร์เน็ต หรือเครือข่ายเชิงพาณิชย์อื่น ๆ ช่วยให้สามารถเรียกค้นข้อมูลที่ต้องการทราบได้จากทั่วโลก ตัวอย่างซอฟต์แวร์ประเภทนี้ เช่น Archie, Gopher และ World Wide Web เป็นต้น

                                                                      โปรแกรมค้นหาข้อมูล


2.การแบ่งตามรูปแบบการส่งมอบ
แบ่งได้เป็น 2 กลุ่ม คือ
         ซอฟต์แวร์ที่มีการขาย ให้เช่า หรือให้บริการ โดยคิดค่าบริการเป็น Transaction หรือ license
          เป็นการออกแบบและพัฒนาซอฟต์แวร์เพื่อใช้งานเฉพาะกับงานประเภทต่าง ๆ เฉพาะกิจกรรมไป ส่วนใหญ่ลิขสิทธิ์ของซอฟต์แวร์นี้จะเป็นของผู้ที่ว่าจ้างให้พัฒนาขึ้น

3.การแบ่งตามประเภทของการนำไปใช้งานหลัก
แบ่งได้เป็น 3 กลุ่ม คือ
           เป็นซอฟต์แวร์ที่ใช้กับการทำงานเพื่อแก้ปัญหา/จัดการทรัพยากรของ บุคคล/องค์กร เช่น ซอฟต์แวร์บัญชี ซอฟต์แวร์จัดทำเอกสาร เป็นต้น
          เป็นซอฟต์แวร์ที่ทำงานผ่านระบบปฏิบัติการพิเศษบนอุปกรณ์ขนาดเล็ก เช่น โทรศัพท์มือถือ PDA โดยสามารถแบ่งเป็นกลุ่มใหญ่ๆ ได้ 2 กลุ่ม คือ
               (1) ซอฟต์แวร์เพื่อสนับสนุนธุรกรรมทางธุรกิจ (Business applications) เช่น Mobile banking, Mobile payment, GPS on Mobile, Mobile applications for business process management
               (2) ซอฟต์แวร์ที่เกี่ยวข้องกับนันทนาการและบันเทิง (Entertainment applications) ซึ่งรวมเกมบนโทรศัพท์เคลื่อนที่
           เป็นซอฟต์แวร์ซึ่งฝังอยู่ไว้ในอุปกรณ์อิเล็กทรอนิกส์ต่างๆ เพื่อใช้สำหรับควบคุมการทำงานของอุปกรณ์นั้นๆ เช่น ระบบ GPRS ระบบทำความเย็นอัจริยะ ระบบตรวจสอบย้อนกลับ เป็นต้น 

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

รูปที่ 6.7 วัฎจักรซอฟต์แวร์

         ซอฟต์แวร์ที่พัฒนามาแล้ว จะเข้าสู่วัฎจักรของการนำไปใช้งานแล้วนำมาปรับปรุงแก้ไข และย้อนกลับนำมาใช้งานใหม่ ตลอดระยะเวลาการใช้งานซอฟต์แวร์นั้น จนกว่าจะมีซอฟต์แวร์ใหม่มา
แทนที่ ผลิตภัณฑ์อุตสาหกรรมต่าง ๆ มีวัฎจักรเช่นเดียวกัน เพียงแต่ว่า วัฎจักรของผลิตภัณฑ์ ไม่ใช่การปรับปรุงแก้ไข แต่จะเป็นการซ่อมบำรุงให้ใช้งานต่อไปได้   ซอฟต์แวร์ต่างกับผลิตภัณฑ์ตรงที่ไม่มีส่วนสึกหรอ

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

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

ขั้นตอนการพัฒนาซอฟต์แวร์
          การพัฒนาซอฟต์แวร์ที่ใช้กันทั่วไป จะแบ่งออกเป็นขั้นตอน ดังนี้ การวิเคราะห์ การออกแบบ การเขียนโปรแกรม หรือการสร้างชิ้นงานจริง และการตรวจสอบซอฟต์แวร์

     1) การวิเคราะห์ เป็นขั้นตอนแรกของการพัฒนาซอฟต์แวร์ ซึ่งอาจแบ่งได้เป็นสองตอน ตอนแรกจะเป็นการสำรวจความต้องการและเหตุผลการตัดสินใจนำคอมพิวเตอร์เข้ามาช่วยในการทำงาน ให้เป็นไปโดยอัตโนมัติ  ตอนที่สองจึงเป็นการวิเคราะห์ระบบงานที่ใช้อยู่ปัจจุบัน หากนำระบบที่ใช้คอม- พิวเตอร์   มาช่วยงานจะตอบสนองความต้องการได้อย่างไร   ข้อมูลที่ใช้และระบบ

ซอฟต์แวร์จะต้องกำหนดได้อย่างเด่นชัด ผลลัพธ์จากการวิเคราะห์ จะทำให้เราได้ชุดของข้อกำหนดของระบบเพื่อนำ ไปใช้ในการออกแบบซอฟต์แวร์ต่อไป

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

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

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

ซอฟต์แวร์และภาษาคอมพิวเตอร์
           เมื่อมนุษย์ต้องการใช้คอมพิวเตอร์ช่วยในการทำงาน มนุษย์จะต้องบอกขั้นตอนวิธีการให้คอมพิวเตอร์ทราบ การที่บอกสิ่งที่มนุษย์เข้าใจให้คอมพิวเตอร์รับรู้ และ ทำงานได้อย่างถูกต้องจำ เป็นต้องมีสื่อกลาง ถ้าเปรียบเทียบกับชีวิตประจำวันแล้ว เรามีภาษาที่ใช้ในการติดต่อซึ่งกันและกัน เช่นเดียวกันถ้ามนุษย์ต้องการจะถ่ายทอดความต้องการให้คอมพิวเตอร์รับรู้และปฏิบัติตาม จะต้องมีสื่อกลางสำหรับการติดต่อเพื่อให้คอมพิวเตอร์รับรู้ เราเรียกสื่อกลางนี้ว่า ภาษาคอมพิวเตอร์
          เนื่องจากคอมพิวเตอร์ทำงานด้วยสัญญาณทางไฟฟ้า ใช้แทนด้วยตัวเลข 0 และ 1 ได้ผู้ออก แบบคอมพิวเตอร์ใช้ตัวเลข 0 และ 1 นี้เป็นรหัสแทนคำสั่งในการสั่งงานคอมพิวเตอร์ รหัสแทนข้อมูลและคำสั่งโดยใช้ระบบเลขฐานสองนี้ คอมพิวเตอร์สามารถเข้าใจได้ เราเรียกเลขฐานสองที่ประกอบกันเป็นชุดคำสั่งและใช้สั่งงานคอมพิวเตอร์ว่าภาษาเครื่อง
         การใช้ภาษาเครื่องนี้ถึงแม้คอมพิวเตอร์จะเข้าใจได้ทันที แต่มนุษย์ผู้ใช้มีข้อยุ่งยากมาก เพราะเข้าใจและจดจำได้ยาก จึงมีผู้สร้างภาษาคอมพิวเตอร์ในรูปแบบที่เป็นตัวอักษรเป็นประโยคข้อความ ภาษาในลักษณะดังกล่าวนี้เรียกว่า ภาษาคอมพิวเตอร์ระดับสูง ภาษาระดับสูงมีอยู่มากมาย บางภาษามีความเหมาะสมกับการใช้สั่งงานการคำนวณทางคณิตศาสตร์และวิทยาศาสตร์ บางภาษามีความเหมาะสมไว้ใช้สั่งงานทางด้านการจัดการข้อมูล
         ในการทำงานของคอมพิวเตอร์ คอมพิวเตอร์จะแปลภาษาระดับสูงให้เป็นภาษาเครื่อง ดังนั้นจึงมีผู้พัฒนาโปรแกรมคอมพิวเตอร์สำหรับแปลภาษาคอมพิวเตอร์ระดับสูงให้เป็นภาษาเครื่องโปร- แกรมที่ใช้แปลภาษาคอมพิวเตอร์ระดับสูงให้เป็นภาษาเครื่องเรียกว่า คอมไพเลอร์ (Compiler) หรือ อินเตอร์พรีเตอร์ (interpreter)
·       คอมไพเลอร์ (compiler)
          คอมไพเลอร์เป็นโปรแกรมแปลภาษาที่ทำการแปลโปรแกรมต้นฉบับ (Source Program) ที่เขียนขึ้นด้วยภาษาระดับสูง  (High-level Language) เพื่อให้เป็นภาษาเครื่อง โดยจะแปลทีเดียวทั้งโปรแกรมตั้งแต่ต้นจนจบ ถ้าพบข้อผิดพลาดที่ใดในโปรแกรมคอมไพเลอร์จะจำเอาไว้ เมื่อแปลครบทั้งโปรแกรมแล้วจึงทำการแสดงข้อผิดพลาดทั้งหมดออกมาทีเดียวเพื่อให้ผู้เขียนโปรแกรมรับทราบทำการแก้ไขโปรแกรมให้ถูกต้อง เมื่อใดก้ตามที่แปลโปรแกรมแล้วไม่พบข้อผิดพลาดใดๆ คอมไพเลอร์จะทำการสร้างโปรแกรมภาษาเครื่อง (Object Program) ที่เป็นผลลัพธ์จากการแปลเอาไว้ให้ด้วย
·       อินเตอร์พรีเตอร์ ( Interpreter )
          อินเตอร์พรีเตอร์เป็นโปรแกรมที่ทำหน้าที่แปลโปรแกรมที่เป็นภาษาระดับสูงให้เป็นภาษา เครื่อง โดยจะทำการแปลคำสั่งภาษาระดับสูงทีละคำสั่ง ถ้าคำสั่งนั้นไม่มีข้อผิดพลาดก็จะทำงานตามคำสั่งนั้นเลยทันที โดยที่จะไม่มีการสร้าง Object Program ขึ้นมา คอมพิวเตอร์จะเริ่มทำงานได้เลยทันทีเมื่ออินเตอร์พรีเตอร์เริ่มทำการแปลโปรแกรม และจะหยุดการทำงานทันทีที่พบข้อผิดพลาดเกิดขึ้น ณ. ที่ใดก็ตามในโปรแกรม เพื่อให้ผู้เขียนโปรแกรมสามารถทำการแก้ไขคำสั่งนั้น จากนั้นก็จะเริ่มการทำงานใหม่โดยเริ่มตั้งแต่การแปลคำสั่งแรกใหม่ตั้งแต่ต้น