ว่าด้วยนิยามของ Platform, Library, Framework และ Open Source สำหรับผู้เริ่มต้น

general Dec 28, 2020

มีศัพท์หลายๆคำในโลกของโปรแกรมเมอร์หรือเดฟ ที่คนที่ไม่ได้อยู่ในวงการนี้ เวลาเข้ามาอ่านงานเขียน บทความหรือชุดข้อมูล แล้วมักจะรู้สึกอยากเกาหัวเมื่อเจอคำพวกนี้ เช่น Platform บ้างล่ะ Library บ้างล่ะ แค่นี้ก็มึนแล้ว ยิ่งอ่านไปอ่านมาเจอ Open source อีก กลายเป็นมึนทบมึนเข้าไปอีก

ในบทความนี้ เลยอยากเสนอคำนิยามของคำ 4 คำที่มักจะเจอบ่อยๆ ได้แก่

  • Platform
  • Library
  • Framework
  • Open Source

จากการอ่านบทความหลายๆเว็บ ก็เอามายำ ขยำ ตัด สระ เซ็ท ซอย กลายเป็นคำนิยามที่เข้าใจง่ายขึ้น Learning curve ไม่สูงมากเกินไปสำหรับมือใหม่ (เช่นผม) โดยความเข้าใจที่มีต่อศัพท์เทคนิคข้างต้นมาจากมโนทัศน์ของผมเป็นหลัก งั้นก็ไม่รอช้า เรามาเริ่มจากคำว่า Platform ก่อนเลยละกัน

Platform

Platform

แพลตฟอร์ม (Platform) แปลทื่อๆตรงๆ ก็คือ แท่น หรือชานชาลา แต่ในทางนักพัฒนาโปรแกรม คำๆนี้จะสื่อถึง โปรแกรมอะไรก็ได้ ที่ถูกสร้างขึ้นมาเพื่อมารองรับการใช้งานของโปรแกรมอันอื่น เช่น 

โปรแกรม Excel ที่ใช้บนวินโดวส์ ในที่นี้ วินโดวส์จะเป็นแพลตฟอร์ม เพราะ Excel ทำงาน (หรือรัน) บนวินโดวส์

และถ้าเราใช้ Excel ทำโปรแกรมประยุกต์ เช่น บันทึกการซื้อ-ขาย แบบนี้แล้ว Excel ก็จะเป็นแพลตฟอร์มของโปรแกรมประยุกต์นั้น เป็นต้น

อธิบาย Platform
Platform : เปรียบตัวพี่เป็นปิรามิด

จากตัวอย่างข้างต้น เราก็สามารถใช้มุมมองแบบนี้ไปจับคู่การทำงานของอะไรๆได้อีกเยอะ เพียงแค่การหาความเชื่อมโยงระหว่าง ยอด (คน-ผู้ใช้บริการ) กับ ฐาน (ชานชาลา-ผู้ให้บริการ) เปรียบดั่ง ชานชาลาที่ทำให้คนขึ้นรถไฟได้ นั่นเอง แต่แพลตฟอร์มก็มักจะมีคุณสมบัติเฉพาะเป็นของตัวเอง เช่น คุณไม่สามารถขึ้นเรือได้จากชานชาลารถไฟ ประมาณนั้นแหละครับ (แต่สมัยนี้ก็มีเรือสะเทินน้ำสะเทินบกแล้วนะครับ สามารถขึ้นได้จากทั้งชานชาลาและท่าเรือ เรามักเรียกยนตรกรรมนั้นว่า Cross-platform)

Library

Library

ไลบรารี่ (Library) หมายถึง ห้องสมุด ใช่แล้วครับ ห้องสมุดที่ภายในมีหนังสือเยอะๆจัดเป็นหมวดหมู่นั่นแหละ คอนเซ็ปต์เดียวกัน เพียงแต่เปลี่ยนจากหนังสือเป็นกลุ่มโค้ด แค่นี้ก็จะมองเห็นภาพของไลบรารี่ในมุมมองของเหล่า Geek ในโลกโปรแกรมได้แล้ว เย่

Framework

framework

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

