สอนเขียนโปรแกรม สำหรับมือใหม่
พูดคุยกันก่อน
มื่อพบใคร .. ที่สนใจการโปรแกรม (Programming) และเป็นผู้เริ่มต้น (Beginner) หรือจะเป็นนักพัฒนา (Developer) จะมีคำถามสำคัญ ที่ใช้ชวนพูดคุยกันว่า "อยากเขียนโปรแกรมบน แพลตฟอร์ม (Platform) ใด" ก็มักเริ่มจากการเลือก ระบบปฏิบัติการ คือ Windows, Linux, Android, iOS แล้วเลือก แหล่งที่ใช้โปรแกรม คือ Windows, Website หรือ Application แล้วก็ต้องเลือก ภาษาที่ใช้พัฒนา อาทิ PHP, JAVA, C, ASP, VB, Python ซึ่งมีบางภาษาที่พัฒนาแล้ว สามารถนำไปใช้ได้ในหลายแพลตฟอร์ม
ถ้าเป็นผู้เริ่มต้นก็จะมีคำถาม 3 ข้อข้างต้น ให้พิจารณาก่อนเริ่มต้นกับการพัฒนาโปรแกรม ก่อนถาม 3 ข้อข้างต้น ก็จะถาม 2 ข้อนี้ก่อน คือ เขียนไปทำไม (Why) และมีอะไรเป็นเครื่องมือ (Tool) ก็เป็นคำถามที่ต้องตอบ เพื่อช่วยให้ตอบ 3 คำถามข้างต้นได้ง่ายขึ้น สรุปว่าผมมีคำถาม 5 ข้อน่ะครับ ไว้ชวนคุย
นิยามศัพท์

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

ชวนอ่าน Blog เรื่อง แนวทางวางแผนอนาคตสำหรับนิสิตนักศึกษาสาย Computer Science/Engineering
ขียนโดย Panjamapong Sermsawatsri เป็น CTO at TakeMeTour พบว่า มีหลายประเด็นชวนให้คิด เหมาะกับ นักเรียน นิสิต นักศึกษาที่คิดจะเป็นนักพัฒนา (Developer) ซึ่งน่าจะมี 7 ข้อ โดยข้อแรก ผมว่าสำคัญมาก คือ เตรียมตัวให้พร้อม และมี quote จาก blog ที่อ่านแล้วกินใจเลย คือ "แต่ถ้าน้องรู้สึกว่าไม่อยากทำงานเขียนโค้ดแล้ว ย้ายสายดีกว่า" หากไม่ย้าย ก็มาเอาจริงเอาจังกับข้อ 1 กันได้เลย
1. เตรียมตัวให้พร้อม คือ ใส่ใจกับเส้นทางอนาคตตัวเอง
2. ภาษาอังกฤษ คือ ประตูสู่ความรู้มหาศาล
3. เรียนต่อ vs ทำงาน
4. สิ่งแวดล้อม หรือ เตรียมอุดมฯ effect
5. วิธีการเรียนรู้ หรือ mindset อ่าน บล็อกพี่เนย
6. ฝึกงาน ฝึกงาน ฝึกงาน
7. บริษัทเล็ก vs บริษัทใหญ่
ปล. ข้อ 4 พูดถึงเมล็ดพันธุ์ที่ดี ตามหลัก 80/20
ถ้ารักจะเป็นนักคอมพิวเตอร์ .. ต้องพยายามแบบ ..
ฝนทั่งให้เป็นเข็ม
sharpen an anvil to create a pin #
.. นักศึกษาของผม .. เวลาสอบตก จะพูดว่า ถ้าพยายามจริง ๆ คงทำได้ดีกว่านี้
ผมก็จะถามว่า แล้วกั๊กความพยายมของตน .. ไว้ทำไม
การเขียนโค้ดที่ดี (Writing Good Code)
อ่านเรื่อง การเขียน code ที่ดี ในบล็อก arnondora.in.th ที่ Arnondora เขียนจากประสบการณ์ พบว่ามีดังนี้ 1) Cleverness != Good Code 2) Naming .. 3) Comment is also important 4) Write and Re-Write 5) Learn From The Master 6) Good Code is just the “WORD” แล้วไปค้นดูเพิ่มเติมก็พบจากบางแหล่ง อาทิ Gnome developer บอกว่า Some important qualities of good code ประกอบด้วย 1) สะอาด อ่านง่าย (Cleanliness) 2) แน่นอน คงเส้นคงวา (Consistency) 3) ขยับขยายได้ (Extensibility) 4) ถูกต้อง (Correctness)
อกจากกนี้ ไปอ่านเพิ่มเติม พบว่า Makeuseof.com แนะนำไว้ 10 หัวข้อ สำหรับ 10-tips-writing-cleaner-better-code ประกอบด้วย 1) ชื่อที่สื่อความหมายได้ (Use Descriptive Names) 2) ทุกโมดูลทำหน้าที่เฉพาะเพียงอย่างเดียว (Give Each Class/Function One Purpose) 3) ลบโค้ดที่ไม่จำเป็น (Delete Unnecessary Code) 4) อ่านง่ายมาก่อนฉลาด (Readability > Cleverness) 5) รูปแบบที่แน่นอน (Keep a Consistent Coding Style) 6) เลือกสถาปัตยกรรมที่ถูกต้อง (Choose the Right Architecture) 7) สำนวนของภาษาเป็นครู (Master the Language’s Idioms) 8) เรียนจากโค้ดของครู (Study the Code of Masters) 9) เขียนหมายเหตุที่ดี (Write Good Comments) 10) ปรับโค้ดใหม่เสมอ (Refactor, Refactor, Refactor)

Good Code = อ่านและปรับใช้ได้ง่าย
ชวนอ่านเรื่อง "เว็บ-น่ะ-รก"
ก่อนเขียนโค้ด .. มานั่งจ้องโค้ดกันก่อนไหม

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

* สรุปว่า นั่งจ้องทำความเข้าใจโค้ด เนี่ย "นานสุดล่ะ"
If you ask a software developer what they spend their time doing,
they'll tell you that they spend most of their time writing code.
การเป็น Developer ยากไม่ยาก แต่เห็นสายอื่นเข้ามาพรึบ ๆ ตาม Thailand 4.0 กับ Start up trend
15111
24230
33351
42470
เป็นโปรแกรมเมอร์ไม่ยากหรอก
รื่อง easy จากที่เคยอ่านบทความของ TiMeFF เขียนเรื่อง "อยากเป็นโปรแกรมเมอร์ละอ่อนใน 3 เดือน" คนเขียนจบเศรษฐศาสตร์ หรือ "1 ปีที่ผ่านมาไปเป็น Developer บริษัท Startups แห่งหนึ่งย่านสีลมครับ ของกินเยอะเลยครับแถวนี้" หรือที่โรงเรียนมัธยมจำนวนมาก เปิดห้องเรียนพิเศษด้าน Computer แสดงว่านักเรียนมัธยมสมัยนี้ เป็น Developer กันตั้งแต่ยังไม่เข้าอุดมศึกษาเลย หรือที่ Jack Ma เป็นครูภาษาอังกฤษมาทำ Alibaba.com ก็มาสายสังคม หรือที่ Steve Jobs เป็นนักนวัตกรรมมาทำ Apple.com ก็ไม่ได้เรียนจบเป็นจริงเป็นจัง หรือที่ Edward Snowden เป็นผู้เชียวชาญเรื่องความปลอดภัย ก็เรียนอยู่บ้านเองเลย หรือที่ Bill Gates เขียนระบบปฏิบัติการ IBM-DOS ก็ออกจากมหาวิทยาลัยมาทำงาน หรือที่Mark Zuckerberg เลิกเรียนในมหาวิทยาลัย แล้วมาทำเว็บไซต์เป็นเรื่องเป็นราว มีตัวอย่างของคนที่ประสบความสำเร็จแต่เรียนไม่จบ แต่มาเอาดีทางคอมพิวเตอร์อีกเยอะมาก
อ่ะอ่ะ ..
อย่าพึ่งเชื่อไปทั้งหมด "แทงกั๊กไว้บ้าง"
เพราะที่ CookieCoffee เขียนบทความ เรื่อง "4 ความจริงที่คนเรียนไม่จบมหาวิทยาลัย ไม่กลับมาเล่าให้คุณฟัง" เค้ากำลังบอกว่าหนทางไม่ได้โรยด้วยกลีบกุหลาบสำหรับทุกคน ไม่ใช่ทุกคนจะ Copy Idol ได้ (เห็นคนปลูกมะนาวรวย เราก็ปลูก แต่อาจไม่รวยเหมือนเค้าก็ได้) ส่วน ดร.อานนท์ ศักดิ์วรวิชญ์ ก็มองในมุมที่ Hard หน่อย ท่านเขียนบทความใน Manager.co.th มีข้อความตอนหนึ่งว่า "มีเรื่องน่าตกใจ คือ มีบัณฑิตในบางสาขาตกงานมากมาย เช่น ด้านวิทยาการคอมพิวเตอร์ ซึ่งเปิดสอนกันแทบทุกสถาบันในประเทศไทย แต่บริษัทเอกชนกลับหาคนมาทำงานด้าน Computer ที่เปลี่ยนแปลงไปอย่างรวดเร็วและต้องการคนเก่งคนมีความรู้ความสามารถอีกมากได้ยากมาก บัณฑิตด้าน Computer Science จำนวนมากจากหลายสถาบันไม่สามารถเขียนโปรแกรมคอมพิวเตอร์ที่ใช้งานได้จริงได้เลย หรือในอีกด้านเราผลิตคนที่ไม่ตรงกับความต้องการของตลาดและมีคุณภาพไม่เพียงพอ" จะง่าย หรือจะยาก คงต้องให้ผู้สนใจจะเป็น Developer หรือ Programmer ตัดสินใจ และเลือกทางเดินของตนเอง ใครจะเดินเข้า (Walk In) หรือเดินออก (Walk Out) ก็เป็นสิทธิของทุกคน หากพูดถึงบทเรียนแรกสำหรับสอนเขียนโปรแกรมสำหรับผู้เริ่มต้นก็มีหลายแนว หากเป็นแนวของ Algorithm เราคงไม่เริ่มต้นจาก Hello world! แน่ ถ้าเป็นผมก็เสนอว่าให้เริ่มจากการวนลูปกันก่อน (1/3) ลอง เขียนโปรแกรมพิมพ์ตัวเลขแบบ Pyramid เช่น พิมพ์ 1 - 5 อะไรทำนองนี้กันก่อน ใช้ภาษาอะไรก็ได้ แต่ต้องมี Repeation เท่านั้นเอง พอเริ่มรู้ว่าเขียน code อย่างไร ก็เริ่มจากอ่านเรื่อง "การเขียนโค้ดที่ดี" แล้วก็ไปหา MOOC หรือ Thai MOOC นั่งดูสักเรื่องตามที่พี่เศรษฐศาสตร์แนะนำไว้ อยากหาแรงบันดาลใจก็ไปเปิดดู เว็บสมัครงาน ครับว่า เค้ารับคนที่มีคุณสมบัติแบบไหน จะได้ทำตัวให้มีคุณสมบัติตามที่เค้าต้องการ

