Tài liệu cần tìm đọc thêm về Python

Trở về Mục lục cuốn sách

Như vậy từ đây ta sẽ đi tiếp ra sao? Có nhiều hướng theo đuổi nhằm mở rộng vốn kiến thức của bạn về Python nói riêng và khoa học máy tính nói chung.

Những ví dụ trong sách này được cố ý viết một cách đơn giản, nhưng có lẽ chúng không thể hiện được những tính năng lý thú nhất của Python. Sau đây là một vài phần mở rộng của Python cùng những gợi ý về dự án lập trình dùng đến chúng.

  • Lập trình GUI (giao diện đồ họa người dùng) cho phép viết chương trình sử dụng một môi trường cửa sổ để tương tác với người dùng và để hiển thị đồ họa.
    Gói đồ họa xuất hiện sớm nhất với Python là Tkinter, vốn dựa trên ngôn ngữ văn lệnh Tcl và Tk của Jon Ousterhout. Tkinter tồn tại dưới dạng kèm theo bản phân phối Python.
    Một nền tảng thông dụng khác là wxPython, vốn là một lớp véc-ni bằng Python lên trên wxWindows, một gói phần mềm C++ để dựng hệ thống cửa sổ bằng giao diện nguyên thủy trên nền Windows và Unix (kể cả Linux). Những khung cửa sổ và khiển tố của wxPython đều có xu hướng mang dáng vẻ lẫn thao tác “quen thuộc” hơn so với Tkinter và cũng dễ lập trình hơn một chút.
    Mọi hình thức lập trình GUI đều sẽ đưa bạn đến với lập trình hướng sự kiện, trong đó người dùng chứ không phải người lập trình mới có vai trò quyết định luồng thực thi. Phong cách lập trình này cần thời gian mới quen được, và đôi khi buộc bạn phải nghĩ lại toàn bộ cấu trúc của chương trình.
  • Lập trình mạng kết hợp Python với Internet. Chẳng hạn, bạn có thể lập chương trình khách trên mạng để mở và đọc mộ trang mạng từ xa một cách dễ dàng (gần) như việc bạn mở một tập tin trên đĩa. Cũng có những module Python cho phép bạn truy cập các tập tin qua ftp, và những module cho phép bạn gửi và nhận thư. Python cũng được sử dụng rộng rãi cho những chương trình chủ trên mạng để xử lý các biểu mẫu nhập dữ liệu.
  • Cơ sở dữ liệu có phần giống với những siêu tập tin trong đó dữ liệu được lưu trữ theo các giản đồ được định nghĩa trước, và những mối quan hệ giữa các đơn vị dữ liệu sẽ cho phép bạn truy cập đến dữ liệu này theo nhiều cách khác nhau. Python có một vài module cho phép người dùng kết nối đến các chương trình xử lý cơ sở dữ liệu (database engine), kể cả nguồn mở lẫn thương mại.
  • Lập trình tuyến (thread) cho phép bạn chạy nhiều tuyến thực thi trong cùng một chương trình. Nếu bạn đã từng trải nghiệm việc dùng trình duyệt mạng để cuộn đoạn đầu của một trang trong khi trình duyệt vẫn tiếp tục tải phần còn lại của trang đó, thì bạn đã hình dung được các tuyến có nhiệm vụ gì rồi.
  • Khi tốc độ là tối quan trọng, các phần mở rộng của Python có thể được viết bằng một ngôn ngữ biên dịch như C hay C++. Những phần mở rộng như vậy hình thành nên cơ sở cho nhiều module trong thư viện Python. Cơ chế để liên kết các hàm và dữ liệu thì có phần phức tạp. SWIG (Simplified Wrapper and Interface Generator) là một công cụ để giúp quá trình này đơn giản đi rất nhiều.

Những trang mạng và sách về Python

Sau đây là đề xuất của các tác giả về những nguồn tài liệu Python trên mạng:

  • Trang chủ của Python ở www.python.org là nơi bắt đầu tìm kiếm bất kì nguồn tài liệu nào có liên quan đến Python. Bạn sẽ tìm thấy trợ giúp, quyển tra cứu, liên kết đến những trang khác và hộp thư dành cho nhóm yêu thích (SIG, Special Interest Group) Python mà bạn có thể tham gia.
  • Dự án “Open Book Project” www.openbookproject.net không chỉ chứa nội dung trực tuyến của cuốn sách này mà còn những cuốn sách tương tự do Allen Downey viết cho Java và C++. Ngoài ra còn có cuốn Lessons in Electric Circuits do Tony R. Kuphaldt viết, Getting down with …, một loạt các bài hướng dẫn về  những chủ đề khoa học máy tính do các em học sinh trung học viết, Python for Fun, tập hợp các nghiên cứu cụ thể có dùng Python do Chris Meyers soạn ra, và The Linux Cookbook do Michael Stultz viết, gồm 300 trang mẹo vặt và kĩ thuật sử dụng.
  • Sau cùng, nếu bạn vào Google để tìm chuỗi “python -snake -monty” bạn sẽ được khoảng 750.000 kết quả.