ความเหมือน-ต่างระหว่าง ไลบรารี่ Vs เฟรมเวิร์ค

เฟรมเวิร์คมองเผินๆแล้วมันจะดูคล้ายๆกับไลบรารี่ ตรงที่มีการจัดเป็นแบบแผน โค้ดไม่มั่วพันกันเป็นสปาเก็ตตี้ เหมาะสมกับการใช้งานเป็นหมู่คณะ เพราะมีคู่มือให้อ่าน มีสังคมโซเชี่ยวให้ปรึกษา ถาม-ตอบ ช่วยแก้ปัญหาได้เยอะ แต่ทั้งสองอัน (ไลบรารี่และเฟรมเวิร์ค) ก็มีความต่างกันหน่อยๆนะ ในมุมของผม 

ไลบรารี่คือ ห้องสมุดที่ มีเหล่าชุดโค้ดที่รอการเรียกออกมาใช้ (เหมือนหนังสือที่วางนิ่งบนชั้น) 

ส่วน เฟรมเวิร์ค คือ ห้องสมุดที่ มีเหล่าชุดโค้ดที่รอการเรียกออกมาใช้ รวมถึงอาจจะมีห้องสมุดย่อยๆอยู่ในห้องสมุดอีกทีนึงด้วย

มีการกำหนดวิธีเข้าใช้ห้องสมุดด้วยว่า คุณจะต้องเดินเข้าประตูนี้เท่านั้น, ถ้าจะอ่านหนังสือคุณต้องหยิบหนังสือแล้วเดินไปที่โต๊ะแล้วค่อยอ่าน, หนังสือญี่ปุ่นคุณต้องเปิดจากขวาไปซ้ายเท่านั้น, ห้ามหลับในห้องสมุด เป็นต้น คือมันไม่ได้ให้อิสระกับผู้ใช้มาก (เพราะเดี๋ยวห้องสมุดจะเละเทะ) แต่มันทำให้ทุกๆคนที่เข้ามาใช้งาน เข้าใจง่าย และปฎิบัติตามได้เหมือนกัน

Open Source

โอเพ่นซอร์ส (Open Source) คือ ซอฟต์แวร์ที่สามารถใช้งานได้ฟรี ไม่มีการคิดค่าเงื่อนไขเพิ่มเติม โดยจะมีการเผยแพร่ซอร์สโค้ด (Source Code) หรือโค้ดต้นฉบับ และมีเงื่อนไขครบตามเกณฑ์ของความเป็นโอเพ่นซอร์ส (Open source License) โดยผู้ใช้งานจะได้รับสิทธิต่างๆตามเงื่อนไขทั้งหมด สามารถดูคุณสมบัติของโอเพ่นซอร์สได้ที่เว็บไซต์ของสวทช.

นี่เป็นการยกตัวอย่างคำบางคำที่เราจะเจอบ่อยๆในโลกของโปรแกรมคอมพิวเตอร์ ยังมีอีกหลายๆคำที่จะต้องใช้ความเข้าใจและมองภาพให้ออก เพื่อเป็นพื้นฐานให้ได้ไปต่อกับข้อมูลความรู้ที่ลึกและใหม่ยิ่งขึ้นไปอีก เพราะในโลกนี้มีการเปลี่ยนแปลงอยู่เสมอๆ เทคโนโลยีใหม่ๆดาหน้ากันเข้ามากระทบกับวิถีชีวิตสัตว์โลกไม่เคยขาด ไม่ว่าคุณจะเป็น novice หรือ High class ต่างก็ต้องพบพานเสมอเหมือนกัน เพราะฉะนั้น อย่าหยุดหาข้อมูลใหม่ๆตลอดเวลาครับ

บทความนี้คือครั้งแรกที่ผมลองเขียนดู ซึ่งบทความที่ดีควรจะมีคำลงท้าย งั้นขอลงท้ายด้วย phase ยอดอิตใน Reddit ละกันนะครับ

็ฟยยั ฉนกรืเ 8iy[

(เปลี่ยนภาษาผิด ขอพิมพ์อีกทีละกัน)

Happy Coding ครับ

Tags