Showing posts with label TODO. Show all posts
Showing posts with label TODO. Show all posts

Jun 13, 2012

อยากทำ อย่างที่ 5 โปรแกรมแก้ไขเอกสารที่มองภาพรวมเป็นต้นไม้

วันนี้เห็น @awkwin ทวีตเกี่ยวกับความ *** สุดจะบรรยายของ JavaScript เลยได้ฤกษ์ขุดกระทู้ในตำนานมาอ่านอีกรอบ แล้วก็ได้สัมผัสถึงความ !@#$%^&* ของภาษา APL ซึ่งคอมเมนท์ในนั้นบอกไว้ว่า มันคงเป็นภาษาที่เจ๋งและกี๊คมากเลยถ้าอยู่ในหนัง ก็เลยทำให้นึกถึงหนังเรื่อง Stealth ตอนที่ศูนย์คอมเข้าไปดูโค้ดของโปรแกรมเพื่อหาบั๊ก (ส่วนนี้ในหนังกากมาก เพราะแม่งเล่นง่าย เอาโค้ดส่วนที่เป็นบั๊กไปไว้ "ระหว่างบรรทัด" เลย ซึ่งในความเป็นจริงโค้ดมันจะซ้อนอยู่ตรงนั้นได้ยังไงวะ) ถึงตอนนี้ก็ฉุกคิดได้ว่า เอ่อ ไม่เห็นจะเจ๋งตรงไหนเลย ถ้ามันแต่งมาเวอร์ๆ แต่ไม่มีทางเป็นไปได้ในโลกความเป็นจริง ...

... แล้วก็มาคิดได้ว่า อึม หรือโปรแกรมแก้เอกสารในหนังนั้นมันเป็นแบบโคตรล้ำยุคหว่า สามารถแสดงข้อความซ้อนๆ กันแบบ 3 มิติได้ เลยนั่งคิดต่ออีกซักพักนึงแล้วพบว่าโคตรไร้สาระ โค้ดที่เขียนกันอยู่ 2 มิติจะไปแสดงผลแบบ 3 มิติให้งง+เก็บบั๊กยากขึ้นทำไมหละ

ถอยกลับมา 1 ก้าว.. เอ่อ แต่ถ้าได้เขียนโค้ดแบบ 3 มิติจริงๆ คงเจ๋งไม่น้อยเลยนะ ก็เลยลองออกแบบว่า ไอ้การเขียนโค้ด 3 มิติ (ถ้ามันจะมีจริง) มันควรจะเป็นยังไงกันนะ?

คิดไปเรื่อยๆ โดยอิงจากตัวอย่างในปัจจุบัน ก็พบว่ารูปแบบโค้ดโดยทั่วไปจะออกแนวๆ นี้



ซึ่งถ้ามองในมุมของโปรแกรมเมอร์ที่เชี่ยวแล้วคงไม่มีปัญหา (เริ่มอ่านโปรแกรมจาก main ด้านล่างสุด แล้วโดดไปดูคลาส/ฟังก์ชันแค่เวลาที่ต้องการข้อมูลเพิ่มเติม)

แต่สำหรับโปรแกรมเมอร์มือใหม่ (อย่างผม) นี่ทำให้เกิดปัญหาที่เรียกว่า "เริ่มไม่ถูก" ขั้นรุนแรง ตั้งแต่เริ่มไม่ถูกว่าจะดูโค้ดที่ไหนก่อนดี? ทำไมต้องมองโปรแกรมตามแบบที่คอมพิวเตอร์ทำงานโดยการเริ่มจาก import requirement/dependency ต่างๆ ให้ครบก่อนแล้วจึงจะเริ่ม main ได้? ทิศทางการเขียนโปรแกรมควรจะเขียนแบบ top-down หรือ bottom-up กันแน่?

เลยได้ข้อสรุปสำหรับตัวเองว่า มันคงจะเหมาะกว่า ถ้าเริ่มมาก็สามารถเขียน concept ทั้งหมดของ main ได้เลย อยากใช้ฟังก์ชันใหม่ชื่ออะไรก็เขียนๆ ไปก่อน พอวางโครงเสร็จก็ค่อยกลับมาดูว่ามีฟังก์ชันไหนที่ยังไม่ได้เขียนกฎให้มัน ซึ่งพอดับเบิลคลิกที่ชื่อฟังก์ชันนั้นๆ ก็จะเป็นการเปิดป๊อปอัพหน้าต่างใหม่สำหรับเขียนกฎให้มันนั่นเอง (ยืมแนวคิดมาจาก lambda)



