Intro
สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video
การเขียนโปรแกรม (Programming) คืออะไร
การเขียนโปรแกรม (Programming) คือกระบวนการออกแบบและสร้างโปรแกรมคอมพิวเตอร์เพื่อทำงานด้านคอมพิวเตอร์ที่เฉพาะเจาะจง รวมถึงการวิเคราะห์, การสร้าง algorithm, การประเมินความแม่นยำและการใช้ทรัพยากรของ algorithm และการนำ algorithm ไปใช้ในภาษาโปรแกรมที่เลือก
โดยเชิง technical การเขียนโปรแกรมเกี่ยวข้องกับการเขียน code ในภาษาก ารเขียนโปรแกรม เช่น C++, Python, Java เป็นต้น เพื่อสั่งงานคอมพิวเตอร์ในการประมวลผลและจัดการข้อมูล, การโต้ตอบกับอุปกรณ์อินพุต/เอาท์พุต และการเชื่อมต่อกับส่วนประกอบซอฟต์แวร์และฮาร์ดแวร์
วัตถุประสงค์ของการเขียนโปรแกรม
- การแก้ปัญหา สร้าง algorithm และ logic เพื่อหา solution ในด้านการคำนวณและการประมวลผลข้อมูล
- ระบบอัตโนมัติ ลดความจำเป็นของมนุษย์และเพิ่มประสิทธิภาพ เช่น การป้อนข้อมูลและการคำนวณที่ซับซ้อน
- การสร้าง software พัฒนา application ที่ทำงานบนอุปกรณ์ต่างๆ
- การวิเคราะห์ข้อมูลและการแสดงภาพ ใช้สำหรับงานด้านวิทยาศาสตร์ข้อมูล (Data Science), Machine Learning, และ AI
- ความบันเทิงและความคิดสร้างสรรค์ ใช้ในการสร้างเนื้อหา Digital เช่น วิดีโอเกม และ Animation
- ระบบเชื่อมต่อระหว่างกัน อำนวยความสะดวกในการสร้างเครือข่ายและอินเ ทอร์เน็ต
- การเพิ่มขีดความสามารถให้กับธุรกิจและอุตสาหกรรม พึ่งพาซอฟต์แวร์ในการดำเนินงานต่างๆได้ง่ายและรวดเร็วยิ่งขึ้น
เกร็ดความรู้ HTML และ CSS ไม่ถือเป็นภาษาโปรแกรม (programming language) เนื่องจากไม่สามารถใช้ในการเขียนโปรแกรมคอมพิวเตอร์แบบเจาะจงและทำงานได้ ภาษาเหล่านี้ใช้สำหรับการเขียนและกำหนดรูปแบบของเว็บเพจ (HTML) และการจัดรูปแบบและสไตล์ของเว็บเพจ (CSS) ตามลำดับ
ภาษา C++ คืออะไร
ภาษา C++ คือภาษาโปรแกรมที่เป็นภาษาสำหรับการพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพสูง โดยเฉพาะอย่างยิ่งในการจัดการหน่วยความจำและการเข้าถึงทรัพยากรระบบอย่างละเอียดอ่อน นอกจากนี้ยังเป็นภาษาที่สามารถใช้ในการพัฒนา application ได้อีกด้วย
โดยพื้นฐานของภาษา C++ นั้นจะใช้สิ่งที่เรียกว่า Compiler ทำการแปลงตัวภาษาโปรแกรมจากภาษาที่มนุษย์สามารถอ่านได้ ให้กลายเป็นภาษาที่ computer (machine) สามารถอ่านออกมาได้
อธิบายเพิ่มเติมระหว่าง Compiler และ Interpreter
Compiler เป็นโปรแกรมที่ใช้แปลงภาษาโปรแกรมจากภาษาที่เขียนได้เป็นภาษาที่ computer เข้าใจ เมื่อเราเขียนโปรแกรมภาษา C++ ด้วยเครื่องมือต่างๆ เช่น Visual Studio Code แล้วเรากดปุ่ม compile โปรแกรมจะถูกส่งให้ Compiler ซึ่งจะแปลงโค้ด C++ เป็นภาษาที่ computer เข้าใจ เมื่อแปลงเสร็จแล้ว เราจะได้ไฟล์ที่เป็นภาษาเครื่องที่สามารถรันได้ (เราจะเรียกกันว่า Machine Code)
Interpreter เป็นโปรแกรมที่อ่านแล ะทำคำสั่งของโปรแกรมทีละบรรทัด โดยไม่ต้องแปลงทั้งโปรแกรมเหมือน Compiler โดยตรง เมื่อเราเขียนโปรแกรมภาษาที่มี Interpreter อย่าง Python แล้วเรารันโปรแกรม โปรแกรมจะถูกส่งให้ Interpreter ซึ่งจะอ่านและทำคำสั่งทีละบรรทัดตามลำดับ จะมีการแปลง code ทุกครั้งที่เรารันโปรแกรม
สำหรับ C++ นั้นจะมี C++ Compiler จะถูกใช้ในการแปลงโค้ด C++ เป็นภาษาเครื่องที่เครื่องคอมพิวเตอร์เข้าใจ เพื่อให้โปรแกรมสามารถรันได้
ภาพรวมขั้นตอนการคอมไพล์ C++ แสดงขั้นตอนหลักๆ ตั้งแต่ Source code ไปจนถึงโปรแกรมที่สามารถรันได้
- โค้ดต้นทาง (Source Code) โปรแกรมเมอร์เขียน code C++ ซึ่งเป็นจุดเริ่มต้นของกระบวนการ
- การเตรียมการก่อนคอมไพล์ (Preprocessing) ตัว preprocessor จะจัดการกับคำสั่งต่างๆ ที่อยู่ใน code เช่น #include และ #define เพื่อเตรียมโค้ดให้พร้อมสำหรับการ compile
- การคอมไพล์ (Compilation) ตัว compiler จะแปลง code ต้นทางที่ผ่านการเตรียมการแล้วไปเป็นภาษา assembly ซึ่งเป็นภาษาระดับกลางที่ใกล้เคียงกับภาษาเครื่องมากขึ้น
- ภาษา assembly (Assembly) ตัว assembler จะแปลภาษา assembly ไปเป็นภาษาเครื่อง ซึ่งเป็นภาษาที่คอมพิวเตอร์สามารถเข้าใจได้โดยตรง ขั้นตอนนี้จะได้ไฟล์ object ออกมา
- การเชื่อมโยง (Linking) ตัว linker จะเชื่อมโยงไฟล์ object ต่างๆ เข้าด้วยกัน และแก้ไขการอ้างอิงต่างๆ ภายใน code เพื่อให้ได้โปรแกรมที่สมบูรณ์และสามารถทำงานได้
- โปรแกรมที่ทำงานได้ (Executable Program) ผลลัพธ์สุดท้ายของกระบวนการ compile คือโปรแกรมที่ทำงานได้ ซึ่งสามารถ run บนคอมพิวเตอร์ได้
ในทางปฏิบัติ ภาษา machine code หรือภาษาเครื่อง จะแตกต่างกันระหว่างระบบปฏิบัติการ Linux, Mac, และ Windows เนื่องจากมีการออกแบบและสถาปัตยกรรมของ CPU ที่แตกต่างกัน
เมื่อเราทำการ compile โปรแกรม C++ บนแต่ละระบบปฏิบัติการ ตัว compiler จะทำหน้าที่แปลง code C++ ให้เป็นภาษา assembly ที่สอดคล้องกับสถาปัตยกรรมของ CPU ของแต่ละระบบปฏิบัติการ ซึ่งทำให้เกิดไฟล์ object ที่เป็นภาษาเครื่องที่สามารถรันได้บนแต่ละระบบปฏิบัติการ
หลังจากนั้น ขั้นตอนการเชื่อมโยง (linking) จะทำหน้าที่รวมไฟล์ object ที่ถูก compile แล้วเข้าด้วยกัน และแปลงเป็นโปรแกรมที่สมบูรณ์และสามารถรันได้บนแต่ละระบบปฏิบัติการ อาทิเช่น ไฟล์ Executable บน Windows (.exe), ไฟล์ Executable บน Linux/Mac (ไม่มีนามสกุล), หรือไฟล์ Executable บน Mac (.app)
ดังนั้น ภาษา machine code บนแต่ละระบบปฏิบัติการจะไม่เหมือนกัน เนื่องจากมีการแปลง code C++ ให้เป็นภาษาเครื่องที่เป็นไปตามสถาปัตยกรรมของแต่ละระบบปฏิบัติการ
เดี๋ยวเราจะมาทำความเข้าใจเพิ่มเติมผ่าน Course เรียนนี้กัน
ทำไมถึงต้องเป็น C++
ภาษา C++ เหมาะแก่การฝึกเขียนโปรแกรมเนื่องจากมีความหลากหลายและสามารถนำไปใช้ในงานที่หลากหลายได้ นี่คือเหตุผลที่ C++ เหมาะสำหรับการศึกษาและการฝึกเขียนโปรแกรม
- ประสิทธิภาพสูง C++ เป็นภาษาโปรแกรมที่มีประสิทธิภาพสูงและมีการจัดการหน่วยความจำอย่างมาก เหมาะสำหรับการพัฒนาซอฟต์แวร์ที่ต้องการประสิทธิภาพสูง เช่น เกมคอมพิวเตอร์, แอปพลิเคชันกราฟิกส์, และ software ที่ต้องการการประมวลผลแบบ real-time
- ความหลากหลาย C++ มีความหลากหลายในการใช้งาน สามารถใช้ในการพัฒนาซอฟต์แวร์ต่างๆ เช่น ระบบปฏิบัติการ, โปรแกรมเซิร์ฟเวอร์, networking applications, ซอฟต์แวร์กราฟิกส์, web application, และอื่นๆ
- เป็นภาษาพื้นฐาน C++ เป็นภาษาพื้นฐานที่ใช้ในการพัฒนาซอฟต์แวร์อื่นๆ ภาษาโปรแกรมอื่นๆ เช่น C# และ Java ถูกพัฒนาขึ้นจาก C++ ดังนั้นการเรียนรู้ C++ จะทำให้เราเข้าใจและใช้งานภาษาโปรแกรมอื่นๆ ได้ง่ายขึ้น
- การเขียน low level software C++ ให้เราควบคุมรายละเอียดของ software ได้มากขึ้น เนื่องจากเราสามารถเข้าถึงทรัพยากรระบบได้ ซึ่งเหมาะสำหรับการพัฒนา software ที่ต้องการประสิทธิภาพสูงและการจัดการทรัพยากรของระบบอย่างมีประสิทธิภาพ
- เครื่องมือและงานอื่นๆ มีเครื่องมือและ library มากมายสำหรับการพัฒนา software ด้วย C++ เช่น library สำหรับกราฟิกส์ (Graphics) เช่น OpenGL, library สำหรับการประมวลผลรูปภาพ (Image Processing) เช่น OpenCV, และอื่น
- Runtime บางตัวก็สร้างจาก c++ พวก Software ที่ on top ภาษา interpreter เช่น node.js ใช้ภาษา C++ เป็น runtime สำหรับการทำงานของเฟรมเวิร์ก Node.js ที่ใช้ในการเรียกใช้ API และการดำเนินการอื่น ๆ ที่เกี่ยวข้องกับระบบปฏิบัติการ นอกจากนี้ Node.js ยังใช้ภาษา C++ เพื่อพัฒนา module และเลือกใช้ library เพื่อเสริมสร้างประสิทธิภาพและความสามารถของ Node.js เป็นต้น
ดังนั้น C++ เป็นภาษาโปรแกรมที่เ หมาะสำหรับการศึกษาและการเขียนโปรแกรม เพื่อพัฒนาซอฟต์แวร์ที่มีประสิทธิภาพสูงและหลากหลาย รวมถึง C++ เป็นภาษาที่ถือว่ามีความซับซ้อนในเรื่องของภาษา program ในแง่ที่เป็นภาษาที่ใกล้เคียงกับ low level ด้วย จึงเป็นหนึ่งในภาษาที่สามารถเป็นพื้นฐานที่ไปต่อยอดหลายๆภาษาต่อได้ไม่ยากด้วยเช่นกัน
ภาษา C++ แตกต่างกับภาษา C อย่างไร
ภาษา C++ เป็นภาษาที่พัฒนามาจากภาษา C และมีความเหมือนหรือคล้ายกันในบางด้าน แต่ก็มีความแตกต่างกันอย่างมีนัยสำคัญ คือ
- การเขียนโปรแกรมแบบวัตถุ - C++ รองรับการเขียนโปรแกรมแบบวัตถุ (Object-Oriented Programming) ในรูปแบบของคลาส (Class) และอ็อบเจ็กต์ (Object) ซึ่งช่วยให้ code เป ็นระเบียบและมีความยืดหยุ่นมากขึ้น ในขณะที่ภาษา C เป็นภาษาโปรแกรมแบบ procedural ซึ่ง code ถูกจัดกลุ่มเป็น function แยกต่างหาก
- การสนับสนุนการสืบทอด - C++ สนับสนุนการสืบทอด (Inheritance) ซึ่งเป็นหนึ่งในหลักการของการเขียนโปรแกรมแบบวัตถุ ซึ่งช่วยให้สามารถสร้าง Class ใหม่โดยอ้างอิงจาก Class ที่มีอยู่แล้ว และสามารถใช้งาน code ที่ถูกสร้างขึ้นใหม่นี้แบบร่วมกันกับ code ที่อยู่ใน class แม่ได้
- High level language - C++ เพิ่มคุณสมบัติเช่น การใช้งาน library (Standard Template Library) ที่มี Class พื้นฐานมาให้ใช้งาน เช่น Class vector, string, และ algorithm ซึ่งช่วยให้การเขียนโปรแกรมเป็นไปได้อย่างรวดเร็วและมีประสิทธิภาพมากขึ้น
- การจัดการหน่วยความจำ - ใน C++ มีการจัดการหน่วยความจำแบบอัตโนมัติด้วยการใช้คลังข้อมูล (Memory Allocation) แบบของภาษา C++ ทำให้ไม่จำเป็นต้องกำหนดตำแหน่งหน่วยความจำเองด้วยฟังก์ชัน malloc() และ free() อีกต่อไป
- การใช้งานและการเข้าถึงทรัพยากรระบบ - C++ มีความสามารถในการใช้งานและเข้าถึงทรัพยากรระบบอย่างละเอียดอ่อนกว่า C ซึ่งช่วยให้สามารถควบคุมการทำงานของระบบได้มากขึ้น เช่น การจัดการไฟล์, การสื่อสารผ่านทางเครือข่าย, การใช้งานฐานข้อมูล และอื่นๆ
ภาษา C++ ยังคงเป็นภาษาที่ได้รับความนิยมและใช้งานอย่างแพร่หลายในการพัฒนาซอฟต์แวร์ที่ต้องการความสามารถในการจัดการทรัพยากรระบบและประสิทธิภาพสูง
การลง C++ Compiler
วิธีลง C++ ผ่าน Linux, Mac, และ Windows ผ่าน Visual Studio Code (VS Code) สามารถดูได้ผ่าน document ของ vscode ได้เลย (คิดว่าเป็นฉบับที่ลงง่ายที่สุดแล้ว) https://code.visualstudio.com/docs/languages/cpp
ใน Course นี้ เราจะใช้ Editor VS Code เป็นตัวหลักในการ run program c++ โดยให้ทำการลง Extension ของ C++ และลง GNU Compiler Collection (GCC) ตามที่บทความแนะนำ
สำหรับ ชาว Mac หากใครลง Xcode Devtool จะได้คำสั่ง g++ ติดมาเลย โดยสามารถตรวจสอบได้จากคำสั่ง ใน terminal
g++ --version
หากได้ผลลัพธ์ออกมา ไม่เป็น Command not found
ถือว่า สามารถใช้งานได้เรียบร้อย
สำหรับ สาย Windows ให้ทำ การลงผ่าน MSVC หรือ MinGW ตาม tutorial ใน document ได้เลย (แนะนำเป็น MinGW เนื่องจากมีขั้นตอนลงไม่เยอะมาก)
เมื่อลงเรียบร้อย ให้เปิด cmd ขึ้นมาจะสามารถ run ด้วยคำสั่งเดียวกันและได้ผลลัพธ์เหมือนกันออกมาได้
สำหรับสาย Linux ลงได้ผ่าน GCC tutorial เลย และจะได้ผลลัพธ์ออกมาผ่าน command เหมือน Mac เช่นกัน
เท่านี้ก็พร้อมสำหรับการลอง run project c++ กันแล้วครับ