ปัญหา ความเคยชิน “ก๊อปโค๊ดมาแก้” #2

สืบเนื่องจาก entry ที่แล้ว

ทำไมรู้สึกว่านับวันยิ่งเจอกรณีที่ confirm ความรู้สึกแย่ๆ กับเรื่องนี้ก็ไม่รู้ … แล้วคนที่ทำให้เราต้องมาหงุดหงิดกับเรื่องแบบนี้ก็นะ ทำไมถึงไม่พัฒนาอะไรเลยก็ไม่รู้

แต่วันนี้หายหงุดหงิดแล้วล่ะ ปลงแทนดีกว่า ….. ว่าแล้วก็ไปถ่ายรูปเล่นดีกว่า ผ่อนคลาย คลายเครียดกันดีกว่า

อ่อ ถ้าน้องๆ เข้าใจ แล้วมานั่งคิดอะไรกับมันหน่อย นั่งวางแผน นั่งคิดและวาดความสัมพันธ์ของสิ่งต่างๆ เอาเรื่องพื้นฐานทั้งหมดให้มันเวิร์คก่อน แล้วค่อยมานั่งดูเรื่องเทคนิคว่าจะเอาอะไรมาใช้ แล้วค่อยๆ เอามาประกอบร่าง มันจะง่ายมาก เรียกว่าไม่นานก็จะเรียบร้อย

แต่ว่าถ้าทำกลับกัน คือ ไปทำตามเทคนิคเฉพาะเรื่องก่อน แล้วค่อยพยายามแก้ไขพื้นฐานให้รองรับสิ่งที่ตัวเองต้องการทีหลัง มันจะยากกว่ากันมาก … แต่ว่ามันจะเหมือนกับว่า “ได้ผลเร็ว” เพราะว่าสิ่งที่ทำให้ได้ผลเฉพาะอย่าง และเห็นผลเฉพาะอย่างเนี่ย มันคือเรื่องเทคนิค

แต่นั่นก็เลยทำให้ทุกอย่างยากขึ้น และคุณต้องแก้ไข Model พื้่นฐานของระบบ ในลักษณะ Hack หรือ Workaround มากขึ้น และถึงจุดหนึ่งมันจะยิ่งทำให้ทุกอย่างมันซับซ้อนมากขึ้น และการนำเอาเทคนิคอื่นๆ เข้ามาเพื่อบรรลุวัตถุประสงค์อื่นๆ ในงาน มันจะยากขึ้น และพบปัญหามากขึ้น และจุดนี้เองที่น้องๆ มักจะเริ่มเจอปัญหาชัดๆ และมักบอกว่า

เอาไอ้นี่มาใช้แล้วมีปัญหาครับ/ค่ะ

ซึ่งจริงๆ ปัญหาที่แท้จริงคือ พวกน้องไม่ได้เริ่มจากพื้นฐานตั้งแต่แรกน่ะครับ คือ ไม่ได้วางหรือคิดระบบตั้งแต่พื้นฐาน พอจะทำอะไรก็เลยยากไปหมด และมีปัญหาโผล่มาได้ทุกที่ เพราะว่ามันเป็นการทำโปรเจคจาก “นอกเข้าใน” ไม่ใช่การพัฒนาจาก “แก่น” ของระบบเลย

ดังนั้นนะครับ น้องๆ ช่วยดูพื้นฐานให้ดีนะครับ สิ่งที่ผมเห็นน้องๆ แทบทุกคนพลาดง่ายๆ ก็คือ การที่มองข้ามพื้นฐาน ไม่ให้เวลาและความสำคัญกับมัน แต่ว่าข้ามไปที่เทคนิคเลยเนี่ยแหละครับ

ปัญหา ความเคยชิน “ก๊อปโค๊ดมาแก้”

ว่าจะไม่เขียนเรื่องนี้แล้ว แต่ว่าเขียนหน่อยก็ดี จากเด็ก ICT ที่ทำโปรเจคกับผมเอง ขอยก conversation มาทั้งหมดกันแล้ว

