GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH PYTHON

Python là một ngôn ngữ lập trình đa năng bậc cao được diễn giải. Được ra mắt công chúng lần đầu tiên vào năm 1991 do Guido Van Rossum tạo ra. Triết lí thiết kế của Python là nhấn mạnh khả năng đọc mã với việc sử dụng chú ý của thụt lề đáng kể. Cấu trúc ngôn ngữ của nó cũng như cách tiêp cận hướng đối tượng của nó nhằm tạo mục đích giúp các lập trình viên viết mã rõ ràng, hợp lí cho các quy mô nhỏ và các quy mô lớn.

Chính vì mục đích đó, Python có những ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python có hình thức sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python còn cho phép người dùng viết mã lệnh với số lần gõ phím tối thiểu.

Python được gõ tự động và thu gom rác. Nó hỗ trợ nhiều mô hình lập trình, bao gồm cấu trúc đặc biệt là thủ tục, lập trình hướng đối tượng và chức năng. Python được mô tả là một ngôn ngữ “bao gồm pin” do thư viện tiêu chuẩn toàn diện của nó.

Python luôn được xếp hạng là một trong những ngôn ngữ lập trình phổ biến nhất trong những thời gian gần đây.

Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy nó tương tự như PerlRubySchemeSmalltalk, và Tcl. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.

  1. LỊCH SỬ CỦA PYTHON

Sự phát triển Python đến nay có thể chia làm các giai đoạn:

  • Python 1: bao gồm các bản phát hành 1.x. Giai đoạn này, kéo dài từ đầu đến cuối thập niên 1990. Từ năm 1990 đến 1995, Guido làm việc tại CWI(Centrum voor Wiskunde en Informatica – Trung tâm Toán-Tin học tại AmsterdamHà Lan). Vì vậy, các phiên bản Python đầu tiên đều do CWI phát hành. Phiên bản cuối cùng phát hành tại CWI là 1.2.
    • Vào năm 1995, Guido chuyển sang CNRI(Corporation for National Research Initiatives) ở RestonVirginia. Tại đây, ông phát hành một số phiên bản khác. Python 1.6 là phiên bản cuối cùng phát hành tại CNRI.
    • Sau bản phát hành 1.6, Guido rời bỏ CNRI để làm việc với các lập trình viên chuyên viết phần mềm thương mại. Tại đây, ông có ý tưởng sử dụng Python với các phần mềm tuân theo chuẩn GPL. Sau đó, CNRI và FSF(Free Software Foundation – Tổ chức phần mềm tự do) đã cùng nhau hợp tác để làm bản quyền Python phù hợp với GPL. Cùng năm đó, Guido được nhận Giải thưởng FSF vì Sự phát triển Phần mềm tự do (Award for the Advancement of Free Software).
    • Phiên bản 1.6.1 ra đời sau đó là phiên bản đầu tiên tuân theo bản quyền GPL. Tuy nhiên, bản này hoàn toàn giống bản 1.6, trừ một số sửa lỗi cần thiết.
  • Python 2: vào năm 2000, Guido và nhóm phát triển Python dời đến comvà thành lập BeOpen PythonLabs team. Phiên bản Python 2.0 được phát hành tại đây. Sau khi phát hành Python 2.0, Guido và các thành viên PythonLabs gia nhập Digital Creations.
    • Python 2.1 ra đời kế thừa từ Python 1.6.1 và Python 2.0. Bản quyền của phiên bản này được đổi thành Python Software Foundation License. Từ thời điểm này trở đi, Python thuộc sở hữu của Python Software Foundation(PSF), một tổ chức phi lợi nhuận được thành lập theo mẫu Apache Software Foundation.
  • Python 3, còn gọi là Python 3000 hoặc Py3K: Dòng 3.x sẽ không hoàn toàn tương thích với dòng 2.x, tuy vậy có công cụ hỗ trợ chuyển đổi từ các phiên bản 2.x sang 3.x.
  1. ĐẶC ĐIỂM

