0
Back-end

Python VS PHP, học ngôn ngữ nào phù hợp với bạn?

12/07/2020

Backend development là một trong những kỹ năng được tìm kiếm nhiều nhất hiện nay. Hầu hết mọi công ty (business/startup…) đều cần 2 trang web và một ứng dụng điện thoại – cả hai đều cần kết nối đến một máy chủ (server in the backend), Do đó, nhu cầu tìm kiếm những nhà phát triền backend là cực kỳ cao trên thị trường và các công ty sẵn sàng chi rất nhiều tiền cho các nhà phát triển backend giỏi.

Có rất nhiều ngôn ngữ lập trình hữu dụng để các lập trình viên phát triển trên thị trường:

  • Python: Python là một trong những sự lựa chọn phổ biến nhất dành cho các lập trình viên. Có rất nhiều thư viện hỗ trợ cũng như một cồng đồng cực lớn.
  • PHP: PHP là một công cụ lập trình tồn tại trong một khoảng thời gian khá dài và vẫn là 1 ngôn ngữ được sử dụng rộng rãi ở thời điểm hiện tại. Ví dụ, Facebook, đã dùng PHP để phát triển kể từ những ngày đầu tiên.
  • Javascript:Javascript đơn thuần là ngôn ngữ lập trình Frontend (dùng trong các giao diện web, mobile…). Tuy nhiên nhờ cộng đồng Backend rộng lớn, nên javascript đã sớm phát triển để trở thành công cụ đắc lực cho các nhà phát triển Backend, đó chính là NodeJS và nổi lên như một ngôn ngữ lập trình phổ biến toàn thế giới.
  • Ruby: Ruby On Rails, là một trong những ngôn ngữ lập trình web phổ biến nhất và hiện tại có rất rất nhiều công ty startup sử dụng nó.
  • Dot Net: .Net framework có cả cộng đồng riêng biệt và chuyên hỗ trợ từ mọi mặt.Thời kỳ ban đầu .Net là một ngôn ngữ đóng, nhưng sau đó Microsoft đã làm một việc tuyệt vời là biến nó trở thành công cụ mã nguồn mở. Dot Net hiện tại đang được sử dụng chủ yếu ở những hệ thống Backend doanh nghiệp lớn vì được hỗ trợ cực kỳ vững chắc bởiMicrosoft.

Đối với những người mới học lập trình, chọn một ngôn ngữ phù hợp với bản thân luôn luôn là một thách thức và không có điều gì rõ ràng hay chắc chắn, đặc biệt là đối với phát triển hệ thống Backend. Vậy nên học cái gì trong muôn vàn ngôn ngữ lập trình (dù là cấp cao hay cấp thấp)? là câu hỏi muôn thuở không có lời giải đáp chính xác, mà còn tùy thuộc vào rất nhiều yếu tố. Trong khuôn khổ bài viết này, chúng ta sẽ chỉ bàn tới Python và PHP. Chúng ta sẽ thử so sánh, nêu ra những điểm mạnh và điểm yếu để xác định xem ai sẽ kẻ thắng cuộc.