rp: ./configure: งานเป็นไงมั่งน้อง
IKE::: ก้อกำลังปั่นค่ะ
rp: ./configure: เหอๆ
IKE::: ได้ พี่คนหนึ่งช่วยสอน
rp: ./configure: ปั้นเหน่งป่ะ?
rp: ./configure: ใช่ @punneng ใน twitter หรือเปล่า
IKE::: ได้ข่าวว่ารู้จักกะอาจารย์ด้วย
IKE::: ช่ายคร๊าา
rp: ./configure: อ่อ
IKE::: พี่เค้าสอน แบบว่ายาวนานมาก
IKE::: วัน ละ 5hr ได้
IKE::: เอากาน แบบว่า รื้องานทำใหม่กานเลย
rp: ./configure: แล้วดีขึ้นมั้ย
IKE::: ไม่แงะcode เก่าแบบไม่เข้าใจ เร่ิมทำใหม่เลยน้อง ประมาณนั้น
IKE::: ดีขี้น มากมายอะคร่ะ
IKE::: เข้าใจ ตั้งแต่แรกเลย
rp: ./configure: ได้หมอนี่สอน ค่อยยังชั่วหน่อย
IKE::: รู้งี้ รู้จักพี่เค้า แต่แรกดีกว่า
rp: ./configure: เฮ้อ ก็พวกคุณมันเล่นไม่ทำความเข้าใจอะไรเลยนี่หว่า
IKE::: งานคงออกมาหรูกว่านี้เยอะ
rp: ./configure: ก็พวกคุณเล่นไม่พยายามทำความเข้าใจอะไรจริงๆ จังๆ นี่หว่า …. เล่นลอกโค้ดๆ แล้วก็มาพยายามแก้ๆ กันอย่างเดียว
IKE::: ช่ายๆๆ
IKE::: เปลี่ยนแนวคิดใหม่ด้วย
IKE::: พี่เค้า สอน ดีมากเลย สอน ให้คิดแบบที่ควรจะเป็น
rp: ./configure: ก็ดีแล้ว
rp: ./configure: ปัญหาของพวกคุณ (และเด็กทุกคนที่รู้จัก) คือ ไม่ทำความเข้าใจ ไม่พยายามทำความเข้าใจ และปฏิเสธที่จะทำความเข้าใจ ใน “แนวคิด” ใน “วิธีคิด” และใน “คอนเซปท์” ทุกคนพยายามลัดไปที่โค้ดหมด
rp: ./configure: ลอกโค้ด เอาโค้ด รันได้ แก้โน่นนี่ ปะๆๆ มันเข้าไป
rp: ./configure: อะไรแบบนั้น
rp: ./configure: ก็ดี ได้เริ่มคิดใหม่
IKE::: ค่ะ ยอมรับผิดแต่โดยดี
rp: ./configure: ดีกว่าไม่ได้เลย
IKE::: แต่พี่เค้าสอน ทุ่มเท มากอะค่ะ
IKE::: เดี๋ยววัน อาทิต นี้ ก้อ ไปให้เค้าสอน อีก
IKE::: พี่เค้าแบบว่า ไม่เน้น งานเสร็จ แต่ว่าเน้น เข้าใจในสิ่งที่ทำมากกว่า

อยากจะกราบขอบคุณ @punneng มากๆ เลย แต่คงไม่ได้เจอตัวจริงๆ กันซะที ก็เลยทำมันซะที่นี่น่ะแหละ แล้วก็อยากจะฝากสิ่งที่ผมคุยกับน้อง IKE ให้เป็นอุทาหรณ์กับน้องคนอื่นๆ ด้วยนะครับ

