ทำไมต้อง Python (1)

posted on 18 Jun 2004 01:45 by veer
ผมใช้ภาษา Python เป็นภาษาหลักในการพัฒนาโปรแกรม เพราะว่าจะได้เหมือนกับที่ชาวบ้านที่ทำงานด้วยกันใช้ ผมก็ไม่ได้มีส่วนร่วมในการตัดสินใจอะไรมากนักแต่ใช้ๆ ไปแล้วก็รู้สึกว่ามันพอได้ หลายอาจคิดว่าภาษาที่ชาวบ้านที่ใช้กันมีเยอะไป เช่น Java, C++ เป็นต้น ทำไมต้องแหลกแนวออกไปทำอะไรวิตถารด้วย ก็เลยอยากจะพูดถึง Python ซักหน่อย

จุดประสงค์ ประเด็นคือเราอยากจะได้ภาษาอะไรที่เขียนง่ายๆ โดยเฉพาะงานด้าน Text processing และบำรุงรักษาง่ายๆ ประมาณว่าเขียนไปแล้วชาวบ้านหรือตัวเองเอาไปแก้ได้

SOP เนื่องจากต้องการความง่ายก็เลยมองหาภาษาพวก SOP (Script-Oriented Programming) ตัวอย่างที่หลายคนน่าจะรู้จักคงจะเป็น PHP, ASP, Perl อะไรแบบนั้นประมาณเขียนสั้นๆ ง่ายๆ ใช้เฉพาะทาง Python ก็เป็นภาษาหนึ่งในตระกูล SOP ที่มีคะแนนความเป็นสคริป ( ที่อาจจะไม่เป็นทางการเท่าไหร่ ) อยู่ในอันดับต้นๆ ทีเดียว ถ้าตามเข้าไปดูในเวปก็จะเห็นว่าเขาให้ความสำคัญ กับขนาดของโปรแกรมที่ต้องพิมพ์เข้าไปมากเหมือนกัน อย่างเขียนโปรแกรม Hello World ถ้าใช้ Python เขียนต้องพิมพ์ 19 ตัวอักษร แต่ถ้าใช้ Java ต้องพิมพ์ 115 ตัวอักษร เท่านี้ก็น่าจะเห็นภาพว่าทำไม Python ได้คะแนนดีกว่า แต่ตัวที่ได้คะแนนดีกว่าในการทำสอบ 3 อันดับแรกคือ sh, Ruby และ Perl ตามลำดับ ( ซึ่งส่วนตัวแล้วชอบ Ruby มากกว่าในแง่ความสวยงาม เอาไว้พูดถึงคราวหน้า ) สิ่งนึงที่ทำให้ Python ได้เปรียบในเรื่องความสั้นเพราะเปิดปิด block ด้วยย่อหน้า (indent) แทนที่จะเป็น { } เหมือน Java หรือ Begin End แบบ Pascal

Text processing ถ้ามองในแง่ Text processing โดยเฉพาะการใช้ Regular expression แล้ว Python ทำได้ค่อนข้างดีในด้านความสะดวกถ้าเทียบกับ Java หรือ C# แต่อย่างไรก็ตาม ถ้าเทียบความสะดวกของการใช้ Regular expression ของ Perl แล้ว Python ก็จัดว่าค่อนข้างห่วย ทั้งในด้านความเร็วและความสะดวก ใช้ Python ประมาณว่าต้องเรียก m = re.match เพื่อที่จะ match แล้วค่อยเอาตัวแปรที่ return ออกมาจาก re.match ซึ่งในที่นี้คือ m มาดูอีกทีว่า match ได้อะไรบ้าง ซึ่งผมคิดว่ามันก็ธรรมดา เพียงแต่ว่า Perl มันสะดวกกว่าเพราะใช้ /patern/ ได้เลย แถมตอนดูว่าได้อะไรบ้างก็ดูจาก $1, $2 .... ได้เลย

การบำรุงรักษา แต่ถ้ามาดูเรื่องการบำรุงรักษาแล้ว Python ที่มีความเป็น OOP แบบมั่วๆ ผสม Functional programming บ้าง ก็ยังดีกว่า Perl ในด้านการบำรุงรักษา Perl ดูเหมือนการใช้งาน OOP ต้องทำแบบอ้อมๆ แถมการเปิดไฟล์อย่างเดียว ก็ทำได้หลายแบบทำให้คนมาอ่านหรือมา hack code งงตาแตกได้ Python ทำอะไรแบบ OOP ได้หลาย อย่างมี Class มีกลไกสำหรับทำ sub class ได้สบายๆ เราประกาศแบบนี้ได้เลย
class Foo:
def method1(self):
do something

แต่ก็จะเห็นว่ามีอะไรแปลกคือตัวแปล self ในที่นี้ self จะอ้างถึง object นั้นๆ ซึ่งถ้าเป็นภาษาอื่นที่ support OOP ก็มันจะคิดว่า การอ้างใช้สิ่งต่างๆ เป็น object member อยู่แล้ว แต่ Python ไม่ต้องออกมันเองเช่นจะใช้ method ชื่อ foo ( จากใน methon ใน class นั้น ) ก็ต้องเรียก self.foo() แทนที่จะเรียก foo() เฉยๆ ได้แบบในภาษา OOP อื่น

ยาวละไว้ต่อวันหลัง...........
edit @ 2006/06/12 02:36:00
edit @ 2007/04/06 20:56:15
ชอบครับๆ ติดตามนะครับ
ตอนนี้เหนเค้าพูดถึง AOP

#10 By bank on 2006-01-04 01:59

self = this หรือเปล่าอะ

#9 By lionking (61.91.173.134) on 2005-10-02 11:50

โอ๊ย มึนตี้บ

#8 By metropoly on 2005-08-20 16:57

ขอเป็นด้าน text proceesing น่ะครับ

#6 By tong (202.12.73.6 /unknown) on 2005-04-25 09:30

อยากได้ code ของ thai-text to speech ครับ
กำลังศึกษาอยู่อ่ะ

#5 By tong (202.12.73.6 /unknown) on 2005-04-25 09:29

ได้ครับผม

#4 By mk () on 2004-06-20 15:31

mk: slide ของ Hpcnc น่าเอาขื้นเวปไว้เลยปะ? ชาวบ้านที่อื่น (นอกมหาลัย) จะได้เอาไปอ่านด้วย :-D

ipats: ง่ายพอควร มีช่วงต้องปรับตัวนึดหน่อยสำหรับ บางอย่างที่อาจจะดูแปลก ซักวัน สองวันก็น่าจะพอเขียนได้

#3 By veer on 2004-06-19 17:35

เพิ่งสอนคนในแล็บไปเมื่อวาน ตอนก่อนไฟดับน่ะ

อยากได้สไลด์ของ hpcnc ป่ะ แต่มันง่ายๆ นะ เบสิคมากๆ

#2 By mk () on 2004-06-19 11:17

อืม.. เคยได้ยินชื่อครับ
แต่ไม่รู้จักเลย..
เท่าที่อ่านมา ดูท่าน่าจะเขียนง่ายนะ

#1 By ไอ้แพท.. on 2004-06-18 23:08