Trước tiên hãy làm phép so sánh đơn giản, liệt kê hết tất cả mọi tiêu chí của một ngôn ngữ lập trình – điều sẽ ảnh hưởng trực tiếp đến quyết định của bạn:

  • Dễ học, dễ tiếp cận (Ease of learning): đây được cho là yếu tố tối quan trọng để định lượng được một ngôn ngữ lập nào sẽ được sử dụng. Nếu như một ngôn ngữ lập trình khó để học, cũng có nghĩa là chỉ phí thời gian để học, vì chả mang lại lợi ích gì cả. Ngày nay, thời gian phát triển một phần mềm là cực kỳ quan trọng, trong tất cả mọi lĩnh vực, phát triển phần mềm cũng không nằm ngoài quy luật này, và đặc biệt, thời gian phát triển còn quan trọng hơn thời gian thực thi – điều này đúng với mọi trường hợp.
  • Cộng đồng hỗ trợ (Community support): thành thật nhé, chúng ta luôn luôn bị kẹt giữa những lỗi (Bugs) và những vấn đề không thể giải quyết (Issues) trong khi viết mã nguồn, để giải quyết những vấn đề này, chúng ta không thể cứ thế làm một mình, chúng ta không đơn độc, luôn luôn có một cồng động luôn sẵn sàng giúp đỡ. Nếu một ngôn ngữ không còn cộng đồng hỗ trợ, ngôn ngữ đó chắc chắn không thể tồn tại hoặc phải tự thay đổi để phát triển.
  • Tài liệu (Documentation): cũng tương tự như Cộng đồng hỗ trợ (Community support), là một tập hợp tài liệu cho một ngôn ngữ lập trình, các tài liệu này sẽ giúp các nhà phát triển học và hiểu tất cả các sắc thái và bản chất của ngôn ngữ lập trình họ đang theo.
  • Giá (Pricing): một vài công cụ/ngôn ngữ (tools/languages) không miễn phí. Nó có thể ảnh hưởng đáng kể đến sự lựa chọn của các tổ chức có kinh phí thấp. Nói chung, có rất nhiều công ty sử dụng công cụ/ngôn ngữ mã nguồn mở (open-source) hơn là dùng những hệ thống trả phí. Tuy nhiên, các doanh nghiệp như ngân hàng, các công ty bảo hiểm… luôn luôn sử dụng các hệ thống có tính phí vì nhiều lý do: bảo mật cao, độ an toàn…
  • Thư viện hỗ trợ (Library support): nếu một ngôn ngữ lập trình được sử dụng 1 cách rộng rãi, điều đó đồng nghĩ với việc sẽ có nhiều lập trình viên biên tập các thư việc cho ngôn ngữ đó. Như một điều tất yếu, việc lập trình dựa trên những thư viện đã có sẵn sẽ nhanh và dễ dàng hơn rất nhiều.
  • Tốc độ (Speed): các ứng dụng về phía máy chủ (server-side applicants) luôn luôn yêu cầu khả năng chịu tải cao (tolerance capacity) cũng như độ trễ thấp (low latency). Do đó, nó thực sự quan trọng để xem xét ngôn ngữ nào nhanh hơn về thời gian thực thi
  • Hỗ trợ nhiều frameworks (Choice of web frameworks): đây thực sự quan trọng vì các frameworks có cấu trúc tốt sẽ thúc đẩy việc phát triển phần mềm nhanh chóng và dễ dàng hơn.
  • Debugging: việc lựa chọn ngôn ngữ lập trình nên dựa vào các công cụ có khả năng tìm kiếm lỗi (debugging tools) của ngôn ngữ. Nếu như thiếu vắng các công cụ tìm kiếm lỗi cũng đồng nghĩa với việc khi một lỗi phát sinh, lập trình viên sẽ tốn nhiều thời gian hơn để điều tra xem vấn đề gì đã sảy ra để sửa, điều đó sẽ khiến thời gian phát triển chậm đi đáng kể.

Python là gì?

Được ra mắt vào năm 1991 và được phát triển bởi Guido Van Rossum. Python là ngôn ngữ lập trình thông dịch cấp cao. Python được sử dụng để phát triển web, lập trình backend, phần mềm (software) và kịch bản hệ thống (system scripting). Luôn là lựa chọn hàng đầu của các nhà lập trình chuyên nghiệp cũng như các nhà khoa học vì cung cấp nhiều tính năng như: làm việc trên nhiều nền tảng (platforms), chạy trên các hệ thống thông dịch, rất dễ viết mã nguồn (coding) vì cú pháp (syntax) khá giống tiếng anh.

Mặc dù Python được sử dụng khá rộng rãi trong nhiều lĩnh vực, nhưng phần lớn sử dụng python để lập trình các ứng dụng cho web, kết nối các hệ thống cơ sở dữ liệu (database systems), đọc và ghi các tập tin (files), quản lý các cơ sở dữ liệu lớn (big data) và thực thi / vận hành các công thức toán học phức tạp (complex mathematics). Python luôn là một sự lựa chọn hoàn hảo để bắt đầu học lập trình vì các tính năng hữu ích mà nó mang lại.