อ่านเรื่อง ลุง VM Vaughn วัย 56 ปี เพิ่งฝึก Coding ที่ ismtech.net แปลจาก freecodecamp.org มาให้อ่าน ที่ลุงเค้าเขียน เพราะ "เค้ารักมัน และทำมันได้ดีซะด้วย" แสดงว่าใบปริญญา ไม่ได้เป็นปัจจัยหลักอย่างแน่นอน ในการทำให้คนเราเขียน code

แล้วเคยอ่านโพสต์เรื่อง "ถ้าจะเรียนวิทย์-คอมที่ที่ไหนโอสุด" จาก pantip.com ชอบหลายความเห็น อาทิ ความเห็นที่ 2 Mr. Tracker : "เรียนสายนี้ ความรู้ในห้องมันมีประโยชน์แค่ 10% ของการทำงานครับ ส่วนที่เหลือต้องสะสมประสบการณ์ล้วน ๆ ความรู้ต้องหาเองครับ อาจารย์ทำได้แค่แนะแนวทาง" ความเห็นที่ 6 nuacool : "ในห้อง 25 % ที่ อาจารย์สอน อีก 75 % มาจากตัวเราเอง ล้วน ๆ"

ก็พอสรุปได้ว่า ต่อให้เรียนในชั้นเรียนได้ A หรือทำได้ 100% ตามที่ครูสั่ง ก็อาจนำไปใช้ตอนทำงานได้เพียง 25% เท่านั้น อาทิ อาจารย์สอนเขียนโปรแกรมพิมพ์ 1 - 10 แล้วเราทำได้คนเดียวในห้อง เพื่อนในห้องทำกันไม่ได้ ก็ไม่ได้หมายความว่า ชีวิตจริงจะใช้เพียงพิมพ์ 1 - 10 นี่ครับ อาจพิมพ์ a - z ก็ได้ แต่อาจารย์ไม่ได้สอน และนอกห้องเรียนคงมีคนทำได้มากกว่าพิมพ์ a - z อย่างแน่นอน

ก่อนเข้าเรื่อง ขอนอกเรื่อง เรื่องความเสี่ยงของโปรแกรมเมอร์ กันก่อนเลย
เคยอ่านบทความ 2 เรื่อง เขียนโดย ดร.อานนท์ ศักดิ์วรวิชญ์

สาขาวิชา Business Analytics and Intelligence สาขาวิชาวิทยาการประกันภัยและการบริหารความเสี่ยง คณะสถิติประยุกต์ สถาบันบัณฑิตพัฒนบริหารศาสตร์ ท่านเขียนบทความลง manager online มีความสนใจในหลายเรื่อง โดยเฉพาะความเสี่ยง (Risk Management) และความเสี่ยงที่ใกล้ตัว คือ สถาบันการศึกษา และ อาชีพอาจารย์

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

จากบทความเมื่อ 25 พฤษภาคม 2559 ที่ท่านเขียนถึงมหาวิทยาลัย

"ด้านวิทยาการคอมพิวเตอร์ ซึ่งเปิดสอนกันแทบทุกสถาบันในประเทศไทย แต่บริษัทเอกชนกลับหาคนมาทำงานด้าน Computer ที่เปลี่ยนแปลงไปอย่างรวดเร็วและต้องการคนเก่งคนมีความรู้ความสามารถอีกมากได้ยากมาก บัณฑิตด้าน computer sciences จำนวนมากจากหลายสถาบันไม่สามารถเขียนโปรแกรมคอมพิวเตอร์ที่ใช้งานได้จริงได้เลย หรือในอีกด้านเราผลิตคนที่ไม่ตรงกับความต้องการของตลาดและมีคุณภาพไม่เพียงพอ" จาก manager.co.th

จากบทความเมื่อ 28 ธันวาคม 2559 ที่ท่านเขียนถึงอาจารย์ในมหาวิทยาลัย

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

สารบัญ
    สารบัญ (Contents)
  1. แนวคิดการสอนเขียนโปรแกรม
  2. ความหมายของ Structure Programming
  3. การเริ่มต้นเขียนโปรแกรม
  4. การบ้านคือ บันไดสู่ประสบการณ์
  5. ตัวอย่างพีระมิด คือแบบฝึกหัดที่ยาก
  6. ตัวอย่างโปรแกรมภาษา Pascal
  7. ตัวอย่างโปรแกรมภาษา Java Script
  8. แบ่งระดับการเขียนโปรแกรม 4 ระดับ
  9. แบบฝึกหัดสำหรับสอนการเขียนโปรแกรม
  10. โปรแกรมเมอร์คนแรกของโลก
    (Augusta Lovelace Ada)
  11. 143 ภาษาคอมพิวเตอร์
  12. ภาษาคอมพิวเตอร์ (Time Line)
    ขั้นตอนการเรียนรู้ เพื่อเป็น Programmer
  1. เลือกเขียนโปรแกรมหนึ่งภาษา ( Programming Language )
  2. เข้าใจโครงสร้างข้อมูล ( Data Structures )
  3. เขียนร่วมกับระบบฐานข้อมูล ( Database System )
  4. การวิเคราะห์และออกแบบระบบ ( System Analysis and Design )
  5. มีโครงงานเป็นของตนเอง ( Student Project ) เพื่อฝึกปฏิบัติจริง
1. แนวคิดการสอนเขียนโปรแกรม ลายครั้งที่เริ่มสอนเขียนโปรแกรม ให้นักเรียนกลุ่มใหม่ และก็ต้องบอกเล่า ด้วยประโยคเดิมทุกครั้งว่า "การเขียนโปรแกรม ทุกภาษานั้นคล้ายกัน" สิ่งที่แตกต่างกัน ของแต่ละภาษา คือ วากยสัมพันธ์ (Syntax) หรือ โครงสร้างทางไวยกรณ์ หรือ กฎเกณฑ์ของภาษา แต่สิ่งที่เหมือนกันของทุกภาษา คือ โครงสร้าง (Structure) เราสามารถใช้ประสบการณ์จากภาษาหนึ่ง ไปใช้ในอีกภาษาหนึ่งได้ ด้วยการฝึกฝนเรื่องของการโปรแกรมโครงสร้าง (Structure Programming) เพื่อสามารถควบคุมในสิ่งที่คล้ายกัน คือ input, process และ output นั่นหมายความว่า ถ้าเขียนโปรแกรมทำหน้าที่อะไร ในภาษาหนึ่งได้แล้ว การเขียนโปรแกรมแบบนั้น อีกภาษาย่อมไม่ใช่เรื่องยากอีกต่อไป เพียงแต่ต้องศึกษาถึง Syntax ของภาษานั้นเพิ่มเติม แล้วนำประสบการณ์ที่เคยเขียน ไปสั่งกำหนดขั้นตอนการทำงานให้เป็นไปต้องการ จึงมักสนับสนุนให้ผู้เรียนรู้ได้ศึกษาภาษาที่ไม่มีตัวช่วยมาก เพื่อให้เข้าใจในหลักการ และขั้นตอนการทำงานในเบื้องต้นก่อน แล้วขยับขึ้นไปพัฒนาโปรแกรมที่เป็นวิชวลต่อไป

