ComBioLaw.De » Blog » เขียนโปรแกรม » B => C => C++ => D
B => C => C++ => D
เมื่อต้นปีนี้มีภาษาเขียนโปรแกรมเกิดขึ้นอีกหนึ่งภาษา นั่นคือภาษา D ชื่อของภาษาก็พอจะบอกได้ว่า เป็นภาษาที่มีรากมาจากภาษา C อีกที ข่าวการออกมาของภาษา D ได้ผ่านหูผ่านตาผมมาบ้าง และผมก็เห็นตามเวบไซท์บางแห่งก็พูดถึงภาษา D กันบ้างแล้ว แต่ก็ไม่ได้สนใจอะไรเป็นพิเศษ เพราะผมเองก็เหมือนกับคนเขียนโปรแกรมส่วนใหญ่ ที่พอรู้จักภาษาเขียนโปรแกรมหลาย ๆ ภาษาเข้า ก็เริ่มที่จะขี้เกียจศึกษาภาษาอื่นเพิ่มเติม แต่เมื่อไม่นานมานี้นิตยสาร Ix ซึ่งเป็นนิตยสารภาษาเยอรมันที่ผมติดตามอ่าน ได้นำภาษา D มาเป็นเรื่องขึ้นปก อ่ะ ! แสดงว่ามันต้องมีอะไร ถึงได้เป็นเรื่องขึ้นปก ก็เลยซื้อมาอ่าน ปรากฏว่า ... |
|
|
ภาษา D เป็นภาษาที่น่าสนใจจริง ๆ ด้วย เพราะแนวทางและจุดมุ่งหมายของการพัฒนาภาษา D นั้นต่างจากภาษาที่เพิ่งคลอดหลังยุค 1990 เช่น Java, Ruby, Python, C#, PHP etc.. ที่จะเน้นการเขียน Application ที่ง่าย และ Portability ดังนั้นภาษาเหล่านี้จะออกมาในรูปแบบของภาษา Script หรือไม่ก็ทำงานบน Visual Machine
แต่เป้าหมายของภาษา D ต่างออกไป โดยภาษา D นั้นจะเน้นไปที่การเป็นภาษาที่จะมารับช่วงต่อจากภาษา C ดังนั้น ภาษา D จึงเป็นภาษาที่ต้องคอมไพล์ สามารถนำใช้งานประเภท System Programming และ Performance Programming ได้ และทำงานร่วมกับโค้ดภาษา C ที่มีอยู่แล้วได้ แต่น่าเสียดายที่ไม่ค่อยลงรอยกับ C++ ไม่ใช่เพราะว่าคนสร้างภาษา D คือ Walter Bright ไม่ถูกกับ Bjarne Stroustrup นะครับ แต่เพราะว่าโครงสร้าง Object ของ C++ กับ D มันต่างกัน มันเลยใช้งานด้วยกันไม่ได้ แน่นอนว่าภาษาเขียนโปรแกรม OOP สมัยใหม่อย่าง Java และ C# ต้องมีอิทธิพลในการออกแบบภาษา D ดังจะเห็นได้จาก Garbage Collector, import statement, interface statement, first class arrays, associative arrays, dynamic arrays, array slicing, nested functions, inner classes, regular expression, foreach loop, unit test และอื่น ๆ อีกมากมาย โดยไม่ทิ้งคอนเซพท์บางอย่างของ C++ ได้แก่ Template Programming และ Multiple Inheritance และได้เพิ่มคอนเซพท์ที่ไม่ค่อยมีในภาษาอื่นอย่าง design by contract เข้ามาด้วย นอกจากนี้ D ยังกำจัดจุดอ่อนที่น่ารำคาญในภาษา C อย่าง Preprocessor และ .h file heading ไปอีกด้วย แต่ผมก็ยังงง ๆ อยู่ว่าทำไม Pointer มันยังอยู่ เพราะมันเป็นสาเหตุหนึ่ง ที่ทำให้เกิดข้อผิดพลาดในการเขียนโปรแกรมค่อนข้างบ่อย แม้ว่า D จะมี automatic memory management ก็ตาม แต่ตัวภาษายังอนุญาติให้คนเขียนโปรแกรม บริหารหน่วยความจำได้เองด้วย ด้วยคุณสมบัติเหล่านี้ทำให้หลาย ๆ คนเชื่อว่า ภาษา D น่าจะนำมาใช้แทนหรือต่อยอดภาษา C ได้ โดยไม่มีปัญหา แถมยังเขียนโปรแกรมลื่นขึ้นอีก โดยตัวโครงสร้างของภาษาสำหรับผมแล้ว ภาษา D เป็นภาษาที่สุดยอดมาก เพราะเป็นภาษาที่มาทีหลัง เลยไปเอาอะไรดี ๆ ของชาวบ้านมารวมไว้ที่ตัวเองหมด แต่ลำพังโครงสร้างอย่างเดียว คงไม่สามารถพูดได้เต็มปากว่าเป็นภาษาที่น่านำมาใช้งาน สิ่งที่ภาษา D ยังขาดอยู่ ซึ่งก็เป็นเรื่องปกติของภาษาเกิดใหม่ทั่วไปคือ libraries แม้ว่า D จะมี library มาตรฐานอย่าง Phobos ติดตัวมาด้วย แถมยังใช้ libraries ที่เขียนด้วยภาษา C ได้อีก แต่ก็ใช่ว่าจะนำมาใช้งานได้ทันที ดังนั้นในส่วนนี้จึงถือว่าเป็นจุดอ่อนสำคัญของภาษา D
สิ่งที่ต้องคำนึงถึงอีกอย่างคือ การสนับสนุนจาก Community และองค์กรต่าง ๆ ซึ่งตอนนี้เรายังไม่สามารถตัดสินอะไรได้ สิ่งที่ต้องรอดูคือ เสียงตอบรับจากองค์กร หากในอีกสองสามปีข้างหน้า ยังไม่มีองค์กรไหนออกมาสนับสนุนภาษา D อย่างชัดเจน หรือยังไม่มีโปแกรมดี ๆ ที่เขียนด้วยภาษา D ให้ใช้งาน ภาษา D อาจเป็นอีกภาษาหนึ่งทีถูกลืม แต่จากข้อมูลของ TCPI ผมคิดว่าภาษา D น่าจะเป็นภาษาที่มีอนาคตอยู่ หากยังไม่ลงมือเขียนโปรแกรมก็คงไม่สามารถพูดได้ว่าภาษานั้นดี หรือไม่ดีอย่างไร ดังนั้นผมเลยลอง ๆ เขียนโปรแกรมเล็ก ๆ น้อย ๆ ด้วยภาษา D ดู ซึ่งก็คงเขียนอะไรได้ไม่มาก นอกจากเรื่องของการคำนวน เพราะยังไม่มี libraries ให้ใช้งาน จากการลองเขียน โดยส่วนตัวผมว่าภาษา D เป็นภาษาที่ดีใช้ได้เลย ผมมีความประทับใจในภาษา D หลายอย่าง เช่น
โดยรวมแล้วภาษา D เป็นภาษาที่ดีมากภาษาหนึ่ง นำมาใช้แทนภาษา C ได้อย่างไม่มีปัญหา ความรู็สึกในตอนเขียน ง่ายกว่า C มาก ง่ายกว่า Java ในบางเรื่อง และยากกว่าในบางเรื่อง ที่แน่ ๆ โปรแกรมที่ได้ทำงานเร็วมาก (ดูตารางเปรียบเทียบ ) การนำภาษา D มาใช้เป็นภาษาหลัก หรือเปลี่ยนจากภาษาอื่นมาเป็นภาษา D เป็นเรื่องที่ต้องคิดหนัก เพราะ libraries มันไม่พร้อมนี่แหละ (แต่เดี๋ยว tango กับ mango ตัวเต็มออกมาอาจจะดีขึ้น) อีกทั้ง System Programming และ Performance Programming ก็ลดลงความสำคัญลงไปมากในปัจจุบัน แต่สิ่งที่เข้ามาแทนจะเป็นการเขียนโปรแกรมเพื่องานธุรกรรม บริหารข้อมูลข่าวสาร และ Web Programming ซึ่งการเขียนโปรแกรมลักษณะนี้ต้องการภาษาที่ใช้งานง่าย และ Dynamic กว่าที่ภาษา D เป็นอยู่ ดังนั้น ผมคิดว่าภาษา D อาจถูกนำไปใช้งานในส่วนที่ C และ C++ ทำหน้าที่อยู่ในขณะนี้ ซึ่งก็ตรงกับความตั้งใจของ Walter Bright แต่การกินส่วนแบ่งเข้าไปในส่วนของภาษาเขียนโปรแกรมอื่น ๆ ผมคิดว่ามีความเป็นไปได้น้อย แต่ก็ใช่ว่าจะเป็นไปไม่ได้เลย |
|
01 Jun 07 | by | tags เขียนโปรแกรม ไอที D
bow_der_kleine
พอดีไม่เคยศึกษา Objective-C มาก่อนครับ ก็เลยยังเปรียบเทียบไม่ได้ หากมีเวลาจะลองศึกษาและเปรียบเทียบดูครับ :D |
bow_der_kleine
จริง ๆ PHP เป็นภาษาที่ผมเขียนนับเป็นจำนวนบรรทัดมากที่สุดเหมือนกันครับ มันเป็นภาษาที่มีข้อดีเยอะอยู่ โดยเฉพาะหาเซิร์พเวอร์ง่าย แต่ผมไม่ค่อยชอบมันเท่าไร เพราะมันไม่ค่อยเป็นระเบียบ เวลาผมเขียนเรื่องภาษาเขียนโปรแกรมทีไร ก็จะมีคนพูดถึง PHP ทุกที แสดงว่า PHP เป็นภาษาที่ได้รับความนิยมมาก |
Bundit Boonkhao
ผมว่าผมเคยเห็นที่ไหนมาก่อนนะครับ Digital Mars เนี่ย รู้สึกว่าเค้าทำ compilers มาหลายตัว ไม่รู้ว่าข้อมูลถูกต้องหรือป่าวนะครับ เพราะว่าเคยเห็นชื่อนี้ประมาณ เกือบ ห้าหกปีที่ผ่านมาแล้ว ผมไม่ใช่ programmer หรอกครับแต่สนใจการเขียน compiler ครับ พอมีภาษาใหม่ก็เลยสนใจ |
bow_der_kleine
Bundit Boonkhao : ใช่ครับ จริง ๆ Walter Bright สร้าง compiler มาหลายตัวแล้ว ส่วนมากจะเน้น Performance ของโปรแกรมที่ได้ ที่เขาสร้างไว้ก็มีทั้ง C, C++ (Zortech C++ ที่เขาอ้างว่าเป็น C++ Compiler ตัวแรก) , Java (Visual Java Tools ที่เขาอ้างว่าเป็น Java Compiler ที่เร็วที่สุดในขณะนั้น) |
มีบางคนคาดคะเนว่า จำนวนภาษาเขียนโปรแกรมบนโลกนี้ อาจมีมากกว่าจำนวนภาษาธรรมชาติ ที่มนุษย์ใช้ในชีวิตประจำวันด้วยซ้ำ เรื่องนี้เห็นท่าจะจริง เพราะจนถึงทุกวันนี้ก็ยังมีภาษาเขียนโปรแกรมใหม่ ๆ ออกมาเรื่อย ๆ ผมก็ลองมานั่งตรองดู จริง ๆ ก็ไม่ใช่เรื่องแปลก เพราะภาษาเขียนโปรแกรมที่ออกมาใหม่ ก็ใช่ว่าจะใหม่ไปหมดเสียทีเดียว ส่วนมากก็รับเอาแนวคิดของภาษาที่มีอยู่แล้วก่อนหน้ามาใช้ ซึ่งมันก็คล้าย ๆ วิวัฒนาการของภาษาธรรมชาติอยู่เหมือนกัน


เชกูวารา
คิคิ...นายโบว์ กลัวโดนยุบบล็อก ครับพี่น้อง ....(แซวเล่น :D..)
01 Jun 07