Triết lý căn bản của ngôn ngữ Python được trình bày trong tài liệu The Zen ò Python (PEP 20), có dạng thơ TT, tóm gọn như sau:

 

  • Đẹp đẽ tốt hơn xấu xí
  • Minh bạch tốt hơn che đậy
  • Đơn giản tốt hơn phức tạp
  • Phức tạp tốt hơn rắc rối
  • Dễ đọc

a)    Dễ học, dễ đọc

Python được thiết kế để trở thành một ngôn ngữ dễ học, mã nguồn dễ đọc, bố cục trực quan, dễ hiểu, thể hiện qua các điểm sau:

b)    Từ khóa

  • Python tăng cường sử dụng từ khóa tiếng Anh hạn chế các ký hiệu và cấu trúc cú pháp so với các ngôn ngữ khác.
  • Python là một ngôn ngữ phân biệt kiểu chữ HOA, chữ thường.
  • Các từ khóa của Python đều ở dạng chữ thường.

c)     Khối lệnh

Python có một cách rất đặc biệt để tạo khối lệnh, đó là thụt các câu lệnh trong khối vào sâu hơn (về bên phải) so với các câu lệnh của khối lệnh cha chứa nó. Ta có thể sử dụng dấu tab hoặc khoảng trống để thụt các câu lệnh vào.

d)    Các bản hiện thực

Python được viết từ những ngôn ngữ khác, tạo ra những bản hiện thực khác nhau. Bản hiện thực Python chính, còn gọi là CPython, được viết bằng C, và được phân phối kèm một thư viện chuẩn lớn được viết hỗn hợp bằng C và Python. CPython có thể chạy trên nhiều nền và khả chuyển trên nhiều nền khác

Ngoài CPython, còn có hai hiện thực Python khác: Jython cho môi trường Java và IronPython cho môi trường .NET và Mono.

e)     Khả năng mở rộng

Python có thể được mở rộng: nếu biết sử dụng C, ta có thể dễ dàng viết và tích hợp vào Python nhiều hàm tùy theo nhu cầu. Các hàm này sẽ trở thành hàm xây dựng sẵn (built-in) của Python. Ta cũng có thể mở rộng chức năng của trình thông dịch, hoặc liên kết các chương trình Python với các thư viện chỉ ở dạng nhị phân (như các thư viện đồ họa do nhà sản xuất thiết bị cung cấp). Hơn thế nữa, ta cũng có thể liên kết trình thông dịch của Python với các ứng dụng viết từ C và sử dụng nó như là một mở rộng hoặc một ngôn ngữ dòng lệnh phụ trợ cho ứng dụng đó.

f)     Trình thông dịch

Python là một ngôn ngữ lập trình dạng thông dịch, do đó có ưu điểm tiết kiệm thời gian phát triển ứng dụng vì không cần phải thực hiện biên dịch và liên kết. Trình thông dịch có thể được sử dụng để chạy file script, hoặc cũng có thể được sử dụng theo cách tương tác. Ở chế độ tương tác, trình thông dịch Python tương tự shell của các hệ điều hành họ Unix, tại đó, ta có thể nhập vào từng biểu thức rồi gõ Enter, và kết quả thực thi sẽ được hiển thị ngay lập tức. Đặc điểm này rất hữu ích cho người mới học, giúp họ nghiên cứu tính năng của ngôn ngữ; hoặc để các lập trình viên chạy thử mã lệnh trong suốt quá trình phát triển phần mềm. Ngoài ra, cũng có thể tận dụng đặc điểm này để thực hiện các phép tính như với máy tính bỏ túi.

g)    Lệnh và cấu trúc điều khiển

