ในบทความก่อนๆ รู้สึกตัวอยู่เหมือนกันว่าได้ให้ความหวังเอาไว้เลิศหรูเกี่ยวกับการพัฒนา โปรแกรมโหราศาสตร์ แบบ Open Source แต่จนแล้วจนรอด ก็ไม่ได้ทำอะไรต่อเป็นชิ้นเป็นอัน
นอกจากจะเป็นเพราะเหตุว่ายังติดที่ตัวเองก็ยังทำโปรแกรมขาย จนไม่รู้จะเริ่มแนวทาง Open Source อย่างไรแล้ว เหตุผลที่สำคัญอีกประการหนึ่ง คือการเลือกใช้เครื่องมือในการพัฒนาโปรแกรมสำหรับ Open Source นั้นเอง
กล่าวคือ หากจะทำโปรแกรมโดยเปิดเผย Source Code กันฟรีๆ แต่ใครจะนำไปพัฒนาต่อ จะต้องเสียเงินซื้อเครื่องมือในการพัฒนาอย่าง Delphi หรือ Visual Basic ในราคานับหมื่นนับแสนแล้ว การเผยแพร่โปรแกรมและ Source Code โดยเสรีตามหลักของ Open Source ก็คงเป็นไปได้ยาก หากจะใช้โปรแกรมเหล่านี้อย่างละเมิดลิขสิทธิ์ ก็ไม่ทราบจะเกิดปัญหาในระยะยาวอย่างไรหรือไม่
และหากได้เครื่องมือพัฒนาโปรแกรมที่เป็นฟรีแวร์หรือ Open Source มาพัฒนาโปรแกรมโหราศาสตร์แบบ Open Source เข้าด้วยแล้ว ก็น่าจะเป็นการป้องกันปัญหา และทำให้โปรแกรมที่จะพัฒนามีความเป็น Open Source มากยิ่งขึ้นไปอีก
และแล้วผมก็ได้ค้นพบว่ามีเครื่องมือพัฒนาโปรแกรมที่เป็น Open Source ที่มีแนวโน้มว่าจะสามารถนำมาใช้ในการพัฒนาโปรแกรมแทน Delphi ที่ผมถนัดมาก่อนได้อย่างค่อนข้างแน่นอน นั่นคือ Lazarus ซึ่งมีเว็บไซต์เป็นทางการอยู่ที่ http://www.lazarus.freepascal.org/ และเปิดให้ดาวน์โหลดมาใช้งานได้ที่ http://sourceforge.net/project/showfiles.php?group_id=89339
เวอร์ชันล่าสุดที่เปิดให้ดาวน์โหลดได้ก่อนเขียนบทความนี้คือ 0.9.10 เหตุที่เลขเวอร์ชันยังเป็นจุดๆ ไม่เต็มหนึ่งสักทีก็เพราะว่ายังอยู่ในระหว่างการพัฒนา แต่ไม่ได้ใช้คำว่า Beta อย่างที่นิยมกัน เป้าหมายหลักคือการสร้างเครื่องมือพัฒนาโปรแกรมสำหรับ Windows และ Linux ที่มีความเข้ากันได้กับ Delphi และ Kylix ของบริษัท บอร์แลนด์ ที่มีชื่อเสียงมาก่อน
ในเว็บไซต์และที่ตัวโปรแกรมจะแสดงสัญลักษณ์รูปเสือดาวไว้ตลอด ไม่ทราบว่า ความหมายเดิมในภาษากรีกหรือภาษาอะไรก็ตามนี่คงจะแปลว่า เสือดาวหรืออย่างไร ชื่อ Lazarus นั้น ตามพจนานุกรมอิเลคทรอนิกส์ในเครื่องผมให้คำอธิบายไว้เจ็บปวดว่า “Lazarus (แลส-อะรัซ) n. แลส-อะรัซ คนขี้เรื้อนที่พระเยซูได้ชุบให้ฟื้นขึ้นจากหลุม, คนขี้เรื้อน, คนขอทาน” (บรื๋อ) ฟังดูไม่น่าจะเกี่ยวกับการพัฒนาโปรแกรมหรือมีความขลังอะไรเลย เรื่องนี้เว็บไซต์ของ Lazarus ได้ให้อธิบายไว้ว่า
One of the original projects that made an attempt to build a Delphi clone was Megido. However this effort died. Lazarus as you know was the biblical figure that was raised from the dead by Christ. Soooooo. The project is named Lazarus as it was started/raised from the death of Megido.
ใครเป็นคริสต์หรือพอจะรู้อะไรเกี่ยวกับชื่อนี้ช่วยอธิบายเพิ่มเติมหน่อยนะครับ เอาเป็นว่าทั้งผู้พัฒนาโปรแกรมที่สนใจและผู้ใช้ที่เป็น End User อย่าพึ่งตกใจกับคำว่าโรคเรื้อนในคำแปลภาษาไทยเลยครับ พระเยซูท่านชุบชีวิตตาคนนี้ขึ้นมาแล้วคงรักษาโรคเรื้อนให้ด้วยแน่ๆ ส่วนทำไมต้องมีรูปเสือดาวที่ยังหาคำอธิบายไม่พบครับ
เรื่องราวความเป็นมาอื่นๆ นั้น ขอให้ศึกษาจากเว็บไซต์ทางการของเขาเองนะครับ มาเข้าประเด็นอื่นกันต่อดีกว่าครับ
ความเข้ากันได้กับ Delphi
โดยตัวภาษาปาสคาลที่ใช้ใน Lazarus นั้น เหมือนกับที่ใช้ใน Delphi ทุกประการ แต่ปัญหากลับเป็นเรื่องรูปแบบของไฟล์ที่ใช้ในการบันทึก กล่าวคือ ใน Delphi นั้น เราจะออกแบบหน้าตาของโปรแกรม ซึ่งแบ่งเป็น Form และ Dialog Box ต่างๆ บันทึกไว้ในไฟล์ที่มีนามสกุลเป็น *.dfm (Delphi Form) ส่วน Source Code ที่จะใช้กำหนดการทำงานของโปแกรม จะบันทึกเป็น Unit ในไฟล์ที่นามสกุล *.pas และในแต่ละโปรแกรมที่สร้างขึ้นมานั้น ย่อมจะต้องมีหลายฟอร์มและหลายยูนิตรวมกัน ไฟล์ที่เป็นข้อมูลกลางว่าแต่ละโปรแกรมจะใช้ฟอร์มและยูนิตอะไรบ้างนั้น เรียกว่า Project บันทึกลงในไฟล์ที่นามสกุลเป็น *.dpr (Delphi Project) แต่ใน Lazarus นั้น บันทึกฟอร์มต่างๆ ไว้ในไฟล์ที่มีนามสกุลเป็น *.lfm (Lazarus Form) บันทึกยูนิตต่างๆ ไว้ในไฟล์ *.lpi (ไม่แน่ใจเรื่องคำเต็ม) และบันทึกโปรเจคท์ไว้ในไฟล์ *.lpr (Lazarus Project)
แน่นอนว่าคนที่เคยบันทึกโปรเจคท์ของโปรแกรมต่างๆ ไว้กับ Delphi ย่อมต้องการเครื่องมือที่จะนำ Source Code ที่มีอยู่เดิมนี้มาแปลงใช้กับ Lazarus โดยไม่ต้องเสียเวลา เพราะแต่ละโปรแกรมมี Source Code ยาวนับพันนับหมื่นบรรทัด
ข่าวดีคือผู้พัฒนา Lazarus ได้อุตส่าเตรียมเครื่องมือเช่นว่านั้นไว้ให้ในตัวโปรแกรมแล้ว แต่ข่าวร้ายคือจากการทดลองใช้ของผมเองนั้น ไม่เห็นมัน work ตรงไหน ถ้าใครไม่เชื่ออยากลองใช้ดูว่าทำไมแล้วละก็ อย่าลืมสำรองข้อมูลเดิมไว้ก่อนนะครับ ตรงนี้ขอไม่เล่าในรายละเอียด
ในการพยายามสร้างโปรแกรมขึ้นมาใหม่สองสามโปรแกรมในสไตล์ Lazarus อันได้แก่ ตัวอย่างการวาดและหมุนจานคำนวณ 360 องศา และตัวอย่างการใช้ Swiss Ephemeris ของ Robert Amlung นั้น ผมจึงต้องเสียเวลาค่อนข้างมากกับการก๊อปปี้จาก Delphi มายัง Lazarus แต่ก็นับว่าได้ผลพอคุ้มค่า แต่กรณีโปรแกรม Virgo ซึ่งมีฟอร์มไม่รู้กี่ฟอร์ม และมี Source Code เป็นหมื่นเป็นแสนบรรทัดแล้ว คงต้องชะลอไว้ก่อน
ขนาดของไฟล์ที่ได้
ประเด็นนี้จะเป็นเรื่องใหญ่แค่ไหนก็แล้วแต่ทัศนะของแต่ละท่าน คือ หลังจากเขียนโค้ดแล้วคอมไพล์โปรแกรมดู ปรากฏว่าไม่ว่าจะเป็นโปรแกรมเล็กน้อยจิ๊บจ้อยแค่ไหน ไฟล์ที่ได้จะมีขนาดใหญ่ประมาณ 5-6 เมกะไบต์ขึ้นไป อย่างเช่นโปรแกรม ตัวอย่างการวาดและหมุนจานคำนวณ 360 องศา ที่ผมคอมไพล์ด้วย Delphi นั้น มีขนาดเพียง 315 เคไบต์ แต่เมื่อคอมไพล์กับ Lazarus แล้ว มีขนาดถึง 5.97 เมกะไบต์ เมื่อบีบอัดเป็นไฟล์ zip แล้ว ยังมีขนาดถึง 1.76 เมกะไบต์ ใหญ่เกินกว่าจะบันทึกในแผ่นฟล้อปปี้ดิสก์ที่หลายคนยังนิยมใช้อยู่ หากเขียนโปรแกรมที่มีขนาดซับซ้อนกว่านี้ จะได้ขนาดไฟล์เพิ่มขึ้นเพียงใด และเป็นปัญหาต่อการแลกเปลี่ยนข้อมูลเพียงใด เป็นเรื่องน่าคิดเช่นกัน
ส่งท้าย
ยังมีอีกอย่างน้อยหนึ่งประเด็นที่ผมยังไม่ได้กล่าวถึง เพราะยังไม่มีเวลาทดสอบ คือ เรื่องของการเขียนโปรแกรมฐานข้อมูล อย่างไรก็ตาม หากพิจารณาถึงโครงสร้างที่ดีของภาษาปาสคาลแล้ว หากยังใช้ Delphi ที่ตัวจริงเวอร์ชันใหม่ๆ ที่ถูกลิขสิทธิ์ แล้วจะมีราคาค่าใช้จ่ายที่แสนแพง ขณะที่ Lazarus สามารถใช้งานได้ฟรี จึงนับว่าเป็นตัวเลือกใหม่ที่น่าศึกษาและจับตามองอย่างยิ่ง
เพิ่มเติม 11 พ.ย. 2548
ขณะนี้ ผมได้ทำตัวอย่างโปรแกรมสำหรับ Lazarus ให้ดาวน์โหลดแล้ว สองโปรแกรม คือ ตัวอย่างการใช้ Swiss Ephemeris ในการคำนวณสมผุสดาว กับ การวาดและหมุนจานคำนวณ 360 องศา ผู้สนใจ เชิญดาวน์โหลดได้ที่ http://www.rojn-info.biz/ ครับ
สินค้าที่เกี่ยวข้องจาก ร้านค้าออนไลน์