ComBioLaw.De » Blog » เขียนโปรแกรม » อะไรที่ Python มี แต่ PHP ไม่มี และในทางกลับกัน

อะไรที่ Python มี แต่ PHP ไม่มี และในทางกลับกัน

imageช่วงนี้ผมต้องเขียนโปรแกรมด้วยสองภาษาคือ Python กับ PHP เวลาสลับภาษาไปมาก็จะเกิดอาการงง ๆ เล็กน้อย ชอบเอา Features ของภาษานึงไปใช้กับอีกภาษา ชอบเขียน Syntax ผิด ฯลฯ พอมากเข้าก็รู้สึกได้ ว่าสองภาษานี้ต่างกันมาก การออกแบบที่มีที่มาและจุดประสงค์ที่ต่างกัน วิธีคิดเวลาเขียนโปรแกรมที่ต่างกัน เลยอยากลองสรุปดูว่า มันมีอะไรที่ผมได้ใช้ในภาษาหนึ่ง แต่กลับไม่มีในอีกภาษา

อันที่จริงบล็อกนี้ ก็ไม่ต่างกับเอกสาร Python vs PHP ใน Python Wiki เท่าไร และทั้งสองภาษาต่างก็มีความสามารถสำหรับเขียนโปรแกรมในรูปแบบต่าง ๆ ได้พอ ๆ กัน แต่ด้วยความสบายที่ต่างกัน หากคนที่เขียน PHP เป็นอยู่แล้ว และอยากลองเขียน Python (ในทางกลับกันคงหายาก) อาจนำไปใช้เป็น guideline ได้ครับ

สิ่งที่ Python มี แต่ PHP ไม่มี

1 string is a list ทำให้เรานำความสามมารถต่าง ๆ ที่มีอยู่ใน list มาใช้กับ string ได้ทันที รู้สึกได้ถึงความ powerful โดยเฉพาะการเรียกใช้ method ต่าง ๆ ใน PHP ฟังก์ชันที่ใช้กับ string และ array จะแยกออกจากกันเด็ดขาด ทำให้หลาย ๆ ครั้งต้องจำและทำความเข้าใจฟังก์ชั่นสองตัว ที่ทำงานเหมือนกัน แต่ตัวหนึ่งใช้กับ string อีกตัวใช้กับ array

2 in-statement เป็นอะไรที่อำนวยความสะดวกได้มาก เราสามารถใช้ in ตรวจสอบได้ว่า ตัวแปรหนึ่งเป็นสมาชิกของอีกตัวแปรหนึ่งหรือไม่ เช่น "abc" in "abcdef" จะส่งค่ากลับมาเป็น True และ 1 in [2, 3, 4]  จะส่งค่ากลับมาเป็น False เป็นต้น ใน PHP ต้องใช้ฟังก์ชั่น in_array , array_key_exists แล้วก็ strpos แทน (แยกฟังก์ชันตามประเภทตัวแปร) ซึ่ง in-statement ของ Python ง่ายกว่าเห็น ๆ แล้วมันเป็นอะไรที่ใช้บ่อยเสียด้วยสิ ...

เขียนโปรแกรม เขียนโปรแกรม

bow_der_kleine bow_der_kleine

3 array slicing หรือการตัดต่อตัวแปรประเภท sequential ยกตัวอย่างเช่น a[2:9:3] คือเลือกเอาสมาชิก a[2], a[5], a[8] ที่อยู่ในตัวแปร a (2 คือ offset, 9 คือ limit, 3 คือ step) อีกทั้งยังสามารถ slice แบบ circular ได้อีก ใน PHP ต้องใช้ฟังก์ชัน array_slice เอา แต่รู้สึกว่าจะกำหนด step ไม่ได้

4 keyword arguments แม้ว่าใน PHP จะมี optional arguments หรือมีฟังก์ชั่น func_get_args แต่เวลาที่เจอฟังก์ชั่นที่มี arguments มาก ๆ การใช้  keyword arguments ทำให้เราไม่ต้องจำการเรียงลำดับก่อนหลังของ arguments

5 generator function เป็น feature ที่ผมไม่ค่อยได้ใช้ แต่เวลาต้องใช้มันก็จำเป็นจริง ๆ พอไม่ generator function ก็ต้องเก็บทุกอย่างไว้ใน array แล้วค่อยคืนค่าเล่นเอา memory ร่อยหรอ

6 exception handling ซึ่งใน PHP ก็มี try, catch หรือไม่ก็ใช้ @ ... OR ... แต่เนื่องจาก PHP มันเป็น Weak Type บาง exception มันก็จับไม่ได้ หลาย ๆ ครั้งก็เลี่ยงไปใช้ if เพราะสะดวกกว่า

7 modules ใน PHP เวลา require หรือ include สคริปต์ ทุกอย่างก็จะมาทั้งกระบิ ไม่มีการจัดแยกเป็นโมดูล ทำให้บางคร้งมีปัญหาในการตั้งชื่อฟังก์ชันเหมือนกัน เพื่อจะได้ไม่ซ้ำ และจะได้รู้ว่าฟังก์ชันไหนใช้ทำอะไร เนื่องจาก Python มีระบบ module ทำให้เรา capsulate ทุกอย่างไว้เป็นชั้น ๆ ได้

8 powerful admin tools สำหรับการบริหารจัดการระบบ Python มีโมดูลเจ๋ง ๆ อย่าง os หรือ shutil ซึ่งใช้ง่ายและมีประโยชน์มาก ใน PHP แค่ดูว่าใน directory หนึ่งมีไฟล์อะไรอยู่บ้าง ก็เหนื่อยแล้ว  

