May 25

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

ข้อเสียหลักๆ ของ Django ตอนนี้คือ API ที่ยังไม่เสถียรอยู่เยอะ ถ้าใครอ่าน Django Book จะเห็นว่ามีอีกสองสามบทที่ยังไม่ได้เขียนเพราะมีแนวโน้มสูงว่าจะโดนยกเครื่องทั้งกระบิ (พี่คนหนึ่งเคยบอกว่าเป็นนิสัยของ Python Programmer ที่ชอบโล๊ะโค้ดเก่าทิ้ง) ตอนนี้แว่วๆ ว่า Admin ก็จะโดนไปด้วยเหมือนกัน พวกนี้ยังพอทำใจได้เพราะถือว่าทำแล้วมันดีขึ้นจริง

แต่ที่รำคาญมากหน่อยคือ Views ที่ดูเหมือนต้อง import สารพัดเข้ามาใช้งานจนดูเลอะๆ ชอบกล มันน่าจะมีวิธีรวมๆ กันที่สวยกว่านี้นะ

written by lewcpe \\ tags: , ,

Apr 19

ลองนั่งทำ C PUZZLES ดู แล้วติดที่ข้อนี้ ที่ให้อธิบายว่าโค้ดข้างล่างนี้จะ Segmentation Fault เมื่อคอมไพล์บน IA-64 แต่ทำงานถูกต้องบน IA-32

int main() { int* p; p = (int*)malloc(sizeof(int)); *p = 10; return 0; }

ปัญหาคือดันไม่มี IA-64 ให้เล่นอีก เลยต้องนั่งหาในเน็ตดูว่ามีเฉลยกันมั่งรึเปล่า แล้วก็เจอไม่ยาก จาก debian-list

เรื่องของเรื่องคือเมื่อคอมไพล์เลอร์ไม่พบ Prototype ของฟังก์ชั่น มันจะคิดเอาเองว่าฟังก์ชั่นจะคืนค่าเป็น int 32 เสมอ ในกรณีนี้ทำให้ core dump ได้ไม่ยาก วิธีแก้ก็ไม่มีอะไรเลย แค่ include ไฟล์ stdlib.h เข้าไปก็จะไม่มีปัญหาแล้ว

เขียน C มาเป็นปีๆ เรื่องพวกนี้ หลายๆ ครั้งก็แค่ตาม Best Practice ไปโดยไม่เข้าใจแฮะว่าทำไมต้อง include ให้ครบๆ

written by lewcpe \\ tags: ,

Mar 21

พอดีอ่านเรื่องที่ plynoi พูดถึงความขี้เกียจเอาไว้ คิดว่าอีกประเด็นที่น่าสนใจคือเรื่องของสัดส่วนการแบ่งเวลา

ผมเห็นโปรแกรมเมอร์จำนวนมาก มุ่งสร้างผลงานในเชิง “ปริมาณ” กันอย่างเอาเป็นเอาตาย คนกลุ่มนี้มักส่งงานชุดแรกเร็วที่สุดเสมอๆ ด้วยความคิด ง่ายสุด เร็วสุด ดีสุด

ผลที่ได้คือการไม่ยอมเรียนรู้ และ reuse สิ่งที่มีอยู่แล้ว เป็นจำนวนมาก เช่นฟังก์ชั่นวันที่อย่าง strptime ที่เห็นคนพยายามจะเขียนตัว Parse วันที่กันซ้ำแล้วซ้ำเล่า ไม่รู้่กี่ครั้งในอายุงานไม่มากนักของผม ผมเคยเห็นคนเขียน C++ ที่สร้าง LinkedList ใช้เองแทน Vector หรือจะเป็นการทำงานอย่างอื่นๆ อีกมากมายนับไม่ถ้วน

ผมมองเรื่องพวกนี้เป็นการแบ่งส่วนเวลา ระหว่างการอ่าน (เรียนรู้) กับการลงมือทำ

คนโดยทั่วไปแล้วมักจะแบ่งเวลาให้การลงมือทำเป็นเวลาส่วนใหญ่ เกินร้อยละ 75 มีหลายๆ ครั้งที่เต็มร้อย

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

กับตัวเองแล้ว สมัยเรียนผมแบ่งเวลาอ่านหนังสือถึงร้อยละ 80 ใช้เวลาทำแค่ 20 แต่พอมาเจอโลกความเป็นจริงก็พบว่่ามันทำอย่างนั้นไม่ได้เสมอไป ด้วยเหตุผลทางธุรกิจหลายประการ เราต้องทำก่อน แก้ทีหลังไปเสมอๆ

มันอาจจะดีถ้าก่อนที่เราจะเพิ่มโปรแกรมเมอร์เข้ามาในโปรเจค แล้วให้สอบความรู้ด้านเทคนิคกันให้ผ่านก่อนนะ

written by lewcpe \\ tags:

Feb 16

ถ - การเขียนโปรแกรมคืออะไร ระหว่าง วิทยาศาสตร์, ศิลปะ และไสยศาสตร์

ตอบ 1 - ไสยศาสตร์ และบั๊กเกิดขึ้นจากคำสาปหรือมนต์ดำ

ตอบ 2 - ศิลปะ มันเป็นทั้งศาสตร์และศิลป ทุกอย่างอธิบายได้ด้วยความสวยงามในเชิงสถาปัตยกรรม

ตอบ 3 - วิทยาศาสตร์ ทุกอย่างอธิบายได้ และมีทางแก้ไขที่ชัดเจน

คนตอบคนแรกทำงานเป็นโปรแกรมเมอร์มืออาชีพ เขียนโปรแกรมมาแล้วหลายปี

คนที่สองกำลังเรียนเขียนโปรแกรมอยู่ และพบกับความน่าตื่นตาของการเขียนโปรแกรม

.

.

คนที่สามเขียนโปรแกรมไม่เป็น….

written by lewcpe \\ tags: ,