A: (19/07/2019) ROMAIN MONDON-CANCEL, BIẾT CHÚT ÍT VỀ LẬP TRÌNH PYTHON.
Học lập trình chắc hẳn là thao tác trên máy vi tính mà ít tốn tài nguyên (resources) nhất (trừ vài trường hợp đặc biệt). Nếu máy tính của bạn đủ mạnh để chạy một trình duyệt web (ví dụ, để truy cập Quora), vậy tức là nó còn đủ mạnh để thực thi (execute) code nữa, chứ không chỉ là học lập trình không thôi đâu.
Giờ, phần còn lại của câu hỏi sẽ hóc búa hơn nhiều đây: bắt đầu từ ngôn ngữ nào?
~~~~~~~~~~~~~~~~~~
Chắc chắn là không có câu trả lời chung cho câu hỏi này rồi. Tuy nhiên, có ba (nhóm) ngôn ngữ tôi thấy khá thú vị để tìm hiểu, tùy theo mục đích mà bạn nhắm tới:
_ Nếu mục tiêu là để hiểu thêm về cách vận hành của máy tính, biết càng nhiều càng tốt về khoa học thông tin, vậy thì một lúc nào đó bạn sẽ phải nghiên cứu đến ngôn ngữ lập trình bậc thấp. Lời khuyên của tôi là bắt đầu với C/C++. Có lẽ đây là con đường rắc rối nhất và dài đến phát chán để học lập trình, nhưng chúng là những ngôn ngữ xây dựng nền tảng vững chắc nhất.
_ Nếu bạn định hướng lập trình web, chẹp, thế thì có quá chừng khả năng luôn đấy. Nhưng có ba ngôn ngữ cơ sở bạn sẽ cần phải nắm (ít nhất là với thời đại bây giờ): HTML, CSS và JavaScript. Hiện nay có khá là nhiều thứ (T/n: framework?) được xây dựng trên cơ sở của các ngôn ngữ này, cho phép lập trình một trang web mà không cần phải đụng đến nhiều code; nhưng về cơ bản, vẫn là những cái mà trình duyệt trên máy bạn hiển thị, vậy đó, cũng đáng để tìm hiểu chứ, kể cả nếu sau này bạn có hứng thú muốn đổi sang framework khác.
_ Nếu bạn muốn học để hiểu cách hoạt động của việc lập trình, hoặc muốn viết các đoạn mã (script) tự động hóa các nhiệm vụ (task) nhất định, mà không nhất thiết phải biến việc lập trình thành cái nghề, chỉ muốn sử dụng như công cụ hỗ trợ cho công việc chính khác, tôi đề xuất Python. Đó là một ngôn ngữ vừa phong phú, lại vừa dễ học, dễ viết, và cực kỳ lý tưởng cho việc giải quyết các vấn đề nhỏ lẻ có liên quan đến lập trình.
Có thêm hàng tá những ngôn ngữ khác cũng đáng liệt kê. Ví dụ, dùng Rust sẽ dạy bạn cách viết robust code, Haskell hay Clojure sẽ dùng trong lập trình hàm (functional programming), Java sẽ giúp bạn lập trình hướng đối tượng (object-oriented programming) cho những dự án cỡ bự, dùng Swift lập trình chuyên cho hệ điều hành iOS, Julia sẽ cho phép bạn biểu diễn các phép tính trong tính toán khoa học, với ngôn ngữ Go sẽ nhanh chóng viết được các ứng dụng server-side, SQL dùng để tạo truy vấn (queries) trên cơ sở dữ liệu (databases),…
~~~~~~~~~~~~~~~~~~
EDIT: Tôi quên mất phần câu hỏi “nên học lập trình ở đâu”. Phần trả lời này chắc sẽ là phần quan trọng nhất trong ba phần đấy. Có nhiều nguồn tài nguyên để học lập trình online đến nỗi tôi khó mà xem qua hết. Trong mọi trường hợp, hơn cả câu trả lời này, Google đương nhiên sẽ là người bạn tốt nhất của bạn.
_ Ở trên tôi có nhắc đến C/C++, cách đây khá lâu tôi bắt đầu quá trình tự học những ngôn ngữ này trên một trang web có tên Zero, nay là OpenClassrooms. Trong phần trả lời của câu hỏi Quora này cũng có nhiều nguồn tài nguyên: https://www.quora.com/How-can-I-learn-C-and-C++
_ Về HTML/CSS/JavaScript, vài năm trước tôi tình cờ tìm thấy trang FreeCodeCamp, họ có hẳn một khóa huấn luyện (training) từ đầu đến cuối để trở thành một web developer. Trang web này bao gồm rất nhiều thứ.
_ Về Python, mặc dù đây là ngôn ngữ lập trình tôi sử dụng giỏi nhất, nhưng tôi theo học lớp bài bản chuyên nghiệp, thế nên sẽ rất khó để đưa ra lời khuyên rằng nên học khóa học nào trong số các khóa học ngoài kia. Theo như tôi biết, trang Learn Python khá là ổn.
~~~~~~~~~~~~~~~~~~
Ngoài ra, về cơ bản thì, những nguồn tài liệu và công cụ này sẽ đơn giản hóa cuộc đời làm dev của bạn đi rất nhiều:
_ StackOverflow, StackOverflow, StackOverflow, StackOverflow…
Không thể phủ nhận rằng đây là website tốt nhất để tìm chìa khóa cho mọi vấn đề khi code của bạn. “Ảnh” chính là bằng hữu của mọi developer. Đi hỏi chị Google thường cũng toàn cho ra kết quả từ đồng chí StackOverflow.
_ Tài liệu về ngôn ngữ lập trình bạn đang học.
Cũng giống StackOverflow, phần lớn những câu trả lời đều có thể được tìm trong đó. Cứ thong thả mà đọc qua tài liệu lúc bắt đầu học cách dùng nó để lập trình; mặc dù có thể còn nhiều thứ nghe có vẻ trừu tượng (tôi chắc chắn điều này luôn, ngày giờ này tôi vẫn còn chưa thông hiểu hết được cuốn giáo trình Python), làm quen dần với cấu trúc tài liệu là một việc không thừa.
_ Một trình soạn thảo (text editor) tốt.
Tôi, không một chút nghi ngờ, xin đề cử luôn Visual Studio Code. Tuy vậy bất cứ trình soạn thảo nào nhiều tính năng một chút cũng có thể dùng được: NotePad++, Atom, SublimeText, Vim, Emacs,… Nếu ngôn ngữ bạn chọn yêu cầu một môi trường phát triển tích hợp (integrated development environment/IDE) chuyên biệt, thì tốt hơn là cứ làm đúng như vậy.
Nói đến chủ đề này, trang Repl.it là một text editor với môi trường tương thích với rất nhiều ngôn ngữ thông qua trình duyệt, vô cùng tiện lợi để thử (test) nhanh một đoạn script mà không cần phải mở text editor của nó lên.
Vẫn cùng chủ đề nhé, cơ mà nói riêng mảng lập trình web, dùng CodePen sẽ phát triển được các loại web từ đơn giản đến phức tạp nhanh hơn đó.
_ Nếu bạn muốn làm thuật toán các thứ, thì cũng có nhiều trang web với thách thức về vi tính: Project Euler chắc chắn là trang ưa thích của tôi, nhưng tính chất thì thiên về toán học thuần nhiều lắm, nên bỏ qua cũng được. Nghe đâu GeeksforGeeks, với nội dung có vẻ nghiêng về Toán học ứng dụng nhiều hơn, cũng được nhiều người đánh giá tốt đấy.
_ Và dĩ nhiên, Quora (nhất là Quora tiếng Anh)
Theo: Thạch Thị Mỹ