Mỗi câu lệnh trong Python nằm trên một dòng mã nguồn. Ta không cần phải kết thúc câu lệnh bằng bất kì ký tự gì. Cũng như các ngôn ngữ khác, Python cũng có các cấu trúc điều khiển. Như là Cấu trúc rẽ nhánh: if – else hoặc if – elif – else, dùng để thực thi có điều kiện một khối mã cụ thể. Cấu trúc lặp, bao gồm: Lệnh while: chạy một khối mã cụ thể cho đến khi điều kiện lặp có giá trị false. Vòng lặp for: lặp qua từng phần tử của một dãy, mỗi phần tử sẽ được đưa vào biến cục bộ để sử dụng với khối mã trong vòng lặp. Python cũng có từ khóa class dùng để khai báo lớp (sử dụng trong lập trình hướng đối tượng) và lệnh def dùng để định nghĩa hàm.

h)    Hệ thống kiểu dữ liệu

Python sử dụng hệ thống kiểu duck typing, còn gọi là latent typing (tự động xác định kiểu). Có nghĩa là, Python không kiểm tra các ràng buộc về kiểu dữ liệu tại thời điểm dịch, mà là tại thời điểm thực thi. Khi thực thi, nếu một thao tác trên một đối tượng bị thất bại, thì có nghĩa là đối tượng đó không sử dụng một kiểu thích hợp.

Python cũng là một ngôn ngữ định kiểu mạnh. Nó cấm mọi thao tác không hợp lệ, ví dụ cộng một con số vào chuỗi ký tự.

Sử dụng Python, ta không cần phải khai báo biến. Biến được xem là đã khai báo nếu nó được gán một giá trị lần đầu tiên. Căn cứ vào mỗi lần gán, Python sẽ tự động xác định kiểu dữ liệu của biến. Ngoài ra, Python còn có nhiều kiểu dữ liệu khác nữa.

i)      Module

Python cho phép chia chương trình thành các module để có thể sử dụng lại trong các chương trình khác. Nó cũng cung cấp sẵn một tập hợp các modules chuẩn mà lập trình viên có thể sử dụng lại trong chương trình của họ. Các module này cung cấp nhiều chức năng hữu ích, như các hàm truy xuất tập tin, các lời gọi hệ thống, trợ giúp lập trình mạng (socket),…

j)     Đa năng

Python là một ngôn ngữ lập trình đơn giản nhưng rất hiệu quả.

  • Trong Python Sell, Python hỗ trợ các chương trình lớn hơn và cung cấp nhiều cấu trúc hơn.
  • So với một số ngôn ngữ khác, Python cung cấp nhiều cơ chế kiểm tra lỗi hơn. Nó cũng có sẵn nhiều kiểu dữ liệucấp cao, ví dụ như các mảng (array) linh hoạt và từ điển (dictionary) mà ta sẽ phải mất nhiều thời gian nếu viết bằng những ngôn ngữ lập trình khác.

Python là một ngôn ngữ lập trình cấp cao có thể đáp ứng phần lớn yêu cầu của lập trình viên:

k)    Multiple paradigms (đa biến hóa)

Python là một ngôn ngữ đa biến hóa (multiple paradigms). Có nghĩa là, thay vì ép buộc mọi người phải sử dụng duy nhất một phương pháp lập trình, Python lại cho phép sử dụng nhiều phương pháp lập trình khác nhau: hướng đối tượng, có cấu trúc, chức năng, hoặc chỉ hướng đến một khía cạnh. Python kiểu kiểu động và sử dụng bộ thu gom rác để quản lý bộ nhớ. Một đặc điểm quan trọng nữa của Python là giải pháp tên động, kết nối tên biến và tên phương thức lại với nhau trong suốt thực thi của chương trình.

l)      Sự tương đương giữa True và một giá trị khác 0

Bất kì một giá trị khác 0 nào cũng tương đương với True và ngược lại, một giá trị 0 tương đương với Flase.

  1. TỐC ĐỘ THỰC HIỆN