ว่า “อย่าลัดไปที่ coding” นะครับ มันไม่ค่อยจะช่วยอะไรคุณหรอก ถ้า paradigm ของความคิดมันเหมือนๆ เดิมที่คุณคุ้ยเคยมา ก็ดีไป แต่ว่าถ้ามันไม่ใช่แบบนั้น มันจะแย่เอาง่ายๆ และถ้ามันเป็นการแก้ไขง่ายๆ เล็กๆ น้อยๆ ก็อาจจะโอเค แต่ว่าถ้ามันเป็นเรื่องของการพัฒนาโปรแกรมขนาดใหญ่กว่านั้นขึ้นมาเมื่อไหร่เนี่ย ถ้าไม่กลับไปที่พื้นฐาน (back to basic) จะแย่เอาง่ายๆ เพราะว่ามันอาจจะทำให้อะไรหลายๆ อย่างแย่ในระยะยาวได้ง่ายๆ เลยทีเดียว

rp: ./configure: ปัญหาของพวกคุณ (และเด็กทุกคนที่รู้จัก) คือ ไม่ทำความเข้าใจ ไม่พยายามทำความเข้าใจ และปฏิเสธที่จะทำความเข้าใจ ใน “แนวคิด” ใน “วิธีคิด” และใน “คอนเซปท์” ทุกคนพยายามลัดไปที่โค้ดหมด
rp: ./configure: ลอกโค้ด เอาโค้ด รันได้ แก้โน่นนี่ ปะๆๆ มันเข้าไป

จริงอยู่นะครับ การเริ่มต้นแบบนั้นมันทำให้เรา “เหมือนจะ” สร้าง application ที่เป็นรูปเป็นร่างขึ้นมาได้รวดเร็วกว่า แต่ว่ามันจะทำร้ายเราในระยะยาวนะครับ เมื่อเวลาที่เราต้องเพิ่มโน่นเพิ่มนี่ แก้โน่นแก้นี่ ฯลฯ ซึ่งจะต้องทำมันอยู่แล้ว …

จริงๆ แล้วด้วยความสะดวกของเครื่องมือสมัยนี้ (ยกตัวอย่างเช่น bootstrapping method ต่างๆ ใน framework สมัยใหม่ ที่สร้างโครงของโปรแกรมพร้อมใช้งานให้เราเลย หรือว่าพวก migration tools และ version control ต่างๆ) มันช่วยให้เราทำงานขึ้น application ได้เร็วมากๆ อยู่แล้ว ดังนั้นเราควรใช้เวลากับการออกแบบดีไซน์ และคอนเซปท์มากขึ้นกว่าเดิม ไม่ว่าจะเป็นเรื่องของ entity relation ต่างๆ เรื่อง use cases ต่างๆ และเรื่องของ usability เป็นต้น และถึงเวลาที่จะต้องไปขึ้น application มันจะทำได้ง่ายและรวดเร็วมาก

สืบเนื่องเรื่องนี้นะครับ วิชา Object-Oriented Programming ที่ผมสอนเทอมนี้ ดู coding แล้ว “ห่วยบรม” ส่วนหนึ่งก็เพราะว่าผมยังไม่ได้สอนลง coding เลย ผมถือว่าผมจัดสอบส่วนของ Lab (ที่เป็น coding) เพื่อเก็บข้อมูลเบื้องต้นเท่านั้น ว่าพื้นๆ ฐานๆ ของน้องๆ ในเรื่องของการเขียน code (ที่ผมย้ำนักหนา .. ว่าเรียนคอนเซปท์ไปอย่างหนึ่งเนี่ย มันมากพอที่จะไปหัด coding เอง ซึ่งก็ดูเหมือนจะไม่ทำกันเลย) นั้นเป็นอย่างไรบ้าง

แต่ว่าเท่าที่ดูจากความเข้าใจ concept ก็ดูค่อนข้างจะดีพอสมควรแล้วล่ะครับ

Chrome: ยิ่งกว่า Browser War ครั้งใหม่

