Python: เกริ่นนำ

ไพธอนคืออะไร
หัวข้อ:

Python เป็นภาษาทางคอมพิวเตอร์ระดับสูง (high-level language) รูปแบบหนึ่ง ซึ่งนิยมใช้กันอย่างมากในปัจจุบันนี้ ด้วยความที่ผู้พัฒนาตั้งใจว่า จะต้องเป็นภาษาที่อ่านง่าย โครงสร้างไม่ซับซ้อน และใช้ได้กับระบบปฏิบัติการที่หลากหลาย ทั้ง Windows, MacOS, Linux ฯลฯ และที่สำคัญ – เป็น Open Source ทุกคนสามารถนำไปพัฒนาได้โดยไม่มีค่าใช้จ่าย

ต้องบอกก่อนว่า ท่านกำลังอ่าน สิ่งที่คนเขียนกำลังเรียนรู้อยู่ไปพร้อม ๆ กัน ไม่ได้มีความเชี่ยวชาญในด้านนี้แต่อย่างใด…อ้าว… ถ้าชายวัยกลางคนอย่างข้าพเจ้า เรียนรู้เรื่องเหล่านี้ได้ เชื่อว่าท่านทั้งหลายก็น่าจะเรียนรู้ได้เช่นกัน…เรามามั่วไปด้วยกันเถอะ!

Guido van RossuM

ผู้ให้กำเนิด

ลองค้นหาที่มาของภาษานี้ ก็ไปเจอข้อมูลว่า คุณ Guido van Rossum โปรแกรมเมอร์ชาวดัตช์เป็นผู้ริเริ่มพัฒนาภาษานี้ เล่ากันว่าขณะที่เขาทำงานให้ Centrum Wiskunde & Informatica (CWI) ซึ่งเป็นสถาบันวิจัยทางด้านคณิตศาสตร์และวิทยาการคอมพิวเตอร์ ในเมืองอัมสเตอร์ดัม ประเทศเนเธอร์แลนด์ เขาเกิดรู้สึกว่าภาษาทางคอมพิวเตอร์ที่เขาต้องใช้เขียนในขณะนั้นมีข้อจำกัดเหลือเกิน

เมื่อมีปัญหา ก็ต้องหาทางออก ตามประสาคนเก่งอ่ะเนาะ  Guido van Rossum เริ่มต้นพัฒนาภาษาใหม่ โดยตั้งใจว่าจะต้องเป็นภาษาที่ -อ่านเข้าใจง่าย -มีข้อจำกัดน้อยลงกว่าเดิม อันนี้ดูจะเป็นปรัชญา หรือ ทิศทางการพัฒนาภาษานี้เลย เขาประสบความสำเร็จ ในปีค.ศ. 1990 และตั้งชื่อภาษานี้โดยหยิบยืมชื่อ จากรายการตลก Monty Python’s Flying Circus ที่แพร่ภาพทางสถานีโทรทัศน์ BBC มาเป็นชื่อภาษาที่เขาคิดขึ้นมา ปัจจุบันองค์กรที่ดูแลคือ Python Software Foundation

จุดเด่นของ python

1. จุดเด่นที่เห็นได้ชัดก็คือ อ่านง่าย เขียนง่าย มีโครงสร้างคล้ายภาษาอังกฤษทั่วไป ลดจำนวนคำสั่งที่ไม่จำเป็นออกไป อย่างเช่น do – while ก็ไม่มีแล้ว สามารถใช้ else ร่วมกับ for หรือ while ได้เลย หรือ ยกตัวอย่างการเขียนทำซ้ำ 10 ครั้ง ในภาษา C ต้องเขียน for (int I = 0 ; I < 9; i++) แต่ถ้าเป็น python เขียนแค่ for I in range (0, 10) นอกจากนี้ยังเป็นภาษาที่ใช้ได้ (เกือบ) ทุกระบบ เช่น Windows, Mac, linux

