ขอแชร์ประสบการณ์ และความรู้สึกชื่นชอบในภาษา 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 เลยครับ
ที่ผมใช้ Python เพราะผมเขียน PHP แล้วเน่าน่ะครับ ตอนนั้นกำลังลังเลระหว่าง Ruby กับ Python ด้วย แต่ไม่ชอบ end เลยไม่ได้ใช้ Ruby
เปรียบเทียบโค๊ดสมัยก่อนใช้ Python และโค๊ดในภาษา Python ครับ (สองไฟล์นี้มีอายุห่างกันประมาณ 1 ปี)
ผมเกลียด end เหมือนกัน แต่ผมกลับชอบ Ruby มากกว่า Python ครับ
ถ้าเคยใช้ block หรือ open class แล้ว ... แล้วถ้าชอบโค้ดสวยๆ อีก ... จะหลงมันจนโงหัวไม่ขึ้นครับ :)
บล็อกของผม: http://sikachu.com
PHP เน่าจริงๆด้วยครับ
ช่วยอธิบายอาการPHP เน่าหน่อยครับ อ่านแล้วงงน่ะครับ
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
ผมว่าภาษาที่ออกแบบเป็น OO น่าเขียนทุกภาษา
อ่านแล้วนึกถึงบทสัมภาษณ์ของ Guido van Rossum ที่บอกว่า สมัยก่อนคนบ่นเรื่อง indent กันเยอะ แต่ตอนนี้แทบไม่มีเลย เพราะคนเริ่มเห็นประโยชน์ของมันมากขึ้น
โค้ดสะอาดไม่ได้ขึ้นอยู่กับ indent อย่างเดียวครับ มีส่วนประกอบอีกหลายอย่าง ตามหนังสือ Clean Code ของ Robert C. Martin ว่ากันว่า ปกติเวลาคนเราเขียนโค้ด จะอ่านโค้ดเป็นสิบเท่าของการเขียน (ข้อนี้จริง ผมยืนยัน) นี่ยังไม่นับเวลาที่คนอื่นมาอ่านโค้ดเรา หรือ เรากลับมาอ่านโค้ดเราอีกครั้ง ดังนั้นโค้ดสะอาดจึงเป็นเรื่องสำคัญมาก
เขียนโค้ดต้องมีกับแกล้มโซดา ไม่งั้นเมาโค้ดอ้วกแตกได้ง่ายๆ
ผมมองว่า Python มันเป็น art นะครับ ถ้าจะเอา engineering ต้อง Java เลยครับ วิศวกรของแท้ เขียน Java ใช้ Thinkpad เข้าคู่กันมาก .. คู่ถึก :-P
สำหรับคนเริ่มเขียน Python ต้องอ่านเอกสารบังคับ PEP-8 (http://www.python.org/dev/peps/pep-0008/) ก่อนครับ สำคัญมากๆ เขียน Python โดยไม่อ่าน PEP-8 ... บาป !!
ผมเองก็เพิ่งเขียน Python ได้ไม่นาน พยายามจะเป็น Pythonian อยู่ครับ
พูดซะน่ากลัวเลยคับ เดี๋ยวคนไม่กล้าเขียน python กัน
ขอบคุณสำหรับข้อมูลนะคับ เป็นข้อมูลใหม่สำหรับผมนะเนี่ย เกี่ยวกับเอกสาร PEP เคยเจอบ้างตอนหาวิธีตั้ง Encoding ส่วนตัวแล้วก็ยังไม่ได้อ่านถึงขนาดนั้นนะครับ
แต่คงไม่ถึงกับบาปหรอกมั้งคับ >_<
เขียน Python โดยไม่อ่าน PEP-8 ... บาป !!
555
ในเรื่องการบังคับมันก็ดีครับ แต่ดูอึดอัดไปนีส บางภาษาหรืบาง IDE มันจะ Indent ให้เองโดยอัตโนมัติอย่าง C# เขียนปีกกาเปิดปิด มันก็ Indent ให้เอง หรือการเขียน HTML บน Dreamweaver หรือการเขียน C บน Controller ที่ใช้ควบคุมอุปกรณ์ Hardware เช่น Arduino ก็จะมีปุ่มกดให้ Indent ให้ ก็สะดวกดี
แหะๆจริงๆผมหนะผมชอบแบบ Auto ให้เลย Code มันดูเรียบร้อยดี