Tại Sao chọn Python?

  • Cú pháp (syntax) của Python rất dễ hiểu cũng như có thể tìm lỗi (debug) một cách dễ dàng. Việc chỉnh sửa / hoàn thiện (maintain) mã nguồn tương đối dễ dàng
  • Python có thể chạy trên nhiều nên tảng (platforms), kiểu như ngôn ngữ nhúng (portable language).
  • Python cung cấp nhiều thư việc dựng sẵn (prebuilt libraries), điều này giúp cho việc lập trình dễ dàng hơn.
  • Python được phát triển theo cách mà nó có thể vận hành với những hệ thống có ít bộ nhớ.
  • Python cung cấp một trình tương tác (interactive shell) hữu ích giúp các lập trình viên kiểm tra mọi thứ trước khi triển khai thực tế lên máy chủ.
  • Python rất thân thiện với các cơ sở dữ liệu, backend và cung cấp các giao diện cơ sở dữ liệu cho các hệ thống DBMS thương mại.
  • Python hỗ trợ các ứng dụng GUI và có khá nhiều framework cho web, Ví dụ: tkmter, WXPython, Django

Các tính năng của Python

  • Học và chỉnh sửa python rất dễ dàng.
  • Python có thể thực thi trên nhiều nền tảng.
  • Các mô đun cấp thấp (Low-level modules) có thể được tích hợp bên trong trình thông dịch của Python.
  • Python cung cấp hỗ trợ và một cấu trúc lý tưởng cho các chương trình mã nguồn lớn (large code).
  • Tính năng tự động dọn dẹp các tệp rác.
  • Python cung cấp các phiên hỗ trợ cho việc kiểm tra và sửa lỗi.
  • High-level dynamic data types cung cấp và cũng như hỗ trợ các kiểu dữ liệu động.
  • Cho phép tích hợp với các ngôn ngữ lập trình Java, C++, C

PHP là gì?

Hypertext Pre-processor (siêu văn bản tiền xử lý) được viết tắt là PHP, là một ngôn ngữ mã nguồn mở. PHP có khả năng tạo ra các trang nội dung động (dynamic page content). Có thể tạo, mở, đọc, viết, xóa và đóng các tập tin trên máy chủ. PHP có thể lấy dữ liệu từ form và gửi hoặc nhận từ các cookies. PHP cũng rất thân thiện với các cơ sở dữ liệu và có thể thêm, xóa, xửa dữ liệu trong cơ sở dữ liệu. Nó cũng có thể được sử dụng để điều khiển quyền truy cập của người dùng và mã hóa dữ liệu và được sử dụng cho dân backend development.

Tại Sao chọn PHP?

  • PHP có thể chạy trên nhiều nền tảng như Windows, Unix, Linux, Mac OS X…
  • PHP cung cấp khả năng tương thích với nhiều máy chủ: Apache, IIS…
  • PHP là ngôn ngữ lập trình server (server-side) và cũng dễ học.
  • PHP hỗ trợ rất nhiều cơ sở dữ liệu.
  • Là mã nguồn mở và do đó có thể download miễn phí.

Các tính năng của PHP

  • Hỗ trợ nhiều CSDL: Oracle, MySQL…
  • Dễ viết mã hơn các ngôn ngữ kịch bản khác (scripting languages)
  • PHP thực sự hiệu quả khi so sánh với các ngôn ngữ kịch bản khác như: ASP, JSP
  • Mã nguồn mở và do đó có thể tải xuống và sử dụng miễn phí.
  • PHP có sẵn công cụ để báo cáo lỗi mã nguồn một cách hiệu quả.

So sánh hiệu xuất PHP và Python

Bây giờ chúng ta hãy tìm hiểu từng yếu tố trên và xem Python và PHP so sánh với nhau như thế nào.

Ease of Learning

Không nghi ngờ gì cả, học Python cực kỳ dễ dàng, là ngôn ngữ lập trình đa dụng (general-purpose programming language), và có thể tiếp cận rất nhanh. Trong thực tế, Python đơn giản tới mức được đưa vào các khóa học lập trình cho người mới bắt đầu để giảng dạy các nguyên tắc cơ bản của lập trình. Cấu trúc đơn giản và mã code dễ đọc là điểm mạnh của Python khi so sánh với các ngôn ngữ lập trình khác.

PHP, mặt khác, không hẳn là ngôn ngữ lập trình đa dụng, được thiết kế chủ hiếu cho các ứng dụng web nên chắc chắn là phức tạp hơn, và dành cho các chương trình độc lập (stand-alone programs). Như một kết quả tất yếu, việc học PHP sẽ tốn nhiều thời gian hơn so với Python.

