งานที่ต้องใช้เกี่ยวกับการใช้ภาษาคอมพิวเตอร์มีอยู่มากมาย งานหนึ่งในนั้นคือการสร้างระบบบริหารจัดการระบบทางทหาร หรือ ระบบอำนวยการรบ หรือ Combat Management System (CMS) การใช้คอมพิวเตอร์ที่ทำหน้าที่ในการควบคุมระบบอิเล็กทรอนิกส์ และเชื่อมต่อกันเป็นระบบเครือข่าย มีข้อมูลวิ่งอยู่ในระบบเครือข่ายเป็นจำนวนมาก ต้องมี Middle ware เพื่อช่วยในการทำให้ข้อมูลเป็นแบบ Data Distribution และใช้ภาษาในการเขียนโปรแกรมคือ ภาษา ADA, C, C++ เหมือนในวงการอุตสาหกรรมที่ใช้ระบบ Distributed Control System (DCS) หลังจากที่เราคุยกันเรื่องใช้เครื่องมืออะไรในการพัฒนาซอฟต์แวร์ แล้ว เราก็ต้องมาคิดกันต่ออีกว่าแล้วเราจะพัฒนาซอฟต์แวร์บนสิ่งแวดล้อมใดๆสิ่งแวดล้อมของระบบคอมพิวเตอร์ที่คิดไว้ก็คือ ระบบปฏิบัติการ(Operating System, OS) ไม่ว่าจะเป็นสิ่งแวดล้อมแบบ Microsoft Windows, UNIX, Linux, Solaris, VxWork ถ้าต้องการให้งานของเราสามารถพัฒนาขึ้นมาครั้งเดียวแล้วใช้ได้ในทุกสภาวะแวดล้อมก็ต้องคำนึงถึงตัวแปรภาษาคอมพิวเตอร์เป็นหลัก แต่ถ้ามั่นใจว่างานของเราทำงานอยู่บนสิ่งแวดล้อมเดียวไม่มีการเปลี่ยนแปลงสิ่งแวดล้อมก็เลือกเครื่องมือที่ดีที่สุดเช่น ภาษา Assembly แล้วแต่จะพิจารณา จึงต้องมีการออกแบบระบบ (System Design) แต่สุดท้ายแล้วก็ขอให้เริ่มจากลงมือทำ ลองมาค่อยๆศึกษาแต่ละภาษาไปพร้อมๆกัน เราเองคงไม่สามารถเก่งไปได้ทุกภาษา ว่าแล้วทำไมนักคิดทั้งหลายแหร่ถึงไม่รวมเอาข้อดีของทุกภาษา แล้วมาพัฒนาใหม่เป็นภาษาเดียว (ไม่แน่ใจว่า C# เป็นอย่างนั้นแล้วหรือยัง ) แต่ในระบบที่เกี่ยวกับ CMS ยังคงเลือกใช้สามภาษานี้อยู่(ADA, C, C++) แต่โดยส่วนตัวแล้วชอบภาษาแอสแซมบลี้เป็นพิเศษ ในบล็อกนี้ขอตั้งกรอบของบทความนี้ไว้ที่ 4 ภาษานี้ก็แล้วกันได้แก่
1. ADA กับ Data Distribution
2. ASSEMBLY สุดที่รัก
3. C ได้ทุกที่
4. C++ กับขอบข่ายงานที่มากมาย
1. ADA กับ Data Distribution
ติดไว้ก่อนยังไม่ได้แปลจากสื่ออินเตอร์เน็ต เคยใช้แต่ของสำเร็จรูปที่มีอยู่ในระบบ มีแหล่งที่หน้าสนใจ 2 แห่ง คือ Prismtech, RTI (Real Time Innovations) ในส่วนของ Prismtech มีสองชิ้นที่หน้าสนในคือ OpenSplice กับ OpenCORBA ประโยนช์ของมันอเนกอนันต์ ถ้ารู้จักนำ Middleware สองตัวนี้มาใช้ในงานควบคุมสั่งการที่มีข้อมูลไหลอยู่ในระบบมากๆ และจะใช้ในการนำข้อมูลแยกเป็นส่วนๆเพื่อวิเคราะห์และประมวลผล ทางด้าน Finance ก็ยังได้ ไว้ผมศึกษาเรื่องนี้ดีแล้วผมจะรองออกแบบพัฒนาให้กับประเทศไว้ใช้เล่นๆสักโปรแกรมนึง
2.ภาษาซีมีอยู่ได้ทุกที่
ประโยคนี้หมายความว่า ในทุกๆที่ ทุกๆระบบ ทุกๆสิ่งแวดล้อมภาษาซีสามารถพัฒนาเขียนโปรแกรมได้หมด เช่น บนคอมพิวเตอร์ที่ใช้ระบบปฏิบัติการต่างๆไม่ว่าจะเป็น DOS, Microsoft Windows, UNIX, Linux, Solaris, OS/2 และในระบบที่ดูไม่เหมือนคอมพิวเตอร์ ใน Single Board Computer, Microcontroller ระบบที่แบบฝังตัว (Embedded System) ระบบแบบ Real Time ที่ใช้ระบบปฏิบัติการแบบ Real Time Operating System (RTOS) ตัวอย่าง RTOS เช่น VxWork, Lynux ระบบ Single Board ที่ใช้ในการประมวลผลสัญญาณดิจิตอล (DSP) บทความนี้เป็นบทความที่เขียนขึ้นโดยคนไทย อยากเห็นคนไทยมีความสนุกในการพัฒนาซอฟต์แวร์ขึ้นมาใช้กันเอง ร่วมไม้ร่วมมือกันพัฒนาสิ่งที่มีมูลค่ามหาศาล โดยที่มีต้นทุนการผลิตที่ต่ำมาก ผู้เขียนชอบการสร้างสรรค์สิ่งต่างๆ ไปเรื่อยๆ สำเร็จบ้าง ไม่สำเร็จบ้าง ไปเห็นชาวต่างชาติเขาทำงานกัน เขาก็ทำเหมือนเรา ไม่ได้หนักไปกว่าเรา แต่เขาแค่แตกต่างกันที่วิธีคิด เราอย่างเอาความคิด หรือการประพฤติปฏิบัติตัวของชาวต่างชาติมาใช้กับชีวิตเรา มันคนละชีวิต มันคนละสิ่งแวดล้อม เราไม่สามารถเอาภาษาคอมพิวเตอร์ที่เขียนบนระบบหนึ่ง ไปใช้ได้โดยตรงกับอีกระบบหนึ่ง ฉันใดก็ฉันนั้น เราเป็นแค่คนกลุ่มน้อยแต่เราก็เลือกทำในสิ่งที่ควรทำ ทำในสิ่งที่ดี ถ้าเราเป็นพุทธศาสนิกชน ทราบว่าพระพุทธองค์ทรงแบ่งบัวออกเป็น ๓ เหล่า ถ้าเราเป็นบัวพ้นน้ำแล้ว เราคงจะไม่มาเวียนว่ายตายเกิดอย่างนี้แล้ว อย่าได้แบ่งอะไรกันในหมู่พวกเรากันเองอีกเลย นอกเรื่องไปหรือเปล่าหว่าเรา มาต่อกันเรื่องภาษาซีกันต่อดีกว่า ผู้เขียนอยากสร้างอะไรสักอย่างที่ทำบนสิ่งแวดล้อมที่เราไม่สามารถสร้างได้เองทั้งหมด ก็เลือกที่มันฟรี หรือถูก หรือที่เจ้าของเขาไม่หวงก็แล้วกัน อะไรที่เขาหวงเราก็อย่าไปเบียดเบียนเขา อะไรที่ไม่ใช่ของเรา ก็ไม่ใช่ของเรา แต่ถ้าอยากได้อะไรที่เป็นของเราก็ร่วมมือกัน ไม่มีอะไรยากเกินความสามารถพวกเราคนไทยได้หรอก ไว้เดี๋ยวศึกษาประวัติศาสตร์ชนชาวไทยให้แม่นก่อนแล้วค่อยมาเขียนว่า ชนชาวไทยไม่ธรรมดาจริงๆไม่งั้นคงไม่อยู่เป็นชาติมาได้ถึงทุกวันนี้ แต่ปัจจุบันนี้และต่อไปในอนาคตไม่รู้ว่าชนชาวไทยจะยังสุดยอดอยู่หรือเปล่า เพราะไม่แน่ใจว่าจะเหลือชนชาวไทยบนโลกใบนี้อีกหรือเปล่า หรือจะเป็นแค่ประวัติศาสตร์โลกก็ไม่รู้ ผมไม่เคยใช้คำว่าชนชาติไทย เพราะผมไปเจอคนไทยที่แลต ลองไหนในโลกผมก็ดีใจว่าได้เจอญาติพี่น้อง ไม่จำเป็นต้องเป็นในแผ่นดินนี้ แต่ในขณะที่คนไทยในแผ่นดินนี้เป็นไรกันอยู่เรา(เหตุการณ์ปัจจุบันปี พ.ศ.๒๕๕๒) เอาเข้าไป พอแล้ว
สิ่งหนึ่งที่เป็นปัจจัยสำคัญกับชีวิตผู้เขียนไปแล้วก็คือรถยนต์จริงๆแล้วยังไม่มี แต่ตอนนี้พอไม่มีมันรู้สึกลำบากพอสมควร และโดยส่วนตัวแล้ว นักพัฒนาซอฟต์แวร์อย่างผมกับการซ่อมรถเป็นยิ่งกว่ายาขม เข้าอู่รถที่ไรพอช่างซ่อมโน้นซ่อมนี่เสร็จแล้ว ก็เจอปัญหากล่อง ECU ตลอด สุดท้ายช่างร้านทั่วไปก็ต้องวิ่งเข้าศูนย์รถยี่ห้อนั้นๆไป ทำให้ผู้เขียนเริ่มสนใจงานเขียนโปรแกรมระบบควบคุมรถยนต์ถึงแม้เราจะยังสร้างไม่ได้อย่างเขา แต่ก็ขอรองศึกษาเล่นๆดูก่อน สไตร์เดิมๆ ทำเล่นให้เป็นจริง ไม่ว่าจะเป็นระบบควบคุมช่วงล่าง ระบบส่งกำลัง ระบบเบรค ระบบไฟฟ้าภายใน มีข้อมูลตัวนึงในอินเตอร์เน็ตเกี่ยวกับรถโฟล์ค คือ Volkswagen RTI’s Real-Time Messaging Middleware for Driver Assistance Application
ภาษาซีที่อยากจะเริ่มขอเริ่มด้วยสิ่งแวดล้อมฟรีๆที่หาได้ทั่วไป หลายมหาลัยก็มีทำแจกให้ใช้ หน่วยงานภาครัฐก็มีทำให้ใช้ หรือ จะโหลดจากอินเตอร์เน็ตก็ไม่ผิด เริ่มบน Linux แล้วกันเรา จะสายพันธุ์ไหนไม่เกี่ยง การที่จะพัฒนาซอฟต์แวร์ให้ใช้ได้บนระบบซึ่งมีความซับซ้อนสูง สิ่งหนึ่งที่จะทำให้เราพัฒนาได้ง่ายขึ้นคือการศึกษาระบบปฏิบัติการให้ได้อย่างถ่องแท้ และสัมพันธ์กับฮาร์ดแวร์ที่เราต้องการจะนำไปใช้งานให้ได้อย่างลงตัว และทำให้ผู้ใช้งานนำไปใช้ได้อย่างง่ายได้ที่สุด โดยซ่อนการทำงานที่ยุ่งยากและสลับซับซ้อนไว้เบื้องหลัง การจะให้ระบบปฏิบัติการทำงานในลักษณะดังกล่าวได้ ผู้ออกแบบระบบเพื่อจะพัฒนาซอฟต์แวร์จะต้องสรรหาวิธีการที่เป็นมาตรฐานในการติดต่อกับคอมพิวเตอร์รวมทั้งการสร้างฟังก์ชั่นที่เป็นมาตรฐานสำหรับติดต่อกับอุปกรณ์หรือส่วนประกอบอื่นในระบบฮาร์ดแวร์ ในแต่ละส่วนมีองค์ประกอบแต่ละอย่างมีส่วนประกอบที่ใช้ควบคุมแตกต่างกัน เช่น อุปกรณ์ในการอินพุท/เอาท์พุทข้อมูลเข้าส่วนประมวลผล ในส่วนประมวลผลก็ยังมีรีจิสเตอร์ไว้คอยเก็บข้อมูลสถานะของอุปกรณ์ ลีนุกซ์จะกำหนดบทบาทของอุปกรณ์แต่ละชนิดโดยใช้ไฟล์ที่เรียกว่า ดีไวซ์ไดรเวอร์ ซึ่งเป็นโปรแกรมไดรเวอร์เหล่านี้จะกำหนดลักษณะการทำงานของส่วนประกอบต่างๆในคอมพิวเตอร์ ดีไวซ์ไดรเวอร์เป็นโมดุลเชื่อมต่อการทำงานระหว่างแอพพลิเคชั่นของผู้ใช้งานและฮาร์ดแวร์ของอุปกรณ์ เราจึงควรออกแบบให้โมดูลมีความยืดหยุ่นไม่จำกัดการใช้งานฮาร์ดแวร์ ปล่อยให้เป็นหน้าที่ของแอพพลิเคชั่นเองว่าจะเลือกใช้งานอย่างไร ดีไวซ์ไดรเวอร์เพียงแต่จัดการรีซอร์สภายในของคอมพิวเตอร์ให้เหมาะสม
ไม่มีความคิดเห็น:
แสดงความคิดเห็น