Là một ngôn ngữ thông dịch, Python có tốc độ thực hiện chậm hơn nhiều lần so với các ngôn ngữ biên dịch như FortranC,… Trong số các ngôn ngữ thông dịch, Python được đánh giá nhanh hơn Ruby và Tcl, nhưng chậm hơn Lua.

  1. CÁC ĐIỂM MỚI TRONG PYTHON 3 VÀ PHIÊN BẢN 3.9

a) Python chuyển sang chu kỳ phát hành hàng năm

Cho đến thời điểm này, Python được phát triển và phát hành theo chu kỳ 18 tháng. PEP 602 đã đề xuất rằng nhóm phát triển Python nên áp dụng chu kỳ phát hành hàng năm và đề xuất đó đã được chấp nhận.

Chu kỳ phát hành hàng năm có nghĩa là ít tính năng hơn cho mỗi bản phát hành, nhưng cũng có nghĩa là việc kiểm tra tính năng sẽ được phản hồi nhanh hơn, ít thay đổi có khả năng phá vỡ hơn cho mỗi bản phát hành, do đó, có nhiều động lực hơn cho người dùng và các trình quản lý bản phân phối Linux nâng cấp Python thường xuyên hơn. Điều đó cũng có nghĩa là các tính năng mới được đề xuất muộn trong chu kỳ phát triển sẽ không mất nhiều thời gian để đưa vào bản phát hành mới.

b)   Python trở nên nhanh hơn theo mặc định

Mọi bản sửa đổi của Python đều được cải thiện hiệu suất so với phiên bản trước. Python 3.9 có hai cải tiến lớn giúp tăng hiệu suất mà không yêu cầu bất kỳ thay đổi nào đối với code hiện có.

Cải tiến đầu tiên liên quan đến việc sử dụng nhiều hơn giao thức vectorcall được giới thiệu trong Python 3.8. vectorcall làm cho nhiều quá trình gọi hàm phổ biến nhanh hơn bằng cách giảm thiểu hoặc loại bỏ các đối tượng tạm thời được tạo cho việc gọi.

Trong Python 3.9, một số tích hợp sẵn của Python – range, tuple, set, frozenset, list, dict – sử dụng vectorcall nội bộ để tăng tốc độ thực thi.

Công cụ nâng cao hiệu suất lớn thứ hai là trình phân tích mã nguồn Python hiệu quả hơn. Trình phân tích cú pháp mới cho CPython runtime không được thiết kế để giải quyết các vấn đề về hiệu suất mà là để xử lý những mâu thuẫn nội bộ trong trình phân tích cú pháp ban đầu. Tuy nhiên, một lợi ích quan trọng khác là phân tích cú pháp nhanh hơn, đặc biệt là đối với khối lượng lớn code.

c)     Các tính năng mới cho từ điển và chuỗi Python

Python giúp dễ dàng thao tác với các kiểu dữ liệu phổ biến và Python 3.9 mở rộng sự dễ dàng này với những tính năng mới cho string và dictionary. Đối với string, có nhiều phương pháp mới để loại bỏ tiền tố và hậu tố, những hoạt động từ lâu đòi hỏi nhiều thao tác thủ công để thực hiện. Đối với dictionary, hiện nay có các toán tử liên hợp, một để hợp nhất hai từ điển thành một từ điển mới và một để cập nhật nội dung của dictionary này với dictionary khác.

d)      Decorator nới lỏng một số hạn chế

Trước đây, Decorator chỉ có thể bao gồm ký hiệu @, tên (ví dụ: func) hoặc tên có dấu chấm (func.method) và (tùy chọn) một lệnh gọi duy nhất (func.method (arg1, arg2)). Với Python 3.9, Decorator hiện có thể bao gồm bất kỳ biểu thức hợp lệ nào.

Một cách lâu đời để khắc phục hạn chế này là tạo một hàm hoặc biểu thức lambda, sẽ thay thế cho biểu thức phức tạp hơn khi được sử dụng làm Decorator. Bây giờ bất kỳ biểu thức nào cũng sẽ thực hiện được, miễn là nó mang lại thứ gì đó có thể hoạt động như một Decorator.

  1. ỨNG DỤNG THỰC TẾ CỦA PYTHON