Thời gian để học một ngôn ngữ lập trình luôn là một yếu tố quan trọng nhất trong việc chọn ngôn ngữ nào để làm việc. Đối với những người mới bắt đầu, Python luôn dễ dàng hơn. PHP, về mặt khác, có thể là một chút thử thách nhẹ cho các lập trình viên khi mới làm quen. PHP được thiết kế để tạo các trang cá nhân đơn giản, nhưng sau đó nó bắt đầu trở nên phức tạp hơn. Cộng đồng lập trình viên PHP đang cố gắng hết sức để cung cấp thật nhiều hỗ trợ cho những người mới. Tuy nhiên, như đã đề cập ở trên, Python vẫn là kẻ chiến thắng ở đây, với cấu trúc đơn giản và dễ tiếp cận, Python cực kỳ dễ học và dễ nắm bắt cho những người mới bắt đầu học lập trình.

Community Support

Python và PHP, cả hai đều có cộng đồng hỗ trợ hoàn hảo. PHP đã tồn tại trên thị trường trong khoảng một thời gian khá dài, đặc biệt là đối với việc phát triển các ứng dụng web. Kết quả là một cộng đồn hỗ trợ cực lớn luôn sẵn sàng cung cấp các giải pháp hỗ trợ cho công việc.

Python cũng tương tự với PHP. Có rất nhiều nhà phát triển Python trên thị trường nên có cộng đồng hỗ trợ cực kỳ lớn. Python và PHP ngang ngửa với nhau ở khía cạnh này, không ai trong cả hai là kẻ chiến thắng tuyệt đối.

Python trở nên phổ biến khi Google bắt đầu dùng nó cho các ứng dụng của mình mà điển hình như Youtube. Rất nhiều các công ty khởi nghiệp như Instagram, Pinterest và Reddit dùng các ứng dụng web dựa trên Python. Bên cạnh đó, phải lưu ý rằng mạng xã hội lớn nhất thế giới như Facebook đã xử dụng PHP làm công cụ viết mã nguồn server chủ chốt từ những giai đoạn đầu.

Documentation

Cả hai ngôn ngữ đều có tài liệu mở rộng hoàn chỉnh. Có vô số các websites, forums, các bài thảo luận cung cấp các bài hướng dẫn hoàn hảo cho việc phát triển các ứng dụng xử dụng Python và PHP. Nên tiêu chí này cũng giống như cộng đồng hỗ trợ, không ai là kẻ chiến thắng. Cả hai ngôn ngữ đều tốt như nhau về tính sẵn có của tài liệu.

Pricing

Python và PHP đều miễn phí và mã nguồn mở. Cả hai đều chiến thắng. Trong thực tế, việc chiến thắng của Python và PHP lại phụ thuộc vào các framework có trả phí hoặc không trả phí của chúng, điều sẽ không được đề cập trong bài viết này vì sự giới hạn của người viết bài :D.

Library Support

Hm, đây là một điểm mà Python đánh bại PHP một cách đáng kể. Python có hỗ trợ các thư viện được phát triển đặc biệt cho hầu hết các loại ứng dụng. PHP lại tỏ ra khá chậm chạm so với Python, tuy nhiên đổi lại, Packagist (PHP packages repository) lại là sương sống cực kỳ mạnh mẽ của PHP, là nơi cung cấp các gói phần mềm hỗ trợ cộng đồng rất đắc lực.

Vào khoảng thời gian gần đây, rất nhiều startups, và cả những tổ chức lớn đang phát triển các ứng dụng web máy học (Machine Learning). Python cung cấp nhiều thư viện máy học (Machine Learning libraries) hoàn hảo như TensorFlow, Keras, Theano, Scikit Learn… Những thư viện này nhanh, dễ dùng và quan trọng nhất, chung tích hợp cực tốt với các web framework. kết quả là, việc phát triển các ứng dụng tương tự dùng Python trở nên đơn giản hơn khi so sánh với các ngôn ngữ lập trình khác.

Speed

PHP phiên bản 5.x khá là chậm, mất nhiều thời gian để thực thi. Tuy nhiên, các phiên bản 7.x thực sự rất nhanh, nhanh hơn ba lần so với các chương trình chạy Python. Tốc độ thường xuyên là tiêu chí quan trọng của các chương trình phần mềm. Ví dụ, một hệ thống ngân hàng có khoảng 1 triệu lượt truy cập hằng ngày, chỉ cần tốc độ chậm hoặc nhanh một chút cũng đủ để ảnh hưởng tới hiệu suất của toàn bộ hệ thống. Do đó, nói về tốc độ, PHP là cái tên chiến thắng so với Python.