โดยรวมแล้วก็คงคล้ายๆ กับ Inspect Element ของเว็บเบราว์เซอร์ คือเริ่มดูจาก root node ไล่ลงไปเรื่อยๆ นั่นเอง เพียงแต่เปลี่ยนการ expand tag ไปเป็นการเปิดหน้าต่างใหม่แทน

รายละเอียดปลีกย่อย (ถ้าจะทำจริงๆ) ก็คงต้อง highlight สีของฟังก์ชันที่ยังไม่ได้เขียนกฎให้เด่นหน่อย ส่วนถ้าฟังก์ชันไหนเขียนไปแล้วแต่ติดแท๊ก FIXME หรือ TODO ไว้ ก็เปลี่ยนไป highlight ด้วยอีกสีหนึ่ง (จะได้รู้ว่ามีข้อผิดพลาดที่ฟังก์ชันนี้ และกลับมาแก้ไขทีหลังได้ง่าย) แล้วก็คงต้องดักพวก recursion ด้วย ส่วนการเขียนเพิ่มฟังก์ชันใหม่ๆ เข้าไป ต้องเอามันไปแทรกไว้ก่อน main เสมอ

คิดออกแค่นี้ ง่วงแล้ว ลองนอนดูก่อนว่าจะหายบ้ามั้ย 555

Aug 18, 2011

อยากทำ อย่างที่ 4 คีย์บอร์ดที่มีไฟบอกภาษา

ช่วงสองสามวันมานี้ มีงานเอกสารให้ได้พิมพ์เยอะมาก
แม้ว่าส่วนตัวแล้วจะพิมพ์สัมผัสพอได้ แต่ก็ติดนิสัยมองคีย์บอร์ดเวลาพิมพ์อยู่ดี
สงสัยเพราะไม่ได้ฝึกอย่างถูกวิธีมาตั้งแต่แรกหละมั้ง แต่ฝึกจากการเล่น MSN เอา
ผลที่ตามมาก็เหมือนที่ทุกคนเจอ คือ พิมพ์กลายเป็นภาษาต่างดาวไปเลย ^^"

จริงๆ จะไปว่าก็ไม่ได้นะ เพราะผิดที่เรา 100% เลยที่ไม่ยอมมองจอ
อีกอย่างนึงคือ มันเป็นสิ่งที่สำคัญมากในชีวิตเรา เพราะทำให้เราได้นามปากกานี้มา

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

จริงๆ จากโซลูชันนี้ สามารถแตกแขนงออกไปได้เยอะแยะมากเลยนะ
ไว้ถ้าทำแบบนี้ได้สำเร็จแล้ว จะลองเปลี่ยนวิธีการดูต่อไปเรื่อยๆ ละกันนะ
^^

ปล. เนื่องจาก entry นี้ draft มานานเกิน (ตั้งแต่ปลายปี 09 โน่น)
ตอนนี้ทำออกมาคงไม่ต้องใช้ละ เพราะว่าพิมพ์สัมผัสได้เรียบร้อยแล้ว อิอิ
แต่ก็น่าลองเอาไปทำให้คนที่พิมพ์สัมผัสไม่เป็นจริงๆ นะ!!

Nov 30, 2009

อยากทำ อย่างที่ 3 เขียนนิยายคณิตศาสตร์ให้ดังก้องโลก

เมื่อวันก่อน ขณะอ่านหนังสือการทดลองทางวิทยาศาตร์อยู่
ก็เกิดไอเดียแจ่มแมวแว๊บขึ้นมาในหัว นั่นก็คือนิยายคณิตศาสตร์

ไม่รู้ว่าทำไมสมองเราถึงทำงานเร็วมาก ในเวลาที่ไม่คิดว่าจะทำงาน
แค่เห็นคำว่า paradox เข้าไป ก็คิดไปไกลถึงหนัง the metrix
แล้วก็คิดว่า เอ่อ หนังเรื่องนั้นมันก็แทรกปรัชญาเยอะโครตเลยนี่หว่า
(เอ๋... หรือว่าเป็นหนังปรัชญาที่แทรกแอคชันกันแน่ อิอิ)

แล้วก็คิดถึงอลิซในดินแดนมหัศจรรย์ ของลิวอิส คาร์โรล
ซึ่งผู้ประพันธ์นั้นเป็นนักคณิตศาสตร์ (อ่านเพิ่ม my math ฉบับ 19)
และถ้าอ่านอย่างตั้งใจแล้ว จะพบว่ามีคณิตศาสตร์ซ่อนตัวอยู่มากมาย