a) Lập trình ứng dụng web (Web development)

Python có thể được dử dụng để tạo web app có khả năng mở rộng (scalable) được bằng cách sử dụng framework và CMS (Hệ thống quản trị nội dung) được tích hợp trong Python. Vài nền tảng phổ biến để tạo web app là:  Django, Flask, Pyramid, Plone, Django CMS. Các trang như Mozilla, Reddit, Instagram và PBS đều được viết bằng ngôn ngữ này.

b) Ngôn ngữ dễ học để khởi đầu đào tạo lập trình

Python được nhiều công ty, trường học sử dụng để dạy lập trình cho nhiều đối tượng lần đầu học lập trình. Bên cạnh những tính năng và khả năng tuyệt vời thì cú pháp đơn giản và dễ sử dụng của nó là lý do chính cho việc này.

c)     Khoa học và Số liệu ứng dụng

Python đang trở thành đối tượng ưa thích của nhiều nhà khoa học dữ liệu chỉ vì bộ sưu tập thư viện của nó được thiết kế để phân tích thống kê và phân tích số liệu:

  • SciPy – Một bộ sưu tập các gói cho toán học, khoa học và kỹ thuật.
  • Pandas – Một thư viện phân tích dữ liệu và mô hình.
  • IPython – Một trình bao mạnh mẽ để dễ dàng chỉnh sửa và ghi lại các phiên làm việc. Nó cũng hỗ trợ trực quan hóa và tính toán song song.
  • Ngoài ra, NumPy cho phép người lập trình xử lý các phép tính số phức tạp.

Có nhiều thư viện trong Python cho khoa học và tính toán số liệu, như SciPy và NumPy, được sử dụng cho những mục đích chung chung trong tính toán. Và, có những thư viện cụ thể như: EarthPy cho khoa học trái đất, AstroPy cho Thiên văn học,… Ngoài ra, nó còn được sử dụng nhiều trong machine learning, khai thác dữ liệu và deep learning.

d)  Phân tích dữ liệu (Data Analytics)

Khi nói đến khoa học dữ liệu, thống kê, phân tích, Machine Learning, Python là một trong những ngôn ngữ phù hợp nhất cho yêu cầu cũng như mục tiêu trong việc phân tích dữ liệu. Có một sự cạnh tranh không hề dễ dàng giữa Python với R. R là một ngôn ngữ lập trình thống kê, rất phù hợp cho những mục đích thống kê dữ liệu và các mục đích liên quan khác.

Nhưng python là ngôn ngữ lập trình mục đích chung không chỉ được sử dụng cho lập trình thống kê, mà còn rất phù hợp để xây dựng trò chơi, trang web, ứng dụng kinh doanh và nhiều hơn nữa. Chưa kể ngôn ngữ lập trình này “gần” với ngôn ngữ tự nhiên, vì vậy nó dễ dàng để những người chưa có kiến thức về lập trình cũng dễ dàng tiếp cận học tập.

e)  Phát triển ERP

Python đang được sử dụng trong việc phát triển phần mềm cho giải pháp cấp doanh nghiệp. Đã có nhiều ERP phổ biến như Odoo & Tryton tồn tại, tạo sức mạnh cho các doanh nghiệp từ nhỏ đến lớn quản lý toàn bộ hoạt động và hàng tồn kho của họ.

f)     Phát triển trò chơi

Hoàn toàn có thể phát triển trò chơi bằng python mặc dù hầu hết các lập trình viên game sử dụng  framework được ưa thích nhất để phát triển trò chơi là Unity. Nó có framework như PyGame, PyKyra để phát triển trò chơi với Python. Bạn cũng có được nhiều thư viện truy xuất 3D để phát triển trò chơi 3D.

  1. THƯ VIỆN

