Thursday, November 21, 2013

สวัสดีครับ วันนี้คุยเรื่อง เรียนเขียนโปรแกรมแล้ว ควรรู้อะไรบ้าง สำหรับน้องใหม่ครับ :0) ตอน 1/2

สวัสดีครับ

   ก่อนอื่นขอแก้ตัวก่อนว่า ที่ผมชะลอการอัฟเดตบล็อกนี้ไปค่อนข้างหลายวัน เพราะว่า ผมเกิดความสับสนนึกว่า เป็นอีกบล็อกหนึ่งที่ผมเขียน เนื่องจากเนื้อหาเกี่ยวกับ คอมพิวเตอร์เหมือนกัน เลยพลาดจนได้ครับ :0)

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

    การเขียนโปรแกรม อย่ามัวแต่เลือกครับว่าจะเรียนตัวไหน ตัวนี้ดี ตัวนั้นไม่ดี จริงๆ แล้ว ภาษาโปรแกรมเขาก็คล้ายๆ กันหมดครับ เพียงแต่ จะมีเน้นว่า เป็นการเขียนโปรแกรมแบบ โครงสร้าง หรือ Structure Programming  และ OOP (Object-Oriented Programming) ก็เท่านั้นเอง โดยมี ภาษาที่อยู่ตรงกลาง อย่าง C++  ก็มีครับ คือ จะเขียนแบบ C ธรรมดา ก็ได้เช่นกัน

    หรือเอาแบบแรงๆ อย่าง Java นี่ก็ได้ ขนาดโปรแกรม แรก ตามธรรมเนียมปฏิบัติ ให้แสดงผลว่า Hello, World ก็เข้า Class กับ Method กันแล้ว คือ OOP ชัดจ๋ามาเลย ก็มีครับ

    นอกจาก C++ แล้ว มีโปรแกรมอื่นไหม ที่เราคุ้นหูกัน ก็นี่เลยครับ Python นี่ล่ะครับ ถ้าเอากันจริงๆ แล้ว มีคนบอกว่า Python มีความเป็น OOP มากกว่า C++ นะครับ ทำไม? ลองถาม อาจารย์ กู กันเองครับ หมายถึง google.com นั่นเอง

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

              "จะเรียนภาษาอะไร ขอให้รักจริง เรียนรู้ให้สุดกำลัง และยั่งยืนครับ"

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

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

    ขณะที่ภาษาสมัยใหม่นั้น อย่าง C, C++, ADA, Python, Ruby, Java และือื่นๆ นั้น จะเป็น General Purpose Programming เสียส่วนใหญ่ จริงอยู่ ตอนนี้ Java มี ทั้ง ME,SE,EE แถม ยังมี Embedded อีกต่างหาก แต่ก็ยังทิ้งความเป็น General ไม่ได้ครับ คือทั่วไป ครอบคลุมน่ะครับ นี่ยังไม่นับตระกูล Visual ต่างๆ อีกนะครับ ที่เน้นทำงานบน Windows

    แนวทางในการเรียนรู้ ควรเป็นแบบนี้ครับ

1. อย่ากลัวที่จะเริ่ม ความยากของการเริ่มหัดเขียนโปรแกรมก็มีดังนี้
     
      -คิดว่าตัวเองทำไม่ได้
      -ไม่รู้จะหาบทเรียนที่ไหน (ผมทำคลิปให้เรียนแล้วนะครับ :0) )
      -เริ่มยังไง งง
       และอื่นๆ

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

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

     จีงต้องบอกไว้ตรงนี้เลยครับ เอา 3 ภาษานะครับ ก่อนคุณจะซื้อหนังสือ หรือ ตำรานะครับ ต้องติดตั้ง ตัว Compiler (+ตัว Editor เอาไว้เขียนโปรแกรมนั่นล่ะ จะมาด้วยกันเลย ) ดังนี้

1. ภาษา C, C++ แนะนำให้ใช้ ของ Classic ตัว Turbo C++ 3.0 ครับ แม้จะออกมาก่อน มาตรฐาน ภาษาแต่มันคือ ความคลาสิคครับ จะใช้ Eclipse หรือ Netbeans ก็แล้วแต่ครับ แต่ผมชูตัวนี้
เพราะว่า หากเราเขียนบน Turbo C++ 3.0 ได้ มันจะได้ประสบการณ์เพิ่มครับจากการที่ต้องดูแล Code ด้วยตนเอง และเราจะมาใช้ ตัว Eclipse กับ Netbeans ทีหลังก็ยังได้ครับ  อีกประการ เรื่องกราฟิก ความเจ๋งอื่นๆ อย่าได้ดูถูกนะครับ หากคุณยังไม่รู้จัก QT ที่เป็นตัวช่วยเรื่อง กราฟิก ทำให้ C++ ทำกราฟิกไม่แพ้ใครก็แล้วกัน คือหัดจากตัวภาษาชั้นสูง พื้นฐานแล้วหัดใช้กับ ตัวช่วย มันจะทำให้เรา ได้ฝึกอะไรเยอะกว่าครับ แต่ความเห็นของผม ไม่ใช่ว่าต้องถูก 100 % นะครับ
 
     ไป Download ตัว คลาสิคไ้ด้ที่ http://konthaihappy.com/turboc.zip ครับ

 Note: เชื่อไหมกว่าผมจะหาเขาพบ อย่างนานครับ ไม่ทราบว่าทำไม หรือเพราะของเก่าล่ะมัง :0)
         (กำลังจัดทำคลิปบทเรียนครับ ลองดูตำแหน่งเดียวกับของ Python)