2. ความหมายของ Structure Programming
ารโปรแกรมแบบมีโครงสร้าง หรือ การโปรแกรมโครงสร้าง คือ การโปรแกรมที่ประกอบด้วยกระบวนการ 3 รูปแบบ ได้แก่ การทำงานแบบตามลำดับ(Sequence) การเลือกกระทำตามเงื่อนไข(Decision) และ การทำซ้ำ(Loop) มีตำราหลายเล่มแยกการเลือกตามเงื่อนไขเป็น if กับ select case หรือ การทำซ้ำแยกได้เป็น do while กับ do until แต่ก็ยังนับได้ว่าการเขียนโปรแกรมโครงสร้างมีกระบวนการเพียง 3 รูปแบบ และมีแนวคิดใหม่ว่าการโปรแกรมไม่จำเป็นต้องใช้ Structure Programming หากศึกษาในรายละเอียดก็พบว่าทุกภาษายังจำเป็นต้องมีกระบวนการ 3 รูปแบบนี้อยู่เป็นพื้นฐาน เช่น Microsoft Access ที่มีการใช้งาน Tool หรือ wizard ให้ใช้ แต่ก็ยังต้องมีการลง code ใน module ซึ่งต้องมีประสบการณ์ในการโปรแกรมแบบ Structure Programming เพื่อควบคุม Object ให้ทำงานประสานกันได้
ารโปรแกรมแบบมีโครงสร้าง หรือ การโปรแกรมโครงสร้าง คือ การกำหนดขั้นตอนให้เครื่องคอมพิวเตอร์ทำงานโดยมีโครงสร้างการควบคุมพื้นฐาน 3 หลักการ ได้แก่ การทำงานแบบตามลำดับ (Sequence) การเลือกกระทำตามเงื่อนไข (Decision) และ การทำซ้ำ (Loop)

2.1 การทำงานแบบตามลำดับ (Sequence) คือ การเขียนให้ทำงานตามเหตุการณ์จากบนลงล่าง เขียนคำสั่งเป็นบรรทัด และทำทีละบรรทัดจากบรรทัดคำสั่ง จากบรรทัดบนสุดลงไปจนถึงบรรทัดล่างสุด สมมติให้มีการทำงาน 3 เหตุการณ์ คือ บรรทัดแรกสั่งอ่านข้อมูลเข้า บรรทัดที่สองสั่งประมวลผล บรรทัดที่สามสั่งพิมพ์ผลลัพธ์ ซึ่งจะสลับลำดับเหตุการณ์ไม่ได้
var a = 1;
a = a + 2 * 3; // operator rule
document.write(a);
// tryit.asp
2.2 การเลือกกระทำตามเงื่อนไข(Decision) คือ การเลือกกระทำตามกระบวนการหรือเหตุการณ์ โดยปกติจะมีเหตุการณ์ให้เลือกอย่างน้อย 2 เหตุการณ์ คือ ตามเงื่อนไขเป็นจริงจะกระทำเหตุการณ์หนึ่ง เมื่อเป็นเท็จจะกระทำอีกเหตุการณ์หนึ่ง แต่ถ้าซับซ้อนมากขึ้น จะต้องใช้เงื่อนไขหลายชั้น เช่น การตัดเกรดนักศึกษา การคิดค่านายหน้า การคำนวณดอกเบี้ยเงินฝากประจำ เป็นต้น
var i = 1;
if(i == 1) i = 2;  
else if(i > 1) { i = 3; }
document.write( i );
2.3 การทำซ้ำ(Repeation or Loop) คือ การทำกระบวนการ หรือเหตุการหนึ่งจำนวนหลายครั้งซ้ำกัน โดยมีเงื่อนไขในการควบคุมการสิ้นสุด หมายถึง การทำซ้ำจะทำไปเรื่อย ๆ วนซ้ำไปจนกว่าเงื่อนไขการควบคุมจะอนุญาตให้สิ้นสุดการทำงาน ซึ่งการทำซ้ำในภาษาโปรแกรมมักมี 2 แบบ คือ ตรวจสอบเงื่อนไขตอนต้นก่อนเริ่มทำงาน หรือตอนท้ายของการทำงาน
var i = 1;
while (i < 3) { i = i + 1; }
do { i = i + 1; } while (i < 3);
document.write( i );
รายละเอียดเพิ่มเติมที่ http://www.thaiall.com/flowchart
Sequence
Decision
Repeation
3. การเริ่มต้นเขียนโปรแกรม เริ่มต้นตรงไหน :
เริ่มตรง Learning by doing ที่ไม่ไปเน้นกับ syntax หรือ structure แต่ยกตัวอย่างให้เห็นภาพโปรแกรมที่สั้น เข้าใจง่าย นั่นคือ การพิมพ์ 1 ถึง 10 หรือ สูตรคูณ หรือ พีระมิดของตัวเลข ที่ต้องฝึกใช้ Structure Programming ให้ชำนาญ ส่วน syntax นั้นให้ไปอ่านเพิ่มเติมในรายละเอียดด้วยตนเอง บ่อยครั้งที่ feed back คือ "เสียงบ่นว่าไม่ชอบเขียน ไม่มีประโยชน์" หรือ "เขียนไม่ได้ ถึงเขียนได้ ก็ไม่รู้จะเขียนไปทำไม จึงไม่เขียน" แล้วก็ต้องอธิบายย้ำว่า การเริ่มต้นแบบนี้ "ทำให้รู้จักควบคุมโปรแกรม กำหนดขั้นตอนการทำงานตามหลักการโปรแกรมแบบมีโครงสร้างได้ดีขึ้น รู้จักเรียนรู้ และแก้ปัญหาด้วยตนเอง รวมทั้งรู้จักแก้ไข Syntax พื้นฐานไม่ให้ผิดพลาด เพื่อเตรียมความพร้อมสู่การเขียนโปรแกรมในระดับต่อไปได้"

    เริ่มต้นเขียนโปรแกรมทำอย่างไร (จากหนังสือ พื้นฐานเว็บมาสเตอร์บทที่ 17)
  1. เลือกภาษา สำหรับนักศึกษานั้นง่ายที่จะเลือก เพราะอาจารย์คอยชี้แนะ
  2. หาแหล่งข้อมูลอ้างอิงจากห้องสมุด ถ้าท่านไม่มีอะไรอยู่ในมือเลย คงนึกโครงสร้างภาษาไม่ออกเป็นแน่
  3. หาตัวแปลภาษา ทุกภาษาต้องมีตัวแปลภาษา บางภาษามี Free compiler
  4. เขียนโปรแกรมตัวแรกที่ง่าย เช่น พิมพ์ hello world
  5. ศึกษาการทำซ้ำ และการเลือกตามเงื่อนไข เช่น พิมพ์สูตรคูณ หรือพิมพ์ 1 ถึง 10
  6. ติดต่อแฟ้มข้อมูล เพื่ออ่านมาแสดงผล หรือปรับปรุงข้อมูลได้
  7. เขียนเมนู เพื่อเลือกกระทำโปรแกรมตามตัวเลือก
  8. ทำรายงานจากการเชื่อมแฟ้มหลายแฟ้ม โดยกำหนดได้หลายตัวเลือก
  9. เขียนโปรแกรมเพิ่มข้อมูล เช่น ซื้อ ขาย ยืม คืน หรือ ระบบทะเบียนสมาชิก
  10. สร้างโปรแกรมขึ้นมาหนึ่งระบบที่ตอบความต้องการของผู้ใช้
    ขั้นตอนการพัฒนาโปรแกรม (Steps in Program Development) #
  1. ศึกษาความต้องการของโปรแกรม (Program Requirements)
  2. การออกแบบโปรแกรม (Program Design)
  3. การเขียนโปรแกรม (Program Coding)
  4. การตรวจสอบข้อผิดพลาด และแก้ไขโปรแกรม (Program Debugging)
  5. การทดสอบโปรแกรม (Program Testing)
  6. การบำรุงรักษาโปรแกรม (Program Maintenance)
4. การบ้าน คือ บันไดสู่ประสบการณ์ านมอบหมาย (Assignment) หมายถึง การสั่งงานให้นิสิต/นักศึกษา/นักเรียน/ผู้เรียนรู้ ได้ฝึกปฏิบัติด้วยตนเอง เป็นวิธีหนึ่งในการพัฒนาทักษะของผู้เรียน งานมอบหมายที่ใช้เวลาค้นคว้า เรียนรู้ ปฏิบัติ ไม่นานนัก และทำที่บ้าน เรียกว่า การบ้าน ถ้าเป็นงานมอบหมายที่ต้องดำเนินการอย่างเป็นระบบ ใช้เวลาระยะหนึ่ง ลองผิดลองถูก ปรับปรุงแก้ไขพัฒนา เรียกว่า โครงงาน สำหรับงานมอบหมาย/การบ้าน/โครงงาน มักต้องใช้หลักการแนวทางที่ได้จากในห้องเรียน ต่อยอด หรือค้นคว้าเพิ่มเติม ที่มีท้าทายความสามารถมากพอ จนต้องใช้เวลาระยะหนึ่งในการฝึกฝน ค้นคว้า จนสำเร็จ เกิดทักษะตามวัตถุประสงค์ที่กำหนดไว้
ารบ้าน หรือโครงงาน (Project) หมายถึง งานที่ต้องกลับไปทำที่บ้าน หากเป็นโครงงานก็จะใช้เวลาทำอย่างต่อเนื่องเป็นระยะเวลาหนึ่ง อาจใช้เวลาเป็นสัปดาห์ เป็นเดือน เป็นภาคการศึกษา หรือเป็นปีการศึกษา งานมอบหมายอาจมีทั้งงานกลุ่ม และงานเดี่ยว ซึ่งแตกต่างกันไปตามเนื้องาน และวัตถุประสงค์ของงาน งานกลุ่ม คือ งานที่ในทีมมีหน้าที่แตกต่างกัน เรียนรู้การทำงานร่วมกัน ปริมาณงานต้องมากพอ หรือมากเกินกว่าคนเดียวจะทำได้สำเร็จ งานเดี่ยว คือ งานที่ต้องเข้าใจกระบวนการทำงานตั้งแต่ต้นจนจบเพียงผู้เดียว ประมาณงานไม่มากเกินความสามารถที่คนเดียวจะทำได้สำเร็จ
- MIS - TEC - OS - Assembly - TeachPro
5. ตัวอย่างโจทย์พีระมิด คือ แบบฝึกหัดที่ยากสำหรับผู้เริ่มต้น
ตัวอย่างพีระมิดที่มอบหมายให้นักศึกษาไปเขียน (ผมใช้สอนในทุกภาษาที่ผมสอนทีเดียว)

โจทย์ใน excel
1.
11******11
 22****22
  33**33
   4444
Source Code .java
2.
123***
234****
345*****
456******
Source Code .java
3.
15*****
26******
37*******
48********
Source Code .java
4.
*1
**212
***32123
****4321234
Source Code .java
5.
   11
  2**2
 3****3
4******4
 3****3
  2**2
   11
6. (java % and /)
1010101010101
 10101010101
  101010101
   1010101
    10101
     101
      1
7.
      111
     12221
    1233321
   123444321
  12345554321
 1234566654321
123456777654321
8.
123**
 234***
  345****
   456*****
    567******
     678*******
      789********
9.
111111111
 2222222
  33333
   444
    5
10.
    151
   12421
  1233321
 123424321
12345154321
11.
    11
   2 2
  3  3
 4   4
5    5
12.
123456789
 2345678
  34567
   456
    5
13.
987654321
  7654321
    54321
      321
        1
14.
12        21
 23      32
  34    43
   45  54
    5665
15. (2 * i - 1)
11111 11111
2222   2222
333     333
44       44
5         5
16.
1        *
21      **
321    ***
4321  ****
54321*****
17.
19191919
28282828
37373737
46464646
55555555
18.
1*1*****9
2**2****8
3***3***7
4****4**6
5*****5*5
19.
1*********5
2******** 4
3*******  3
4******   2
5*****    1
20.
1*1
22**22
333***333
4444****4444
55555*****55555
21.
*******1*7
******2**6
*****3***5
****4****4
***5*****3
22.
*111111111*
* 2222222 *
*  33333  *
*   444   *
*    5    *
23.
1******1
2***** 2
3****  3
4***   4
5**    5
24.
1*1111111111
2***22222222
3*****333333
4*******4444
5*********55
25.
****5*****
***444****
**33333***
*2222222**
111111111*
26.
11111*
2222**
333***
44****
5*****
27.
1 *
2  **
3   ***
4    ****
5     *****
28.
54321*12345
5432***2345
543*****345
54*******45
5*********5
29.
1*3***
2*4****
3*5*****
4*6******
5*7*******
30.
*********1
 *******21
  *****321
   ***4321
    *54321
31.
11111*****
2222  ****
333    ***
44      **
5        *
32.
1234567***3
123456****4
12345*****5
1234******6
123*******7
33.
    *
   ***
  *****
   ***
    *
34.
    *1*
   *222*
  *33333*
   *222*
    *1*
35.
   1*1*2
   2*3*4
   3*5*6
   4*7*8
   5*9*10
36.
123*321
23***32
3*****3
23***32
123*321
6. ตัวอย่างโปรแกรมภาษา Pascal
ได้รับ mail จากคุณ ditthapong สอบถามว่าเขียน พีระมิดด้วย pascal แบบเลือกตัวอักษรได้ จะเขียนอย่างไร ผมจึงเขียน และแชร์ไว้ตามตัวอย่างข้างล่างนี้
โปรแกรมนี้รอรับตัวอักษรจากแป้นพิมพ์ แล้วนำไปใช้กำหนดเงื่อนไขในการพิมพ์
เช่น ส่งอักษร D ก็จะพิมพ์บรรทัด A ถึง บรรทัด D และถ้าส่งอักษร E ก็จะพิมพ์บรรทัด A ถึง บรรทัด E เป็นต้น
รหัสต้นฉบับ (Source Code)
var
 i,j : integer;
 c : char;
begin
 writeln ('Your english character?');
 readln (c);
 c := upcase(c);
 writeln ('======');
 for i := 65 to ord(c) do
 begin
  for j := 65 to i do  write(chr(j));
  writeln;
 end;
 readln;
end.
ผลลัพธ์ (Output)
Your english character?
F
======
A
AB
ABC
ABCD
ABCDE
ABCDEF
เมื่อเช้านี้น้องเค้า mail ถึงผมอีกว่า ใช้ function ที่ครูยังไม่สอน
ผมจึงเขียนใหม่แบบที่ไม่ต้องใช้ function รู้สึกง่ายกว่าเดิมอีกครับ
รหัสต้นฉบับ (Source Code)
var 
 c,d,g : char;
begin
 writeln ('Your english character?');
 readln (g);
 for c := 'A' to g do
 begin
  for d:= 'A' to c do write(d);
  writeln;
 end;
 readln;
end.
ผลลัพธ์ (Output)
Your english character?
D
A
AB
ABC
ABCD
7. ตัวอย่างโปรแกรมภาษา Java Script
มื่อหลายปีก่อน เคยมีเพื่อนถามว่าเขียนโปรแกรม Pyramid ด้วย Java เขียนอย่างไร จึงทำตัวอย่างไว้ 4 code จาก 36 code วันนี้ (23 ส.ค.60) มีโอกาสปรับ code ให้ดีขึ้น อ่านง่ายขึ้น แล้วอัพไปทดสอบที่ compilejava.net แล้วก็สั่ง paste source ส่งเข้า Github.com ได้ link ใน GIST มาด้วย ต่อจากนี้ก็จะปรับตัวอย่าง Java script ในหัวข้อนี้ หลังเมื่อวานมอบหมายงานให้ น.ศ. ไปเขียนมา 36 code ด้วย Javascript แนะนำไปว่าให้ใช้ Editplus ทำการ Create, Edit และ Run (Ctrl-B) บน Editplus ได้เลย แต่ถ้าใช้ Notepad++ ก่อนกด Ctrl+Alt+Shift+R = Launch in Chrome เพื่อดูการทำงานของ Javascript ก็ต้อง Save file ให้เรียบร้อยก่อน หากต้องการทดสอบแบบ online ก็แนะนำที่ js.do หรือ jsbin.com
รหัสต้นฉบับ (Source Code)
<html><body><font face="courier new">
<pre>
<script>
/* print 5 row with line number */
var tRow = 5;
for(row=1; row<=tRow; row++) {
 document.write( row + "<br/>")
}
</script>
</pre></font></body></html>
ผลลัพธ์ (Output)
1
2
3
4
5
รหัสต้นฉบับ (Source Code)
<html><body><pre>
<script>
/* print number in right part */
var tRow = 5;
for(row=1; row<=tRow; row++) {
 // Column have 2 parts 
 document.write( row + " - " );
 for(col=1; col <= row; col++) {
  document.write( 11 - col - row );
 }
 document.write("\n");
}
</script>
</pre></body></html>
ผลลัพธ์ (Output)
1 - 9
2 - 87
3 - 765
4 - 6543
5 - 54321
รหัสต้นฉบับ (Source Code)
<html><body><pre>
<script>
/* print pyramind of number */
var tRow = 9;
for(row=1; row <= tRow; row++) {
 // Column have 4 parts
 for(col=1;col<=tRow - row + 1;col++){ 
  document.write(" "); 
 }
 for(col=1; col <= row ; col++) { 
  document.write( col ); 
 }
 document.write( row );
 for(col=row; col >= 1 ; col--) { 
  document.write( col ); 
 }
 document.write("\n");
}
</script>
</pre></body></html>
ผลลัพธ์ (Output)
        111
       12221
      1233321
     123444321
    12345554321
   1234566654321
  123456777654321
 12345678887654321
1234567899987654321
8. แบ่งระดับการเขียนโปรแกรม 4 ระดับ
    ระดับในการเขียนโปรแกรมมีหลายระดับ
  1. เขียนตามที่ครูสอน ( ระดับต้น )
  2. เขียนโครงงานส่งครู ( ระดับกลาง )
  3. เขียนโปรแกรมประยุกต์ไว้ใช้งาน ( ระดับสูง )
  4. เขียนโปรแกรมเชิงวัตถุให้ถูกเรียกใช้ภายหลัง ( ระดับมืออาชีพ )
    นักเรียนบางคนเก่งกว่าอาจารย์อีกครับ เพราะศาสตร์ด้านคอมพิวเตอร์นั้น ปฏิบัติง่ายกว่าทฤษฏีเยอะ หมายความว่า การลงมือปฏิบัติด้วยตนเอง จะเข้าใจได้ทันที โดยไม่ต้องมีคำอธิบาย การฟังบรรยาย จะได้เพียงแนวคิด แต่จะไม่ทำให้เกิดความชำนาญ และนำไปประยุกต์ใช้ได้ ดังนั้นเมื่อฟังบรรยายในห้องเรียนแล้ว จะต้องนำไปทดลองปฏิบัติด้วยตนเอง จึงจะเกิดผล ให้เห็นชัดเจน - ไม่ใช่เรื่องแปลก ที่นักเรียนมากมายศึกษาด้วยตนเอง ฝึกปฏิบัติอย่างจริงจัง และมีความรู้มากมายได้ลึกซึ้งกว่าอาจารย์ผู้สอน .. โดยเฉพาะผู้สอนที่ไม่พยายามหาประสบการณ์เพิ่มเติมจากการปฏิบัติจริง ...
9.แบบฝึกหัดสำหรับสอนการเขียนโปรแกรมเบื้องต้น
บว่ามีผู้เรียนส่วนหนึ่ง ทำข้อสอบไม่ได้ตามเป้าหมาย เพราะไม่ใช้เวลาว่างที่บ้านในการฝึกฝน แม้จะให้การบ้านไปทำ แต่ก็ไม่ได้ไปลงมือฝึกฝนให้เกิดความชำนาญ จึงต้องให้งาน 60 โปรแกรมนี้ ซึ่งเป็นโจทย์พื้นฐาน ถ้าพบว่ายังคัดลอกกันมาอีก ก็จะไม่ผ่านการสอบปากเปล่า จากการซักถามจุดผิดพลาดในโปรแกรมเป็นรายบุคคล
    กลุ่ม 1 พิมพ์ข้อมูลอย่างง่าย
  1. พิมพ์ รหัสนักศึกษา
  2. พิมพ์ ชื่อตนเอง
  3. พิมพ์ ตัวเลข จากตัวแปร
  4. พิพม์ ชื่อ และสกุล คนละบรรทัด
  5. พิพม์ รหัส ชื่อ และสกุล คนละบรรทัด
  6. พิมพ์ ผลบวก ของเลข 2 จำนวน
  7. พิมพ์ ผลบวก ลบ คูณ หาร ของเลข 2 จำนวน
    กลุ่ม 2 รับข้อมูลมาคำนวณ
  8. พิมพ์ ตัวเลข ที่รับมาจากแป้นพิมพ์
  9. พิมพ์ อักษร ที่รับมาจากแป้นพิมพ์
  10. พิมพ์ ผลบวก ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
  11. พิมพ์ ผลบวก และลบ ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
  12. พิมพ์ ผลคูณ และหาร ของเลข 2 จำนวน ที่รับมาจากแป้นพิมพ์
  13. พิมพ์ ผลบวก ของเลข 3 จำนวน ที่รับมาจากแป้นพิมพ์
    กลุ่ม 3 รับข้อมูล และเลือกพิมพ์
  14. รับตัวเลขจากแป้นพิมพ์ 2 จำนวน แต่พิมพ์ตัวหลังก่อนตัวแรก
  15. รับตัวเลขจากแป้นพิมพ์ 2 จำนวน ให้พิมพ์ตัวที่มากกว่า
  16. รับตัวเลขจากแป้นพิมพ์ 2 จำนวน ให้พิมพ์ตัวที่น้อยกว่า
  17. รับตัวเลขจากแป้นพิมพ์ ถ้ามากกว่า 5 ให้พิมพ์คำว่า wow
  18. รับตัวเลขจากแป้นพิมพ์ ถ้าน้อยกว่า 5 ให้พิมพ์คำว่า oho
  19. รับตัวเลขจากแป้นพิมพ์ 3 จำนวน ให้พิมพ์ตัวที่มากที่สุด
  20. รับตัวเลขจากแป้นพิมพ์ 3 จำนวน ให้พิมพ์ตัวที่น้อยที่สุด
    กลุ่ม 4 ทำซ้ำอย่างง่าย
  21. พิมพ์ 1 ถึง 10 ด้วย for
  22. พิมพ์ 1 ถึง 10 ด้วย while
  23. พิมพ์ 10 ถึง 1 ด้วย for
  24. พิมพ์ 10 ถึง 1 ด้วย while
  25. พิมพ์ 10 ถึง 20 ด้วย for
  26. พิมพ์ 10 ถึง 20 ด้วย while
  27. พิมพ์ 20 ถึง 10 ด้วย for
  28. พิมพ์ 20 ถึง 10 ด้วย while
  29. พิมพ์เลขคู่ระหว่าง 1 ถึง 10
  30. พิมพ์เลขคี่ระหว่าง 1 ถึง 10
    กลุ่ม 5 ทำซ้ำซ้อนกัน
  1. พิมพ์สูตรคูณแม่ 2
  2. พิมพ์สูตรคูณแม่ 3
  3. พิมพ์สูตรคูณแม่ 2 จนเสร็จ แล้วพิมพ์แม่ 3 ต่อ
  4. พิมพ์สูตรคูณแม่ 2 และ 3 คนละ Column
  5. พิมพ์ตัวเลขแบบ for ซ้อนด้วย for
  6. พิมพ์ตัวเลขแบบ for ซ้อนด้วย while
  7. พิมพ์ตัวเลขแบบ while ซ้อนด้วย for
  8. พิมพ์ตัวเลขแบบ while ซ้อนด้วย while
    กลุ่ม 6 อาร์เรย์
  9. อ่านข้อมูลจากอาร์เรย์แบบตัวเลข 3 สมาชิกมาพิมพ์ ไม่ใช้ for
  10. อ่านข้อมูลจากอาร์เรย์แบบตัวอักษร 3 สมาชิกมาพิมพ์ ไม่ใช้ for
  11. อ่านข้อมูลจากอาร์เรย์แบบตัวเลข 3 สมาชิกมาพิมพ์ ใช้ for
  12. อ่านข้อมูลจากอาร์เรย์แบบตัวอักษร 3 สมาชิกมาพิมพ์ ใช้ for
  13. รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่
  14. รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่ เฉพาะมากกว่า 10
  15. รับข้อมูลจากแป้นพิมพ์เก็บลงอาร์เรย์ แล้วนำมาพิมพ์ใหม่ เฉพาะน้อยกว่า 10
    กลุ่ม 7 คำนวณเบื้องต้น
  16. พิมพ์ค่าสูงสุด จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
  17. พิมพ์ค่าต่ำสุด จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
  18. พิมพ์ค่าผลรวม จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
  19. พิมพ์ค่าเฉลี่ย จากอาร์เรย์ที่ถูกกำหนดเป็นค่าคงที่ในโปรแกรม
  20. พิมพ์ค่าสูงสุด จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
  21. พิมพ์ค่าต่ำสุด จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
  22. พิมพ์ค่าผลรวม จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
  23. พิมพ์ค่าเฉลี่ย จากอาร์เรย์ที่รับค่าจากแป้นพิมพ์
    กลุ่ม 8 แฟ้มข้อมูล หรือฐานข้อมูล
  24. อ่านข้อมูลจากแฟ้มข้อมูล มาแสดงทางจอภาพ
  25. อ่านข้อมูลจากแฟ้มข้อมูล มาแสดงทางจอภาพ โดยมีเลขลำดับกำกับ
  26. อ่านข้อมูลจากแป้นพิมพ์ แล้วเขียนลงแฟ้มข้อมูล
  27. อ่านข้อมูลจากแฟ้มข้อมูล เขียนลงแฟ้มใหม่อีกแฟ้มหนึ่ง
  28. เพิ่มข้อมูลในแฟ้มข้อมูล เมื่อได้รับข้อมูลจากแป้นพิมพ์
  29. ลบข้อมูล แบบต่าง ๆ
  30. แก้ไขข้อมูล แบบต่าง ๆ