รู้สึกว่านานแล้วที่ไม่ได้ meta-blogging จาก OSNews เพราะว่าพักหลังๆ รู้สึกว่าคุณภาพของบทความมันตกๆ ลงไปจากเมื่อก่อนเยอะเหมือนกัน จนกระทั่งถึงวันนี้เจอเรื่องน่าสนใจมากจนอดไม่ได้ที่จะ blog มันหน่อย

There’s More Than a Browser War

ก็ตั้งแต่ Google ออก Chrome น่ะแหละครับ ที่หลายคนคิดว่าจะเป็นสงคราม browser ใหม่อีกครั้งหรือเปล่า หรือว่า Google ทำไปเพื่อวัตถุประสงค์อะไรกันแน่ จากมุมมองของธุรกิจและความอยู่รอด ตลอดจน Business Identity และ Organization Identity ของ Google เอง ว่าทำไม Chrome (จากมุมมองของผู้เขียนบทความนี้) จึงเป็นหมากตาสำคัญที่สุดหมากหนึ่งบนกระดาน ที่ Google ต้องเดินเพื่อ “ปกป้องตัวเอง”

เป็นบทความที่อ่านแล้วได้คิดดีเหมือนกัน เลยเอามาแชร์กันต่อ

Real World Haskell และ รักแรกพบ

ไปเจอมา เอามา note ไว้สำหรับตัวเองและเพื่อนๆ พี่ๆ น้องๆ ทุกท่านที่สนใจ Haskell เป็นหนังสือที่ดีพอสมควรเลยทีเดียว ละเอียด ตัวอย่างเยอะ ค่อนข้างเป็นปัจจุบันมากๆ และมีประโยชน์กับ Real World จริงๆ (บ้างล่ะน่า) ไม่ใช่แบบหนังสือ Functional Programming ทั่วไปที่ยกว่า FP ดีอย่างนั้นอย่างนี้ แต่ว่าไม่ค่อยจะมีตัวอย่าง Real World ที่มัน convincing เท่าไหร่เลย ยกแต่ประโยชน์ที่ … ขอโทษนะ ต้องบอกว่า “ถ้าไม่ได้เขียน FP เป็นอยู่แล้ว ก็คงจะไม่ซึ้งกับมันเท่าไหร่ ว่ามันเจ๋งแค่ไหน” มากกว่า

แปะลิงค์ก่อน

Real World Haskell (beta) by Bryan O’Sullivan, Don Stewart, and John Goerzen

Haskell เป็นภาษาโปรแกรมที่ผมชอบมากที่สุดภาษาหนึ่งเลยก็ว่าได้ นอกจากนี้ยังเป็นสิ่งแรกในโลกที่สอนให้ผมรู้จักและเข้าใจความรู้สึกของคำว่า “รักแรกพบ” ด้วย

เรื่องของเรื่องมันมีอยู่ว่า วันนั้นนั่งเขียนโปรแกรมอะไรซักอย่างอยู่ในห้องคอมพิวเตอร์ที่มหาวิทยาลัย Tsukuba (ไม่ได้เขียนอะไรใหญ่โตหรอก รู้สึกจะหัดเขียนพวก data structures เล่นอยู่) แล้วเพื่อนสนิทมากที่สุดคนหนึ่ง ชื่อ Nao Hirokawa (จริงๆ แล้วเป็นรุ่นพี่) ก็เดินเข้ามา แล้วก็ชวนคุยเล่นกันโน่นนี่ พอเห็นที่เราเขียนเล่นอยู่ ก็ถามว่า “เฮ้ ทำไมไม่ใช้ Haskell?” เราก็เลยถามว่า มันคืออะไรหว่า Hirokawa ก็เลยถามว่า รู้จัก Quick Sort มั้ย แหม ใครจะไม่รู้จัก เค้าก็เขียน Quick Sort เป็น Haskell ให้ดู พร้อมกับที่เราอ้าปากค้างตาโต (โดนแหก — จริงๆ แล้วรู้สึกว่า Quick Sort นี่เป็นตัวอย่างตลาดของ Haskell เลยนะ .. คงไม่มีใครไม่ยกตัวอย่างอันนี้มาแหกตาชาวบ้านเวลาโชว์ Haskell) แล้วก็เล่น List Comprehension ให้ดูอีกนิดๆ หน่อยๆ

