Thứ Bảy, 29 tháng 11, 2008

So sánh PHP vs Python

Bài viết này được tổng hợp từ nhiều nguồn khác nhau (bằng tiếng anh) cộng với kinh nghiệm viết PHP trong 5 năm và Python trong 5 tháng của tôi :D .

I.Giống nhau :

  • Là ngôn ngữ cao cấp , thông dịch và định kiểu động

  • Mã nguồn mở

  • Cộng đồng lập trình viên rộng lớn

  • Dễ học (so với Java , C hay Perl)

  • Dễ mở rộng (so với Java C++)

  • Rất khả chuyển , chạy được trên nhiều nền tảng mã không phải biên dịch lại (taats nhiên rồi) hay sửa code


II.Khác nhau :

1.PHP hơn

  • PHP kế thừa các curly braces để đánh dấu code block của C và dấu $ của Perl

  • Các câu lệnh switch và vòng lặp do..while

  • Toán tử gán , increment và decrement (++ và --)

  • Toán tử ternary operator/statement (... ? ... : ...)


    • Trong Python 2.5 có câu lệnh if .. else có tác dụng tương tự ("X if C else Y")





  • array rất mạnh ,đùng cho cả list và dict


  • tham chiếu ('$a =& $b' tức là khi biến  $b thay đổi, thì biến $a cũng thay đổi)





  • Có cả private, protected và public access modifiers cho cả phương thức và thuộc tính

  • Dùng cả abstract và final modifiers cho cả classes và methods

  • Có interfaces

  • $this là đối tượng mặc định , và không cần truyền ngược self để định nghĩa method như Python ( với Python chỗ này hơi chuối để định nghĩa test là method của một lớp cần định nghĩa :                                 def test(self)

  • Hỗ trợ code trên nhiều dòng (với Python phải thêm dấu \ vào cuối dòng nếu muốn)

  • Comment sướng hơn Python (# /* //)


(Các bạn đọc có đóng góp gì cứ comment nhét)

2.Python hơn

  • Ngôn ngữ sử dụng với các mục đích chung (Python có thể dùng để lập trình hầu hết mọi thứ , trong khi PHP chỉ dùng để lập trình web hay console . Tất nhiên có thể làm được việc khác nhưng không đáng kể )

  • Sử dụng indentation (thụt vào đầu dòng, và dòng mới) thay thế cho các dấu curly braces để đánh dấu các code block . (Tất nhiên là trông đẹp hơn , nhưng không thân thiện với HTML template cho Web )

  • Có namespaces và modules (PHP 5.3 mới có namespaces)

  • Truyền biến cho hàm hiệu quả hơn PHP nhờ cặp key=value pair , hỗ trợ tốt hơn cho giá trị mặc định của biến truyền vào hàm

  • Cho phép đa thừa kế (không biết là hay hay là dở nữa)

  • Introspection tốt hơn PHP Reflection

  • Mọi thứ từ biến tới đối tượng đều có kiểu tham chiếu

  • Có Threading

  • Document tốt hơn PHP  (nhưng chắc chắn là ít TUT ,Guide,comment,... hơn PHP)

  • Có thể lập trình GUI (Tất nhiên là PHP cũng có thể nhưng không thể bằng)

  • Có thể chạy trên .Net với IronPython hay nền Java với Jython (PHP cũng có thể chạy trên Java thậm chí trong cả các Application Server)

  • Có web server,Application server riêng , 100% viết bằng Python  .

  • lambdas và các hàm hỗ trợ để xây dựng hàm (PHP có create_function và closure)

  • cached byte-code (PHP cũng có nhưng không tốt bằng )

  • Unicode được hỗ trợ tốt hơn

  • Kiểm soát lỗi ngoại lệ tốt hơn

  • Chạy nhanh hơn PHP (Đúng là nhanh hơn nhưng ngốn CPU và Ram khủng khiếp :D )

6 nhận xét:

  1. ngoài ra, ta có thể viết thêm hoặc chỉnh sửa các module(s) của python bằng ngôn ngữ C.
    mặt khác, tất cả các phần của python đều là các module, nên tính lắp ghép (ở một mức nào đó) là tốt hơn PHP
    hơn nữa, trong cùng một bài toán với trình độ nhân lực tương đương thì python cần ít ... ký tự (characters) hơn để giải quyết :p
    tiếp theo, xử lý vòng lặp và khả năng kết hợp (combine) các đoạn code của python là ... vô đối :D
    còn nữa, google appengine đến nay mới hỗ trợ python, không hỗ trợ PHP :(

    Trả lờiXóa
  2. > tiếp theo, xử lý vòng lặp và khả năng kết hợp (combine) các đoạn code của python là … vô đối

    Chứng minh nào ?



    hê hê, hẳn là đại ca đã xem slide diễn thuyết của NamNT về python tại barcampsaigon vừa rồi

    hơn nữa, đúng là python có vẻ đuối so với PHP về lượng library sẵn có, nhưng xét về built-in function, python tinh giảm hơn PHP chứ không phải ít hơn (PHP có nhiều function để giải quyết 1 vđe trong khi python có ít hơn - thậm chí là chỉ 1 ). Điều này chứng minh cộng đồng phát triển PHP rất chi là ... dồi dào và sáng tạo trong khi với python thì quan niệm ... thế là đủ dùng rùi :))

    Trả lờiXóa
  3. Không hiểu hoàng định chứng minh bằng gì .? nguyên cái slide đó thì chưa đủ .

    Hơn nữa không thể lấy một vài ví dụ một vài hàm tiện ích ra để so sánh . Mặt khác nếu so sánh kiểu như vậy Python nắm chắc phần thua (lấy ngày đầu tuần chẳng hạn). Python có hệ thống API được design tốt hơn PHP nhiều , đây mới thực sự là cái hơn lớn . Cộng đồng Python còn nhỏ nên tinh gọn và qui củ hơn là điều dễ hiểu .

    Trả lờiXóa
  4. Bình loạn tiếp nào:

    PHP là một ngôn ngữ multiple line nghĩa là thả sức cho chạy 1 câu lệnh trên nhiều dòng

    Python thì single line nên muốn chạy nhiều dòng thì khuyến cáo dùng kí hiệu \ kiểu bash ở cuối dòng. Xấu con cá xấu

    Trả lờiXóa
  5. mới cập nhật thêm :

    * Hỗ trợ code trên nhiều dòng (với Python phải thêm dấu \ vào cuối dòng nếu muốn)
    * Comment sướng hơn Python (# /* //)

    (WP có các nào viết theo kiểu Wiki không nhỉ )

    Trả lờiXóa
  6. opensource can protect enviroment ? or kill it ?

    Trả lờiXóa