ในที่สุดสิ่งที่รอมานานกับภาษาแรกๆ ที่หัดเขียนโปรแกรมก็เป็นจริงซะที หลังจากที่มันพยายามทำตัวเป็น Functional language แบบห่วยๆ (ลูกผีลูกคนเกินไป) มานานแล้วตั้งแต่ STL ….
C++ and Lambda Function Tradeoff: Clutter vs. Expressiveness (จาก Beautiful Code)
ช่วงนี้ภาษาหลายภาษาเริ่ม propose การเอาความสามารถของภาษาตระกูล Functional (พวก Lisp, Haskell) เช่น Lambda expression เข้ามาเป็นส่วนหนึ่งของภาษามากขึ้น ซึ่งหลายภาษาทำแล้วก็ดูดีขึ้น เลยทำให้เรามีความคาดหวังสูงพอควรกับภาษา C++0x ล่ะมั้ง
แต่ว่าพออ่านจาก ISO C++ Standards Meeting report …. โอ้ว แม่เจ้า ทำไมมัน clutter ได้ขนาดนั้น แบบนี้ไม่ค่อยจะปลื้มเลยนะเนี่ย
ผมคิดมาตั้งนานแล้ว ว่าข้อเสียที่ใหญ่ที่สุดของ C++ มันคือสิ่งที่มันพยายามให้เป็นข้อดีที่สุดน่ะแหละ คือการเป็น multi-paradigm language โดยที่ไม่มี paradigm ไหน dominant เท่าไหร่
ผลที่ตามมาน่ะเหรอครับ? ทุกวันนี้หลายคนก็ยังเขียน C++ แบบ C/Pascal หลายคนก็ยังเขียน OOP กับ C++ ไม่เป็น OOP ฯลฯ ไม่พอ ตอนที่ STL เริ่มจะมีความสามารถแบบ Functional ตลอดจนการมี Function Object และฟีเจอร์อื่นๆ อีกมากมาย ทำให้มีผลอย่างหนึ่งคือ การเขียนโปรแกรมเพื่อทำงานอย่างหนึ่งใน C++ เนี่ย มันทำได้หลายแบบเกินไป…. ถ้าเป็นหลายแบบใน paradigm เดียวกันคงจะไม่เป็นไรเท่าไหร่ แต่ว่านี่มันหลายแบบในหลาย paradigm
แบบนี้สับสนตายชัก และนับวัน C++ ก็จะมี identity crisis มากขึ้นทั้งที่มันไม่ควรเป็นแบบนั้น
เสียดาย…เสียดาย
เท่าที่ดูผ่านๆ จากตัวอย่าง ถ้าให้ผมเลือกระหว่างการใช้ Lambda expression ใน C++0x กับเลือกใช้ Function object ผมคงจะเลือกอย่างหลัง …. เพราะว่ามันยังอ่านง่ายกว่า code มันสวยกว่า (สะอาดกว่า) ทั้งๆ ที่ใจชอบ Lambda มากกว่า (ใช้มันทุกภาษา…. ถ้ามีให้ใช้ …และแล้วก็คงจะเจอข้อยกเว้นจนได้ — ถ้าวันนั้นยังเขียน C++ อยู่นะ)
ใช้ Mathematica มาตั้งหลายปี (ห้าปีได้แล้วมั้ง? ถ้าเป็นแฟนก็คงกำลังอยู่ในช่วงคบใกล้เลิกพอดี จากระยะเวลา ….) เพิ่งจะรู้ว่าเวอร์ชันนี้มันมีของเล่นใหม่เยอะตอนตามอ่าน Wolfram Blog น่ะแหละ ของเล่นอื้อซ่าเลย
วันนี้ลองเข้าไปอ่านๆ ดู เจอของดีน่ะ ว่ามันมี CountryData กับ CityData ให้ใช้ด้วยแฮะ พอเรียกใช้แล้วมันจะติดต่อกับ server ของทาง Wolfram แล้ว update ข้อมูลใหม่ให้เราเองตามที่เราต้องการ
เจ๋งดีอ่ะ
แต่ว่าช้านิดแฮะ อย่างว่า สงสัยไม่ Net เรามันไม่ค่อยจะเร็วเท่าไหร่ ก็ข้อมูลมันเยอะ นี่ลองทำตามตัวอย่างดูหน่อย
CountryData["France", "Shape"]
แล้วก็รอชาตินึง (ก็พวกเล่นลงข้อมูลทีเดียวทั้งโลกนี่หว่า) ก็ได้ผลเป็นรูปร่างของประเทศฝรั่งเศส นอกจากนั้นก็ยังมี attribute ให้เล่นอีกหลายตัว เช่น Population หรือว่าข้อมูล GDP แต่ละปี
เสร็จแล้วเราก็ลองของไทยดูบ้าง… อืมม สิบปากว่าไม่เท่าตาเห็น ลองดูเองดีกว่า
![]() |
เจ๋งแฮะ ทำให้ชักอยากจะกลับมาลองเล่น Mathematica 6 จริงๆ จังๆ ซะแล้ว (ตอนที่ 5 ออกนะ ไม่ค่อยมีความรู้สึกว่ามันต่างจาก 4 เท่าไหร่ พวก WOW factor แบบนี้ต่ำพอควร หรือว่าผมคิดไปเองก็ไม่รู้)
อ่านจาก OSnews เรื่องข่าว 1.6 LiveCD ไม่ทันไรก็มีข่าว 1.8 LiveCD อีก
รู้สึกว่าช่วงนี้จะ active มากหน่อยนะเนี่ย …. เคยชอบมากเลย project นี้ แต่ว่าพอเปลี่ยนจาก Linux มาเป็น OS X แล้วก็ไม่ค่อยได้เล่นเท่าไหร่ รู้สึกว่าครั้งสุดท้ายที่ลองเล่นนี่ชาตินึงแล้วมากๆ
รู้สึกดีจัง กับ project ที่เราเคยชอบมากๆ … แต่ว่าด้วยอะไรหลายๆ อย่างทำให้ต้องเลิกเล่นไป แล้้วก็ไม่ได้ contribute อะไรเลย (แม้แต่ code ซักบรรทัด — เคยคิดว่าจะทำ app ไปลง GNUstep เหมือนกัน …แต่ว่าไม่ล่ะ ตอนนี้อยากลองเขียนลง iPhone มากกว่า)
วันนี้กลับออฟฟิชเมื่อไหร่ จะลองเล่นดูครับ


Recent Comments