งานที่มอบหมายให้นักศึกษาไปฝึก หรือทำแก้ตัวหลังสอบกลางภาค
A. จากโจทย์แต่ละข้อ ให้เขียนโปรแกรมที่ถูกต้อง และที่ผิดอย่างละโปรแกรม โดยบอกว่าที่ผิด ผิดอย่างไร
B. ให้แต่ละข้อทำที่ถูกมา 1 ครั้ง และให้ทำที่ผิดมา 2 โปรแกรม โดยแยกเฉลยจุดผิดออกจากกัน
C. ให้นักศึกษาสลับกัน หาจุดผิดพลาดในโปรแกรมของเพื่อน
D. ตัวอย่างจุดผิดพลาดที่แนะนำนักศึกษา
- เขียนคำสั่งผิด เช่น class เป็น ClaSs เป็นต้น
- ลืมเครื่องหมาย เช่น . , ; ( { = เป็นต้น
- ลืมประกาศตัวแปร หรือ ประกาศตัวแปรซ้ำ
- ใช้งานผิดประเภท เช่น ตัวเลข เป็นตัวอักษร หรือไม่เปลี่ยนประเภทก่อนนำมาประมวลผล
- ลืมประกาศ include หรือ IOException หรือ อื่น ๆ
- จำนวน { ไม่เท่ากับ }
- Compile ไม่ผ่าน แต่พยายามเรียกใช้งาน
- ผิดพลาดขณะแปลอย่างไร หรือประมวลผล หรือตรวจสอบระหว่างประมวลผลผิดพลาด
10. เปรียบเทียมหาค่ามากกว่า ารเขียนโปรแกรมต้องมีตัวแปลภาษา ตัวอย่างชุดนี้เป็น javascript ที่ประมวลผลได้ทันทีใน Internet Explorer ถ้ามีข้อสงสัยเรื่อง javascript เพิ่มเติมให้เปิดจาก thaiall.com/java สำหรับตัวอย่าง 10.2 ถึง 10.4 มี 2 แบบคือ หาเฉพาะค่า max และเรียงลำดับค่ามากไปน้อย ซึ่งมีหลักการคล้ายกัน
10.1 เปรียบเทียบค่าคงที่ 2 ค่า
: ใช้ if เลือกค่าที่มากกว่ามาแสดงผล
<script>
var a = 5;
var b = 6;
if(a > b) 
  document.write(a + "" + b);
else
  document.write(b + "" + a);
</script>
10.2 เปรียบเทียบค่าคงที่ 3 ค่า แบบที่ 1
: ใช้ if และ and เปรียบเทียบพร้อมกันทั้ง 3 ค่า ทุกกรณี
: สัญลักษณ์ && คือ and ในภาษา javascript
<script>
var a = 5;
var b = 7;
var c = 6;
if(a>b && a>c) document.write(a);
if(b>a && b>c) document.write(b);
if(c>a && c>b) document.write(c);
</script>
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b && b > c) 
document.write(a +""+ b +""+ c);
if(a > c && c > b) 
document.write(a +""+ c +""+ b);
if(b > a && a > c) 
document.write(b +""+ a +""+ c);
if(b > c && c > a) 
document.write(b +""+ c +""+ a);
if(c > a && a > b) 
document.write(c +""+ a +""+ b);
if(c > b && b > a) 
document.write(c +""+ b +""+ a);
</script>
10.3 เปรียบเทียบค่าคงที่ 3 ค่า แบบที่ 2
: ใช้ if เปรียบเทียบค่าที่ละคู่ตามเงื่อนไข
: ผลการเปรียบเทียบจึงใช้ if else หลายกรณี
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b) 
  if (b > c) document.write(a);
  else { if(c > a) 
         document.write(c);
       }
else if(b > c) document.write(b);
  else document.write(c);
</script>
<script>
var a = 5;
var b = 7;
var c = 6;
if(a > b) 
 if (b > c) 
  document.write(a +""+ b +""+ c);
 else if(a > c) 
  document.write(a +""+ c +""+ b);
 else 
  document.write(c +""+ a +""+ b);
 else if (a > c) 
  document.write(b +""+ a +""+ c);
 else if(b > c) 
  document.write(b +""+ c +""+ a);
 else 
  document.write(c +""+ b +""+ a);
</script>
10.4 เปรียบเทียบค่าคงที่ 3 ค่า แบบที่ 3
: ใช้การสลับที่ของ 2 ตัวแปร ผ่านตัวแปร t
<script>
var a = 5;
var b = 7;
var c = 6;
var t = a;
if(b > t) t = b;
if(c > t) t = c;
document.write(t);
</script>
var a = 5;
var b = 7;
var c = 6;
var t;
if(b > a) { t = a; a = b; b = t;}
if(c > b) { t = c; c = b; b = t;}
if(b > a) { t = a; a = b; b = t;}
document.write(a +""+ b  +""+ c);
</script>
10.5 เปรียบเทียบค่าในอาร์เรย์ด้วย Bubble Sort
: การจัดเรียงข้อมูลที่ง่ายที่สุดวิธีหนึ่ง
: bubble แปลว่าฟอง หลักการนี้แสดงการลอยขึ้นของค่าทีละตัว
<script>
var a = new Array ();
a = [5,6,8,2,1,3,4,7,9];
var tmp;
for(i=0;i<a.length;i++)
  for(j=0;j<=i;j++)
    if (a[j] < a[j + 1]) {
       tmp = a[j];
       a[j] = a[j + 1];
       a[j + 1] = tmp;
       j-=2;
    }  
for(i=0;i<a.length;i++)
document.write(a[i]);
</script>
พีระมิด ใน Google Chrome

Source : pyramid1to9.js
แบบที่ 1. เรียกใช้ javascript เข้าไปใน x.htm
<script src="pyramid1to9.js"></script>
ดูผลลัพธ์โดยกด F12 ใน Console
แบบที่ 2. เขียน javascript ใน Console
เครื่องหมาย % คือ Modulus (Remainder)
ได้พบคำถามในกลุ่ม Programer Thai Blood
มีการแชร์คำถามการโปรแกรม Pyramid เข้าไปในกลุ่ม โดย คุณกฤษฏ์กานต์ สีเฉลียว แล้ว คุณ Usw chatchai แนะนำใช้ inspector ของ Google Chrome เป็นเครื่องมือช่วยเขียน มีตัวอย่าง code ดังนี้
var txtTriangle='';
var maxRow = 9;
for (var row = 1; row <= maxRow; row++){
  var txtRow = '';
  // loop นี้สั่งเว้นระยะด้านหน้า
  for (var col = 1; col <= maxRow - row; col++){
    txtRow += ' ';
  }
  // loop นี้สั่งปริ้นเลขชุดหน้า
  for (var col = 1; col < row; col++) {
    txtRow += col;
  }
  // loop นี้สั่งปริ้นเลขตัวกลาง และชุดหลัง
  for (var col = row; col > 0; col--) {
    txtRow += col;
  }
  // สั่งเว้นบรรทัด
  txtTriangle += txtRow + '\n';
}
console.log(txtTriangle);
11. โปรแกรมเมอร์คนแรกของโลก Augusta Lovelace Ada คือ โปรแกรมเมอร์คนแรกของโลก
และ Edsger Wybe Dijkstra ใช้คำว่า โปรแกรมเมอร์ (Programmer) กับโลกของคอมพิวเตอร์เป็นคนแรก [ อ้างอิง ]

