Archive for April 10th, 2008

Lambda และ Closures ใน C++0x

Thursday, April 10th, 2008

ในที่สุดสิ่งที่รอมานานกับภาษาแรกๆ ที่หัดเขียนโปรแกรมก็เป็นจริงซะที หลังจากที่มันพยายามทำตัวเป็น 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++ อยู่นะ)

CountryData, CityData ใน Mathematica 6

Thursday, April 10th, 2008

ใช้ Mathematica มาตั้งหลายปี (ห้าปีได้แล้วมั้ง? ถ้าเป็นแฟนก็คงกำลังอยู่ในช่วงคบใกล้เลิกพอดี จากระยะเวลา ….) เพิ่งจะรู้ว่าเวอร์ชันนี้มันมีของเล่นใหม่เยอะตอนตามอ่าน Wolfram Blog น่ะแหละ ของเล่นอื้อซ่าเลย

วันนี้ลองเข้าไปอ่านๆ ดู เจอของดีน่ะ ว่ามันมี CountryData กับ CityData ให้ใช้ด้วยแฮะ พอเรียกใช้แล้วมันจะติดต่อกับ server ของทาง Wolfram แล้ว update ข้อมูลใหม่ให้เราเองตามที่เราต้องการ

เจ๋งดีอ่ะ

แต่ว่าช้านิดแฮะ อย่างว่า สงสัยไม่ Net เรามันไม่ค่อยจะเร็วเท่าไหร่ ก็ข้อมูลมันเยอะ นี่ลองทำตามตัวอย่างดูหน่อย

CountryData["France", "Shape"]

แล้วก็รอชาตินึง (ก็พวกเล่นลงข้อมูลทีเดียวทั้งโลกนี่หว่า) ก็ได้ผลเป็นรูปร่างของประเทศฝรั่งเศส นอกจากนั้นก็ยังมี attribute ให้เล่นอีกหลายตัว เช่น Population หรือว่าข้อมูล GDP แต่ละปี

เสร็จแล้วเราก็ลองของไทยดูบ้าง… อืมม สิบปากว่าไม่เท่าตาเห็น ลองดูเองดีกว่า

mathematica1.png

เจ๋งแฮะ ทำให้ชักอยากจะกลับมาลองเล่น Mathematica 6 จริงๆ จังๆ ซะแล้ว (ตอนที่ 5 ออกนะ ไม่ค่อยมีความรู้สึกว่ามันต่างจาก 4 เท่าไหร่ พวก WOW factor แบบนี้ต่ำพอควร หรือว่าผมคิดไปเองก็ไม่รู้)

GNUstep 1.6, 1.8 LiveCD

Thursday, April 10th, 2008

อ่านจาก OSnews เรื่องข่าว 1.6 LiveCD ไม่ทันไรก็มีข่าว 1.8 LiveCD อีก

รู้สึกว่าช่วงนี้จะ active มากหน่อยนะเนี่ย …. เคยชอบมากเลย project นี้ แต่ว่าพอเปลี่ยนจาก Linux มาเป็น OS X แล้วก็ไม่ค่อยได้เล่นเท่าไหร่ รู้สึกว่าครั้งสุดท้ายที่ลองเล่นนี่ชาตินึงแล้วมากๆ

รู้สึกดีจัง กับ project ที่เราเคยชอบมากๆ … แต่ว่าด้วยอะไรหลายๆ อย่างทำให้ต้องเลิกเล่นไป แล้้วก็ไม่ได้ contribute อะไรเลย (แม้แต่ code ซักบรรทัด — เคยคิดว่าจะทำ app ไปลง GNUstep เหมือนกัน …​แต่ว่าไม่ล่ะ ตอนนี้อยากลองเขียนลง iPhone มากกว่า)

วันนี้กลับออฟฟิชเมื่อไหร่ จะลองเล่นดูครับ

April 2008
M T W T F S S
« Mar   May »
 123456
78910111213
14151617181920
21222324252627
282930