หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: ความรู้เบื้องต้นเกี่ยวกับภาษา Python  (อ่าน 1277 ครั้ง)
dynaz
dynaz of iDeeZiGn
ประธานฝ่ายความมั่นคง
Creative High School
*****

Karma: +1/-0
ออฟไลน์ ออฟไลน์

กระทู้: 234



ดูรายละเอียด เว็บไซต์
« เมื่อ: มิถุนายน 06, 2009, 01:07:24 pm »

Python คืออะไร
 
    Python เป็นภาษาระดับสูงภาษาหนึ่ง ที่มีความสามารถสูงถูกสร้างขึ้นในปี 1989 โดย Guido van Rossum ซึ่งถูกพัฒนาขึ้นมาโดยไม่ยึดติดกับแพลตฟอร์ม กล่าวคือสามารถรันภาษา Python ได้ทั้งบนระบบ Unix, Linux, Windows NT, Windows 2000, Windows XP หรือแม้แต่ระบบ FreeBSD อีกอย่างหนึ่งภาษาตัว นี้เป็นภาษาลักษณะ Open Source เหมือนย่าง PHP   
        
    ความสามารถของภาษา Python   
         ในปัจจุบันภาษาที่ใช้ในการพัฒนา Web Application มีมากมายหลายภาษา อาทิเช่น ภาษา Perl, PHP, JAVA, ASP, Tcl, Python เป็นต้น สำหรับภาษา Python นับว่ายังใหม่ในวงการพัฒนาโปรแกรมบนเว็บ แต่ด้วยข้อดีหลายประการของภาษา Python ทำให้มีผู้นิยมใช้มากขึ้นเรื่อยๆ ซึ่งพอสรุปข้อดีของภาษา Python ได้ดังนี้
1. ง่ายต่อการเรียนรู้ โดยภาษา Python มีโครงสร้างของภาษาไม่ซับซ้อนเข้าใจง่าย ซึ่งโครงสร้างภาษา Python จะคล้ายกับภาษา C มาก เพราะภาษา Python สร้างขึ้นมาโดยใช้ภาษา C ทำให้ผู้ที่คุ้นเคยภาษา C อยู้แล้วใช้งานภาษา Python ได้ไม่ยาก นอกจากนี้โดยตัวภาษาเองมีความยืดหยุ่นสูงทำให้การจัดการกับงานด้านข้อความ และ Text File ได้เป้นอย่างดี
2. ไม่ต้องเสียค่าใช้จ่ายใดๆ ทั้งสิ้น เพราะตัวแปรภาษา Python อยู่ภายใต้ลิขสิทธิ์ GNU
3. ใช้ได้หลายแพลตฟอร์ม ในช่วงแรกภาษา Python ถูกออกแบบใช้งานกับระบบ Unix อยู่ก็จริง แต่ในปัจจุบันได้มีการพัฒนาตัวแปลภาษา Python ให้สามารถใช้กับระบบปฏิบัติการอื่นๆ อาทิเช่น Linux, Windows 95/98/ME, Windows NT, Windows 2000, OS/2
4. ภาษา Python ถูกสร้างขึ้นโดยได้รวบรวมเอาส่วนดีของภาษาต่างๆ เข้ามาไว้ด้วยกัน อาทิเช่น ภาษา C, C++, Java, Perl
5. ภาษา Python เป็นภาษาประเภท Server side Script คือการทำงานของภาษา Python จะทำงานด้านฝั่ง Server แล้วส่งผลลัพธ์กลับมายัง Client ทำให้มีความปลอดภัยสูง
6 . ใช้พัฒนา Web Service โดยที่ภาษา Python สามารถนำมาพัฒนาเว็บเซอร์วิส รวมทั้งใช้บริหารการสร้างเว็บไซต์สำเร็จรูปที่เรียกว่า Content Management Framework (CMF) ตัวอย่าง CMF ที่มีชื่อเสียงมากและเบื้องหลังทำงานด้วย python คือ Plone   
        
    หลักการทำงานของภาษา Python   
    ตัวแปรภาษาคืออะไร เมื่อเราได้เขียนโค้ดขึ้นมาตามโครงสร้างของโปรแกรมภาษาใดก็ตาม และการจะให้โค้ดคำสั่งเหล่านั้นทำงานได้ก็จะต้องมีตัวแปรภาษามาจัดการแปลโค้ดคำสั่ง เพื่อให้ทำงานตามที่เราต้องการ
โดยลักษณะของตัวแปลภาษานั้นแบ่งได้ 2 ประเภทใหญ่ ๆ คือ
1. คอมไพเลอร์ (Compiler) เป็นตัวแปลภาษาสำหรับภาษา C, C++, Pascal การทำงานก็คือจะตรวจสอบความผิดพลาดของโค้ดคำสั่งตั้งแต่ต้นจนจบก่อน หรือเรียกว่าการคอมไพล์ ถ้าไม่มีข้อผิดพลาดก็จะทำการแปลโค้ดคำสั่งของเราให้เป็นไฟล์นามสกุล .obj (object file) จากนั้นก็ทำการแปลไฟล์ .obj ให้เป็นไบนารีไฟล์ .exe เพื่อทำงานต่อไป ดังตัวอย่างการทำงานของคอมไพเลอร์ภาษา C ดังรูป
 
    

 
    2. อินเตอร์พรีเตอร์ (Interperter) จะทำงานเป็นบรรทัดต่อบรรทัด คือ อ่านโค้ดคำสั่งมาบรรทัดหนึ่งแล้วก็ทำงานให้ผลออกมาเลย ดังแสดงในรูป
 


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

บันทึกการเข้า

dynaz
dynaz of iDeeZiGn
ประธานฝ่ายความมั่นคง
Creative High School
*****

Karma: +1/-0
ออฟไลน์ ออฟไลน์

กระทู้: 234



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: มิถุนายน 06, 2009, 01:08:04 pm »

ทำไมต้อง Python


ผมใช้ภาษา 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 อื่น


บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์
กระโดดไป: