Tags:
Forums: 

ขอแชร์ประสบการณ์ และความรู้สึกชื่นชอบในภาษา Python ที่ผมมีนะครับ ^^

ปัจจุบัน ผมได้สัมผัสกับการเขียนโปรแกรมด้วย python มาเป้นเวลา 4 ปีแล้วครับ
เหตุที่ผมได้มาเจอกับภาษานี้ ก็เพราะผมเองได้เริ่มศึกษา Linux เมื่อตอนเรียนมหาวิทยาลัย แล้วก็ได้พบเห็นโปรแกรมมากมายบน Linux ที่เขียนด้วย Python ใน Package management ของแต่ละ distro, อีกทั้งยังเป็น Package พื้นฐานที่ติดตั้งมากับ distro ต่างๆ ด้วย

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

พอได้เริ่มเขียน สิ่งแรกที่รู้สึกประหลาดใจเลยก็คือ
การบังคับ Indent ในภาษา Python

จากพื้นฐานเดิมที่เคยเขียน C, Perl และ PHP มา พอเขียน Python ได้ 3-4 บรรทัด แล้ว Error เพราะ Indent ผิด ตอนนั้นก็เลยแอบคิดในใจว่า "มันเป็นอะไรของมันวะ" ^^

สิ่งที่รู้สึกตามมาก็คือ รู้สึกว่าความเป็นอิสระ ในการเขียน code ของตัวเองถูกจำกัดใน python และก็เป็นสิ่งนี้เองที่ทำให้ผมไม่อยากที่เขียนโปรแกรมด้วย python ในตอนแรก

แต่ก็ยังเป็นภาษาที่โผล่มาให้เห้นอยู่เสมอๆ ตลอดเวลาที่ใช้ Linux ทำให้ยังไม่ตัดขาดจากมันเลยซักทีเดียวนัก

จนวันหนึ่ง ผมได้มีโอกาสได้อ่านหนังสือ Learning Python โดย Mark Lutz ของสำนักพิมพ์ O'Reilly
ได้พบประโยคๆ นึง ที่ทำให้ผมหันมามองถึงประโยชน์ของการบังคับ Indent

"Python Is Engineering, Not Art"

ในบทความนี้ ผู้เขียนได้กล่าวถึงการเปรียบเทียบระหว่าง Python (Engineering) กับ Perl (Art) โดยทั้งสองภาษานี้ เป็นภาษา Scripting เหมือนกัน (ใครอยากรู้รายละเอียด ลองไปอ่านต่อดูในหนังสือนะครับ ^^)

เป็นบทความที่ช่วยสะท้อนความในใจของผมออกมาเป็นคำพูดในตอนนั้น เพราะเป็นสิ่งที่หนึ่งผมสัมผัสได้เล็กๆ ในตอนฝึกเขียน python เวลาที่ผมกลับมาอ่านโค้ดของตัวเอง แล้วรู้สึกว่ามันอ่านง่ายดี
รู้สึกว่า เป็นบทความที่เป็นจุดเด่นของ python เลยครับ ในตอนนั้น แล้วก็พยายามคุยกับหลายๆ คนเพื่อบอกจุดเด่นเรื่องนี้ แต่ก็มีหลายคนตอบกลับมาทำนองว่า มันเป็นเรื่องปกติอยู่แล้ว ที่เวลาเขียนโปรแกรมจะต้อง Indent ให้เป็นระเบียบ จะเขียน perl ให้ indent เหมือน python ก็ได้ (อืม ก็จริง ><)

แต่ในท้ายที่สุดแล้ว ผมได้มารู้สึกถึงคุณค่าของมันเข้าจริงๆ ตอนที่มาเขียนโปรแกรมบนพื้นฐานของ Open Source ครับ

สิ่งหนึ่งที่ Python ได้สร้างไว้ให้กับการเขียนโปรแกรมบน Open Source ก็คือ มาตรฐานและระเบียบวินัยในการเขียนโปรแกรม

เป็นสิ่งที่สำคัญมากครับ เมื่อเราต้องอยู่กับคนจำนวนมาก โดยเฉพาะคนจากทั่วโลก

ไม่ว่าคุณจะเป็นใครมาจากไหน คุณจะเพิ่งเริ่มหัดเขียนโปรแกรม หรือเป็นผู้เชี่ยวชาญในการเขียนโปรแกรม ทุกคนจะเขียนโปรแกรมด้วย Syntax เดียวกัน ด้วยระเบียบเดียวกัน

ทำให้การเรียนรู้และพัฒนาโปรแกรม ทำได้ง่ายและรวดเร็วกว่าภาษาอื่น

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

ในสายตาของผม แค่จุดเล็กๆ ของ Python ในการบังคับ Indent กลับกลายเป็นสิ่งที่มีคุณค่ามหาศาลในโลกของ Open Source เลยครับ

Get latest news from Blognone
By: willwill
ContributorAndroid
on 18 March 2010 - 17:50 #162675
willwill's picture

ที่ผมใช้ Python เพราะผมเขียน PHP แล้วเน่าน่ะครับ ตอนนั้นกำลังลังเลระหว่าง Ruby กับ Python ด้วย แต่ไม่ชอบ end เลยไม่ได้ใช้ Ruby

