I’m in love with this girl!!!!!!

Posted in Uncategorized | 5 Comments »

Someone

Posted in Uncategorized | 1 Comment »
How do you write a poem

about someone so close

to you that when you say ahhhhh

they say chuuuu

Nikki Giovanni

Miss you all

Posted in Uncategorized | 3 Comments »

rice

Posted in Uncategorized | 2 Comments »

Posted in Uncategorized | No Comments »

Philippe‘s 3 Rules of Software Craftsmanship:

#1 “Start with a vision”
#2 “Throwing more bodies at software projects only makes things worse”
#3 “There are three vectors that drive software craftsmanship: quality, schedule, and features. The challenge is that you only get to pick two”

Side dish:
Phillippe’s law : “The productivity of a software developer in a team of N people is diminished by dividing it by the cube root of N”

Taste of my root

Posted in Uncategorized | 2 Comments »

You can change your name, you can change your hair style, you can change your face, you can even change how you cry. But one thing you can’t change, it’s where you come from.

By the way, it’s called แกงฮังเล (Gang-Hungle|Northen Thai Curry).

Flower of Summer

Posted in Uncategorized | 1 Comment »

Thank you

Posted in Uncategorized | 6 Comments »

Posted in Uncategorized | No Comments »

Alan J. Perlis,เคยกล่าวไว้ว่า “A language that doesn’t affect the way you think about programming, is not worth knowing.” แปลลวก ๆ ก็คือ ภาษาที่ไม่กระทบต่อวิธีการคิดของคุณต่อการเขียนโปรแกรมนั้นไม่มีค่าพอที่จะไปเรียนรู้มัน ผมก็เลยลองไล่ ๆ ดูว่ามีภาษาอะไรบ้างที่”เปลี่ยน”วิธีการคิดของผมบ้างนะครับ

Pascal

เป็นภาษาแรกที่หัดเขียน (เด็กรุ่นผมส่วนใหญ่ ก็คงหัดเขียน Pascal แหละ รุ่นไหนเหรอ ก็รุ่น CW/RW นะ :P) ที่สำคัญคือ ตอนนั้นผมยังไม่มีคอมพิวเตอร์เป็นของส่วนตัว แต่ไปใช้คอมพ์ที่โรงเรียนแม่ ซึึ่งทั้งโรงเรียน มีคอมพ์อยู่ตัวเดียว (PC/XT รุ่น Floppy disk 5 1/4 คู่ด้วย) ทำให้ผมสามารถใช้คอมพ์ได้แค่อาทิตย์ละ 1-2 ชั่วโมง แต่เวลาแค่ 1-2 ชั่วโมงมันไม่พอจะให้หัดเขียนโปรแกรมหรอกครับ (เขียน Hello World ก็ใช้เวลาคอมไพล์สัก 5 นาทีได้แล้ว) ถ้าต้องมัวแต่ต้องไปนั่งคิด ๆ พิมพ์ ๆ ไป แก้โค้ดไป รับรองอาทิตย์หนึ่งได้แค่โปรแกรมเดียว วิธีการที่ผมใช้ก็คือ ผมจะเขียนโปรแกรมในกระดาษก่อน แล้วลองคอมไพล์ในหัวดูว่าโปรแกรมมันควรจะทำงานยังไง เวลาเจอข้อผิดผลาด ก็แก้ในกระดาษไปแบบนี้ ข้อดีของ Pascal ก็คือ syntax มันค่อนข้างชัดเจนและอ่านง่าย ทำให้เวลาจินตนาการในหัวแล้วสมองไม่ต้องทำงานหนักมาก (ลองจินตนาการการทำงานของโปรแกรมที่เขียนด้วย Perl ดูซิครับ…) แล้วพอคิดว่าโปรแกรมทำงานได้ถูกต้องดีแล้ว ก็ค่อยเอาไปทดสอบกับคอมพ์จริง ๆ อีกที ซึ่งส่วนใหญ่ก็จะคอมไพล์ทีเดียวผ่าน 😀 ด้วยการหัดเขียนภาษา​ Pascal แบบนี้ ทำให้ผมสามารถพัฒนาการมองโปรแกรมแล้วคิดตามในหัวได้ เรียกว่าผมสามารถคิดแบบเดียวกับที่คอมพิวเตอร์คิดได้ก็ด้วยการหัดเขียน Pascal ในกระดาษนี่แหละ

