ทำไม Python ถึงเป็นภาษาที่ฮอตที่สุดใน พ.ศ. นี้

2018-08-29

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

วันนี้เราจะพยายามตอบคำถามว่า "ทำไม" ภาษา Python ถึงเป็นที่นิยม และ "ทำไม" คุณถึงควรหันมาสนใจ Python ไม่ว่าคุณจะได้ใช้มันในการทำงานหรือไม่ก็ตาม แต่ก่อนจะตอบคำถามที่ว่า เราต้องอธิบายทำความเข้าใจกันก่อนว่า "จริงๆแล้วเราต้องมานั่งเลือกเรียนเลือกใช้ภาษาคอมพิวเตอร์ด้วยหรือ? ใช้ภาษาอะไรมันก็ทำงานได้เหมือนกันไม่ใช่เหรอ?"

ก่อนอื่นต้องฉายภาพให้เห็นว่าในการพัฒนาซอฟท์แวร์ในยุคนี้เราต้องเขียนโปรแกรมเพื่อควบคุมอุปกรณ์หลายชิ้น ซึ่งอาจจะแบ่งกว้างๆได้เป็นสองส่วน ส่วนที่หนึ่งคืออุปกรณ์ของ User เช่นคอมพิวเตอร์ หรือ โน้ตบุ้ค, สมาร์ทโฟน, แท็บเล็ต หรือแม้อุปกรณ์ขนาดเล็กที่ใช้ Microcontroller ส่วนที่สองคือ Back-end เซิร์ฟเวอร์ซึ่งเป็นที่เก็บข้อมูลของระบบ โปรแกรมที่ถูกพัฒนาขึ้นมาส่วนใหญ่จะเป็นการที่อุปกรณ์เรียกใช้บริการต่างๆที่ทำไว้บน Back-end ผ่าน REST API ซึ่งก็เป็นท่ามาตรฐานในการคุยระหว่างอุปกรณ์ของ User กับ Back-end เซิร์ฟเวอร์ไปแล้ว

การเขียนโปรแกรมในส่วนที่อยู่ในอุปกรณ์ของ User โดยส่วนใหญ่เราไม่มีตัวเลือกมากนัก เนื่องจากถูกกำหนดมาจากเจ้าของแพลตฟอร์มหรือมาจากมาตรฐาน การเขียนโปรแกรมเพื่อใช้บนคอมพิวเตอร์ หรือ โน้ตบุ้คส่วนใหญ่นักพัฒนามักจะเขียนให้ใช้บนเว็บเบราเซอร์ ซึ่งก็หมายถึงเราต้องใช้ภาษาที่อยู่ในชุด html, css, javascript ส่วนการเขียนโปรแกรมบน Microcontroller มักเลี่ยงไม่พ้นที่จะต้องใช้ภาษา C หรือ C++ เนื่องจากความเล็กของอุปกรณ์เป็นตัวบังคับให้ใช้ภาษาที่ใช้ทรัพยากรน้อยที่สุดนั่นก็คือ C และ C++

การเขียนโปรแกรมบนสมาร์ทโฟนและแท็บเล็ตตระกูล iOS และ Android ก็ต้องใช้ภาษาที่ถูกกำหนดมาจากเจ้าของแพล็ตฟอร์ม (Apple และ Google) ก็คือ Swift หรือ Objective C สำหรับ iOS และ Kotlin หรือ Java สำหรับ Android จริงอยู่เราอาจจะเลี่ยงใช้ภาษาเหล่านี้ไปใช้ Framework ที่ใช้ภาษา javascript ได้ แต่ทางเลือกก็ยังมีค่อนข้างจำกัดอยู่ดี

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

ประเด็นถัดมาที่อยากอธิบายคือความสำคัญของการเลือกภาษาคอมพิวเตอร์ มันสำคัญจริงหรือ? เพื่ออธิบายเรื่องนี้อยากชวนคุณผู้อ่านวกกลับมามองภาษาคนที่เราพูดๆกันอยู่ทุกวันก่อนว่าการที่เราพูดภาษาอะไรได้หรือไม่มันสำคัญหรือไม่