นั่นแหละ รักแรกพบครั้งแรกในชีวิต

10 คอมพิวเตอร์ที่สวยที่สุด

เมื่อวันก่อนมีเรื่อง Computer ประหลาด 10 แบบ วันนี้มาเรื่องคอมพิวเตอร์สวยๆ บ้าง อ่านจาก OSNews ครับ

The Ten Most Beautiful Computers โดย Thom Holwerda

มีโดนใจหลายตัวครับ เคยใช้หลายตัวเหมือนกัน แต่ว่าหลายตัวก็ไม่เคยใช้

บทความนี้อ่านชื่อคนเขียนแล้วแทบจะบอกได้เลยว่า อันดับ 1 คืออะไร

แง …. อยากได้ G4 Cube T_T

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

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

ใช้ 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

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

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

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

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

Smallest Turing Machine Found & Proved!

Alex Smith นักศึกษาปริญญาตรีจากมหาวิทยาลัย Birmingham ได้พิสูจน์ว่า Turing Machine ที่มี 2 states และ 3 colors (symbols) เป็น Universal Turing Machine (UTM) ซึ่งเป็น UTM ที่เล็กที่สุดที่จะเป็นไปได้

การพิสูจน์นี้ทำให้ Alex ได้เงินรางวัล $25,000 จาก Wolfram Research Prize และเป็นการสิ้นสุดการหา UTM ที่เล็กที่สุดที่จะเป็นไปได้ (มีการค้นหากันมาครึ่งศตวรรษแล้ว) และมันเป็น fact ที่รู้กันว่า ไม่มี Turing Machine ที่มี 2 states, 2 symbols จะเป็น Universal ได้

ซึ่งการพิสูจน์นี้เป็น insight ที่อาจจะส่งผลให้มีการเปลี่ยนแปลงบางอย่างในโลกของ computing เช่นอาจจะนำไปสู่การสร้าง computing machine ที่ระดับโมเลกุล เป็นต้น ซึ่ง comment นี้สามารถอ่านได้จาก blog ของ Stephen Wolfram เอง

นอกเรื่องนะ…..

ผมรู้สึกเฉยๆ และค่อนไปทางไม่ค่อยจะชอบ Stephen Wolfram เท่าไหร่ เพราะว่าอะไรหลายๆ อย่าง ตอนแรกก็ admire นะ แต่ว่าพอหนังสือ A New Kind of Science (หนังสือ online full version จากเจ้าของเอง) ออกมานี่ค่อนข้างจะ negative เพราะว่า claim ผลงานชาวบ้านเป็นของตัวเองเยอะเหลือเกิน โดยเฉพาะการพิสูจน์ว่า Cellular Automata กฏ 110 ซึ่งเทียบเท่ากับ Turing Machine มี 2 states, 5 symbols ว่าเป็น UTM ที่ Wolfram claim ว่าเป็นของตัวเอง ทั้งที่จริงๆ คนที่พิสูจน์ได้จริงๆ คือ Matthew Cook ซึ่งทำงานเป็นผู้ช่วยวิจัยให้กับ Wolfram

เรื่อง Cook กับ Wolfram และการพิสูจน์กฏ 110 นี่ควรหาอ่านได้ยาวๆ จากหลายๆ ที่บน internet แต่ว่าเพราะ Wolfram ไล่ฟ้องชาวบ้านเค้าทั่วไปหมดที่พูดเรื่องนี้ทำให้อาจจะหาไม่ค่อยจะได้