ถ้าไปหัดเขียนโปรแกรมกับคอมพสมัยนี้อาจจะทำไม่ได้ เพราะว่าคงจะใช้วิธีการเขียนไปแก้ไป (คอมพ์มันเร็ว มันทำแบบนั้นได้) ซึ่งข้อเสียก็คือ เราจะไม่สามารถคิดถึงโปรแกรมเป็น flow หรือเป็นภาพรวมได้

C

พอเขามหาวิทยาลัยก็โดนบังคับให้เขียน C ข้อดี(หรือว่าข้อเสียก็ไม่รู้) ของ C ก็คือมัน low level มาก แต่ไม่มากจนเกินไป การที่มันอยู่กึ่ง ๆ กลาง ๆ ทำให้เราสามารถคิดได้ง่ายขึ้นว่า การที่โปรแกรมทำงานอย่างหนึ่ง เช่นการคลิกเมาส์ที่ปุ่มหนึ่ง ในส่วนฮาร์ดแวร์มันเกิดอะไรขึ้นบ้าง เช่น ต้องมีการจอง memory ยังไง ต้องย้าย memory จากส่วนไหนไปไหน จำได้ว่าตอนสมัยเรียน อาจารย์ให้การบ้านภาษา C คือให้เด็กเขียน Text editor ภาษาไทย! ก็สนุกกันใหญ่แหละครับ ตั้งแต่จะสร้าง Data Structure เพื่อเก็บเอกสารยังไง จะแสดงผลภาษาไทยยังไง ต้อง map VRAM ยังไง (สมัยนั้น ยังฮิตใช้ Hercules card กันอยู่) สุดท้ายการเรียนภาษา C ก็สามารถสอนให้ผมเชื่อมการทำงานของ Software เข้ากับ Hardware ได้ อาจจะสงสัยว่าแล้ว assembly ละ คือว่า assembly มัน low level ไปนะครับ เขียนแล้วมองการทำงานของ Hardware ได้ทะลุ แต่เอามาเชื่อมกับ Software ไม่ได้

Smalltalk

จริงๆ ผมหัดเขียน C++ กับ Java มาก่อน แต่ว่าก็เป็นการเขียนแบบ procedural ธรรมดา ๆ เลย ไม่มีความเป็น OOP แต่อย่างไร เพราะตอนนั้นมันมองไม่แตกว่า OOP คืออะไร แต่พอตอนไปออสเตรเลีย ต้องได้ลงเรียนวิชา OOP ซึ่งเขาใช้ Smalltalk ในการเรียน ก็ทำให้ผมสามารถ”คิด”แบบ OOP ได้ เพราะว่าภาษามันไม่ยอมให้คิดแบบอื่นเลย ถ้าตอนนั้นไม่ได้เรียน Smalltalk ผมก็คงยังคิดแบบ OOP ไม่ได้

จริง ๆ หลัก ๆ ที่เห็นชัด ๆ ก็มีอยู่แค่นี้แหละครับ แต่ว่าตอนนี้กำลังพยายามลุ่มลึกกับ Python และ Haskell อยู่ รวมถึง Programming paradigm อื่น ๆ เช่น AOP, Event-Processing และ Functional Programming อยู่ครับ ก็คงต้องดูต่อไปว่าผมจะถูกเปลี่ยนด้วยภาษาไหน หรือว่า Paradigm แบบไหนอีกหรือเปล่า

Fairy of the Summer.

Posted in Uncategorized | No Comments »