Thư viện tiêu chuẩn lớn của Python , thường được trích dẫn là một trong những thế mạnh lớn nhất của nó, cung cấp các công cụ phù hợp với nhiều nhiệm vụ. Đối với các ứng dụng truy cập Internet, nhiều định dạng và giao thức tiêu chuẩn như MIME và HTTP được hỗ trợ. Nó bao gồm các mô-đun để tạo giao diện người dùng đồ họa , kết nối với cơ sở dữ liệu quan hệ , tạo số giả, số học với số thập phân chính xác tùy ý, thao tác biểu thức chính quy và kiểm tra đơn vị.

Một số phần của thư viện tiêu chuẩn được bao phủ bởi các thông số kỹ thuật (ví dụ: triển khai Giao diện Cổng Máy chủ Web (WSGI) tuân theo PEP 333), nhưng hầu hết các mô-đun đều không. Chúng được chỉ định bởi mã, tài liệu nội bộ và bộ kiểm tra. Tuy nhiên, vì hầu hết các thư viện tiêu chuẩn là mã Python đa nền tảng, chỉ có một vài mô-đun cần thay đổi hoặc viết lại để triển khai biến thể wsgiref

Tính đến tháng 3 năm 2021, Python Package Index (PyPI), kho lưu trữ chính thức cho phần mềm Python của bên thứ ba, chứa hơn 290.000 gói với một loạt các chức năng, bao gồm:

  1. MÔI TRƯỜNG PHÁT TRIỂN

Hầu hết các triển khai Python (bao gồm CPython) bao gồm một vòng lặp đọc-eval-in (REPL), cho phép chúng hoạt động như một trình thông dịch dòng lệnh mà người dùng nhập các câu lệnh tuần tự và nhận kết quả ngay lập tức.

Các vỏ khác, bao gồm IDLE và IPython, thêm các khả năng khác như tự động hoàn thành được cải thiện, lưu giữ trạng thái phiên và tô sáng cú pháp.

Cũng như môi trường phát triển tích hợp máy tính để bàn tiêu chuẩn , có IDEs dựa trên trình duyệt Web; SageMath (dành cho việc phát triển các chương trình Python liên quan đến khoa học và toán học); PythonAnywhere, một môi trường lưu trữ và IDE dựa trên trình duyệt; và Canopy IDE, một IDE Python thương mại nhấn mạnh tính toán khoa học.

8. BIÊN DỊCH CHÉO SANG CÁC NGÔN NGỮ KHÁC

Có một số trình biên dịch cho các ngôn ngữ đối tượng cấp cao, với Python không hạn chế, một tập hợp con bị hạn chế của Python hoặc một ngôn ngữ tương tự như Python làm ngôn ngữ nguồn:

  • Cythonbiên dịch (một tập hợp của) Python 2.7 đến C (trong khi mã kết quả cũng có thể sử dụng được với Python 3 và cũng có thể sử dụng được, ví dụ: C++).
  • Nuitkabiên dịch Python thành C++.
  • Pythran biên dịch một tập hợp con của Python 3 đến C++.
  • Pyrexvà Shed Skin biên dịch lần lượt cho C và C++.
  • Grumpy của Google chuyểnPython 2 sang Go.
  • IronPythoncho phép chạy các chương trình Python 2.7 trên .NET Common Language Runtime.
  • Jythonbiên dịch Python 2.7 sang Java bytecode, cho phép sử dụng các thư viện Java từ một chương trình Python.
  • MyHDLlà một ngôn ngữ mô tả phần cứng dựa trên Python (HDL), chuyển đổi mã MyHDL thành mã Verilog hoặc VHDL.
  • Numbasử dụng LLVM để biên dịch một tập con Python thành mã máy.
  • Brython, Transcrypt và Pyjs biên dịch Python thành JavaScript.
  • RPython cóthể được biên dịch thành Cvà được sử dụng để xây dựng trình thông dịch PyPy của Python.

9.     NGUỒN

–        “Python cho trí tuệ nhân tạo”.

Write a comment