Unrelated stuffs, of things of my interest


OpenBeOS เปลี่ยนชื่อเป็น Haiku แล้ว
quick note: BeOS เป็นระบบปฏิบัติการตัวหนึ่งที่นิยมพอสมควรในหมู่คนทำงานด้านกราฟิก แต่ตอนนี้เลิกพัฒนาไปแล้ว และตัวบริษัท BeOS ก็ถูกบริษัท Palm Source ที่ทำ PalmOS ซื้อไป. Haiku เป็นหนึ่งในโครงการหลายๆ อัน ที่พัฒนา BeOS ต่อ

—-

Eclipse 3.0 จะออกแล้ว
quick note: ภายในวันที่ 30 นี้ Eclipse เป็น Java IDE ที่เป็นที่นิยมมาก เริ่มพัฒนาโดย IBM ตอนนี้เป็นโอเพนซอร์ส มีปลั๊กอินดีๆ เพียบ ช่วยให้งานพัฒนาง่ายขึ้น นอกจาก Java แล้ว ก็ยังใช้งานกับภาษาอื่นๆ ได้ด้วย (ตามปลั๊กอิน) — ‘คู่แข่ง’ ของ Eclipse ก็คงจะเป็น NetBeans ซึ่งเป็นโครงการโอเพนซอร์สเหมือนกัน จาก Sun — Eclipse จะเป็นที่นิยมกว่า เนื่องจากมันเร็ว (ใช้ native code/widget หลายๆ ส่วน). แต่ถ้าพูดถึงการดีบัก หรือการออกแบบ GUI แล้ว NetBeans ดีกว่า (ได้รางวัลมาแล้วหลายรางวัล)

—-

Introduction to Windows Driver Foundation
quick note:โมเดลการพัฒนาดีไวซ์ไดรเวอร์ใหม่ จากไมโครซอฟต์ ยังไม่ได้อ่านรายละเอียด แต่เท่าที่ดูคร่าวๆ หลักๆ น่าจะเป็นการแยก kernel mode, user mode และส่วนอื่นๆ ออกจากกันอย่างชัดเจน เพื่อให้การพัฒนาแต่ละส่วนไม่กระทบกัน — ซึ่งจะลดงานทดสอบลงไปได้เยอะ

ถ้าพูดถึงคอนเซปต์โดยรวมแล้ว ในระดับที่สูงขึ้นไปอีก ก็อาจจะออกทำนอง SNAP ของ SciTech ได้ อันนั้นคือ แยกซอฟต์แวร์ส่วนที่ติดต่อกับระบบปฏิบัติการ ออกจากส่วนที่ติดต่อกับฮาร์ดแวร์

ถ้าทำทั้งหมดนี้ ก็คือเราจะได้ layer (ชั้น) ต่างๆ ออกมาเพียบเลย โดยแต่ละ layer ก็จะมี interface ที่ชัดเจน สำหรับการคุยกับอีก layer
– ข้อดีก็คือ จะทำให้การพัฒนาไดรเวอร์เร็วขึ้น คุณภาพดีขึ้น
(คือทดสอบได้ครอบคลุมขึ้น เนื่องจากมีจำนวนคู่ที่จะต้องทดสอบน้อยลง — เช่น 4 ฮาร์ดแวร์ (hw), 3 ระบบปฏิบัติการ (os) ถ้าตามโมเดล hw-driver-os ก็ต้องการ ไดรเวอร์ 12 ตัว (4×3) ก็ต้องทดสอบทั้ง 12 ตัว. แต่ถ้าเป็น hw-driverHW-driverOS-os ก็จะต้องการแค่ 7 ตัว (4+3) — ไปดูรูปได้ที่เวบของ SciTech — แบบนี้ก็จะลดงานเขียน, งานทดสอบลงไป)
– ข้อเสียที่อาจจะเป็นไปได้ ก็คือ มันจะทำให้มี overhead เพิ่มขึ้นรึเปล่า?

คำว่า overhead มักจะมาคู่กับคำว่า layer
อย่างคนที่บอกว่า Java ช้า บางคนว่า เพราะว่า Java มัน ‘overengineered’
คือออกแบบให้ modular มากเกินไป จนมีไม่รู้กี่ layer/interface
นอกจากจะทำให้รันช้าแล้ว ยังทำให้นักพัฒนาปวดหัว เพราะต้องมาเรียนรู้ interface ต่างๆ พวกนี้
ซึ่งพอยิ่งเยอะ ก็ยิ่งทำให้เรียนรู้ได้ไม่หมด ไม่ชำนาญ โค้ดที่ออกมาก็เลยห่วยๆ ยิ่งทำให้โปรแกรมช้าไปอีก

แต่จริงมันไม่น่าเกี่ยวกันมากนัก เพราะ layer/interface ต่างๆ เป็นแค่ข้อกำหนด ไม่ใช่ตัว implementation
ถ้ามีอะไรช้า ก็คือพัฒนาไม่ดีเอง
แต่ก็เป็นไปได้ที่ layer/interface ออกแบบมาห่วยมากๆ จนกระทั่งไม่สามารถ implement ให้ดีได้ .. จบกัน -_-“


Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.