อ่อ ลืมไป ใครคิดจะอ่าน A New Kind of Science นี่ พยายามลองหา review ของนักวิทยาศาสตร์ที่เป็น critiques มาลองอ่านดูก่อนก็ดีนะครับ เพราะว่ามันมีอะไรหลายๆ อย่างที่ อืมมมมม ไม่ค่อยจะดีเท่าไหร่ แต่ว่าคนที่ไม่รู้ deep technical หรือว่า deep theoretical understanding มาก่อนเลย อาจจะได้รับความรู้อะไรหลายอย่างผิดๆ ไปเยอะพอควร เช่น

  • review ของ Lawrence Gray อันนี้เจ๋งมาก
  • หรือของ Cosma Shalizi
  • หรือว่า ใน slashdot แต่ว่าเลือกเชื่อ comment/review ใน slashdot เอาเองนะ …

จริงๆ มีเยอะกว่านี้เยอะ แต่ว่าไม่ได้เก็บ link ไว้เลย ตอนนี้ขี้เกียจหา แต่คิดว่าหาไม่ยาก

อีกอย่าง หนังสือเล่มนั้น dismissed prior knowledge แทบจะทั้งหมดเลย ทั้งๆ ที่อะไรหลายๆ อย่างมีคนค้นพบมาก่อนแล้ว และเป็น known facts เสียด้วยซ้ำ โดยเฉพาะเรื่องที่ระบบที่มีกฏพื้นฐานที่เรียบง่าย สามารถมีพฤติกรรมที่ซับซ้อนยากยิ่งต่อความเข้าใจ และเรื่องอื่นๆ ฯลฯ อ่อ ใช่ หนังสือเล่มนั้น (edition ที่ผมมี) ไม่มี reference เลยนะครับ และ Wolfram พูดถึงทุกอย่างใน passive tone มาก

A New Kind of Science (NKS) ก็เป็น interesting read ครับ แต่ว่าอย่าไปเชื่อมันมากนัก เพราะว่าหลายๆ อย่างในนั้นก็ไม่ได้ significant ขนาดที่คนเขียนหนังสือพยายามจะให้มันเป็น

แต่ว่าการที่พิสูจน์ได้ว่า TM ขนาด 2 states, 3 symbols เป็น UTM นี่ significant ครับ โดยไม่เกี่ยวกับ Stephen Wolfram :-P และครั้งนี้ผมเห็นด้วยและยินดีที่ Wolfram ให้ credit ที่ถูกต้องกับคนที่ค้นพบความจริงข้อนี้ครับ

อ่าน PDF ของการพิสูจน์ ของ Alex Smith ครับ

[update 1]: เพิ่ม list ของ review หนังสือ A New Kind of Science

ภาษาโปรเกรียน

โอ๊ย อ่านแล้วขำสุดๆ กลิ้งไปกลิ้งมา

สุดยอดมาก ยกนิ้วโป้งให้สองนิ้วเลย

สรุปให้นิด ว่าทำเหมือนกับว่าภาษาโปรแกรมแต่ละภาษาเป็นคน แล้วเอาข้อดีจริงๆ หรือว่า hype หรือว่า buzz ของตัวเองมาข่มกันไปมา แถมมีการแขวะกันแบบตลกร้ายมากๆ ด้วย ชอบตรงนี้น่ะ

Ruby: Dude! I just wrote a full working clone of Google while you were giving your riveting little speech there! (โอ๊ย ระหว่างที่พวกเอ็งโม้กันอยู่เนี่ย ข้าเขียน Google clone เสร็จแล้วนะเฟ้ย)

Moderator: Oh, bravo, Ruby! I’d like to see that. Where is it deployed? (เจ๋งมากรูบี้! ขอดูได้มั้ย เอาไปติดตั้งไว้ที่ไหนเหรอ?)

Ruby: Umm…. (เอ่อ…..)

จริงๆ ขำทั้งเรื่องน่ะแหละ สุดๆ