29.9.10

Back to (for) Future ย้อนเวลาหา C อีกครั้ง



ภาษาซี C languageห่างหายวงการไปนาน ช่วงนี้ผมยุ่งจริงๆ พยายามจะมาเขียนบทความอัพเดทบล๊อก แต่ก็หาเวลาไม่ค่อยได้ ช่วงเวลาที่หายไป ผมกำลังเมามันส์กับไมโครคอลโทรลเลอร์อยู่ แล้วกำลังสร้างบล๊อกเพิ่มด้วย ก็กะว่าจะเอาไว้เขียนเรื่องเกี่ยวกับไมโครคอลโทรลเลอร์หน่ะครับ รอติดตามก็แล้วกัน

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

ช่วงที่หายไป ผมก็กำลังศึกษาภาษาซี ของแต่ละค่าย จริงๆภาษาซีหลักๆ เค้าอ้างอิงตามมาตรฐาน ANSI C อยู่แล้ว แต่ว่าถ้าเป็นภาษาซี ที่เป็น complier แล้ว ของแต่ละค่ายก็จะแตกต่างกันออกไปนิดหน่อย แต่หลักๆแล้ว ก็ยังอ้างอิงกับ ANSI C อยู่ดี

C Complier

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

ถ้าคุณเป็นคนนึง ที่คิดจะหันมาเล่นทางไมโครคอลโทรลเลอร์ แล้วหล่ะกัน ผมขอแนะนำ จับภาษาซีให้แน่นๆ อย่างหยุดยั้งอยู่เพียงแค่การ printf ได้เท่านั้น ในโลกของไมโครคอลโทรลเลอร์มันมีอะไรที่มากกว่านั้น ไม่ว่าจะเป็นการกำหนดค่าตัวแปรให้เหมาะสมกับตัวเลขที่คำนวณได้ การใช้ Macro การใช้ pointer การจัดการกับข้อมูลที่เป็นตัวอักษร การใช้ตัวแปรแบบ enum และ struct  คุณต้องเอาให้คล่องเลย ไม่งั้นตันแน่ๆ ต้องย้อนกลับมาเหมือนผมแน่ๆ

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

ในส่วนของ web programming ผมคงไม่ได้ต่อยอดไปไกลกว่านี้อีกแล้วหล่ะ สิ่งที่ท้าทายที่ผมกำลังทำอยู่ก็คือ ทำให้ของทั้งสองอย่างทำงานร่วมกันได้อย่างสอดคล้อง นั่นคือ เป้าหมายที่ผมจะไปต่อไป เพียงแต่ว่า ตอนนี้มันแค่เพียงเพิ่งเริ่มต้นเท่านั้นเอง

ชมวีดีโอสาธิตการประยุกต์ใช้ WEB programming กับไมโครคอลโทรลเลอร์ หรือรายละเอียดเพิ่มเติม คลิก

อ่านเพิ่มเติม...
 

เกี่ยวกับฉัน(ไหมเนี้ย)

My photo

สวัสดีครับ ชื่อเปิ้ลนะครับ ถ้ามีอะไรให้ช่วยเหลือได้ ก็จะช่วยครับ
ผมได้สร้างบล๊อกไว้ เพื่อเก็บรวบรวมความรู้ และประสบการณ์ในการทำงานครับ แวะไปเยี่ยมชมกันได้ครับ http://mechacity.blogspot.com และบล๊อก http://faker-programmer.blogspot.com ครับ

รายการบล๊อกอื่นๆ

  • Solved: error: 'TKD2' was not declared in this scope, LIFA_Base compile error - วันนี้ จะมาเล่าถึงปัญหาที่เจอในการเบิร์นโค๊ด LIFA_Base ที่เราใช้ในการทำให้ Arduino ของเราสามารถรับคำสั่งจาก LabVIEW ได้ ปัญหานี้ เริ่มเกิดขึ้นตอนที่ Ard...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Blog อื่นๆ ที่น่าติดตาม

เหล่าบรรดา Blogger