แล้วก็คิดไปเรื่อยๆ (ภายในเวลาไม่กี่วิ) จนไอเดียบังเกิดนั่นแล
ก็คือ นิยายคณิตศาสตร์ ที่ใช้คณิตศาสตร์เป็นแก่นของเรื่อง
แล้วแต่งเติมเรื่องราวอื่นๆ ลงไป ให้น่าสนใจเหมือนกับนิยายทั่วไป

ฝันอยากให้มันเป็นหนังนะ เอาให้ดังเป็นพลุแตกเหมือน the matrix เลย!

Nov 27, 2009

อยากทำ อย่างที่ 2 อัพเกรดคอมฯไปไว้หน้าทีวี

อยากอัพเกรดคอมฯ จังเลย =^_^=
ตอนนี้แกะคอมฯ เรียบร้อยแล้ว
ของเยอะแยะเต็มไปหมดเลยอ่า
ไดร์ฟเก่าที่ไม่ได้ใช้ยังติดเครื่องอยู่เลย
แถมฮาร์ดดิกส์เก่าเน่าๆ 32 จิ๊กที่จะถอดทิ้งละ

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

ตอนนี้ถ้าว่างจะแวะไปพันทิพให้เร็วจี๋เลย
แล้วก็ขายๆๆๆๆ ของเก่าให้หมด
(แรมเก่า กับจอ อย่างอื่นอาจขายไม่ได้ตังค์)
ซื้อของใหม่มาอัพคอมฯ อย่างเร็ว
จะได้โอนเป็นคอมประจำบ้านเสียที ^^

Nov 19, 2009

อยากทำ อย่างที่ 1 เปิด Lab วิชาคณิตศาสตร์

ถ้าได้เป็นอาจารย์มหา'ลัยนะ จะเปิดวิชา Lab เกี่ยวกับคณิตศาสตร์เลย
ไม่ต้องมหา'ลัยก็ได้ แค่อาจารย์มัธยมก็พอ จะแอบเอาวิชาเรียนมาบูรณาการ
แล้วก็เปิดสอนแบบ Lab ซะเลย ฮาๆๆ

ที่อยากสอน Lab วิชาคณิตศาสตร์มากๆ เลย นั่นก็เป็นเพราะว่า
วิชาอื่นๆ อย่าง ฟิสิกส์ เคมี ชีวะ ก็ทำ Lab กันเป็นเรื่องปรกติ
ไฉนเลย วิชาคณิตศาสตร์จะไม่มี Lab หละ? อิอิ

แล้วจะทดลองยังไงหละ? ง่ายๆ เลย คาบแรกแจกวงเวียน+ไม้บรรทัด
สร้างจำนวนนับขึ้นมาสิ อันนี้คงไม่ยากเท่าไหร่
อะ ต่อมา สร้างจำนวนตรรกยะสิ ทำได้หรือเปล่า?
ถ้าทำได้ ไหนลองสร้างจำนวนอตรรกยะสิ จะยังทำได้อยู่หรือเปล่าน้า?

คาบถัดมา อะ สร้างรูปสามเหลี่ยมด้านเท่าสิ
สร้างวงกลมแนบใน-แนบนอกสิ
เอ้า ลองหาสมบัติบางประการของมุมในสามเหลี่ยมแนบในสิ

คาบอื่นๆ อาจแจกเครื่องคิดเลข
เอ้า ลองหารูทของสองคูณรูทของสองคูณรูทของสอง... ไปเรื่อยๆ สิ
ทำได้แล้ว งั้นก็ลองเปลี่ยนเลขสองเป็นเลขสามมั่ง ดูสิว่าเกิดอะไรขึ้น
อะ เปลี่ยนตัวเลขไปเรื่อยๆ สิ อึ่ม แล้วสรุปได้มั้ยว่ารูปทั่วไปเป็นยังไง

ฮ่าๆๆ น่าจะเป็นวิชาที่สนุกน่าดูเลย ^^

(แอบบ่นเล็กน้อย หลังจากเสียใจที่รู้สึกคล้ายว่าคณิตศาสตร์จะไม่ใช่ศาสตร์ที่ถนัด)
(แต่ตอนนี้ดันชอบทำ Lab มากกว่า แล้วก็น้อยใจว่าทำไมคณิตถึงไม่มี Lab)
(ถ้าได้เป็นใหญ่เป็นโต จะปฏิรูปการเรียนคณิตศาสตร์ให้หมดเลย คอยดูสิ หุหุหุ)


ทดไว้ก่อน ถึงเวลาจริงๆ จะได้ไม่ลืมทำ!