2. ภาษา Python ก็ไปหาตัว Interpreter ของเขาได้ที่ http://www.python.org/download ครับ หากจะเรียนตามคลิปที่ผมทำไว้ ก็ใช้ ของเวอร์ชั่น 2.x ครับ หรือ ตั้งแต่ 2.2 ไปถึง 2.5 สำหรับ 2.6 และ 2.7 นั้นให้ระวังเพราะชุดคำสั่ง print"ใส่ข้อความที่นี่" จะกลายเป็นฟังก์ชั่นไปเป็นที่เรียบร้อยคือ print("") คือคุณจะ Interpret ไม่ผ่านครับ หากพิมพ์ตามที่ผมสอนไว้ โปรแกรมจะไม่ทำงาน ถ้าคุณไม่เปลี่ยนตามที่ผมบอก ครับผม (มีคลิปบทเรียนที่ผมทำไว้ ดูด้านขวามือ บนๆ ของบล็อกนี้ครับ)

3.ภาษา Java อันนี้ สบายๆ ครับ คือ ของเขามาตรฐานสูงอย่างมาก เพราะ มีการพัฒนามาอย่างต่อเนื่อง ตอนนี้ ลุยเข้าไปวงการ Hardware อีกต่างหาก มี Device ทั่วโลก เช่น มือถือ เราเตอร์ และอะไรก็ตามที่มีชิปคอมพิวเตอร์ฝังในวงการ ไม่ว่าจะวงการไหน ใช้ Java ไปแล้วกว่า 3000 ล้าน Device ด้วยกัน ต่อไป Java คงยึดโลก ล่ะครับ ตอนนี้ แพ้ก็แต่ พี่ใหญ่ C กับ C++ เท่านั้น ต้องรู้ครับ ภาษาเหล่านี้
(กำลังจัดทำคลิปบทเรียนครับ ลองดูตำแหน่งเดียวกับของ Python)
   
       ภาษานั้นคล้ายกับ C และ C++ ตรงที่ มีเขียนแล้ว ย้ายจากระบบปฏิืบัติการหนึ่ง (O.S.) ไปอีกที่หนึ่ง อาจจะไม่ต้องเขียนใหม่เลยแม้แต่บรรทัดเดียว คือเขียนที่เดียวแล้วปลอดภัยสบายใจไปแปดอย่างครับ หากมองความชัวร์ แล้ว Java อาจจะชัวร์กว่า นั่นเพราะ เขาทำงานบน JVM หรือ ระบบเสมือนของ Java
ที่ครอบ ตัว OS ไว้อีกที ดังนั้น Java ย่อมทำงาน บน JAVA Virtual Machine ได้แนบเนียนสนิทกว่า แน่นอนครับ แต่ C กับ C++ ไม่ได้มีตัว VM แบบนี้มาแต่แรก ครับ ก็น่าคิด จริงๆ ผมมองว่า JAVA หากพิจารณาตามนิยามแล้ว เขาอยู่ตรงกลาง ระหว่าง

       ภาษาสคริปต์ และ ภาษาโปรแกรมมิ่งจริงๆ นะครับ อ้าว ตกลง สีเทา หรือ ฮ๋ะๆๆๆ ไม่หรอกครับของเขาดีขนาดนี้

       หรือมองอีกแบบ JVM นั่นก็เหมือน Web Browser นั่นล่ะ จริงไหม? ลองคิดกันดูครับ ปรัชญาการทำงาน เหมือน IE, Chrome, Opera อย่างกับแกะเลยครับ ขอบคุณท่าน ทิม เบอร์เนอร์ลี (Tim Berners Leeไว้นะที่นี้ :0) หากไม่มีท่าน โลกนี้จะเป็นอย่างไรหนอ ท่านนี้เป็น บิดาของ WWW ครับ

        ไปดาวโหลดตัวพัฒนา Java ที่นี่ครับ  http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

    (ณ. พฤษจิกายน 2556 นะครับ)  หากไม่พบ ก็หาด้วยคำว่า JDK ครับ
อย่าลืม กดยอมรับ  Accept License Agreement ด้วยนะครับ

 วันนี้ยาวไปหน่อย ขอจบไว้เท่านี้ก่อน เดี๋ยวมาต่อ ตอนที่ 2 วันหลังครับผม 

สวัสดีครับ
คุณ บอลล์ :0) 
 

No comments:

Post a Comment