Do not try to change the world. Give the world the opportunity to change itself
Edsger Wybe Dijkstra เป็น theoretical physicist และเสียชีวิตด้วยโรคมะเร็ง 6 ส.ค. 2002 (อายุ 72 ปี)
wikipedia.org/wiki/Edsger_W._Dijkstra
Article : p341-dijkstra.pdf
12. 140 ภาษาคอมพิวเตอร์ thaiall.com/language
levenez.com/lang/ 50 ภาษา (Computer Languages Timeline)
people.ku.edu/~nkinners (2500 ภาษา)
dmoztools.net/Computers/ (140 ภาษา)
เป็นนักคอมพิวเตอร์ ไม่จำเป็นต้องรู้ไปหมดทุกภาษาหรอกครับ .. บางคน รู้แค่ภาษาเดียว ก็มีชีวิตในสังคมได้อย่างมีความสุขแล้ว .. แล้วคุณล่ะ รู้ภาษาอะไรบ้าง แล้วคิดจะใช้ภาษานั้นพัฒนาอะไรขึ้นมา หรือพัฒนาอะไรไปบ้างแล้ว
  1. ABC
  2. Ada
  3. ADL
  4. Algol
  5. APL
  6. AppleScript
  7. Assembly
  8. Awk
  9. BASIC
  10. Befunge
  11. BETA
  12. Bigwig
  13. Bistro
  14. Blue
  15. Brainfuck
  16. C
  17. C++
  18. Caml
  19. Cecil
  20. CHILL
  21. Clarion
  22. Clean
  23. Clipper
  24. CLU
  25. Cobol
  26. Cocoa
  27. C-sharp
  28. Curl
  29. D
  30. DATABUS
  31. Delphi
  32. DOS Batch
  33. Dylan
  34. E
  35. Eiffel
  36. ElastiC
  37. Erlang
  38. Euphoria
  39. Forth
  40. Fortran
  41. Fortress
  42. FP
  43. Frontier
  44. Goedel
  45. Groovy
  46. Haskell
  47. HTML
  48. HTMLScript
  49. HyperCard
  50. ICI
  51. Icon
  52. IDL
  53. Intercal
  54. Io
  55. Jal
  56. Java
  57. JavaScript
  58. Jovial
  59. LabVIEW
  60. Lagoona
  61. LaTeX
  62. Leda
  63. Limbo
  64. Lisp
  65. Logo
  66. Lua
  67. m4
  68. Maple
  69. Mathematica
  70. MATLAB
  71. Mercury
  72. Miranda
  73. Miva
  74. ML
  75. Modula-2
  76. Modula-3
  77. Moto
  78. Mumps
  79. Oberon
  80. Objective Caml
  81. Objective-C
  82. Obliq
  83. Occam
  84. Oz
  85. Pascal
  86. Perl
  87. PHP
  88. Pike
  89. PL
  90. Pliant
  91. PL-SQL
  92. POP-11
  93. PostScript
  94. PowerBuilder
  95. Prograph
  96. Prolog
  97. Proteus
  98. Python
  99. R
  100. REBOL
  101. Refal
  102. Rexx
  103. Rigal
  104. RPG
  105. Ruby
  106. SAS
  107. Sather
  108. Scheme
  109. Self
  110. SETL
  111. SGML
  112. Simkin
  113. Simula
  114. Sisal
  115. S-Lang
  116. Smalltalk
  117. Snobol
  118. SQL
  119. Squeak
  120. Tcl-Tk
  121. Tempo
  122. TeX
  123. TOM
  124. TRAC
  125. Transcript
  126. Turing
  127. T3X
  128. UML
  129. VBScript
  130. Verilog
  131. VHDL
  132. Visual Basic
  133. Visual DialogScript
  134. Visual FoxPro
  135. Water
  136. XML
  137. XOTcl
  138. YAFL
  139. Yorick
  140. Z
13. การใช้ scratch สร้างโปรแกรมพิมพ์ 1 ถึง 5
ราบข่าวว่า google สนับสนุนให้เด็กที่สหรัฐ เรียนรู้ วิทยาการคอมพิวเตอร์ (Computer Science) มีคลิ๊ปและรายละเอียดที่ cs-first.com เคยสนใจเรื่องพิมพ์ตัวเลข จึงลองใช้ scratch ที่ scratch.mit.edu สร้างโปรแกรม เพื่อพูด (say) 1 ถึง 5 แบบทำซ้ำ
พูด 1 จำนวน 1 ครั้ง คั่นด้วย , ทุกครั้ง แล้วเลื่อนเป็น 2
พูด 2 จำนวน 2 ครั้ง คั่นด้วย , ทุกครั้ง แล้วเลื่อนเป็น 3
ไปถึง 5
พูด 5 จำนวน 5 ครั้ง คั่นด้วย , ทุกครั้ง แล้วหยุด
ตัวอย่างการใช้ randomnumber กับภาษาจาวา
+ simplerandomnumbers.pdf

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


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


Print 1 to 5 in Scratch
ใครก็เป็น programmer ได้
กรณี เศรษฐศาสตร์ ออกงานไป coding 3 เดือน
เรื่อง "อยากเป็นโปรแกรมเมอร์ละอ่อนใน 3 เดือน" พบแชร์เรื่องนี้ใน ProgrammerThai เป็นเรื่องราวของหนุ่ม ที่จบปริญญาตรีด้านเศรษฐศาสตร์ แต่เบนเข็มลาออกจากงานประจำ แล้วไปเรียน coding เพื่อเป็นโปรแกรมเมอร์เต็มตัว ตั้งใจจะเป็นให้ได้ใน 3 เดือน ด้วยการเรียนรู้ด้วยตัวเองผ่าน MOOC และบลา ๆ โพสต์โดย @TiMeFF เขียน blog ที่ medium.com อ่านรายละเอียดเพื่อสร้างแรงบันดาลใจได้ ที่ post ของหนุ่มเศรษฐศาสตร์
กรณี ป.6 ใช้ Dream และ CSS
ได้อ่าน post ของ น้อง Kittichai Mala-in FramyFollow (ป.6) ที่ใช้ medium.com เป็นเวทีเขียน blog แชร์ประสบการณ์ใน โรงเรียนบ้านง่อนหนองพะเนาว์มิตรภาพที่ 126 ตั้งแต่สมัย ป.3 ที่ทำ 1) root Smartphone ของ True ผ่าน King Root พอขึ้น ป.4 กับ ป.5 สร้างเกมด้วย 2) RPG Maker VX เดี๋ยวนี้ ป.6 สนใจ 3) Dream Weaver CS5 กับ CSS ได้ความรู้เยอะเลยจาก thaicreate.com เขียนได้ดี น่านำไปแชร์ต่ออย่างมาก ถ้าสนใจที่น้องเค้าเขียนหาอ่านได้ ที่ post ของน้อง ป.6
Python เลือกข้อมูลเลขคู่ เลขคี่ จากตัวแปรอาร์เรย์
คลิป แบบ .gif
เพื่ออธิบายขั้นตอนการทำงานของโปรแแกรม ที่ทำการทำซ้ำกับตัวแปรอาร์เรย์ แล้ว เลือกข้อมูลเลขคู่ เก็บเข้าในตัวแปรอาร์เรย์ชื่อ even และ เลือกข้อมูลเลขคี่ เก็บเข้าในตัวแปรอาร์เรย์ชื่อ odd
numbers = [12, 37, 5, 42, 8, 3]
even = []
odd = []
while len(numbers) > :
  number = numbers.pop()
  if(number % 2 == 0):
    even.append(number)
  else:
    odd.append(number)
การทำงานของอาร์เรย์กับเลขคู่เลขคี่ด้วย python
เด็ก ๆ ม.3 ของไทย เรียน C# แล้ว จากที่ได้อ่านหนังสือวิชา เทคโนโลยีสารสนเทศและการสื่อสาร สำหรับ ม.3 มีบทที่ 3 การพัฒนาโปรแกรม หน้า 39 – 68 มีเนื้อหาสอนการใช้โปรแกรมประเภท IDE คือ Sharpdevelop

