Graph Programming

จากที่ผ่านๆมาหลายบทความในช่วงนี้ ผู้เขียนได้เขียนแต่เรื่องที่ไม่ยากมากนัก คือไม่ต้องต้องมีการคำนวนซับซ้อนอะไรเท่าไหร่ เช่นการเชื่อมต่อกับฐานข้อมูล การส่งผ่านตัวแปรระหว่าง Class บน .NET อะไรแบบนี้ ซึ่งทำให้เราได้ห่างหายจากการวิเคราะห์โค้ดกันไปบ้างพอสมควร ในบทความนี้ ผู้เขียนจึงคิดขึ้นมาได้อย่างนึงว่า เราควรจะมีอะไรแรงๆมาขั้นบ้าง เพื่อความหลากหลายในบทความของเรา

พูดถึง Graph Programming ต้องย้อนกลับไปตั้งแต่ผู้เขียนยังเรียนอยู่มหาลัยฯ ปี 2 ซึ่งตอนนั้นผู้เขียนได้เรียนวิชา Data Structure and Algorithm ซึ่งในวิชานั้น ก็มีการสอนถึง Data Structure หลายๆตัว เช่น Queue, Stack, Linklistและก็รวมทั้ง Graph นี้ด้วย แต่สิ่งที่ต่างกันคือ ถ้าเป็น Queue, Stack หรือ Linklistอาจารย์เค้าจะเจาะเข้าไปให้เราดูโค้ด เอาไปใช้งาน แต่พอเป็น Graph กลับมีแค่การอธิบายทฤษฎี และการนำเอาไปใช้ ไม่ได้ลงโค้ด ผู้เขียนจึงได้ไปถามอาจารย์ท่านว่า ทำไมถึงไม่มีการสอนเชิงลึกเกี่ยวกับเรื่องนี้ ซึ่งอาจารย์ท่านก็ได้ตอบกลับมาว่า “เพราะแต่ละคน มีพื้นฐานไม่เท่ากันนะสิ ถึงแม้ว่าแต่ละคน จะเรียนมาเหมือนกัน แต่ในเมื่อสุดท้าย แต่ละคนมีพื้นฐานที่ไม่เท่ากันแล้ว จะสอนเรื่องให้ยากเกินไปเลยไม่ได้”

การเปลี่ยนพฤติกรรมของ Class ขณะ Runtime

ก่อนอื่นในคราวนี้ ผู้เขียนจะขอลองเปลี่ยนไปเขียนเป็น C# แทน เนื่องจากตัว IDE ของ Visual Studio นั้น สามารถออกแบบ GUI(Graphics User Interface) ได้ง่ายกว่า IDE หลายๆตัวของ java มาก โดยผู้เขียน จะพยายามไม่ใช้ความสามารถบางชนิด ที่ภาษาอื่นๆบางภาษาไม่มี เพื่อความสะดวกในการทำความเข้าใจร่วมกัน (คนอ่าน: ไอคนเขียน จะสลับไปๆมาๆทำไมว๊ะ!!! คนเขียน: สลับไปเถอะ โค้ดเหมือนกันจะตาย = =)

เมื่อพูดถึงการเขียน Class ซึ่งเป็นหัวใจหลักของการเขียนโปรแกรมแบบ OOP แล้ว ก็คงมีหลายๆคนรู้สึกว่า การจะสร้าง Class ใดๆขึ้นมานั้น ถึงแม้ว่าเราจะสามารถออกแบบให้ Class ของเราทำงานได้อย่างดีแค่ไหนแล้ว แต่สุดท้ายก็ยังไม่สามารถทำให้ยืดหยุ่นได้

Continue Reading…

ประสบการณ์ การใช้ openGL on C# (sharpGL)

ก่อนอื่นอยากเกริ่นก่อนว่า ก่อนหน้านี้ ผู้เขียนไม่เคยมีประสบการณ์เกี่ยวกะพวก Graphics Programming มาก่อนเลย ไม่ว่าจะ DirectX หรือ openGL จะใช้นิดๆ หน่อยๆ ก็แค่ GDI+ บน C# เพราะว่าใช้แค่วาดรูป อะไรนิดๆ หน่อยๆ ซึ่งถ้าเปรียบเทียบ GDI+ กับพวก openGL แล้ว ก็คงเหมือนใช้พวกโปรแกรม Paint กับ โปรแกรม 3 มิติ แบบพวก 3D Studio Max

ทีนี้ปัญหาคือ GDI+ ไม่สามารถตอบสนองการวาดแบบ Realtime ได้ คือถ้าพูดกันให้เข้าใจแบบง่ายๆ GDI+ นั้น จะทำงานได้ช้ากว่าพวก openGL ซึ่งทำให้พอเราต้องการจะมี Canvas สำหรับ Graphic Animation อะไรซักอย่าง หากใช้ GDI+ แล้ว ก็จะพบว่า Animation ของเราจะกระตุกมากๆ จนแสดงผลไม่รู้เรื่อง สุดท้าย เราเลยต้องเดินทางเข้าสู่อะไรใหม่ๆกันแล้วละ 🙂 Continue Reading…

แนะนำภาษาต่างๆในการเขียนโปรแกรม

 
ก่อนที่เราจะเริ่มศึกษาการเขียนโปรแกรมนั้นเราควรจะรู้จักภาษาโปรแกรมมิ่งต่างๆก่อนอย่างคร่าวๆเพื่อที่จะได้เลือกแนวทางศึกษาที่ถูกต้อง และเหมาะกับตัวเอง
 
ภาษา C
ถูกพัฒนามานานมาก เป็นภาษาแรกที่หลายๆคนศึกษา เพราะมีโครงสร้างที่ง่ายแต่ไม่เหมาะในการเขียนโปรแกรมที่ซับซ้อนมากๆ รวมทั้งเขียน GUI (GraphicUser Interface) ยากมาก เพราะไม่มีเครื่องมือพัฒนาที่ใช้ง่าย ข้อดีคือ ทำงานได้เร็วและสามารถเขียนลงบน Microcontroller ได้
 
ดาวน์โหลด IDE ได้ที่ http://www.bloodshed.net/devcpp.html

Continue Reading…

Variable

ตัวแปร เป็นสิ่งที่สำคัญมากในการเขียนโปรแกรม เพราะส่วนใหญ่แล้วเราจะไม่ได้มีแต่ค่าคงที่ เพราะโปรแกรมนั้นจะไม่มีความยืดหยุ่น ทำอะไรไม่ได้ ซึ่งในบทนี้ เราจะมาเรียนรู้ถึงตัวแปร และวิธีการใช้กันดู Continue Reading…