คำตอบคือ "สำคัญมาก" โดยจะขอยกประเด็นสำคัญสองเรื่อง (ในอีกหลายๆเรื่อง) ที่เกี่ยวข้องกับเรื่องนี้มาอธิบาย

1. Community

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

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

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

มองกกลับมาที่ภาษาคอมพิวเตอร์ การที่เราสามารถใช้ภาษาคอมพิวเตอร์ใดภาษาหนึ่งได้จะทำให้เราได้เข้าไปอยู่ใน Community นั้น ซึ่งในหัวข้อถัดไปจะได้เล่าให้ฟังถึงความแข็งแกร่งของ Community คนใช้ภาษา Python ซึ่งเป็นสาเหตุหนึ่งที่ทำให้ความสามารถในการใช้ภาษา Python สร้างความได้เปรียบได้เป็นอย่างมาก

2. Vocabulary

นอกจากเรื่อง Community แล้วยังมีเรื่องของ Vocabulary ของภาษา ซึ่งจะว่าไปแล้วก็สืบเนื่องมาจากข้อแรกเรื่อง Community เพราะคนในแต่ละชาติแต่ละภาษาจะมีนักคิดนักค้นคว้าที่ชำนาญในเรื่องต่างๆ ทำให้ Vocabulary ของภาษานั้นๆมีความลึกซึ้งในเรื่องบางเรื่องเป็นพิเศษนอกจาก Vocabulary หมูหมากาไก่ทั่วไป

เป็นที่รู้กันว่านักปรัชญาชั้นนำในโลกนี้จำนวนมากมายที่พูดภาษาเยอรมัน ดังนั้นภาษาเยอรมันจึงเป็นภาษาที่มีความลึกซึ่งละเอียดละออใน Concept ที่เกี่ยวข้องกับปรัชญามากมายกว่าภาษาอื่นๆ ส่วนในทางพุทธ เราก็รู้กันดีว่าศัพท์ต่างๆที่เกี่ยวข้องกับพุทธศาสนาล้วนแล้วแต่เป็นภาษาบาลี และจะแปลอย่างไรก็ไม่ได้ความหมายดีเท่ากับการทับศัพท์ภาษาบาลีมา ภาษาไทยซึ่งใช้โดยคนไทยซึ่งมีนิสัยโอบอ้อมอารีก็มีศัพท์หลายคำที่แปลได้ยากในภาษาอื่น ตัวเช่นคำว่า "เกรงใจ" ก็แปลเป็นภาษาอังกฤษได้ค่อนข้างยาก แปลได้ก็ไม่ใช่ความหมายเดียวกัน

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

โดยสรุปการเลือกภาษาคอมพิวเตอร์จึงมีความสำคัญอย่างมากไม่ได้แพ้การเลือกภาษาคนเลย

เหตุผลสำคัญ 5 ข้อที่ทำให้ Python เป็นภาษายอดนิยมสำหรับ Back-end

1. เรียนรู้ได้ง่าย

คุณสมบัติที่โดดเด่นข้อแรกของ Python คือเป็นภาษาที่สามารถเรียนรู้ได้ง่ายเนื่องจากถูกออกแบบมาให้สามารถเขียนได้คล้ายๆกับภาษาอังกฤษธรรมดา ตัดเอา symbol บางอย่างที่ไม่จำเป็นออกไป และใช้ย่อหน้า (Indentation) เหมือนภาษาอังกฤษในการแบ่งแยกโปรแกรมออกเป็นส่วนๆ นอกจากนี้การเขียนโปรแกรม Python สามารถเขียนเป็นแบบ Dynamically typed ได้(แต่ในภายหลังถ้าอยากเขียนแบบ Statically typed ก็สามารถทำได้ใน Python3) ซึ่งหมายถึงสามารถลดไปอีกขั้นตอนหรืออีกเรื่องซึ่งยังไม่จำเป็นในการเรียนรู้การเขียนโปรแกรมเบื้องต้น

ด้วยความง่ายในการเรียนรู้นี้ทำให้ Python มักเป็นภาษาแรกๆที่โรงเรียนหรือมหาวิทยาลัย (แม้กระทั่งมหาวิทยาลัยชั้นนำของโลก) ใช้ในการสอนวิชาการเขียนโปรแกรมเบื้องต้น นักเรียนสามารถเรียนรู้ Logic ของการเขียนโปรแกรมได้อย่างรวดเร็วโดยไม่ต้องเสียเวลาจดจำรายละเอียดปลีกย่อยที่ไม่จำเป็น

