Showing posts with label โปรแกรมเมอร์. Show all posts
Showing posts with label โปรแกรมเมอร์. Show all posts

20.9.12

Microsoft technical forums for thai ของจริงรึเนี้ย!!!

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

คุณต้องการ การสนับสนุนและช่วยแก้ปัญหาด้านเทคนิค เป็นภาษาไทย: ถามคำถามด้านเทคนิคเป็นภาษาไทย โดยไม่เสียค่าใช้จ่าย เพียงตั้งกระทู้ถามในฟอรัม TechNet Thai Forums สำหรับ IT Professional และ MSDN Thai Forums สำหรับ Developer เรามีทีมวิศวกรผู้เชี่ยวชาญที่จะช่วยหาคำตอบที่ถูกต้องให้ในเวลาอันรวดเร็ว อีกทั้งบทความเทคนิคที่น่าสนใจและคำถามที่พบบ่อยในฟอรัมอีกด้วย นอกจากนี้ คุณยังสามารถติดตามข่าว
อัพเดตด้านเทคนิคผ่าน ติดตามที่นี่ได้อีกช่องทางหนึ่ง


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

 


ไมโครซอฟท์ได้เตรียมข้อมูลและแหล่งเรียนรู้สำหรับเทคโนโลยีใหม่ ๆ ในหลากหลายรูปแบบได้ฟรีไม่ว่าจะเป็น e-book ( Free ebook: Introducing Windows Server 2012 (RTM Edition), TechNet Video หรือ Microsoft Virtual Academy(MVA) ซึ่งเป็นระบบ e-learning ที่คุณลงทะเบียนเรียนได้ฟรีเช่นกัน โดยคุณสามารถเลือกสาขาที่คุณสนใจอย่างเช่น Windows Server 2012 Technical Overview หรือ Windows Server 2012: Server Virtualization ยังมีอีกหลายหัวข้อที่น่าสนใจรอคุณ นอกจากนั้นเรายังได้เตรียมงานสัมนาที่จัดโดยบริษัทไมโครซอฟท์ ประเทศไทยอย่าง Tech Days หรืองานสัมนาที่ได้จัดร่วมกันกับชุมชนชาวไอทีต่าง ๆ ตลอดทั้งปีซึ่งท่านสามารถติดตามได้จากhttp://blogs.technet.com/b/thailand/


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

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

9.2.11

variables naming : ว่าด้วยเรื่องการตั้งชื่อตัวแปร



variable naming

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

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

      ธรรมเนียมปฏิบัติที่มีประโยชน์มากอย่างหนึ่ง ในการตั้งชื่อตัวแปร ที่ใช้กันอยู่ทั่วไปนั่นก็คือ การระบุชนิดของตัวแปร เข้าไปในชื่อของตัวแปรด้วย รูปแบบการประกาศแบบนี้ เราเรียกว่า “Hungarian Notation”

      ในการประกาศตัวแปร แบบฮังกาเรียน นั้น จะมีการเพิ่มตัวอักษรพิมพ์เล็กนำหน้าชื่อตัวแปร เพื่อเป็นการบ่งบอกถึงชนิดของตัวแปร  ตัวอย่างเช่น

  • bBusy : boolean
  • chInitial : char
  • cApples : count of items
  • dwLightYears : double word (systems)
  • fBusy : boolean (flag)
  • nSize : integer (systems) or count (application)
  • iSize : integer (systems) or index (application)
  • fpPrice: floating-point
  • dbPi : double (systems)
  • pFoo : pointer
  • rgStudents : array, or range
  • szLastName : zero-terminated string
  • u32Identifier : unsigned 32-bit integer (systems)
  • stTime : clock time structure
  • fnFunction : function name

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

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

int iCountStudent;

     ส่วนอีกรูปแบบหนึ่งก็คือ การใช้ตัวอักษรพิมพ์เล็กทั้งหมด แล้วใช้ขีดล่าง (under score) คั่นระหว่างคำ โดยเมื่อใช้กับรูปแบบฮังกาเรียนแล้ว ก็จะเขียนอักษรย่อกำกับไว้ข้างท้าย ตัวอย่างเช่น

char *record_primary_key_p;

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

      ไม่ว่าคุณจะเลือกรูปแบบไหน อาจจะต้องมีการตกลงกันในทีมก่อน เพื่อให้รูปแบบการเขียนโปรแกรมไปในทิศทางเดียวกัน แต่สุดท้ายแล้ว คุณก็จะได้สไตล์การเขียนที่เป็นรูปแบบของคุณเอง สไตล์การพูดแต่ละคนไม่เหมือนกันฉันใด สไตล์การเขียนโปรแกรมก็ย่อมไม่เหมือนก้นฉันนั้น แต่เราก็พูดภาษาเดียวกัน ครับ

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

31.10.10

ทำอย่างไรถึงจะเป็นโปรแกรมเมอร์มืออาชีพ (How to be a professional Programmer)



The Programmerประเทศไทย กำลังก้าวเข้าสู่ยุค IT ยุคนี้ทุกคนจะต้องใช้อุปกร์ ทาง IT ไม่ว่าจะเป็น PDA โทรศัพท์มือถือ คอมพิวเตอร์ และอื่นๆ อีกมากมาย ตอนนี้ก็อยุ่ที่คุณเอง เลือกจะช่วยไห้ประเทศไทย เดินทางสุ่ยุคนี้ไปในทิศทางได มันก็มีอยู่ 2 ทิศทาง คือ ผู้ใช้ กับผู้สร้าง ถ้าเป็นผู้ใช้ นั่นก็หมาย ความว่า ประเทศไทย จะต้องจ่ายเงิน จากระเป๋า เพื่อซื้อ Software เงินก้จะใหลออกนอกประเทศ แต่ถ้าเป็นผู้สร้าง นี่หล่ะคือจุดสำคัญแห่งความยิ่งใหญ่ เราจะเป็นผู้รับเงินจากต่างประเทศ เอาหละตัสินใจว่าจะช่วยประเทศทางไหน ถ้าคุณเลือกเป็นผู้สร้าง คุณจะต้องเป็น Programmer และการที่คุณจะ ไปสู่จุดหมายนั้นคุณ จะต้องทำอย่างไรถึงจะเป็นโปรแกรมเมอร์มืออาชีพ ต้องทำให้ได้ 5 ข้อ ดังต่อ ไปนี้ครับ

        1. สำรวจดูว่า ตัวเองมีคุณสมบัติเป็นโปรแกรมเมอร์หรือไม่

        2. ฝึกเขียนโปรแกรม

        3. ค้นหาข้อมูลเพิ่มเติม

        4. เผยแพร่ผลงาน

        5. กระทำตามข้อ 1 - 4 อย่างสม่ำเสมอ

        นี่ คือ 5 ข้อหลักของโปรแกรมเมอร์ ถ้าหากคุณทำได้ทั้ง 5 ข้อนี้ คุณก็จะได้เป็น โปรแกรมเมอร์ มืออาชีพ เลยทีเดียว เรามาดูรายละเอียดของแต่ละข้อกันเลยดีกว่าครับ ว่ามีราบละเอียดอย่างไรบ้าง

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

       

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

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

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

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

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

        แล้วจะใช้ภาษา อะไรดี ขอแนะนำดังนี้ครับ ภาษาที่ ทีเครื่องมือ แบบ Visual ช่วยเยอะแยะไปหมด ย่อมมีขีดจำกัดของมัน ภาษาที่มีเครื่องมือแบบ Visual น้อย ก็จะลดขีดจำกัดลงได้ครับ ดังนั้นขอแนะนำภาษา จากยากไปหาง่าย เพียงบางตัวดังนี้ครับ Assembly, C++, C++ Builder, C# Builder, Visual C++, Visual C#, Delphi7,Pascal, Delphi8 for .Net, Visual Basic.Net, Visual Basic เป็นต้น จะสังเกตุเห็นว่า Assembly เป็นภาษาที่เข้าไกล้ภาษาเครื่อง มากที่สุด เขียนยาก ไม่มี Tools ช่วย ต่อมา เป็น C++ เขียนง่ายขึ้นมาหน่อย แต่ไม่มี Tools ช่วย ต่อมา เป็น C++ Builder ก็เขียนว่าย ขึ้นมาอีกนิด มี Tools ช่วยพอประมาณ ต่อมาเป็น C# Builder ก็มี Tools ช่วยมากมาก เขียนง่ายเข้าไปอีกระดับ จนสุดท้าย Visual Basic โอ้พระเจ้า Tools เพียบ เขียนง่ายมากๆ แค่ เขี่ยๆ ก็เสร็จแล้วครับ งายจริงๆ ไม่ต้องใช้สมองในการคิดเลย ช่วยให้เราเบาสมองไปได้เยอะ และทำให้สมองเราไม่ได้ใช้งาน เป็นใงครับ เมือสมองไม่ได้ใช้งาน ก็สมองตื้อสิครับ

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

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

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

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

        แล้ว... แหล่งค้นคว้าข้อมูลหล่ะ อยู่ที่ไหน ตรงนี้ มีเต็มไปหมดเลยครับ อันได้แก่ หนังสือวารสาร ต่างๆ หนังสือวิชาเฉพาะด้าน มากมายเต็มไปหมดเลย ทางรายการตาม สถาณีวิทยุ โทรทัศน์ ก็มี สารคดีต่างๆ แม้กระทั่งสื่อ CD-ROM ต่างๆ และที่ค้นหาข้อมูล ได้อย่างมหาศาล ก็คือ Web site ใงครับ เป็นแหล่งค้นหาข้อมูลที่ยิ่งใหญ่ เหมือนกัน และโดยมากแล้ว จะเป็นข้อมูลที่มีการ Update บ่อย และเป้นข้อมูล Share จากประสบการณ์ ของกลุ่ม โปรแกรมเมอร์ ด้วยกัน ดังนั้นเราก็รู้แล้วว่า แหล่งจ้อมูลมีมากมาย สุดแล้วแต่ที่เราจะหาได้ ใครชอบแบบใหน ก็เอาอย่างนั้นครับ แต่ผมว่า ค้นหาข้อมูลทุกรูปแบบ ครับดีกว่าหาข้อมูลจากแหล่งเดียว จะได้นำข้อมูลมาเปรียบเทียบกัน วิธีการเลือกซื้อหนังสือ ก็เหมือนกัน พยายาม เลือกซื้หนังสือที่เหมาะสม และน่าเชื่อถือ โดยเฉพาะ หนังสือแปล ที่แปลมาจากหนังสือภาษาต่างประเทศ ต้องดุให้แน่ใจว่า ผู้แปล หนังสือเล่มนั้น ต้องเป็น โปรแกรมเมอร์ ไม่ใช่นักแปลภาษาอังกฤษ เพราะ ศัพท์ บางคำ ที่เป็นภาษาของโปรแกรมเมอร์ ไม่ได้มีความหมาย ตรงกับความหมาย ของนักแปลภาษาทั่วไป ผมเห็นหลาย ต่อหลายเล่ม ที่แปลผิด น่าสงสาร แม้กระทั่ง ครูผู้สอนเองยังนำเอาสิ่งผิดๆ นั้นไปสอนนักเรียน ต่ออีก แล้วเมื่อไร เราจะได้โปรแกรมเมอร์ที่รุ้จริง อย่างที่ผมเห็นมา การแปล เรื่อง Object และ Class ดันไปแปลว่า Class คือพิมพ์เขียว พิมพ์เขียวอะไรกัน มั่วกันไปใหญ่ นักเรียน ตามมหาวิทยาลัย ก็นำเอาความรู้ที่ผิดๆ นัน มาใช้กัน จนชั่วลูกชั่วหลาน แล้วเมื่อไร คนไทยจะมีโปรแกรมเมอร์ระดับ มืออาชีพ เก่งๆ กับเขาสักที อย่างนี้แหละ ที่ผมจะบอกว่า อย่าเชื่อหนังสือมากนัก จงเชื่อโปรแกรมเมอร์ดีกว่า ครับ แล้วเราจะได้ไม่เสียดาย เงินที่ซื้อหนังสือ จะซื้อที ต้องได้หนังสือดีมีคุณค่า จริงใหมครับ

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

        แล้วเราจะเผยแพร่ผลงานอย่างไร ไม่ยากครับ วิธีแรก ง่ายที่สุดเลยครับ ส่งตัวอย่างโปรแกรมให้กลุ่มเป้าหมายไปทดลองใช้ วิธีนีได้ผลดีทีเดียวครับ สำหรับคนที่กว้างขวาง รุ้จักคนเยอะแยะไปหมด ก็ทำได้ง่าย แล้วคนที่ไม่ค่อยรู้จักใครหล่ะ ก็มีวิธีเช่นกันครับ ก็โดยการเผยแพร่ผลงานผ่าน Web site ใงครับ เช่นเข้าไปช่วยตอบกระทู้คำถาม ของกลุ่ม โปรแกรมเมอร์ต่างๆ ตาม Web board หรือ Forum Board ต่างๆ เมื่อเราเข้าไปช่วยตอบ ช่วยแก้ไขปัญหาต่างๆ ได้ นั่นแหละครับ หมายความว่าคุณได้สร้างผลวานออกไปแล้ว และถ้าหาก อยากเผยแพร่ผลงานอะไรออกไป แต่ไม่มีใครถามสักที ก็ตังคำถามเองเสียเลย และคอยดูว่าจะมีคนสนใจคำถามนั้นหรือไม่ พอมีคนตอบ มา เราก็ไปเสริมสักหน่อย หรืออีกอย่าง เราก็ตังกระทู้เป็น เนื้อหาไปเลยไม่ใช้คำถาม เป็นบทความบทความหนึ่งไปเลย นี่ก็นับเป็นการเผยแพร่ ผลงานอีกวิธีหนึ่ง และค่อนข้างได้ผลดีทีเดียว ส่วนอีกวิธี ก็คือ เผยแพร่ตัวอย่าง Source Code ไปเลยครับ วิธีนี้ได้ผลดีเยี่ยมเลยทีเดียวครับ เพราะเป็นทั้ง บทความ และมี Source Code ตัวอย่างให้ Download อีกต่างหาก วิธีนี้รับรองประทับใจหลายคนเลยทีเดียวครับ

        หลายคนก็บอกว่า จะลงเนื้อหา บทความได้ที่ไหน เพราะ Web board หรือ Forum board หลายที่ จำกัดจำนวนตัวอักษรในการลง ทำให้ลงเนื้อหาได้ไม่หมด เอาหล่ะตรงนี้ ผมก็เห็นใจ ผมเลยตัดสินใจเด็ดขาด เพื่อเป็นสื่อกลางนั้น โดยการปรับปรุง Forum board ขึ้นหมาใหม่ ไม่จำกัดตัวอักษรใน และสามารแทรกรูปภาพในเนื้อหาได้ เป็นลักษณะ Visual HTML Editor เพื่อให้ทุกคนสามารถเผยแพรผลงานออกไป พร้อมทั้งไปนั้งหลังขดหลังงอ สร้าง Code Develop ขึ้นมาเพื่อให้ทุกคนสามาถ ที่จะส่งบทความพร้อม Source Code เพื่อเผยแพร่เช่นกัน หน้าตาคล้ายกัน ที่นี่ จะให้ความสำคัญและ สนับสนุนทุกคนครับ

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

        สุดท้ายนี้ ก็ขอให้ทุกคนเป้นโปรแกรมเมอร์ สมใจครับ หากต้องการปรึกษาผมโดยตรง ก็ติดต่อมาได้ครับ ....Webmaster

…………. ที่มา www.thai-programmer.com

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

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 กับไมโครคอลโทรลเลอร์ หรือรายละเอียดเพิ่มเติม คลิก

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

12.2.10

Thai Beginner Programmer with English language

Bot Programmer วันนี้มีเรื่องๆหนึ่ง ที่อาจจะไม่ได้เกี่ยวกับการเขียนโปรแกรม หรือเทคนิคการใช้โปรแกรมใดโปรแกรมหนึ่ง แต่คิดว่าเป็นสิ่งๆหนึ่งที่คนที่จะเขียนโปรแกรมนั้นจำเป็นต้องมี นั่นก็คือ เรื่องของภาษา โดยเฉพาะภาษาอังกฤษ

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

หลายคนลืมนึกไปว่า โปรแกรมที่เรากำลังเขียนอยู่นั้น ตัวมันเองก็มีคู่มืออยู่แล้ว (แค่กด F1 มันก็โผล่มาแล้วคู่มือ) แต่ด้วยความที่คู่มือนั้นเป็นภาษาอังกฤษ เอาแล้วซิ งานเข้าเป็นสองเท่า นอกจากจะงงกับภาษาโปรแกรมที่ตัวเองเขียนแล้ว ยังมางงกับภาษาอังกฤษอีก T_T เศร้าเลย

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

บ่นซะมานาน ความจริงก็อยากจะให้เพื่อนๆสนุกกับภาษาอังกฤษ อย่างที่เค้าว่านั่นแหละ English is fun!!! มาเถิด มาสนุกกับมัน

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

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

Bot tutor English

English Tutor by BOT

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

28.8.09

เจาะใจนักเจาะรหัส HACKER

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

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

เจาะใจนักเจาะรหัส HACKER


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

- แฮกเกอร์ (Hacker)
บางกลุ่มเรียกว่าพวกหมวกขาว (White Hat) จัดอยู่ในฝ่ายธรรมะ เป็นพวกที่มีความเชี่ยวชาญด้านระบบคอมพิวเตอร์อย่างดีเยี่ยม สามารถค้นพบช่องโหว่และแจ้งเตือนให้เจ้าของระบบได้รับรู้ อีกทั้งยังนิยมศึกษาหาความรู้เพิ่มเติม แบ่งปันความรู้ที่ได้และไม่เคยคิดทำลายข้อมูลโดยมีเจตนา

- แครกเกอร์(Cracker)
แครกเกอร์ (Cracker) บางกลุ่มเรียกว่าพวกหมวกดำ (Black Hat) จัดว่าเป็นแฮกเกอร์ฝ่ายอธรรม นิยมใช้ความสามารถเฉพาะตัวไปในทางที่ผิด มีเจตนามุ่งร้าย ทำให้เกิดปัญหาในระบบคอมพิวเตอร์

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

 

เขาหาว่าผมเป็นแฮกเกอร์!!!

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

ผลงานส่วนหนึ่งถูกดูแลโดย นิรันดร์ ไชยเดช (9AuM) หนุ่มทำงานวัย 29 ปี กับตำแหน่ง Senior Web Application Programmer เขาทำงานที่นี่มากว่า 6 ปีแล้ว ตั้งแต่ครั้งยังเรียนไม่สำเร็จแต่ใบรองรับการศึกษาไม่เป็นปัญหา ด้วยเพราะฝีไม้ลายมือที่เจนจัดและหาตัวยากในการเขียนโปรแกรม อาจกล่าวได้ว่านิรันดร์เป็นนักโปรแกรมเมอร์ที่ใครหลายคนให้การยอมรับ

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

ตามปกติแล้วงานทำเว็บไซต์ต้องแยกหน้าที่ให้ชัดเจน เหมือนกับที่บริษัทผมทำคือ มีโปรแกรมเมอร์ มีดีไซเนอร์ มีเว็บมาสเตอร์ และเอดิเตอร์ 4 คนนี้ควรจะมีเพื่อทำให้งานเป็นระบบและทำให้เรื่องที่ตัวเองถนัด

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

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

"ผมชอบและดีใจที่ได้เรียนคณะครุศาสตร์อุตสาหกรรม ที่นี่ได้สอนให้ผมกล้าคิดกล้าแสดงออก และทำให้ผมสามารถนำความคิดและความรู้ของตัวเองออกไปถ่ายทอดให้ผู้อื่นได้"

เพียงแต่ในตอนนั้นผมมองว่าผมจะมีช่องทางไหนบ้างที่ไม่ต้องยึดติดกับอาชีพที่เกี่ยวกับด้านไฟฟ้าและอิเล็กทรอนิกส์
"พอผมเรียนปี 3 อาจารย์ให้ไปเซ็ตระบบ Lan ในห้องไฟฟ้า ผมรู้สึกทันทีว่าชอบเกี่ยวกับคอมพิวเตอร์ ตั้งแต่นั้นมา ผมก็เรียนให้พอผ่านๆ ได้เกรด C บ้าง B บ้างไปตามเรื่องไม่ให้สอบตก เวลาว่างปุ๊บจะมานั่งจับคอมพิวเตอร์ พอขึ้นปี 4 ชาวบ้านเขาไปเรียนกัน เราก็นั่งจับคอม เขียนเว็บ"

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

และช่วงที่นิรันดร์ได้มาสัมผัสกับคำว่า "แฮกเกอร์" ก็เมื่อเขาเรียนอยู่ปลายปี 4 ขณะเริ่มทำงานได้ 3 เดือน โลกทัศน์ของการทำงานเปิดหูเปิดตาให้เขากว้างขวางขึ้น และนิสัยส่วนตัวที่ชอบใฝ่รู้ถึงที่มาหรือต้นตอ ซึ่ง นิรันดร์ยกตัวอย่างให้ฟังว่า หากเขาจะทำเว็บบอร์ดขึ้นมา เขาก็ต้องรู้ทุกอย่างว่าทำยังไง ระบบส่วนนี้ทำงานอย่างไร มีไฟล์ไหนที่เกี่ยวข้องบ้าง และแต่ละไฟล์ทำหน้าที่อะไร ผิดกับเด็กสมัยนี้ที่รู้อะไรไม่ลึกซึ้งในสิ่งที่ตนพัฒนา

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

• ปฏิบัติการHack

มีบางคนกล่าวกันว่าแฮกเกอร์ส่วนใหญ่ก็จะเป็นพวกโปรแกรมเมอร์ หรือผู้ดูแลระบบ (System Admin) เสียเอง เพราะคนกลุ่มนี้จะเชี่ยวชาญและคลุกคลีอยู่กับการเขียนโปรแกรมและดูแลระบบ นิรันดร์เล่าถึงเพื่อนสนิทในกลุ่มของเขาที่มีอยู่ประมาณ 3-4 คน ให้ฟังว่า ช่วงก่อนที่จะมีการก่อตั้งกระทรวงเทคโนโลยีสารสนเทศและการสื่อสาร (ไอซีที) เพื่อนของเขาสามารถเข้าไปในเว็บที่ให้บริการตัดบัตรเครดิต (payment gateway) เพื่อเข้าไปเอาหมายเลขบัตรเครดิตมาสั่งซื้อสินค้าผ่านทางเว็บไซต์ต่างประเทศ ร่วม 10 แห่ง โดยที่ไม่ต้องจ่ายตังค์ของตัวเองเลยสักบาท

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

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

ครั้งนั้นไม่สำเร็จและยังถูกเจ้าของเว็บไซต์ส่งเมล์ถึงเขา แต่ไม่ใช่การต่อว่าหรือเอาเรื่องกับนิรันดร์ กลับเป็นการตะลึงในฝีมือของเด็กหนุ่มที่ทำได้ยังไงกัน รวมถึงการเสนอให้เขารับงานแฮกข้อมูลของยูสเซอร์ในเว็บไซต์ต่างประเทศ เพียงต้องการแค่ชื่อและอีเมล์จำนวน 400 ชื่อ นิรันดร์ยังจำเหตุการณ์นั้นได้ เขาได้รับเงินโอนเข้ามาในบัญชีประมาณ 500 เหรียญฯ ก่อนหน้าที่เขาจะเขียนโปรแกรมเข้าไปรันในโฮสต์และได้รายชื่อพร้อมกับอีเมล์ ส่งให้

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

ในยุคอินเทอร์เน็ตเริ่มเป็นที่แพร่หลายโปรแกรมไอซีคิวกำลังดัง นิรันดร์เล่าว่า คนที่ใช้ไอซีคิวส่วนใหญ่ต้องการเลขสมาชิกสวยๆ ยิ่งใครได้เลขน้อยหลักก็ยิ่งเจ๋ง นิรันดร์ลงมือจัดการกับเรื่องนี้ ด้วยการไล่แฮกคนที่มีเลขสมาชิกสวยๆ ซึ่งตัวเขาเองก็มีเลขสมาชิก 6789... ด้วยการเขียนโปรแกรมไล่สุ่มรหัสผ่าน ตอนนั้นได้เบอร์ไอซีคิวมา 2,000-3,000 เบอร์ ก็ไล่แจกกันในห้อง IRC และเริ่มทำกำไรด้วยการขายไอซีคิวเบอร์สวยๆ เบอร์ละ 700-800 บาท เขาบอกว่าตอนนั้นได้เงินมาประมาณ 2,000-3,000 บาท

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

"ผมก็เขียนโปรแกรมให้โปรแกรมออโต้ โพสต์ ไปว่า มีเว็บมาแนะนำ โพสต์ไป 200-300 เว็บต่อวัน มีคนส่งกลับมาลงทะเบียนตามไอดีของเรา ช่วงนั้นได้เงินประมาณหลักแสนนะ เงินที่ได้มามันก็ละลายไปกับการซื้อของ ซื้อหนังสือ ซื้อคอมพิวเตอร์ ดีว่าตัวเองไม่ได้เอาเงินไปเที่ยวเตร่"

ปัจจุบันนิรันดร์เลิกพฤติกรรมแบบเดิมๆ เพียงแต่เขายังเข้าไปศึกษาเว็บไซต์อื่นๆ เพื่อศึกษาถึงช่องโหว่ของแต่ละเว็บไซต์ เมื่อพบแล้วเขาก็จะแจ้งให้ทางเว็บมาสเตอร์ของเว็บไซต์นั้นรู้ตัว ก่อนที่จะโดนแฮกเกอร์รายอื่นลองของ

"ที่ผมพบกับตัวเองเป็นเว็บไซต์ของธนาคารแห่งหนึ่ง ซึ่งผมยังอึ้งกับนักพัฒนาของเขาที่เขียนโปรแกรมด้วยซอฟต์แวร์หลายภาษามาก เพราะโอกาสที่แอพลิเคชั่นมีปัญหาเป็นไปได้ค่อนข้างสูง แล้วผมก็รู้ว่าเว็บไซต์ธนาคารแห่งนี้หลุดหลายครั้งมาก มีแฮกเกอร์เข้าไปแก้เรื่องวงเงินของบัตรเครดิต เรื่องบัญชีธนาคาร แต่ผมไม่รู้รายละเอียดนะเรื่องนี้

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

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

"สิ่งที่ผมทำทุกวันนี้ถ้าคุณเขียนโปรแกรม เขียนเว็บแอพลิเคชั่นแล้วมีบัคขึ้นมา ผมก็ตามไปดู มันหมดอารมณ์ที่จะไปทำลายเว็บชาวบ้าน แต่ถ้าเป็นเมื่อ 2-3 ปีก่อนถ้าเจอแบบนี้ก็อาจจะเข้าไปแก้ไขและเป็นที่รู้กันว่า �ฉันทำได้� ในกลุ่มจะรู้กัน บางคนจะส่งลิสต์เข้ามา 10-20 เว็บว่า นี่ฝีมือฉันนะที่เข้าไปเปลี่ยน ไม่ใช่ต้องการกลั่นแกล้งแต่เป็นเหมือนการลองของ ช่วงนั้นมีการเก็บสถิติกันเลยว่าใครทำที่ไหนได้บ้าง แต่ทุกวันนี้ทุกคนรู้ว่าเว็บไหนมีช่องโหว่แล้วก็จบ รู้กันแค่นี้"

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

• มุมมองต่อการบล๊อกเว็บไซด์

ส่วนปัญหาเรื่องการเข้าไปในเว็บไซต์ไม่เหมาะสมนั้น นิรันดร์มองว่าน่าจะเป็นเรื่องจิตสำนึกของคนมากกว่า การบล็อกเว็บไซต์คงไม่ใช่ทางออกที่ดีนัก

. "เพราะบางทีผมต้องการเข้าไปดูข้อมูล แต่ปรากฏว่าเว็บโดนบล๊อก เปิดไปเจอตาทิพย์เข้าให้ ผมคิดว่าถูกแล้วเหรอที่จะไปจำกัดสิทธิส่วนตัวของคนอื่น ทุกวันนี้เหมือนกับเราพยายามล้อมคอกวัว แต่ส่วนตัวผมมองว่าทำไมเราไม่ฉีดวัคซีนให้กับวัวให้มีภูมิคุ้มกันแล้วปล่อย ให้เดินกลางทุ่งไปเลย"

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

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

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


ที่มา : http://www.cioforum.in.th/cover_story/cover_story_39page1.php

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

30.6.09

หัดคลาน Programming Algorithm

excel-vba-for-loop-do-while-loop-and-do-until-loop หลายๆคนที่เริ่มเขียนโปรแกรม แบบว่าเขียนตามหนังสือ หรือเขียนเพราะอยากเขียนเป็น จะเจอคำถาม คำถามหนึ่งที่บางครั้ง เราก็ลืมถามตัวเอง แล้วก็ไม่ได้หาคำตอบด้วยว่า เราจะวนลูปไปทำไม ทำไมต้องวนลูป for loop, while loop เอาไว้ทำไมหว่า !!!??? แล้วพวก if , else , else if มันเอาไว้ทำไมกัน ฉันจะใช้มันตอนไหนเนี่ย ???!!! เป็นคำถามที่เก็บเงียบสำหรับมือใหม่ ผมเองก็เคยเป็นเหมือน สมัยที่เริ่มเขียนโปรแกรมใหม่ๆ ยิ่งถ้าเป็นประเภทว่า อ่านตามหนังสือแล้วทำตามนะ แทบจะเลิกไปเลยหล่ะ มันแทบไม่ทำให้เราเข้าใจสักที ว่าเราต้องใช้พวกมันไปทำไม

วันนี้ผมจะมายกตัวอย่างให้เห็นกันแบบเป็นรูปธรรม เอาแบบว่ายกตัวอย่างในชีวิตประจำวันเรา กับขั้นตอนวิธีคิดการเขียนโปรแกรม (Algorithm) เพราะผมเห็นหลายๆคน เพื่อนๆหลายคนที่เรียนด้วยกัน เวลาเจอวิชาโปแกรมมิ่ง มักจะมาถามบ่อยๆว่าตรงนี้ทำได้งัย คิดยังงัย พอเราอธิบาย มันก็ทำหน้าเหมือนเข้าใจ แต่พอเวลาให้ไปimageเขียนเอง หรือต้องเขียนด้วยตัวเอง มักจะทำไม่ได้ เพราะว่าเค้ายังไม่เข้าใจว่า คอมพิวเตอร์มันคิดเองไม่เป็น ซึ่งบางคนอาจจะแย้งว่า computer AI ปัญญาประดิษฐ์ (Artificial Intelligence)  มันคิดเองเป็นนะ นั่นไม่ใช่มันคิดเป็นนะ เราสอนให้มันคิดต่างหากหล่ะ และพวกมันก็คิดได้เป็นเรื่องๆเท่านั้น หลายเรื่องพร้อมกัน ทำได้ยากมาก ถ้าทำได้ นั่นก็แปลว่าคนที่โปรแกรมให้มันเก่งกว่ามันต่างหาก 

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

 

"...... Algorithm : ขั้นตอนวิธี หรือ อัลกอริทึม (อังกฤษ: algorithm) หมายถึงกระบวนการแก้ปัญหาที่สามารถเข้าใจได้ มีลำดับหรือวิธีการในการแก้ไขปัญหาใดปัญหาหนึ่งอย่างเป็นขั้นเป็นตอนและชัดเจน เมื่อนำเข้าอะไร แล้วจะต้องได้ผลลัพธ์เช่นไร ซึ่งแตกต่างจากการแก้ปัญหาแบบสามัญสำนึก หรือฮิวริสติก (heuristic)

โดยทั่วไป ขั้นตอนวิธี จะประกอบด้วย วิธีการเป็นขั้นๆ และมีส่วนที่ต้องทำแบบวนซ้ำ (iterate) หรือ เวียนเกิด (recursive) โดยใช้ตรรกะ (logic) และ/หรือ ในการเปรียบเทียบ (comparison) ในขั้นตอนต่างๆ จนกระทั่งเสร็จสิ้นการทำงาน

ในการทำงานอย่างเดียวกัน เราอาจจะเลือกขั้นตอนวิธีที่ต่างกันเพื่อแก้ปัญหาได้ โดยที่ผลลัพธ์ที่ได้ในขั้นสุดท้ายจะออกมาเหมือนกันหรือไม่ก็ได้ และจะมีความแตกต่าง ที่จำนวนและชุดคำสั่งที่ใช้ต่างกันซึ่งส่งผลให้ เวลา (time) , และขนาดหน่วยความจำ (space) ที่ต้องการต่างกัน หรือเรียกได้อีกอย่างว่ามีความซับซ้อน (complexity) ต่างกัน

การนำขั้นตอนวิธีไปใช้ ไม่จำกัดเฉพาะการเขียนโปรแกรมคอมพิวเตอร์ แต่สามารถใช้กับปัญหาอื่น ๆ ได้เช่น การออกแบบวงจรไฟฟ้า, การทำงานเครื่องจักรกล, หรือแม้กระทั่งปัญหาในธรรมชาติ เช่น วิธีของสมองมนุษย์ในการคิดเลข หรือวิธีการขนอาหารของแมลง....."

ที่มา จากวิกิพีเดีย สารานุกรมเสรี

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

image ถ้าเป็นปัญหาแบบนี้ เพื่อนๆก็คงจะใช้วิธีไล่อ่านไปที่ละบรรทัด โดยใช้นิ้วหรือปากกาไล่ไปตามตัวอักษร หากว่าในบรรทัดนั้นมีคำว่า "Algorithm" ก็ต้องทำการจดบันทึกไว้ก่อน แล้วก็ไล่ไปอีกเรื่อยๆ จนสุดบรรทัด แล้วก็เอาค่าที่ได้รวมกันไว้แล้ว หรือมารวมกันทีหลัง เอามาเป็นคำตอบแน่ๆ  แน่นอนหล่ะ เราทำได้แล้ว เราแก้ปัญหาได้แล้ว ปัญหาก็คือจะเขียนมันยังงัยหล่ะ ตรงนี้มันเป็นส่วนของไวยกรณ์ (syntax) ของแต่ละโปแกรม ซึ่งเพื่อนๆสามารถหาอ่านได้จากคู่มือโปแกรม (help) หรือไม่ก็หนังสือสอนการเขียนโปรแกรม แต่ขั้นตอนการแก้ปัญหา (Algorithm) มันเป็นเรื่องของความคิดของแต่ละคน จนบางครั้งในปัญหาเดียวกันนี้ เราสามารถเขียนขั้นตอน (Algorithm) ในการแก้ปัญหาออกได้เป็นหลายๆวิธี ซึ่งขึ้นอยู่กับประสบการณ์ของแต่ละบุคคล

ถ้าในความคิดผมนะ ผมจะทำการโหลดข้อความทั้งหมดในหน้าเว็บนี้ เข้ามาเก็บไว้ในตัวแปร (ตัวแปร ก็เป็นหน่วยความจำที่รู้ตำแหน่งที่เก็บนั่นเอง) ก่อน หลังจากนั้นผมก็จะทำการการอ่านข้อมมูลทีละบรรทัด (ใช้ loop while ช่วย) โดยในขณะทีทำการอ่านทีละบรรทัดไปนั้น ผมก็ทำการเช็คไปด้วยว่าเจอคำว่า "Algorithm" ไหม ถ้าเจอ ก็บวกไว้หนึ่ง (ตรงนี้ อาจจะใช้การเพิ่มค่าตัวแปรคำตอบ ans++; ก็ได้ ) พอจบบรรทัดนึง while loop ก็ทำการเช็คว่าเป็นบรรทัดสุดท้ายหรือยัง ถ้ายัง (ข้อมูลเป็นจริง) ก็ยังจะทำการอ่านบรรทัดต่อไป ทำเช่นนี้ไปเรื่อยๆ จนสุดบรรทัดสุดท้าย โปรแกรมก็เลิกทำงานแล้วเอาคำตอบมาแสดง

เห็นไหมหล่ะครับ ว่าขั้นตอน (Algorithm) มันประมาณนี้ แต่ถ้าเกิดมีคำถามเพิ่มขึ้นมาว่า คำว่า "Algorithm" มันอยู่บรรทัดไหนบ้าง เอาหล่ะสิ เพื่อนๆคิดว่าจะเพิ่มโค๊ดเข้าไปตอนไหน เพื่อนๆบางคนอาจจะคิดออกแล้ว ว่าจะต้องเพิ่มโค๊ดเข้าไปตรงไหน แต่สำหรับคนที่ยังคิดไม่ออก ไม่เป็นไรครับ ของอย่างงี้มันขึ้นอยู่กับการฝึกฝนครับ ฝึกมากๆ เก่งมากครับ

สุดท้ายผมได้เขียน ภาษา PHP ลองแก้ปัญหาที่ถามเพื่อนไป แต่สำหรับใครที่อยากจะเขียนภาษาอื่น ก็ไม่ว่ากันครับ ก็อย่างที่บอกแหละครับ มีแค่ไวยกรณ์ (syntax) ของภาษาเท่านั้นแหละที่มันต่างกัน แต่การสื่อความหมาย มันเหมือนๆกันแหละครับ วันนี้พอแค่นี้ก่อนแหละกัน บทความนี้ชักจะยาวไปแล้ว   สวัสดีครับ

<?php
$handle = fopen("data.txt", "r");
$contents = '';
$ans = 0;
$lineNumber = 1;
while (!feof($handle)) {
    $contents = fgets($handle, 4096);
    $ans = $ans + substr_count($contents, "Algorithm");
    echo "บรรทัดที่ ".$lineNumber."  พบคำว่า Algorithm จำนวน   ".substr_count($contents, "Algorithm")."  คำ \n";
    $lineNumber++;
}
fclose($handle);
echo "\n";
echo "พบจำนวนคำว่า Algorithm ทั้งหมด ".$ans." คำ";
echo "\n";
?>

ผลลัพธ์ที่ได้จากการรัน PHP ผ่าน edit plus

image

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

13.6.09

โปรแกรมเมอร์เข้าสิง

kratok2006@hotmail[1].com_a6fd6c2c แรกเริ่มเดิมที ผมไม่ได้มาจากสายคอมพิวเตอร์โดยตรง แต่ก็พอได้เรียนมาบ้างวิชาโปแกรมมิ่ง แต่นั้นก็ยังนับว่าไม่พอเพียงหากจะเขียนโปแกรมให้เป็นสักภาษาหนึ่ง ในระหว่างนั้นได้มความพยายามอย่างมากที่จะเข้าใจให้ได้ว่าการเขียนภาษาโปรแกรมนั้น เค้ามีหลักในการเขียนอย่างไร และมันต้องเรียนรู้อะไรบ้าง แต่เนื่องจากว่าในสมัยนั้น (ประมาณปี พ.ศ. 2538) การสื่อสารในวิชาโปรแกรมนั้น เรายังใช้คำไทยอยู่ เรา บางคนอาจจะเคยพบเห็นหนังสือบางเล่มในปัจจุบัน ยังใช้คำไทยเหล่านั้นอยู่ ซึ่งต้องขอเรียนตามตรงว่า ถ้าเราจะอ่านตำราวิชาโปรแกรม อย่างเช่นภาษาซีนั้น เราจะต้องเปิดพจนานุกรม เพื่อแปลไทยเป็นไทยอีกทีนึง เพื่อให้เข้าใจคำศัพท์บางตัวที่เราแทบไม่เคยได้ยินกันเลย ผมไม่ขอยกตัวอย่างแล้วกัน เพื่อนๆบางคนอาจจะเคยเห็นกันมาบ้าง บอกตามตรง มันงงจริงๆตอนนั้น

programer จนมาถึงปัจจุบัน คอมพิวเตอร์แทบจะบอกได้เลยว่า มันเป็นการก้าวกระโดดทางเทคโนโลยีทางด้านฮาร์ดแวร์และซอพแวร์เลยก็ว่าได้ ทุกอย่างถูกพัฒนาควบคู่กันไป ทุกวันนี้ หนังสือโปแกรมมิ่ง ค่อนข้างเยอะ และเราเองคนไทย ก้เริ่มที่จะพัฒนาศักยภาพของตัวเอง ด้วยการอ่านตำรา text book ที่มาจากเมืองนอกบ้าง จนทำให้ทุกวันนี้ เราไม่ต้องมาลำบากในการค้นคว้าและศึกษาการเขียนโปรแกรมเหมือนกังแต่ก่อน (ผมได้รู้จักกับ เด็กวัยรุ่นคนนึง ในขณะที่ผมอายุสามสิบกว่า น้องเค้าอยู่ ม.4 เค้าสามารถที่จะเขียนโปแกรมเป็นแหละ)

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

garlic42 จากประสบการณ์โดยตรงที่ผมเจอมา ก็คือ เราไม่รู้ว่า เวลาที่เรา print ค่าออกมา หรือการวนลูป การใช้เงื่อนไข if else เรานำไปใช้ทำไม เพื่ออะไร ทำไมต้องทำอันนี้ก่อน อยากได้ผลลัพธ์แบบนี้ ต้องทำอย่างไรก่อนหลัง ไปๆมาๆ ก็เลยพาลให้เรา เลิกเขียนโปรแกรมเอาซะดื้อ ยิ่งไม่รู้ว่าจะเอาไปใช้อะไรด้วยแล้ว ยิ่งแย่ไปใหญ่ มันหมดความตั้งใจไปเลยก็มี 

ที่ผมพอจะเขียนภาษาคอมพิวเตอร์ได้บ้างนั้น มันเกิดจากการที่ผมจำเป็นต้องทำ และผมอยากทำไปพร้อมๆกัน ผมได้รับมอบหมายให้เขียนเว็บไซต์ที่เอาไว้โชว์ในบริษัท ซึ่งเป็นแค่โชว์ใน intranet เท่านั้น ไม่ใช่ internet นะครับ ผมก็เริ่มจากการเอาคอมพิวเตอร์เครื่องเก่าๆเครื่องนึง มาทำการลง linux แล้ว setup ให้มันเป็น web server ไปในตัว จากตรงนั้นเอง จากที่ไม่มีความรู้อะไรเลย ก้จำเป็นต้องค้นคว้าหาข้อมูลว่ามันต้องทำยังงัยบ้างในการติดตั้ง web server ผมไม่ได้เรียนมาหรอกครับ แต่อาศัยว่า ตอนนั้น มันต้องทำให้ได้จริงๆ เป็นการเรียนรู้ แล้วลงมือทำเลยทันที เหมือนกับนักศึกษาที่ต้องอ่านการทดลองแลปมาก่อน แล้วลงมือปฏิบัติ 

programmer1

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

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

c_plus_plus

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

programmer

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

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

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

  • 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