ที่ว่าง่ายนั้นง่ายขนาดไหน?

ว่ากันว่า ถ้าจะเอาแค่เรียนรู้ Syntax หรือไวยากรณ์การเขียนก็ใช้เวลาประมาณวันหรือสองวันเท่านั้น ง่ายขนาดนั้น! อันนี้คือแค่ Syntax อย่างเดียวนะ ไม่เกี่ยวกับการเขียนในระดับสูงอย่างการจัดการสร้าง packages หรือ Module

2. มี library ให้เลือกใช้มากมาย library นี่ก็เปรียบเสมือนห้องสมุด ซึ่งมีเรื่องต่าง ๆ เขียนเก็บไว้ให้เรียบร้อยแล้ว ทุกวันนี้เรามีนักพัฒนาเขียน library ให้คนอื่นนำไปใช้ต่อมากมาก ครอบคลุมแทนทุกด้านเลยมั้ง ทั้งด้านการคำนวณ พวก data science เช่น pandas numpy หรือถ้าอยากเขียน bot ก็มีเช่น instapy (สำหรับ Instagram) tweepy (สำหรับ Twitter) มีเยอะเกินกว่าจะบอกได้ว่ามีอะไรบ้าง เข้าไปดูได้ที่ Python Package Index (PyPI.org) ซึ่งเป็นแหล่งรวมสำคัญ

3. ทำงานได้หลายแพลตฟอร์ม ไม่ว่าจะเป็น Windows Mac และ Linux ดังนั้นนักพัฒนาสามารถเขียนโปรแกรมเพียงครั้งเดียว แต่นำไปใช้งานบนคอมพิวเตอร์ระบบใดก็ได้ เรื่องนี้จะลดระยะเวลาและค่าใช้จ่ายในการพัฒนา ทดสอบ และบำรุงรักษาซอฟต์แวร์ลงไปเยอะ

4. ภาษาไพธอนยังเป็นซอฟต์แวร์ประเภทโอเพนซอร์ส (Opensource) หมายความว่าเราสามารถนำซอร์สโค้ด (Source code) มาดัดแปลง แก้ไขได้ทั้งหมด โดยไม่จำเป็นต้องขออนุญาต และที่สำคัญเราสามารถนำไปใช้งานได้ฟรี โดยไม่มีค่าใช้จ่ายเรื่องค่าลิขสิทธิ์ใด ๆ อีกทั้งมีชุมชนนักพัฒนาที่แข็งแกร่ง องค์กรยักษ์ใหญ่ที่ต้องทำงานทางด้าน วิทยาศาสตร์ข้อมูล (Data Science) หรือต้องทำงานกับข้อมูลมหัต (Big Data – ข้าพเจ้าชอบภาษาไทยจริง ๆ ข้อมูลมหัต)

ปัจจุบัน เป็นที่นิยมอย่างมาก ตั้งแต่ระดับครัวเรือนไปถึงองค์กรระดับยักษ์เช่น NASA

Zen of Python

Python Logo

Tim Peters หนึ่งในผู้ร่วมพัฒนาภาษานี้มาตั้งแต่ต้น ได้วางปรัชญาของภาษานี้เอาไว้ โดยถ้าใครพิมพ์

Import this

ก็จะมีปรัชญาการคิดโครงสร้างของ python ขึ้นมา ยาวเหยียด

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

อันนี้ เป็น Easter Egg เขียนให้รู้ เป็นเกร็ดเล็กเกร็ดน้อยอ่ะนะ (อ้างอิงจากวิกิพีเดีย)

จะใช้เวอร์ชัน 2 หรือ 3 ดี?

ตอนนี้จะเห็น ไพธอน 2 และ ไพธอน 3 อยู่ในแอปพลิเคชัน หรือ โปรแกรมต่าง ๆ ยังคงมีทั้งคู่

ใครใช้ QGIS 2 ก็จะเป็นไพธอน 2 ใครใช้ QGIS 3 ก็จะเป็นไพธอน 3

