โค้ดที่ "เสียดาย"
เคยมีสิ่งที่ "เสียดาย" กันไหม? ผมเอง ถ้าไม่นับซอร์สโค้ดโครงงานสมัยเรียน ที่เขียนแบบไร้ดีไซน์แล้ว ก็มีซอร์สโค้ดที่รู้สึก "เสียดาย" อยู่อย่างน้อยสามชุด
ชุดแรก เป็นโปรแกรมแรกที่เขียนตอนเริ่มทำงาน หลังจากหัดเขียน C++ จากการตะลุยอ่าน "The C++ Programming Language" First Edition ของ Stroustrup แล้วก็หัดเขียนโปรแกรมบนวินโดวส์ 3.1 ด้วย OWL ของ Borland มาแล้ว ก็มาร่วมทีมเขียนโปรแกรมคล้ายๆ Print Shop ที่สมัยโน้นใช้พิมพ์โปสเตอร์ การ์ดอวยพร ฯลฯ ผสมกับความสามารถเพิ่ม/แก้ไข graphics object ต่างๆ โดย scale, rotate, shear ได้ ตอนนั้นก็ทำให้สนุกสนานกับ CG มากๆ ทำอัลกอริทึมครบหมด ทั้งวงรีเอียง, บิตแมพเอียง, hit test ของ object ชนิดต่างๆ แต่ปรากฏว่าโครงการถูกยกเลิกเสียก่อนที่จะได้ integrate กัน โค้ดที่เขียน เลยไม่ได้ใช้ และก็ทิ้งไว้ที่บริษัท
ชุดที่สอง อยู่บริษัทเดียวกัน แต่ย้ายโครงการมาเขียนเวิร์ด ซึ่งความจริงโครงการเริ่มไปเยอะแล้ว ส่วนแกนเสร็จไปพอประมาณ ผมเข้าไปช่วยเขียนต่อเติม และทำ UI เพิ่มเติมให้เป็นรูปเป็นร่าง โค้ดนี้จะว่าสนุกก็สนุก จะว่าน่าเบื่อก็น่าเบื่อ สนุกตรงที่เป็นโปรแกรมขนาดใหญ่โปรแกรมแรก และการออกแบบโครงสร้างดี ทำให้ได้พัฒนาความรู้เรื่อง OOP แต่ที่ว่าน่าเบื่อ คือเพื่อนร่วมงานมาๆ หายๆ จะ merge โค้ดทีก็ต้องนั่งรอเงกอยู่ที่ออฟฟิศ จนสุดท้าย หลังจากมีเวลาอ่านและคิดฟุ้งซ่านเรื่องกฎหมายลิขสิทธิ์กับซอฟต์แวร์ เลยตัดสินใจว่า ไม่อยากเขียนโปรแกรมโดยฝากลิขสิทธิ์ไว้กับบริษัทเอกชนแบบนี้อีกแล้ว ประกอบกับแผนกพัฒนาซอฟต์แวร์ของบริษัทก็กำลังจะยุบแหล่มิยุบแหล่ เลยลาออกมา โดยที่ไม่ได้เอาโค้ดอะไรติดมือมาเลย ทราบมาว่าหลังจากผมออก โครงการก็ยังดำเนินต่อไปช่วงหนึ่ง แต่ก็ต้องยุบในที่สุด เพราะหมดทุนทำต่อ
ชุดที่สาม เป็นโค้ดที่เขียนขึ้นระหว่างทำงานเนคเทค ซึ่งเป็นหน่วยงานภาครัฐที่สมัครเข้าไปด้วยความคิดว่า น่าจะมีโอกาสทำงานที่เป็นประโยชน์ต่อสาธารณะได้มาก ก็มีโค้ดหลายชิ้นที่ได้ทำ แต่ชิ้นที่นับเนื่องว่ารู้สึก "เสียดาย" ก็คือระบบเครือข่ายพจนานุกรม คือเป็นโครงการที่มองเอาไว้ว่า จะทำเป็นแกนสำหรับงานวิจัยระยะยาว โดยทำโครงการวิจัยย่อยๆ เพื่อมาพอกใส่แกนกลางนี้ ซึ่งก็มีการแตกเป็นงานย่อยออกมาพอสมควร เช่น อัลกอริทึมการเรียงลำดับคำไทย (ซึ่งพัฒนาต่อมาจนได้ th_TH locale ใน glibc), การอิมพลีเมนต์ double-array trie แบบเต็มๆ ตาม paper ของ Aoe, การแก้คำผิดด้วย trie และซาวน์เด็กซ์, การทำ framework สำหรับ client-server, การจัดการข้อมูล XML ฯลฯ ในโค้ดนี้ ใช้ design pattern ไปหลาย pattern อยู่ เขียนเอกสารก็ใช้ DocBook ประกอบกับ UML diagram ด้วย dia และก็ได้ให้บริการเว็บ Lexitron อยู่ช่วงหนึ่ง ก่อนที่ทีมงานใหม่จะเข้ามารับช่วงต่อ เห็นแว่วๆ ว่าเขาเขียนใหม่หมดแล้ว :P
ทั้งหมดนี้ ล้วนแต่เขียนด้วยความทุ่มเท แต่ก็ถูกปล่อยผ่านไปโดยไม่ได้ใช้ประโยชน์เท่าไร ส่วนที่ยังคงใช้ประโยชน์มาจนปัจจุบัน ก็เป็นส่วนที่เผยแพร่แบบ FOSS (Free/Open Source Software) คือ th_TH locale เท่านั้นเอง อ้อ.. มี midatrie หลุดมาอีกตัว
หลังจากรำลึกความหลังแล้ว ก็ทำให้รักแนวคิด FOSS ขึ้นเป็นกอง ไม่มีเธอ ฉันคงไร้ความหมาย..
4 ความเห็น:
ณ 2 มีนาคม 2548 เวลา 12:46 , NOI แถลง…
โอ๋ๆ อย่าน้อยใจ ยังไงก็ "รักนะ" (อิอิ)
ณ 2 มีนาคม 2548 เวลา 12:53 , ไม่ระบุชื่อ แถลง…
คำลงท้าย เห็นแล้วนึกน่าพี่เทพไม่ออก :P
ณ 7 มีนาคม 2548 เวลา 00:50 , the ancient แถลง…
อย่างน้อยก็เป็นประสบการณ์ไง ถ้าไม่มีสิ่งที่ต้องเสียสละ จะมีชัยชนะได้อย่างไร จุ๊บๆ
ณ 7 มีนาคม 2548 เวลา 13:56 , Thep แถลง…
มันทำให้ผมเห็นคุณค่าของแนวคิด FOSS มากขึ้นไง ก็เลยมาเขียนเล่าแบ่งให้คนอื่นฟัง :)
แสดงความเห็น (มีการกลั่นกรองสำหรับ blog ที่เก่ากว่า 14 วัน)
<< กลับหน้าแรก