เปรียบเทียบโค๊ดสมัยก่อนใช้ Python และโค๊ดในภาษา Python ครับ (สองไฟล์นี้มีอายุห่างกันประมาณ 1 ปี)

By: Sikachu
ContributoriPhoneIn Love
on 19 March 2010 - 04:22 #162788 Reply to:162675
Sikachu's picture

ผมเกลียด end เหมือนกัน แต่ผมกลับชอบ Ruby มากกว่า Python ครับ

ถ้าเคยใช้ block หรือ open class แล้ว ... แล้วถ้าชอบโค้ดสวยๆ อีก ... จะหลงมันจนโงหัวไม่ขึ้นครับ :)


บล็อกของผม: http://sikachu.com

By: lancaster
Contributor
on 22 March 2010 - 18:31 #163418 Reply to:162675

PHP เน่าจริงๆด้วยครับ

By: EThaiZone
ContributorAndroidUbuntuWindows
on 19 July 2015 - 22:13 #828441 Reply to:162675
EThaiZone's picture

ช่วยอธิบายอาการPHP เน่าหน่อยครับ อ่านแล้วงงน่ะครับ


มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB

By: JavaDevil
iPhoneUbuntuIn Love
on 18 March 2010 - 17:59 #162676

ผมว่าภาษาที่ออกแบบเป็น OO น่าเขียนทุกภาษา

By: bow_der_kleine
WriterAndroidUbuntu
on 18 March 2010 - 18:46 #162687
bow_der_kleine's picture

อ่านแล้วนึกถึงบทสัมภาษณ์ของ Guido van Rossum ที่บอกว่า สมัยก่อนคนบ่นเรื่อง indent กันเยอะ แต่ตอนนี้แทบไม่มีเลย เพราะคนเริ่มเห็นประโยชน์ของมันมากขึ้น

โค้ดสะอาดไม่ได้ขึ้นอยู่กับ indent อย่างเดียวครับ มีส่วนประกอบอีกหลายอย่าง ตามหนังสือ Clean Code ของ Robert C. Martin ว่ากันว่า ปกติเวลาคนเราเขียนโค้ด จะอ่านโค้ดเป็นสิบเท่าของการเขียน (ข้อนี้จริง ผมยืนยัน) นี่ยังไม่นับเวลาที่คนอื่นมาอ่านโค้ดเรา หรือ เรากลับมาอ่านโค้ดเราอีกครั้ง ดังนั้นโค้ดสะอาดจึงเป็นเรื่องสำคัญมาก

By: kowito2
Android
on 22 March 2010 - 10:37 #163330 Reply to:162687

เขียนโค้ดต้องมีกับแกล้มโซดา ไม่งั้นเมาโค้ดอ้วกแตกได้ง่ายๆ

By: tonkla
Ubuntu
on 18 March 2010 - 22:08 #162722

ผมมองว่า Python มันเป็น art นะครับ ถ้าจะเอา engineering ต้อง Java เลยครับ วิศวกรของแท้ เขียน Java ใช้ Thinkpad เข้าคู่กันมาก .. คู่ถึก :-P

สำหรับคนเริ่มเขียน Python ต้องอ่านเอกสารบังคับ PEP-8 (http://www.python.org/dev/peps/pep-0008/) ก่อนครับ สำคัญมากๆ เขียน Python โดยไม่อ่าน PEP-8 ... บาป !!

ผมเองก็เพิ่งเขียน Python ได้ไม่นาน พยายามจะเป็น Pythonian อยู่ครับ

By: nitipit
Android
on 18 March 2010 - 22:40 #162726 Reply to:162722

พูดซะน่ากลัวเลยคับ เดี๋ยวคนไม่กล้าเขียน python กัน

ขอบคุณสำหรับข้อมูลนะคับ เป็นข้อมูลใหม่สำหรับผมนะเนี่ย เกี่ยวกับเอกสาร PEP เคยเจอบ้างตอนหาวิธีตั้ง Encoding ส่วนตัวแล้วก็ยังไม่ได้อ่านถึงขนาดนั้นนะครับ

แต่คงไม่ถึงกับบาปหรอกมั้งคับ >_<

By: nat
Ubuntu
on 29 March 2010 - 12:23 #165520

เขียน Python โดยไม่อ่าน PEP-8 ... บาป !!

555

By: Nucksoo on 19 July 2015 - 08:17 #828264
Nucksoo's picture

ในเรื่องการบังคับมันก็ดีครับ แต่ดูอึดอัดไปนีส บางภาษาหรืบาง IDE มันจะ Indent ให้เองโดยอัตโนมัติอย่าง C# เขียนปีกกาเปิดปิด มันก็ Indent ให้เอง หรือการเขียน HTML บน Dreamweaver หรือการเขียน C บน Controller ที่ใช้ควบคุมอุปกรณ์ Hardware เช่น Arduino ก็จะมีปุ่มกดให้ Indent ให้ ก็สะดวกดี

แหะๆจริงๆผมหนะผมชอบแบบ Auto ให้เลย Code มันดูเรียบร้อยดี