ใครใช้ ArcMap 10.8 จะเป็นไพธอน 2 ใครใช้ ArcGIS Pro จะเป็นไพธอน 3

หนังสือหรือตำราเกือบทั้งหมด จะเน้นที่ไพธอน 3 กันแล้ว

สาเหตุก็เพราะว่า มีการประกาศยุติการพัฒนาเวอร์ชัน 2 ไปเรียบร้อยแล้วด้วย โดยเวอร์ชัน 2.7 ที่ออกมาเมื่อปี ค.ศ. 2014 จะเป็นเวอร์ชันสุดท้าย และจะยุติในปี ค.ศ. 2020 (เลื่อนมา 5 ปีจากที่กำหนดไว้เดิมในปี ค.ศ. 2015)  ดังนั้นก็ต้องมาศึกษาเวอร์ชัน 3 กันน่าจะดีกว่า เพราะหลังจากที่ ไพธอน 2 แก้ไข Bug และ Security ในปี ค.ศ. 2019 แล้วจะไม่มีอะไรออกมาอีกต่อไป ปล่อยให้มันยุติชีวิตไว้แค่นั้น

ระบบปฏิบัติการ Linux ยังคงรองรับ ไพธอน 2.7 ได้อีกหลายปี Red Hat – RHEL 8 จะรองรับแพ็กเกจของ เวอร์ชัน 2.7 ไปจนปี ค.ศ. 2024 เท่านั้น หลังจากนั้นจะแนะนำให้ผู้อัปเกรตเป็นเวอร์ชัน 3 ไม่เช่นนั้นก็ต้องดูแลตัวเองกันเองนะจ๊ะ

ส่วน Fedora Debian และ Ubuntu เริ่มอัปเดต library ไปเวอร์ชัน 3 แล้ว โดย Debian เวอร์ชัน 10x และ Ubuntu เวอร์ชัน 18.04 LTS จะเป็น ไพธอน 3 แต่ยังเลือกลง 2.7 ได้ หากต้องการ

ระบบอื่น ๆ เช่น Kali Linux ก็ค่อย ๆ อัปเดตไปเรื่อย ๆ คือ ค่อย ๆ เก็บเวอร์ชัน 2 เปลี่ยนมาเป็น เวอร์ชัน 3 อันนี้ก็เป็นไปตามธรรมดาโลกอ่ะนะ ไม่มีอะไรเที่ยงแท้แน่นอน เกิดขึ้น ตั้งอยู่ ดับไป เป็นธรรมดานะสาธุชนผู้มีจิตอันเป็นกุศลทั้งหลาย

ถ้าจะมีปัญหาอยู่บ้าง ก็สำหรับคนใช้งาน ArcGIS 10  และ QGIS 2 อาจจะต้องศึกษา Python 2 อยู่ เพราะสองตัวนี้ยังใช้ python 2 ต่อไป แต่ถ้าจะให้แนะนำ ก็ควรเปลี่ยนเป็น ArcGIS Pro (ถ้าทำได้ เพราะตรงนี้คงมีเรื่องค่าใช้จ่ายเพิ่ม) หรือไปใช้ QGIS 3 แทน

สำหรับใน DataRevol.com จะใช้ python 3 ซึ่งเป็นเวอร์ชันปัจจุบัน, ใช้ QGIS 3 และใช้ ArcGIS Pro

ก็ย้ำอีกทีละกัน นี่เป็นแค่การเขียนของมือสมัครเล่นที่เพิ่งหัดเรียนรู้ด้วยตัวเอง ขอให้คิดเสมือนเป็นสมุดเล็กเชอร์ก็แล้วกัน คือเรียนรู้อะไรก็เอามาใส่ในนี้

ArcGIS cmd Coordinate System data DataManagement Datum directory encoding folder Font GDB GIS GISBasics IDE Indian 1975 install interpreter Microsoft 365 organised Python Thai VBA WGS 1984

Other Posts