2. ใช้งานได้จริงใน Scale ระดับโลก

ถึงแม้จะเรียนรู้ง่าย แต่สิ่งที่มหัศจรรย์ของ Python คือเป็น Industrial-grade คือสามารถใช้งานได้จริงใน Scale ระดับโลก ตัวบริการที่ใช้กันอยู่ทุกวันนี้หลายบริการที่เขียนด้วยภาษา Python เป็นหลักเช่น Youtube, Instagram, Netflix เป็นต้น

การที่ Python สามารถใช้งานได้ใน Scale ขนาดใหญ่ระดับนี้ ส่วนหนึ่งมาจาก Runtime ของ Python ซึ่งก็คือซอฟท์แวร์ที่ทำหน้าที่แปลภาษา Python ไปเป็นภาษาเครื่องเพื่อสั่งให้คอมพิวเตอร์ทำงานมีความ Solid ความเสถียร และประสิทธิภาพที่สูงไม่แพ้ Runtime ของภาษายอดนิยมภาษาอื่นๆ ซึ่งเป็นสิ่งที่น่าประทับใจเพราะ Python เป็นภาษา Opensource ซึ่งใครก็สามารถโหลดไปใช้ได้ฟรี (นั่นหมายถึงผู้พัฒนา Python ก็ทำให้ใช้ฟรีเช่นกัน) ไม่ใช่ภาษาที่เป็น Commercial ที่มีโมเดลการคิดเงินการใช้ Runtime ในรูปแบบรูปแบบหนึ่ง

3. มี Library ที่หลากหลายมาก

ตามที่ได้เปรียบเทียบ Vocabulary ของภาษาคนกับ Library ของภาษาคอมฯในข้างต้น Python นับเป็นภาษาหนึ่งที่มี Library ให้ใช้งานได้หลากหลายมากมายอลังการอย่างไม่น่าเชื่อ ทั้งที่เป็นภาษาที่เป็น Opensource

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

System Admin - Python ถือเป็นทางเลือกหรืออาจจะว่าเป็นคู่แข่งตัวฉกาจของภาษาตระกูล scripting language อื่นๆเช่น bash script หรือ ภาษา perl นั่นหมายถึงถ้าจะเขียนโปรแกรมเพื่อควบคุมการทำงานของ System (โดยเฉพาะ Linux) การเขียนภาษา Python ได้ทำให้ System Admin คนนั้นมีความได้เปรียบอย่างมาก

Web Application - ในแขนงนี้มีภาษาอื่นๆที่เป็นที่นิยมมากมายไม่ว่าจะเป็น PHP, Ruby, Java, Grail, ฯลฯ โดยในแต่ละภาษาก็จะมี Web Application Framework ที่นักพัฒนาเลือกใช้เพื่อทุ่นแรงในการเขียนโปรแกรมที่เกี่ยวข้องกับการทำ Web Application ซึ่งในสาขานี้ Python ก็มี Framework ที่แข็งแกร่งหลายตัว เช่นตัวที่เด่นสุดก็น่าจะเป็น Django ซึ่งได้รับการยกย่องว่าเป็น Web Application Framework ที่สามารถทุ่นเวลาการพัฒนาได้อย่างมากมายมหาศาล นั่นหมายถึงในโปรเจกต์เดียวกัน คนที่ใช้ Python/Django เขียนอาจจะสามารถเขียนได้ในเวลาที่รวดเร็วกว่า ต้นทุนต่ำกว่า ความผิดพลาดน้อยกว่า และมีความยืดหยุ่นกว่าสำหรับการเพิ่มเติมฟังก์ชั่นในอนาคต