Và sau đây là một số cuốn sách có thêm tư liệu về ngôn ngữ Python:

  • Core Python Programming do Wesley Chun viết, là cuốn sách đồ sộ với khoảng 750 trang. Phần đầu cuốn sách trình bày những đặc điểm cơ bản của ngôn ngữ Python. Phần thứ hai dẫn dắt những bước đầu vào các chủ đề nâng cao bao gồm nhiều chủ đề đã nêu ở mục trước.
  • Python Essential Reference do David M. Beazley viết, là một cuốn sách nhỏ, nhưng chứa đầy thông tin về bản thân ngô ngữ và những module trong thư viện chuẩn. Nó cũng có bảng chỉ mục rất kĩ lưỡng.
  • Python Pocket Reference do Mark Lutz viết thực sự đặt vừa trong túi quần áo bạn. Mặc dù không kĩ như cuốn Python Essential Reference, nó vẫn là một nguồn tiện dụng để tra khảo những hàm và module thông thường. Mark Lutz cũng là tác giả cuốn Programming Python, một trong những cuốn sách xuất hiện sớm nhất (đồng thời lớn nhất) về Python và không dành cho những người mới lập trình. Cuốn sách sau đó mà ông viết, Learning Python, thì nhỏ hơn và dễ đọc hơn.
  • Python Programming on Win32 do Mark Hammond và Andy Robinson cùng viết là một cuốn mà bất cứ ai dùng Python chuyên tâm phát triển những ứng dụng Windows đều cần phải có. Ngoài những chủ đề khác, cuốn sách trình bày sự kết hợp giữa Python và COM, xây dựng một chương trình ứng dụng nhỏ bằng wxPython, và thậm chí còn dùng Python để viết những đoạn lệnh điều khiển ứng dụng Windows như Word và Excel.

Những cuốn sách khoa học máy tính chung nên đọc

Sau đây là những tài liệu nên đọc thêm, trong đó nhiều cuốn mà những tác giả cũng ưa thích. Những cuốn này trình bày các kinh nghiệm hữu ích trong lập trình và khoa học máy tính nói chung.

  • The Practice of Programming do Kernighan và Pike cùng viết không chỉ trình bày cách thiết kế và viết mã lệnh cho thuật toán và cấu trúc dữ liệu, mà còn về gỡ lỗi, kiểm tra và cải tiến hiệu năng của chương trình. Những ví dụ đa phần là C++ và Java, mà không có Python.
  • The Elements of Java Style do Al Vermeulen biên tập là một cuốn sách nhỏ khác có trình bày đến một số khía cạnh tinh về về quy tắc hay trong lập trình, gồm có đặt tên biến thích hợp, viết chú thích, và thậm chí cả khoảng trắng và thụt đầu dòng (ở chừng mực nào đó, những thứ này đều miễn bàn trong Python). Cuốn sách cũng trình bày về lập trình theo hợp đồng (programming by contract), dùng các assertion để bắt lỗi qua việc kiểm tra các điều kiện tiền đề và điều kiện cuối, cũng như cách lập trình đúng đắn với thread và đồng nhất chúng.
  • Programming Pearls do Jon Bentley viết là một cuốn sách kinh điển. Cuốn sách gồm những nghiên cứu cụ thể ban đầu xuất hiện trong mục báo của bản thân tác giả đăng trên tờ Communications of the ACM. Những nghiên cứu này đề cập đến những đánh đổi trong lập trình và giải thích tại sao việc viết chương trình dựa trên ý tưởng đầu tiên của bạn đều thật sự không hay. Cuốn sách này (1986) hơi cũ hơn những cuốn trên,  vì vậy các ví dụ được viết theo ngôn ngữ lập trình “cổ” hơn. Có nhiều bài toán để giải, một số thì có lời giải, một số có gợi ý. Cuốn sách này rất phổ dụng và có cả tập 2 đi theo.
  • The New Turing Omnibus viết bởi A.K Dewdney dẫn dắt người đọc lướt qua 66 chủ đề khoa học máy tính, từ lập trình song song đến virut máy tính, từ phương pháp quét CAT đến thuật toán gien. Tất cả những chủ đề đều ngắn gọn và vui nhộn. Một cuốn khác của Dewdney viết trước đó, The Armchair Universe, là một tập hợp những bài đăng trên mục Computer Recreations của tờ Scientific American. Cả hai cuốn sách đều là nguồn cho ý tưởng dồi dào để thực hiện các dự án lập trình.
  • Turtles, Termites and Traffic Jams, tác giả Mitchel Resnick, đề cập đến sức mạnh của phân quyền và bằng cách nào mà những động thái phức tạp có thể nảy sinh từ những hoạt động đơn giản có trật tự trong tập hợp nhiều tác tử. Cuốn sách giới thiệu ngôn ngữ StarLogo, theo đó người dùng có thể viết chương trình cho những tác tử này. Kết quả chạy chương trình biểu diễn động thái tổng hợp phức tạp, vốn thường phản trực giác. Nhiều chương trình trong sách được phát triển bởi các học sinh trung học cơ sở và trung học phổ thông. Những chương trình tương tự cũng có thể được viết bằng Python cùng đồ họa đơn giản và các tuyến.
  • Gödel, Escher and Bach là cuốn sách do Douglas Hofstadter viết nên. Nói đơn giản, nếu bạn thấy được sự kì diệu trong đệ quy thì bạn cũng thấy nó trong cuốn sách được bán chạy nhất này. Một trong số các chủ đề viết bởi Hofstadter là những “vòng kì lạ” ở đó các dạng mẫu hình nở ra và bùng phát đến khi chúng hợp lại với nhau. Quan điểm của Hofstadter là những “vòng kì lạ” như vậy đóng vai trò thiết yếu của thứ mà phân biệt giữa động với tĩnh. Ông đã biểu diễn cho thấy những dạng mẫu như thế trong âm nhạc của Bach, tác phẩm tranh của Escher và định lý  Gödel về tính không trọn vẹn (incompleteness theorem).

1 Phản hồi

Filed under Think Python

One response to “Tài liệu cần tìm đọc thêm về Python

  1. Pingback: Cách nghĩ như nhà khoa học máy tính | Blog của Chiến

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s