อะไรที่ PHP มี แต่ Python ไม่มี

1 callable string  เราสามารถกำหนดตัวแปรสตริง ให้มีค่าเป็นชื่อของฟังก์ชัน แล้วเราเรียกฟังก์ชันด้วยการใส่วงเล็บไปข้าง฿หลังตัวแปรนั้นได้ เช่น $a = "in_array" ดังนั้น $a($b, $c) ก็จะมีควาหมายเหมือนกับ in_array($b, $c) ซึ่งใน Python ก็ทำอะไรคล้าย ๆ กันนี้ได้เหมือนกัน แต่ไม่สะดวกเหมือน PHP

2 require and include แม้ว่าระบบ import module ของ Python จะมีข้อดีหลายประการ แต่บางครั้งที่สคริปต์มันอยู่ในที่แปลก ๆ เช่น ไม่อยู่ใน local directoy หรือ system directory ใน Python ต้องมีการจัดการที่ลำบากพอสมควร ในกรณีนี้ ผมคิดว่า require และ include มีประโยชน์มาก เพราะสามารถเขียนที่อยู่ของสคริปต์ลงไปได้เลย

3 powerful documentation ระบบเอกสารของ PHP เป็นอะไรที่สุดยอดมาก แม้ว่าเอกสารของ Python จะจัดอยู่ในขั้นดี แต่ผมก็ยังรู้สึกว่าสู้ PHP ไม่ได้ โดยเฉพาะในส่วนที่มีการแสดงความคิดเห็น ความคิดเห็นที่อยู่ในเอกสารของ PHP มีประโยชน์ และเหมาะสำหรับนำไปใช้เป็นตัวอย่าง อีกทั้งมีภาษาต่าง ๆ ให้เลือกมากมาย

4 private, protected and public modifiers ใน Python มีวิธีเลี่ยงการใช้ private โดยการตั้วชื่อ property หรือ method ขึ้นต้นด้วย __ แต่ proteced ไม่มีวิธีเลี่ยง ผมเห็นด้วยกับ Guido van Rossum ว่าเราควรปฏิบัติตัวกับโปรแกรมเมอร์อย่างผู้ใหญ่ และมอบอิสรภาพให้ แต่บางครั้งที่จำเป็นต้องใช้ด้วยเหตุผลเรื่องความปลอดภัย พอไม่มีให้ใช้ก็เหนื่อยเหมือนกัน

5 keyword array with static position ใน PHP เวลาเราใส่อะไรลงไปใน Keyword Array ตำแหน่งของสมาชิกใน Array จะไม่เปลี่ยน (มาก่อนได้ก่อน) แต่ Dictionary ของ Python ลำดับก่อนหลังของสมาชิกจะขึ้นอยู่กับการจัดการของระบบ (มาก่อนไม่จำเป็นต้องได้ก่อน) บางครั้งก็สร้างความปวดหัวให้ผมเหมือนกัน และบางครั้งผมก็เลี่ยงไปใช้ List + Tuple แทน

6 memory_get_usage ไว้ตรวจสอบหน่วยความจำ ว่าใช้ไปเท่าไรแล้ว มีประโยชน์มาก เวลาต้อง optimise performance ยังไม่เคยเห็นอะไรที่คล้าย ๆ กัน และใช้ง่าย ๆ ใน Python

เท่าที่นึกออกตอนนี้ก็มีเท่านี้ครับ หากนึกได้เพิ่มเติมจะมาเขียนต่อในความคิดเห็น แต่เมื่อเราดู Road Map ของแต่ละภาษาแล้ว ก็จะรู้สึกได้ว่า แต่ละภาษาจะมีความคล้ายคลึงกันมากขึ้นเรื่อย ๆ (โดยเฉพาะภาษา Dynamic ทั้งหลาย) และสุดท้ายแล้วตัวภาษาเขียนโปรแกรม ก็ไม่ใช่ปัจจัยการตัดสินใจเลือกใช้เทคโนโลยีที่สำคัญอีกต่อไป

16 Jan 09 | by | tags เขียนโปรแกรม Python PHP

read 2509

<<ใครเขาใช้ Linux กัน ? || รีวิวเวบราชการไทย>>

ก้อนหินรูปหมู

เห็นภาพแล้ว คิดถึงเจ้าชายน้อยจัง

มีความสุขมั่กๆนะค่ะ

 

22 Jan 09

สายลมลอย

แวะมาสวัสดีปีใหม่ ครับ ช้าหน่อย เพราะเข้ามาเม้นท์ไม่ค่อยได้

 

สงสัยเริ่มถดถอยจากเทคโนฯ

 

สบายดี สุขภาพดีถ้วนหน้าครับ

 

ด้วยมิตร

02 Feb 09

แอดมินคนหนึ่งของฟ้าเดียวกั

สวัสดีคุณโบว์จ้า
สวัสดีตรุษจิน ซิงเจียอยู่อี่ ซิงนี้ฮวดไช้ด้วย
เยอรมันมีคนจีนฉอลงกันรึเปล่าหว่า
ปล. ไม่สามารถคอมเม้นในเรื่องในบล็อกได้เพราะอ่านแล้วใบ้แดก อิอิ แต่เข้าใจมาตลอดว่า python ยากกว่า     

03 Feb 09

หมู

โฮสต์ที่ใช้ python ได้ ไม่ค่อยมี :D

07 Feb 09

ความคิดเห็น (click here to comment)

Search

Navigation

รวมลิงก์น่าสนใจ

ความเคลื่อนไหว

Login