คอมพิวเตอร์เป็นอุปกรณ์อิเล็กทรอนิกส์ที่ประยุกต์ใช้งานได้อย่างกว้างขวาง คอมพิวเตอร์จะทำงานได้ก็ต่อเมื่อมีการเรียกใช้โปรแกรมหรือที่เรามักเรียกว่า application หรือซอฟต์แวร์ที่มีอยู่บนเครื่อง โปรแกรมเหล่านี้ประกอบด้วยชุดคำสั่งที่สามารถสั่งให้คอมพิวเตอร์ทำงานตามลำดับที่ต้องการ การเขียนชุดคำสั่งในโปรแกรมเพื่อสื่อสารกับคอมพิวเตอร์ จำเป็นต้องเขียนด้วยภาษาที่คอมพิวเตอร์เข้าใจได้ ภาษาที่คอมพิวเตอร์เข้าใจได้ทันที คือ ภาษาเครื่อง ซึ่งประกอบด้วยเลขฐานสอง แต่มักเขียนอยู่ในรูปเลขฐาน 16
หากเปิดไฟล์ในคอมพิวเตอร์จะพบว่าโปรแกรมส่วนใหญ่ที่เราเรียกใช้งาน จะมีนามสกุล .exe ซึ่งก็คือชุดคำสั่งของภาษาเครื่องนั่นเอง
ภาษาเครื่องจัดเป็นภาษาระดับต่ำ เป็นภาษาที่อ่านและเขียนได้ยาก มีโอกาสเขียนคำสั่งผิดพลาดได้ง่าย จึงมีการพัฒนาภาษาโปรแกรมเป็นภาษาแอสแซมบลีที่มีรูปแบบคำสั่งคล้ายคำศัพท์ในภาษาอังกฤษมากขึ้น ทำให้อ่านและเขียนง่ายขึ้น แต่ก็ยังถือเป็นภาษาระดับต่ำที่เข้าใจยากเช่นกัน ดังนั้นจึงมีการพัฒนาภาษาโปรแกรมระดับสูงที่มีความใกล้เคียงกับภาษามนุษย์มากขึ้น เช่น ภาษาซี ภาษาจาวา ภาษาไพธอน
ปัจจุบันโปรแกรมเมอร์ส่วนใหญ่จึงนิยมเขียนโปรแกรมด้วยภาษาระดับสูง จากนั้นจึงทำการแปลภาษาระดับสูงให้เป็นภาษาเครื่องเพื่อนำไปใช้งาน ดังตัวอย่างในรูปที่ 1 ด้านบนเป็นคำสั่งในภาษาซี ส่วนด้านล่างเป็นคำสั่งที่แปลเป็นภาษาเครื่อง และภาษาแอสแซมบลี
ในรายวิชานี้ จะศึกษาการเขียนโปรแกรมภาษาระดับสูง โดยใช้ภาษาไพธอน ซึ่งเป็นภาษาที่ได้รับความนิยมเป็นอันดับต้นๆ ในปัจจุบัน
https://spectrum.ieee.org/top-programming-languages-2022
ตัวแปลภาษาโปรแกรมระดับสูงมี 3 รูปแบบ คือ
image source: https://www.c-sharpcorner.com/article/why-learn-python-an-introduction-to-python/
โปรแกรมที่พัฒนาขึ้นพร้อมใช้งานจะเก็บไว้หน่วยความจำสำรอง เช่น ฮาร์ดดิสก์ เมื่อเราเรียกใช้โปรแกรมให้ทำงาน โปรแกรมจะโหลดเข้าไปเก็บในหน่วยความจำหลัก (main memory) ที่เรามักเรียกว่าแรม (RAM) จากนั้นหน่วยประมวลผลหรือซีพียู (central processing unit - CPU) จะเริ่มการทำงานโดยดึงคำสั่งจากแรมไปประมวลผลทีละคำสั่งตามลำดับ หากคำสั่งนั้นมีการรับข้อมูลเข้าหรือแสดงผลข้อมูล ซีพียูจะสั่งงานให้อุปกรณ์รับหรือแสดงผลข้อมูลทำงาน เมื่อทำงานเสร็จซีพียูก็จะดึงคำสั่งถัดไปมาประมวลผล และทำงานวนไปเรื่อยๆ จนครบทุกคำสั่งในโปรแกรม
แนวคิดในการเขียนโปรแกรมสอดคล้องกับการทำงานต่าง ๆ ในชีวิตประจำวัน ในการทำกิจกรรมใด ๆ เรามักจะสามารถระบุการกระทำเป็นขั้นเป็นตอนหรือเป็นลำดับได้อย่างชัดเจน การเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์ทำงานก็มีลักษณะคล้ายคลึงกัน นั่นคือ โปรแกรมเมอร์ต้องระบุขั้นตอนวิธีหรืออัลกอริทึม (algorithm) เพื่อบอกลำดับการทำงานอย่างเป็นขั้นตอน
ตัวอย่าง ความสอดคล้องของกิจกรรมกับการเขียนโปรแกรม
การเต้นตามนักร้องเกาหลี ผู้เต้นจะต้องจดจำลำดับท่าทางการเต้นแต่ละท่า และเรียงลำดับท่าเต้นก่อนหลังให้ถูกต้อง ซึ่งเปรียบเสมือนการจดจำไวยากรณ์ของภาษาโปรแกรมเพื่อเขียนคำสั่ง และเขียนคำสั่งควบคุมการทำงานให้เป็นไปตามลำดับที่ต้องการ
การบอกเส้นทางจากบ้านไปยังโรงเรียนให้คุณครูทราบ นักเรียนต้องระบุลำดับการเดินทาง โดยระบุระยะทาง ทิศทางการเดิน การเลี้ยว ระบุถนน หรือสภาพแวดล้อมบนเส้นทางให้ถูกต้องตามลำดับ คุณครูจึงจะสามารถเดินทางไปถึงบ้านนักเรียนได้ เปรียบเสมือนนักเรียนเขียนคำสั่งเพื่อให้คอมพิวเตอร์ (คุณครู) ทำงานตามลำดับ
การแข่งขันกีฬา ที่กรรมการต้องบังคับให้ผู้เล่นเล่นไปตามลำดับที่กฏและกติกาวางไว้ โดยกฏเปรียบเสมือนไวยากรณ์ของภาษาโปรแกรมที่ห้ามเขียนผิด กติกาเปรียบเสมือนคำสั่ง และกรรมการเปรียบเสมือนซีพียูที่สั่งผู้เล่นให้เล่นตามคำสั่ง
การทำอาหารตามสูตร ที่ต้องมีการชั่งตวงวัดส่วนประกอบ และระบุขั้นตอนในการปรุงก่อนหลังโดยละเอียด ซึ่งส่วนประกอบเปรียบเสมือนโครงสร้างของโปรแกรม และขั้นตอนการปรุงเปรียบเสมือนคำสั่งในโปรแกรม
นิยามปัญหา ทำความเข้าใจกับปัญหา โจทย์ต้องการอะไรเป็นคำตอบ
วิเคราะห์ปัญหา มีข้อมูลอะไรที่ให้มาแล้วบ้าง หรือต้องรับข้อมูลอะไรจากผู้ใช้
พัฒนาวิธีการแก้ปัญหา ออกแบบอัลกอริทึมเพื่อแก้ปัญหา ระบุขั้นตอนโดยละเอียด
เขียนโปรแกรม ตามอัลกอรึทึมที่ออกแบบไว้
ทดสอบโปรแกรม หาข้อผิดพลาดและแก้ไข
ปรับปรุงโปรแกรม เมื่อพบปัญหาหลังจากผู้ใช้นำไปใช้ นำมาแก้ไขปรับปรุงให้ดีขึ้น
การเรียนในระดับปริญญาตรีในสาขาวิชาที่เกี่ยวกับการเขียนโปรแกรมโดยส่วนใหญ่ มักจะบรรจุวิชาคณิตศาสตร์ไว้ในหลักสูตร ทั้งนี้เนื่องจากแนวคิดของภาษาโปรแกรมและการเขียนโปรแกรมมีรากฐานมาจากคณิตศาสตร์ อีกทั้งการเขียนโปรแกรมในงานระดับสูง เช่น การวิเคราะห์ข้อมูล งานด้านปัญญาประดิษฐ์ ส่วนใหญ่ต้องใช้ความรู้พื้นฐานทางคณิตศาสตร์และสถิติ ความคล้ายคลึงกันอีกประการระหว่างการเขียนโปรแกรมกับคณิตศาสตร์ คือ วิธีการแก้ปัญหาจะสามารถระบุเป็นลำดับขั้นตอนที่ชัดเจนได้
งานที่คอมพิวเตอร์ถนัด คือ การทำตามลำดับ การคำนวณ และการทำซ้ำๆ ซึ่งสอดคล้องกับการแก้ปัญหาทางคณิตศาสตร์ที่เกี่ยวข้องกับการคำนวณต่างๆ เราสามารถแปลงสมการ อสมการ หรือฟังก์ชันทางคณิตศาสตร์เป็นคำสั่งในภาษาโปรแกรมได้ไม่ยาก ตัวอย่างเช่น
ฟังก์ชัน ReLu เป็นฟังก์ชันที่ใช้ในอัลกอริทึมการเรียนรู้เชิงลึก (deep learning) ซึ่งอัลกอริทึมนี้เป็นที่นิยมใช้ในงานทางด้านปัญญาประดิษฐ์ในปัจจุบัน
ฟังก์ชัน Relu เป็นฟังก์ชันที่แปลงค่า x เป็นศูนย์ เมื่อ x มีค่าน้อยกว่าศูนย์ แต่หาก x มีค่ามากกว่าหรือเท่ากับศูนย์ จะไม่เปลี่ยนค่า x เราสามารถเขียนให้อยู่ในรูปฟังก์ชันทางคณิตศาสตร์ และฟังก์ชันในภาษาไพธอนได้ดังรูปที่ 2