Data Analytics และ Machine Learning - ด้วยความที่ Python ถูกประยุกต์ใช้งานทางด้านวิทยาศาสตร์อย่างมากตั้งแต่แรกเริ่ม ทำให้ Python มี​ Library ที่เกี่ยวข้องกับการคำนวณทางคณิตศาสตร์ชั้นสูงมากมายซึ่งรวมถึง สถิติ, อัลกอริธึม, Machine Learning, Artificial Intelligence ถ้าพูดถึงในเรื่องของ Data Science แล้วน่าจะมีคู่ท้าชิงในแง่ของภาษาคอมพิวเตอร์เด่นๆอยู่สองภาษานั่นคือ ภาษา Python และ ภาษา R นั่นหมายถึงการเป็น Python ก็เท่ากับได้อานิสงส์ในแง่ของความสามารถในด้าน Data Science เข้าไปด้วยโดยปริยาย (เมื่อได้เรียนรู้ Library เพิ่มเติม)

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

4. สามารถเขียนได้หลาย Paradigm

ในโลกของซอฟท์แวร์มี Paradigm ที่ใช้ในการเขียนที่หลากหลายมากเช่น procedural, object-oriented, functional, imperative, reactive, ฯลฯ (อาจจะเปรียบได้กับ ร้อยแก้ว โคลงสี่สุภาพ กลอนแปด ฯลฯ ในภาษาไทย) ในแต่ละช่วงเวลา แฟนคลับ ของแต่ละ Paradigm ก็จะพยายามชวนเชื่อว่า Paradigm ที่ตัวเองชื่นชอบนั่นเจ๋งสุด โปรแกรมทุกอย่างควรด้วย Paradigm เดียวที่เจ๋งสุดที่ว่า ภาษาบางภาษาที่ค่อนข้างคลั่งศาสนาเรื่อง paradigm ที่ว่าก็จะพยายามตีกรอบตัวเอง บังคับให้ผู้เขียนเขียนด้วย paradigm นั่นๆ ตัวอย่างเช่น Java ในยุคก่อนหน้าที่บังคับให้ทุกอย่างต้องเขียนเป็น Object-oriented ทั้งหมดทั้งที่ในบางสถานการณ์อาจจะไม่ practical

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

5. มี Community ที่แข็งแกร่งและมีแต่จะแข็งแกร่งขึ้นไปอีกเรื่อยๆ

เหตุผลสุดท้ายเป็นเหตุผลที่สำคัญที่สุด ซึ่งจริงๆแล้วเป็นที่มาของ 4 เหตุผลข้างต้นนั่นก็คือ "ความแข็งแกร่ง" ของ Community ต้องกล่าวว่าการออกแบบภาษา Python ดีมาตั้งแต่แรกเริ่ม ด้วยความที่เขียนได้ง่าย มีความยืดหยุ่นสูง และเหตุผลอื่นๆอีกหลายอย่างทำให้ Python ดึงดูดเอาคนเก่งจากทุกสาขาเข้ามาใช้ และร่วมกันต่อยอด พัฒนา Library ต่าง เติมแต่ง feature ที่เกิดจากไอเดียใหม่ๆ ทำให้ภาษามีประโยชน์มากขึ้นก็ยิ่งเป็นการดึงดูดคนเก่งๆเข้ามาช่วยกัน Contribute ให้กับภาษา Python เข้าไปอีก

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

แต่ถ้าคุณอดใจรอไม่ไหวที่จะเรียนรู้ Python ขอแนะนำให้สมัครเข้ามาร่วมงานกับเราที่ Mor IsHealth หนึ่งในบริษัทที่มีความเชี่ยวชาญเรื่อง Python และมีรุ่นพี่มากประสบการณ์ที่ใจดีและพร้อมจะถ่ายทอดวิทยายุทธ์ให้

บริษัทเราใช้ภาษา Python เป็นหลักในงาน Back-end แทบจะทุกด้านและใช้กันมาอย่างยาวนาน ปัจจุบันเรากำลังนำ Python และ Tools อื่นๆที่เราเชี่ยวชาญเข้าไปช่วยแก้ปัญหาสุขภาพ คุณภาพชีวิต และการเรียนรู้ให้กับคนไทยและคนทั่วโลก เช่นการนำไปใช้พัฒนาระบบ Hospital Information System ซึ่งเปรียบเหมือน Operating System ของโรงพยาบาลและมีความสำคัญอย่างยิ่งยวดในการทำให้บริการรวดเร็ว มีประสิทธิภาพ และมีความปลอดภัย

ติดต่อเข้ามานะครับ พวกเรารอคุยกับคุณอยู่!!