Tuy nhiên, cần lưu ý rằng đối với hầu hết các ứng dụng đơn giản, quy mô thấp nên độ trễ được nói đến ở đây là không đáng kể. Do đó, với những mục đích thiết thực, 10 mili giây cũng chả khác biệt mấy so với 30 mili giây.

Choice of Web Frameworks

Hầu hết các framework phổ biến của Python là Django, Flask, Pylons, Pyramid… Mặt khác đối với PHP thì là CodeIgniter (hoặc gọi tắt là CI), Zend, Laravel, Symfony…

Django: nhanh, tính năng mở rộng cao, bảo mật và dễ sử dụng. Đây là một framework mạnh mẽ và được sử dụng phổ biến bởi các ứng dụng lớn. Bên cạnh đó, CI và Laravel của PHP lại được sử dụng trên rất nhiều ứng dụng hiện nay.

Python và PHP đang có những vấn đề, và thế mạnh gần như ngang ngửa nhau xét trên khía cạnh framework, cả hai đều có những framework cực tốt, tốc độ cao, ổn định và cộng đồng rộng lớn luôn hỗ trợ trong mọi hoàn cảnh.Tuy nhiên, Django lại dễ học và dễ setup hơn so với phần còn lại.

Debugging

Python cung cấp cung cụ tìm lỗi được gọi là PDB (Python Debugger). PDB có sẵn tài liệu, rất dễ đọc và nắm bắt cho người mới bắt đầu. PHP, ở mặt khác, cung cấp gói XDebug để tìm lỗi nhanh và chính xác. Cả hai PDB và XDebug đều cung cấp các tính năng tìm các mã lỗi phổ biến như breakpoints, stacks, path mapping…

Python vs PHP Head to Head Comparison

Tham chiếu

Python

PHP

Ease of LearningDễ học, kể cả với người mới bắt đầuKhông phải là ngôn ngữ được phát triển để dùng cho nhiều mục đích, và cũng không dễ học như Python
Community SupportPython và PHP có cùng điểm chung ở đâyCộng đồng hỗ trợ cực lớn nhờ vào việc có mặt từ rất sớm
DocumentationTài liệu được cung cấp ở trên cả website chính thức cũng như ở các forum khác.PHP cũng giống Python ở điểm này
Library SupportPython có rất nhiều thư viện hỗ trợ đắc lực để phát triển phần mềmMặc dù PHP thiếu thư viện, nhưng bù lại, PHP có các gói hỗ trợ Packagist giúp giải quyết được vấn đề này
Database ConnectivityKết nối cực tốt với databaseCó thể kết nối hầu hết với các cơ sở dữ liệu hiện tại
SpeedPython nhanhPHP nhanh hơn gấp 3
FrameworksDjango, Flask, Pylons, Pyramid.Codeigniter, Zend, Laravel, Symfony.
DebuggingPDB (Python Debugger)XDebug package.

Tổng kết

Tổng kết tất cả, dựa trên hầu hết các tiêu chí, cả hai Python và PHP đều có nhiều điểm tương đồng nhau, đều sử dụng cho cả Front-end và Backend được. Về nhiều khía cạnh, Python có thể tốt hơn PHP, và Python cũng chiếm ưu thế nhiều hơn nữa. Đây là điều chúng tôi muốn gợi ý:

    • Nếu như bạn là một lập trình viên backend nhiều kinh nghiệm, hãy luôn gắn chặt mình với PHP.
    • Nếu bạn là một lập trình viên bình thường, bạn nên học Python và cơ hội kiếm công việc tốt vẫn sẽ dễ hơn
    • Nếu bạn là một lập trình viên mới vào nghề, người muốn học các ngôn ngữ lập trình Backend, hãy bắt đầu với Python và sắn tay áo lên để học Python framework ngay sau khi bạn làm chủ được Python.
    • Tại Nordic Coder đang có những khoá học về Python căn bản cho Data Analysis giúp các bạn có nhiều kiến thức về Python và tính ứng dụng của ngôn ngữ đó trong ngành lập trình hiện đại ngày nay.