ในโลกของเทคโนโลยี และการพัฒนาซอฟต์แวร์ คำว่า "ซอร์สโค้ด (Source Code)" หรือหากแปลภาษาไทยคือ "โค้ดต้นฉบับ" จัดว่าเป็นหัวใจสำคัญของทุก ซอฟต์แวร์ (Software) และ แอปพลิเคชัน (Application) ที่เราใช้งานอยู่ทุกวัน รวมไปถึง เว็บไซต์ (Website) หรือเกมบนสมาร์ทโฟน หรือซอฟต์แวร์คอมพิวเตอร์
ทุกสิ่งล้วนเกิดขึ้นจากชุดคำสั่งที่นักพัฒนาเขียนขึ้น โดย Source Code เปรียบเสมือนพิมพ์เขียว (Blueprint) ของซอฟต์แวร์ เป็นภาษาที่มนุษย์สามารถอ่าน และแก้ไขได้ ก่อนจะถูกแปลงเป็นรูปแบบที่ เครื่องจักร (Machine) สามารถเข้าใจ และดำเนินการตามคำสั่งเหล่านั้นได้
บทความนี้ เราจะพาคุณไปรู้จักกับ Source Code อย่างละเอียด ตั้งแต่ความหมาย, หน้าที่ และความสำคัญ ไปจนถึงวิธีการทำงานของมันในกระบวนการพัฒนาซอฟต์แวร์
ในระบบคอมพิวเตอร์ โค้ดต้นฉบับ หรือที่เรียกสั้น ๆ ว่า Code หรือ Source ทำให้กลายเป็นคำว่า Source Code คือโปรแกรมคอมพิวเตอร์ที่เขียนขึ้นเป็นข้อความธรรมดา (Plain Text) โดยใช้ภาษาการเขียนโปรแกรม นักพัฒนาเขียนโค้ดต้นฉบับเพื่อควบคุมพฤติกรรมของคอมพิวเตอร์ในรูปแบบที่มนุษย์สามารถอ่าน และเข้าใจได้
โค้ดต้นฉบับ (Source Code) เป็นองค์ประกอบพื้นฐานของซอฟต์แวร์คอมพิวเตอร์ที่ถูกสร้างขึ้นโดยนักพัฒนา มักจะประกอบไปด้วย ฟังก์ชัน (Function), คำอธิบาย (Description), นิยาม (Definition), คำสั่งเรียกใช้งาน (Call), วิธีการ (Method) และข้อความเชิงปฏิบัติการอื่น ๆ ที่ถูกออกแบบมาให้อ่านเข้าใจได้ง่ายสำหรับมนุษย์ และมีรูปแบบที่ช่วยให้ทั้งนักพัฒนา และผู้ใช้งาน สามารถทำความเข้าใจได้
การสร้าง Source Code ไม่ใช่เรื่องยากหากคุณมีความรู้ความเข้าใจ ตัวอย่างเช่น เราสามารถพิมพ์ชุดคำสั่ง ภาษา C (C Language) ลงใน โปรแกรม Notepad และบันทึกเป็นไฟล์ข้อความ ไฟล์นั้นก็จะถือเป็นโค้ดต้นฉบับของโปรแกรมได้เช่นกัน
โค้ดต้นฉบับ (Source Code) และโค้ดวัตถุ (Object Code) บางครั้งมักถูกใช้อ้างอิงเวอร์ชันก่อน และหลัง ของซอฟต์แวร์คอมพิวเตอร์ที่ผ่านกระบวนการคอมไพล์ อย่างไรก็ตาม คำเหล่านี้ไม่สามารถใช้กับภาษาสคริปต์ (Script Language) อย่างเช่น JavaScript ซึ่งไม่ได้ใช้กระบวนการคอมไพล์ในรูปแบบเดียวกัน
นักพัฒนาสามารถใช้เครื่องมือสร้างโค้ดได้หลายแบบ เช่น ซอฟต์แวร์แก้ไขข้อความ (Text Editor), เครื่องมือเขียนซอฟต์แวร์แบบภาพ (Visual Programming Tool) หรือ Integrated Development Environment (IDE) เช่น ชุดเครื่องมือพัฒนาซอฟต์แวร์ (SDK) ในกรณีของการพัฒนาซอฟต์แวร์ขนาดใหญ่ มักมีระบบจัดการ Source Code ที่ช่วยให้นักพัฒนาสามารถจัดระเบียบ และติดตามสถานะต่าง ๆ ของไฟล์ได้อย่างมีประสิทธิภาพ
ภาพจาก : https://www.jetbrains.com/pages/static-code-analysis-guide/what-is-an-ide/#
โค้ดต้นฉบับสามารถเป็นได้ทั้ง ซอฟต์แวร์กรรมสิทธิ์ (Proprietary Software) และ ซอฟต์แวร์แบบเปิดเผยซอร์สโค้ด (Open-Source Software) ซึ่งข้อตกลงด้านลิขสิทธิ์มักสะท้อนถึงความแตกต่างนี้
ตัวอย่างเช่น เมื่อผู้ใช้ติดตั้งซอฟต์แวร์อย่าง Microsoft Office โค้ดต้นฉบับ (Source Code) ของซอฟต์แวร์นั้นถือเป็นลิขสิทธิ์ของ Microsoft ผู้ใช้งานจะได้รับเฉพาะไฟล์ซอฟต์แวร์ที่ผ่านการคอมไพล์แล้ว (Executable Files) และไฟล์ ไลบรารี (Library) ที่จำเป็นสำหรับการเรียกใช้งานฟังก์ชันต่าง ๆ ของโปรแกรม
ในทางตรงกันข้าม หากผู้ใช้ติดตั้ง Apache OpenOffice ซึ่งเป็น ซอฟต์แวร์แบบเปิดเผยซอร์สโค้ด (Open-Source Software) โค้ดต้นฉบับสามารถถูกดาวน์โหลด และแก้ไขได้ ทำให้ผู้พัฒนามีอิสระในการปรับแต่งซอฟต์แวร์ตามความต้องการ
โดยทั่วไปแล้ว ผู้ให้บริการซอฟต์แวร์ลิขสิทธิ์ เช่น Microsoft มักจะไม่เปิดเผยโค้ดต้นฉบับให้กับลูกค้าเนื่องจากสองเหตุผลหลัก คือ
นอกจากนี้ ข้อตกลงการใช้ซอฟต์แวร์ลิขสิทธิ์ยังมักจะระบุข้อห้ามเกี่ยวกับการเข้าถึง หรือปรับเปลี่ยนโค้ดต้นฉบับของซอฟต์แวร์เอาไว้อีกด้วย
ในทางกลับกัน ซอฟต์แวร์โอเพ่นซอร์ส ถูกออกแบบมาเพื่อให้ Source Code สามารถเข้าถึงได้อย่างสาธารณะ โดยมีแนวคิดว่าการร่วมมือกันของนักพัฒนาหลาย ๆ คนเพื่อปรับปรุงซอฟต์แวร์ จะช่วยเพิ่มความแข็งแกร่ง, ประสิทธิภาพ และความปลอดภัยของซอฟต์แวร์ ผู้ใช้สามารถนำโค้ดโอเพ่นซอร์สไปใช้งาน เพื่อปรับเปลี่ยน หรือพัฒนาต่อได้ ภายใต้ใบอนุญาตสาธารณะ เช่น GNU General Public Licenses (GNU GPL หรือย่อสั้น ๆ ว่า GPL)
ภาพจาก : https://en.wikipedia.org/wiki/GNU_General_Public_License
เนื่องจากคอมพิวเตอร์พื้นฐานเข้าใจได้เพียง โค้ดเครื่อง (Machine Code) Source Code จึงต้องถูกแปลงก่อนที่คอมพิวเตอร์จะสามารถดำเนินการตามคำสั่งได้ กระบวนการแปลงมี 3 วิธีหลัก ประกอบไปด้วย
ภาพจาก : https://www.geeksforgeeks.org/internal-working-of-python/?ref=rp
โค้ดต้นฉบับจะถูกแปลงเป็น โค้ดเครื่อง (Machine Code) ซึ่งสามารถทำงานได้โดยตรง
Source Code จะถูกโหลดเข้าสู่ หน่วยความจำ (Memory) แล้วอินเทอร์พรีเตอร์จะแปล และรันคำสั่งแบบเรียลไทม์ทีละบรรทัด
ซึ่งเป็นการผสมผสานระหว่างการคอมไพล์ (Compilation) และการแปล (Interpretation) Source Code จะถูกแปลงเป็น Bytecode ซึ่งเป็นรูปแบบกลางที่สามารถถูกแปล และดำเนินการได้อย่างรวดเร็ว
นอกเหนือจากการเป็นรากฐานสำหรับการสร้างซอฟต์แวร์แล้ว โค้ดต้นฉบับ (Source Code) ยังมีประโยชน์ในด้านอื่น ๆ ที่สำคัญ เช่น
จำนวนบรรทัดของ Source Code มักถูกใช้เป็น "ตัวชี้วัด" ในการประเมินด้านต่าง ๆ ในกระบวนการพัฒนาซอฟต์แวร์ เช่น
จำนวนโค้ดที่เขียนสามารถบ่งบอกถึงความสามารถในการผลิตผลงาน แม้ว่าคุณภาพจะสำคัญกว่าปริมาณก็ตาม
โค้ดที่มีโครงสร้างดี และมีขนาดใหญ่ อาจสะท้อนถึงการลงทุนในด้านพัฒนา และทรัพย์สินทางปัญญาที่อยู่ภายในนั้น
บริษัทใช้จำนวนบรรทัดของโค้ด เพื่อวิเคราะห์ความซับซ้อน และคาดการณ์ทรัพยากรที่จำเป็น
โค้ดที่มีขนาดใหญ่ มักต้องการการบำรุงรักษา, การแก้ไขข้อผิดพลาด และการอัปเดตอย่างต่อเนื่องสม่ำเสมอ
อย่างไรก็ตาม การนับบรรทัดโค้ดนั้น สุดท้ายก็เป็นเพียงการประมาณเบื้องต้น โครงสร้าง, คุณภาพ, ความสามารถในการอ่าน และประสิทธิภาพของโค้ด มีความสำคัญมากกว่าขนาดของมัน
Source Code ไม่ได้มีแค่หน้าที่ในการรันโปรแกรมเท่านั้น แต่ยังเป็นช่องทางในการ "ถ่ายทอดอัลกอริธึม" ระหว่างนักพัฒนาอีกด้วย เช่น ผ่านตัวอย่างโค้ดบนอินเทอร์เน็ต หรือในหนังสือ
นักพัฒนามักได้รับประโยชน์จากการศึกษาซอร์สโค้ดที่มีอยู่แล้ว เพื่อเรียนรู้เทคนิคการสร้างซอฟต์แวร์ การแบ่งปัน Source Code ระหว่างนักพัฒนา ถือเป็นปัจจัยสำคัญที่ช่วยให้พวกเขาพัฒนาทักษะการเขียนซอฟต์แวร์ให้มีประสิทธิภาพมากขึ้น บางคนถึงกับมองว่า Source Code เป็นสื่อเชิงศิลปะที่สามารถแสดงความคิดสร้างสรรค์ของนักพัฒนาผู้สร้างมันขึ้นมาได้
นอกจากนี้ ใน Source Code ยังมักจะมี คอมเมนต์ (Comments) ซึ่งเป็นข้อความที่ถูกกำหนดให้คอมไพเลอร์ (Compiler) เพิกเฉย เนื้อหาเหล่านี้ไม่ได้เกี่ยวข้องกับตรรกะของโปรแกรม แต่มีไว้เพื่อช่วยให้ผู้มาอ่านทำความเข้าใจตัวโค้ดได้ง่ายขึ้น
บริษัทหลายแห่งเลือกที่จะ เก็บ Source Code เอาไว้เป็นความลับ เพื่อป้องกันการเปิดเผยอัลกอริธึมที่ถือเป็นทรัพย์สินทางปัญญา ในบางกรณี ซอร์สโค้ดที่เป็นกรรมสิทธิ์ถูกนำไปใช้ในแอปพลิเคชันของรัฐบาล เช่น ระบบยุติธรรมทางอาญา ซึ่งอาจทำให้เกิด "Black Box Behavior" คือ การทำงานแบบปิดที่ไม่มีความโปร่งใสในการดำเนินงานของตัวอัลกอริธึม จนอาจนำไปสู่การหลีกเลี่ยงการถูกตรวจสอบจากสาธารณะเกี่ยวกับปัญหา เช่น ความลำเอียงในการตัดสินใจของระบบ
การเข้าถึง Source Code เป็นสิ่งสำคัญสำหรับการแก้ไข หรือปรับปรุง:ซอฟต์แวร์อย่างมาก เนื่องจากการทำความเข้าใจโค้ดที่มีอยู่ก่อน ถือเป็นขั้นตอนสำคัญในการเข้าใจกลไกการทำงานของซอฟต์แวร์ก่อนดำเนินการแก้ไข
ซึ่งในการทำความเข้าใจโค้ด ขึ้นอยู่กับขนาดของโค้ดเบส (Code Base) และทักษะของผู้พัฒนา นักพัฒนาที่มีประสบการณ์มักเข้าใจโค้ดในระดับสูงได้ง่ายกว่า และบางครั้งก็ใช้การแสดงผลซอฟต์แวร์ (Software Visualization) เข้ามาช่วยในกระบวนการวิเคราะห์โค้ด
นักพัฒนาส่วนใหญ่ใช้ Integrated Development Environment (IDE) เพื่อเพิ่มประสิทธิภาพการทำงาน IDE มักมาพร้อมกับคุณสมบัติหลายอย่าง เช่น ตัวแก้ไข Source Code ที่ช่วยตรวจจับข้อผิดพลาดทั่วไปในโค้ด การแก้ไขโค้ดมักเกี่ยวข้องกับสองแนวทางหลัก ดังต่อไปนี้
อย่างไรก็ตาม ในแทบทุกการเปลี่ยนแปลงของโค้ด อาจทำให้เกิดข้อผิดพลาดใหม่ หรือส่งผลกระทบแบบลูกโซ่ ที่ต้องได้รับการแก้ไขเพิ่มเติม
การตรวจสอบโค้ด (Code Review) โดยนักพัฒนาคนอื่น เป็นกระบวนการสำคัญในการตรวจสอบโค้ดใหม่ที่ถูกเพิ่มเข้าไปในโปรเจกต์ โดยมีเป้าหมายเพื่อให้มั่นใจว่าโค้ดมีคุณภาพตามมาตรฐาน และสามารถดูแลรักษาได้ นอกจากนี้ ยังมีการใช้ การวิเคราะห์โปรแกรมแบบสถิต (Static Program Analysis) ซึ่งใช้เครื่องมืออัตโนมัติเพื่อตรวจจับปัญหาในโค้ดต้นฉบับ
IDE หลายตัวรองรับเครื่องมือวิเคราะห์โค้ด ซึ่งอาจช่วยให้สามารถประเมินความชัดเจน และความสามารถในการดูแลรักษาโค้ดได้ ดีบักเกอร์ (Debugger) เป็นเครื่องมือที่ช่วยให้โปรแกรมเมอร์สามารถตรวจสอบ และติดตามการทำงานของโค้ดทีละขั้นตอน โดยดูว่าคำสั่งที่เขียนไว้ส่งผลต่อสถานะของโปรแกรมอย่างไร ?
ไฟล์ Source Code ที่เขียนด้วยภาษาระดับสูง (High-Level Programming Language) จำเป็นต้องผ่านขั้นตอนการแปลงเป็น โค้ดเครื่อง (Machine Code) ก่อนที่คำสั่งจะสามารถดำเนินการได้ หลังจากผ่านกระบวนการคอมไพล์ (Compilation) ซอฟต์แวร์จะถูกบันทึกเป็น ไฟล์วัตถุ (Object File) แล้วหลังจากนั้น Loader ซึ่งเป็นส่วนหนึ่งของระบบปฏิบัติการ จะนำไฟล์นี้ไปเรียกใช้เป็นกระบวนการบนฮาร์ดแวร์คอมพิวเตอร์
อย่างไรก็ตาม บางภาษาการเขียนโปรแกรมใช้อินเทอร์พรีเตอร์ (Interpreter) แทนคอมไพเลอร์ อินเทอร์พรีเตอร์จะแปลงโค้ดต้นฉบับเป็นโค้ดเครื่องแบบเรียลไทม์ในขณะที่โปรแกรมกำลังทำงาน ซึ่งทำให้ประสิทธิภาพต่ำกว่าภาษาที่ใช้คอมไพเลอร์ โดยทั่วไป โปรแกรมที่รันผ่านอินเทอร์พรีเตอร์อาจทำงานช้ากว่าภาษาที่คอมไพล์แล้วตั้งแต่ 10 ถึง 100 เท่า ได้เลยทีเดียว
การกำหนดจุดเริ่มต้นทางประวัติศาสตร์ของ Source Code เป็นเรื่องที่ขึ้นอยู่กับมุมมอง และอาจไม่มีคำตอบที่ชัดเจน ซอฟต์แวร์แรกสุดถูกเขียนขึ้นด้วย โค้ด ไบนารี (Binary) ตั้งแต่ช่วงทศวรรษที่ ค.ศ. 1940 (พ.ศ. 2483) ดังนั้น หากมองแบบในบางแง่มุม ข้อมูลเหล่านั้นอาจถือเป็นตัวอย่างแรกของ Source Code ก็ว่าได้
หนึ่งในตัวอย่างแรกสุดของ Source Code ในรูปแบบที่เรารู้จักในปัจจุบัน ถูกเขียนโดย Tom Kilburn ซึ่งเป็นหนึ่งในผู้บุกเบิกด้านวิทยาการคอมพิวเตอร์ Kilburn ได้สร้างซอฟต์แวร์ดิจิทัลที่ประสบความสำเร็จเป็นครั้งแรก ซึ่งถูกจัดเก็บในหน่วยความจำของคอมพิวเตอร์ ขึ้นมาในปี ค.ศ. 1948 (พ.ศ. 2491) โดยซอฟต์แวร์ดังกล่าวถูกออกแบบมาเพื่อแก้สมการทางคณิตศาสตร์
ภาพจาก : https://www.techtarget.com/searchapparchitecture/definition/source-code
ในช่วงระหว่างทศวรรษ ค.ศ. 1950-1960 (พ.ศ. 2493-2503) Source Code มักถูกแจกฟรีพร้อมกับซอฟต์แวร์โดยบริษัทผู้พัฒนา เมื่ออุตสาหกรรมคอมพิวเตอร์เติบโตขึ้น ซอฟต์แวร์ได้รับการใช้งานอย่างแพร่หลายมากขึ้น ทำให้ Source Code กลายเป็นสิ่งที่ได้รับความสนใจ และเป็นที่ต้องการมากขึ้น
ก่อนยุคอินเทอร์เน็ต นิตยสารคอมพิวเตอร์ มักตีพิมพ์ Source Code ลงบนหน้ากระดาษ โดยผู้อ่านต้องพิมพ์ตามตัวอักษรเพื่อใช้งานเอง ต่อมา แผ่นฟลอปปีดิสก์ (Floppy Disk) เข้ามาช่วยลดต้นทุนในการแบ่งปัน Source Code และในที่สุด อินเทอร์เน็ตก็เข้ามาเปลี่ยนแปลงวงการ ทำให้การเข้าถึง และแบ่งปันโค้ดเป็นเรื่องง่ายกว่าที่เคย
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |