Sunday, 22 June 2014

[Review] Learn python the hard way

Một câu nói rất hay mà tớ lượm được trong " Learn python the hard way":

Programming as a profession is only moderately interesting. It can be a good job, but if you want to make about the same money and be happier you could actually just go run a fast food joint. You are much better off using code as your secret weapon in another profession.
                                                                                            -- Red Shaw --

Chuyện bên lề.
Cuộc sống đầy dãy những thay đổi và điểm ngoặt!
Và một trong những điểm ngoặt lớn nhất trong cuộc đời tớ là khi tớ đặt chân vào thế giới của những programmer, và chính xác hơn đó là thời điểm tớ bắt đầu biết đến python.
Python giúp tớ tiếp cận với một thứ gọi là 'tư duy logic'
Python giúp tớ ...bla..bla
Và bây giờ, tớ có cảm giác.. tốt lên
Đầu tiên tớ học python tại đây:
https://docs.python.org/2/tutorial/index.html

Haizz, thật buồn khi phải nói rằng. một tháng đầu tiên, chắc tớ chỉ biết print string, và cao cấp hơn là viết được chương trình tính 100!
Vì sao lại vậy?
Lí do có lẽ do tớ lười + đầu đất ... bla...bla...
Và một lý do quan trọng hơn là :
https://docs.python.org/2/tutorial/index.html
==> lý thuyết, lý thuyết và ...chán
Hồi ấy còn chằng biết cài ubuntu như thế nào :)), và hai chữ " máy tính" đối với tớ có lẽ là cực kì xa lạ và ... khó.

Nhưng, có thể nói "tư duy lập trình"  của tớ thực sự thay đổi sau khi tớ đọc cuốn sách này:
http://learnpythonthehardway.org/book/
Tuyệt vời, có thể nói vậy.
Đó là một cuốn sách tuyệt vời cho những người bắt đầu với lập trình từ một con số 0 như tớ.
Đó là một cuốn sách tuyệt vời cho những thằng tư duy trì trệ và lười suy nghĩ :)

Sau đây là một số điều mình cảm nhận được về "Learn python the hard way".

Cuốn sách đã làm tớ thay đổi như thế nào?
+ Đó là khi tớ bắt đầu biết search google hiệu quả hơn.
Ví dụ, khi bạn search về một vấn đề nào đó, hãy đặt python ở trước từ khóa đó
python class...
python os...
Và sau đó, tớ rút ra rằng, bạn có thể làm như thế với TẤT CẢ NHỮNG VẤN ĐỀ KHÁC mà bạn cần tìm hiểu. Nghĩa là hãy đặt tên của vấn đề đó trước từ khóa bạn cần tìm kiếm.

+ Đó là khi tớ biết vạch " map" cho mỗi vấn đề.
Một ví dụ bạn sẽ tìm thấy trong cuốn sách, một hướng đi khá hợp lý để phát triển code của bạn, một game code:
  1. Draw a map of the game and how you flow through it.
  2. Fix all of your mistakes, including spelling mistakes.
  3. Write comments for the functions you do not understand. Remember doc comments?
  4. Add more to the game. What can you do to both simplify and expand it?
 Draw a map, fix all of your code and write. Tớ nghĩ, đó là tất cả để bạn hoàn thành code của mình. Vấn đề là bạn đang áp dụng chúng ở level nào mà thôi?
......................

Cuốn sách đã dạy tớ những gì?
+ Dạy tớ cách print một message => dạy tớ viết code từ con số 0, thế nên việc bạn không biết gì về lập trình không làm bạn ... KHÔNG THỂ ĐỌC cuốn sách này.
+ Dạy tớ cách viết một chương trình hoàn chỉnh: Từ những ví dụ trong mỗi exercise, bạn sẽ nghĩ  ra và làm được nhiều điều
+ Dạy tớ cách làm thế nào để có một chương trình tối ưu nhất: Bạn cần lặp đi lặp lại một công việc nhiều lần? một vòng for đơn giản có thề giúp bạn làm điều đó một cách ngắn gọn nhất và ... một lần duy nhất
.......................

Sơ lược về cấu trúc của mỗi exercise
Cuốn Sách bao gồm 52 exercises khác nhau. Mỗi exercises là một bài học vô cùng bổ ích và thú vị.
Một số phần chính trong một exercise:

1. Phần lý thuyết chung.

Phần này giúp bạn có những cái nhìn cơ bản cho những phần bạn sẽ học và thực hành trong phần ví dụ.

2. Phần ví dụ.

Mỗi exercise sẽ có những phần ví dụ hết sức cụ thể để bạn hiểu hơn về những gì bạn đang đọc về nó

3. Study Drills.
Phần này nêu ra một số câu hỏi thú vị( và bạn sẽ phải tự mình tìm ra câu trả lời), cũng như hướng dẫn về cách thức phát triển một vấn đề.
Ví dụ khi bạn học về "function", bạn sẽ được đưa ra một game nhỏ để làm ví dụ cụ thể. Phần Study Drills giúp bạn hiểu hơn về ví dụ đó và hướng dẫn bạn làm thế nào để phát triển game nhỏ đó thành "game của bạn":

1. Draw a map of the game and how you flow through it.
Fix all of your mistakes, including spelling mistakes.
2. Write comments for the functions you do not understand. Remember doc comments?
3. Add more to the game. What can you do to both simplify and expand it?
4. The gold_room has a weird way of getting you to type a number. 5. 5. What are all the bugs in this way of doing it? Can you make it better than just checking if "1" or "0" are in the number? Look at how int() works for clues.
Chính điều tưởng chừng như vô cùng đơn giản đó giúp bạn hình thành nên một lối suy nghĩ và định hướng cách giải quyết những khó khăn bạn gặp phải.

4. Các trường hợp sử dụng.
Phần này nêu ra một số trường hợp chung có thể sử dụng những gì bạn đã học được trong exercise đó.

Ví dụ khi bạn học về List:
You use a list whenever you have something that matches the list data structure's useful features:
  1. If you need to maintain order.
  2. If you need to access the contents randomly by a number.
  3. If you need to go through the contents linearly (first to last).
Then that's when you use a list.
5. Common Student Questions.
Đưa ra câu trả lời cho một số vấn đề bạn thường gặp phải khi đọc xong exercies đó.

Trên đây là một số điều tớ đã học và rút ra được từ "Learn Python The Hard Way". Có lẽ sau khi đọc cuốn sách bạn sẽ có những cảm tưởng và suy nghĩ của riêng mình. Good, rất vui khi bạn quay lại đây và đưa ra những ý kiến của bạn, giúp bài viết này được hoàn thiện hơn :)). Rất cám ơn vì những đóng góp của bạn. Chúc bạn có những cảm nhận thật thú vị với cuốn sách này ( tất nhiên là nếu bạn có ý định đọc nó :) )

Bonus: Bạn thích ruby, C... Bạn có thể tìm chúng ở đây :)
http://learncodethehardway.org/