Try Html Basic
Barack Obama
ยุคใหม่ของวิทยาการคอมพิวเตอร์ (itinlife537)
โอบาม่า กล่าวผ่าน whitehouse.gov ที่เผยแพร่เมื่อ 30 มกราคม 2559 ว่า “ในเศรษฐกิจยุคใหม่ วิทยาการคอมพิวเตอร์ (Computer Science) จะไม่เป็นเพียงทักษะทางเลือก แต่จะเป็นทักษะพื้นฐาน” ที่มีทั้งการอ่าน การเขียน และการคำนวณ แล้วเขาจะหางบ 4 พันล้านเหรียญมาผลักดันหลักสูตรวิทยาการคอมพิวเตอร์ให้มีการเรียนในระดับประถมศึกษาถึงมัธยมศึกษา ซึ่งเดิมจะเน้นให้อ่านออกเขียนได้ แต่ยุคใหม่ต้องให้การคำนวณเป็นทักษะพื้นฐานของเยาวชนทุกคน แม้ว่าหางบประมาณก้อนใหญ่ไม่ได้ ก็ยังหน่วยงาน National Science Foundation ได้เตรียมงบ 135 ล้านเหรียญไว้อบรมพัฒนาครูผู้สอนให้มีความสามารถทางวิทยากรคอมพิวเตอร์ไว้แล้ว
อเมริกา เป็นผู้นำด้านเทคโนโลยีที่ถือเป็นจุดแข็ง เพราะเป็นประเทศที่ประสบความสำเร็จอย่างชัดเจน มีผลงานของคนในประเทศ อาทิ Facebook.com, Microsoft.com, Google.com, Apple.com, Oracle.com ดังนั้นการเสริมจุดแข็งจึงเป็นสิ่งที่ตอกย้ำความสำเร็จว่าเดินไปถูกทาง โดยมองไปที่การพัฒนาการศึกษาที่บูรณาการกับวิทยาการคอมพิวเตอร์สำหรับเด็กตั้งแต่เริ่มอ่านออกเขียนได้ ในอนาคตเศรษฐกิจของทุกประเทศทั่วโลกจะยึดโยงกับเทคโนโลยีสารสนเทศอย่างหลีกเลี่ยงไม่ได้ ที่ประเทศจีนมีคุณแจ็ค หม่า ที่ทำ Alibaba.com บริการ B2B ก็ขึ้นอันดับหนึ่งของคนรวยที่สุดในจีนแล้ว ที่ประเทศอังกฤษในอดีตมีคุณอลัน ทัวริ่ง ผู้คิดค้นเครื่องถอดรหัสเครื่อง Enigma ของเยอรมันจนทำให้สงความยุติลงเร็วกว่าที่ควรจะเป็น ถือเป็นผลงานที่ต้องจดจำ และได้รับการยกย่องให้เป็นบิดาแห่งวิทยาการคอมพิวเตอร์
จากการสำรวจทักษะคนงานไทย เพื่อเตรียมออกไปทำงานในประเทศกลุ่มอาเซียน พบว่า ทักษะภาษาอังกฤษน่าเป็นห่วงมากที่สุด และทักษะด้านเทคโนโลยีสารสนเทศเป็นปัญหารองลงมา เราคงไม่ต้องถามว่าแข่งกับใครอย่างไร คงต้องถามว่าจะพัฒนาคนไทยอย่างไรมากกว่า เพราะปัญหาความเข้าใจในเทคโนโลยีสารสนเทศของคนไทยมีกันในทุกระดับ ตั้งแต่ปัญหาโรงเรียนเล็กที่มีเด็กไม่ถึง 60 คน ส่งผลถึงจำนวนครูในโรงเรียน และส่งผลถึงงบประมาณทุกด้าน ปัญหาการให้ความสำคัญของภาครัฐและเอกชนที่จะใช้และให้บริการสารสนเทศอย่างจริงจัง ปัญหาผู้บริหารที่จะใช้เทคโนโลยีสารสนเทศในการบริหารจัดการในองค์กร เพราะถ้าเด็กในปัจจุบันขาดทักษะไอทีก็เชื่อได้ว่าทักษะของผู้ใหญ่ในปัจจุบันก็ต้องอ่อนแอถึงอ่อนมากเป็นธรรมดา
Regular Expression
Developer มักมี editor ที่ใช้ประจำตัว อาจเป็น Atom, Sublime, Editplus, Notepad++, Textmate, Visual Studio Code, Ultra Edit, Textpad ซึ่งฟังก์ชันหนึ่งที่สำคัญ คือ Regular Expression ที่จำเป็นสำหรับการ Find and Replace มีตัวอย่างตามภาพประกอบที่เป็นการทำ Data cleanning คือ กระบวนการตรวจสอบและการแก้ไข หรือลบรายการข้อมูลที่ไม่ถูกต้องออกไปจากชุดข้อมูล หลังจากที่ได้คัดลอกข้อมูลสถิติของ สอท.2559 จาก pdf มาเป็น text ก็พบปัญหาที่ต้องปรับข้อมูลให้เรียบร้อยก่อนนำไปใช้
ตัวอย่างในภาพใช้ Regular Expression ใน Notepad++
\r = ascii(13) และ \n=ascii(10) และ \t = ascii(9)
\x41\x43 คือ ac
\r\n..\r\n คือ ค้นหาบรรทัดที่มี 2 ตัวอักษร
.at คือ bat, cat, eat, fat, hat, oat, rat, sat
[abc][123] คือ a4, c1, b1, A1, C3
href|img|src คือ href, img, src
="[a-z0-9][a-z0-9]" คือ ="31", ="it", ="A1"
[\.]jpg|png คือ .jpg, .png
การฝึกงาน ทำได้หลายรอบ หรือ รอบเดียว
จินตนาการสำคัญกว่าความรู้ แต่การตั้งเป้าหมาย ต้องเริ่มจากเรียนรู้ สั่งสม จนมีองค์ความรู้ที่ชัดเจน ผสมผสานเข้ากับจินตนาการ จึงจะได้เป้าหมายที่เป็นรูปธรรม และเป็นไปได้
พื้นฐานการพัฒนาอย่างเป็นระบบ นอกจาก IPO ก็ยังมี PDCA ที่จะทำให้การพัฒนาเกิดการทำซ้ำได้ ขยายวง ขยายงาน ขยายจินตนาการออกไป จนบรรลุเป้าหมายที่ตั้งไว้
ารฝึกงาน หรือฝึกปฏิบัติในหลายวิชาชีพ สามารถทำได้เพียง 1 - 2 รอบ มีเงื่อนไขเรื่องอุปกรณ์ สถานที่ และการควบคุม บางสายจะลองผิดลองถูกได้ยาก และกำหนดเส้นทางมาตั้งแต่ต้น
ารฝึกปฏิบัติในสายคอมพิวเตอร์ ทำได้หลายรอบ และหลายเส้นทาง ไม่จำกัดเรื่องอุปกรณ์ องค์ความรู้ เวลา สถานที่ สามารถทำได้หลายรอบ สามารถลองผิดลองถูกจนกว่าจะพบทางของตนเอง
เทคนิคการทดสอบเป็นตัวขับเคลื่อน
ทคนิคการทดสอบเป็นตัวขับเคลื่อน (Test-Driven Development = TDD) คือ เทคนิคการพัฒนาซอฟต์แวร์ที่เริ่มต้นพัฒนาโค้ด (Code) จากส่วนเริ่มต้นให้เพียงพอกับการเริ่มทำงานในส่วนนั้น มีองค์ประกอบพื้นฐาน 3 ขั้นตอน คือ 1) การทดสอบล้มเหลว (Test Fails) ถูกสร้างเพื่อเริ่มต้นงานและมีเป้าหมายชัดเจน 2) การทดสอบผ่าน (Test Passes) คือ ทำให้โค้ดทำงานได้ตามวัตถุประสงค์ 3) พัฒนาองค์ประกอบใหม่ (Refactor) แล้วปรับเพิ่มส่วนใหม่ แล้วกลับเข้าสู่การทดสอบรอบใหม่
เล่าเรื่องโปรแกรมเมอร์ขาดตลาดโดย สกนท์ สิงห์โต และ ชญานิษฐ คงเดชศักดา
อบประโยคช่วงสุดท้ายของบทความ เขียนว่า "แรงฮึด อดทนของเด็กรุ่นใหม่ มีน้อย บางคนที่เจอเป็นโปรแกรมเมอร์อยู่ ๆ ลาออกไปเป็น Testing programmer ดื้อ ๆ เพราะบอกว่าเหนื่อยกับการเรียนรู้ อาชีพนี้ ถ้าใจไม่รักเรียนรู้ ผมว่า อย่าเข้ามาเลย นี่อาจจะเป็นสาเหตุให้โปรแกรมเมอร์ขาด" โดย สกนท์ สิงห์โต โพสต์เมื่อ 30 มกราคม 2565
อดคล้องกับภาพประกอบที่มีข้อความว่า "โปรแกรมเมอร์" ขาดตลาด เด็กจบใหม่ เปลี่ยนงานทุก 2 ปี เป็นภาพจากเว็บไซต์เดลินิวส์ โพสต์เมื่อ 19 กุมภาพันธ์ 2560 ที่สรุปสาเหตุการเปลี่ยนงานบ่อยของเด็กคอมพิวเตอร์ได้ 3 ข้อ คือ 1) ต้องการความมั่นคง 2) ต้องการเป็นเจ้านายตัวเอง และ 3) มีการชิงตัวกันของบริษัทต่าง ๆ เป็นคอลัมน์ : รายงานพิเศษ โดย ชญานิษฐ คงเดชศักดา
ขอบคุณที่เข้ามาเยี่ยมเยือน .. แล้วเข้ามาใหม่นะครับ .. ยินดีต้อนรับเสมอ