3 Ngộ nhận lớn nhất của người mới học lập trình
Bạn đang tò mò về việc học lập trình? Bạn đã chọn được một ngôn ngữ lập trình để theo đuổi nhưng rồi bạn lại trì hoãn hoặc bỏ dở? Bạn sợ lập trình? Người mới học lập trình thường gặp phải nhiều ngộ nhận và lầm tưởng. Nếu bạn nghĩ rằng việc học một ngôn ngữ ...
Bạn đang tò mò về việc học lập trình?
Bạn đã chọn được một ngôn ngữ lập trình để theo đuổi nhưng rồi bạn lại trì hoãn hoặc bỏ dở?
Bạn sợ lập trình?
Nếu bạn nghĩ rằng việc học một ngôn ngữ lập trình sẽ khó khăn và vất vả y như việc học một ngoại ngữ mới – thì bạn đã nhầm to rồi đó!
Khi bạn có suy nghĩ này, bạn đã mắc phải hội chứng “ngụy biện liên ngôn ngữ” – hội chứng này tạo cho bạn một ảo giác, rằng ngôn ngữ lập trình là một thứ gì đó tương tự như ngôn ngữ giao tiếp hàng ngày.
Hội chứng này nghe có vẻ loằng ngoằng nhưng thực tế, nó biểu hiện thông qua 3 suy nghĩ của bạn về ngôn ngữ lập trình như sau:
- Ngôn ngữ lập trình là “ngôn ngữ của máy tính”
- Ngôn ngữ lập trình giống như một ngoại ngữ, nó khó đọc, khó hiểu và…
- để học một ngôn ngữ lập trình, chúng ta sẽ mất vài năm…
Điều đáng buồn, bạn đang ngộ nhận! Tôi sẽ chứng minh cho bạn, 3 ý niệm trên chỉ có thể tồn tại trong trí tưởng tượng!
1. Ngôn ngữ lập trình là ngôn ngữ của máy tính?
Sau 2s Google, tôi thấy rất nhiều những câu hỏi đại loại như:
“Làm thế nào để cải thiện kỹ năng lập trình Python ?”
Và tôi không nhầm đâu, “tác giả của những câu hỏi này luôn cho rằng, học lập trình tức là:
- Học cách “nói chuyện với máy tính”
- Học phương pháp “tư duy” của máy tính
- Họ muốn thuần thục nhưng không muốn “thống trị” một ngôn ngữ lập trình nào đó…
Tất cả bọn họ đều sai hết! Rõ ràng ngôn ngữ lập trình được thiết kế dành cho con người!
Tôi sẽ chứng minh luận điểm này một cách thuyết phục nhất.
Xét trong lĩnh vực khoa học máy tính – Computer Science, ta có ngôn ngữ bậc cao & ngôn ngữ bậc thấp.
Ngôn ngữ bậc thấp như Assembly sẽ giao tiếp trực tiếp với máy tính thông qua một loại các phép toán trực tiếp với bộ xử lý. Nhưng Assembly chỉ đứng thứ 19 trong bảng xếp hạng các ngôn ngữ phổ biến! Toàn bộ top đầu là các ngôn ngữ bậc cao như Python, Java….
Nếu bạn thích định nghĩa mọi sự vật mà bạn gặp phải, tôi sẽ trích dẫn một đoạn định nghĩa “ngôn ngữ bậc cao” trong từ điển Collins:
Ngôn ngữ lập trình bậc cao là ngôn ngữ lập trình giống với ngôn ngữ tự nhiên hoặc các kí pháp toán học.
Như vậy, ngôn ngữ bậc cao rất gần với ngôn ngữ tự nhiên và chúng sử dụng các concept liên quan tới logic cũng như toán học, bởi lẽ chúng được thiết kế dành cho con người!
2. Học một ngôn ngữ lập trình khó ngang với học một ngoại ngữ mới!!
Xem nào, nếu bạn thử đọc một đoạn văn bản viết bằng tiếng nước ngoài (tiếng Lào chẳng hạn), bạn sẽ phải đối mặt với:
- Một bảng chữ cái mới tinh
- Hệ thống ngữ pháp và cú pháp mới
- Và điều khó khăn nhất: một tập hợp những từ ngữ mà bạn chưa thấy bao giờ!
Đó là tiếng nước ngoài nhé! Còn với ngôn ngữ bậc cao thì sao nhỉ? Bạn sẽ không bao giờ gặp, dù chỉ là 1 trong 3 khó khăn trên. Tôi sẽ chứng minh điều đó.
Đầu tiên, bạn hãy đọc một đoạn code SQL:
1 2 3 4 |
<span class="hljs-operator"><span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> <span class="hljs-keyword">Table</span> <span class="hljs-keyword">VALUES</span> (<span class="hljs-string">'1'</span>, <span class="hljs-string">'SQL'</span>, <span class="hljs-string">'Programming language'</span>)</span> |
Giả sử tiếng Anh là ngôn ngữ mẹ đẻ của bạn, tôi sẽ tạm thời so sánh tiếng Anh với SQL.
Đầu tiên, bảng chữ cái không có gì thay đổi. Nếu bạn để ý, tất cả ký tự sử dụng trong SQL đều nằm trên bàn phím của bạn.
Thứ hai, bạn hãy để ý tơi ngữ pháp và cú pháp, ‘Insert into table’ có vẻ như không có gì xa lạ và khó hiểu! Nếu vốn tiếng Anh của bạn không tốt (tệ lắm thì 200-300 điểm TOEIC), bạn vẫn không tốn quá nhiều công sức để hiểu được câu lệnh này.
Cuối cùng, hãy nhìn vào từng từ đơn, mỗi từ đều tồn tại trong tiếng anh, không có từ mới, không có cách phát âm khác, không đa nghĩa….
Thỉnh thoảng, ngôn ngữ lập trình cũng “sáng tạo” ra một số từ viết tắt như regex – regular expression – biểu thức chính quy, hay varchar(variable character)… Thế nhưng, tóm lại, “từ điển” của ngôn ngữ lập trình hầu như không khác biệt gì nhiều so với ngôn ngữ mẹ đẻ của chúng ta. Đó cũng chính là lý do tôi coi ngôn ngữ lập trình không phải là một “ngôn ngữ” thực sự! Nó giống như thổ ngữ (tiếng địa phương) hơn là một ngôn ngữ mới!
Vì vậy, việc học một ngôn ngữ lập trình thậm chí còn dễ hơn cả việc học ngoại ngữ. Do đó, thời gian học không dài như chúng ta nghĩ…
3. Học một ngôn ngữ lập trình sẽ tốn vài năm…..
Để học một ngoại ngữ, bạn cần học:
- Từ vựng
- Ngữ pháp
- 4 kĩ năng nghe, nói, đọc, viết
Nhiều nhỉ?
Vì vậy, để học một ngoại ngữ mới, một người bản xứ(nói tiếng Anh) cần từ 23 tuần đến 2 năm để hoàn toàn “thích nghi” với ngôn ngữ mới.
Thế nhưng với ngôn ngữ lập trình, học các chức năng cũng như câu lệnh (tương ứng với việc học từ vựng trong ngoại ngữ) là một công việc dễ dàng bởi ngôn ngữ lập trình có hệ thống bảng chữ cái không khác tiếng Anh là mấy. Nếu bạn biết chút ít tiếng Anh, thời gian học ngôn ngữ lập trình cũng sẽ giảm đi đáng kể.
Tương tự, khi tất cả từ ngữ đều quen thuộc với bạn, việc đọc hiểu ngôn ngữ lập trình trở nên dễ như trở bàn tay!
Học cú pháp của ngôn ngữ lập trình tương đương với việc làm bài tập ngữ pháp. Có thể hơi vất vả hơn một chút nhưng hãy nhớ rằng, ngôn ngữ lập trình được thiết kế để con người có thể đọc-hiểu và sử dụng một cách dễ dàng, vì thế thuần thục cú pháp của một ngôn ngữ bậc cao không nằm ngoài tầm với của bạn.
Cuối cùng là phát âm (tương ứng với cặp kỹ năng nghe-nói khi học ngoại ngữ)…Thú thực, tôi chưa từng thấy ai đọc ngôn ngữ lập trình thành tiếng như tụng kinh cả…
Bạn thấy đó, học ngôn ngữ lập trình đâu có phức tạp như học ngoại ngữ! Vì thế, thời gian học cũng không kéo dài lê thê như ta vẫn tưởng tượng. Thực tế không thiếu các trường hợp chỉ mất vài tháng để chế tạo một sản phầm từ một ngôn ngữ lập trình mới toanh!
Lời kết
Ngôn ngữ lập trình được thiết kế cho chúng ta. Nó không khó học, hãy nhớ lấy điều này.
Bây giờ là thời gian để bạn bắt đầu với ngôn ngữ lập trình đầu tiên của mình, hoặc tiếp tục những gì đang dang dở. Bạn thấy đấy, bài viết của tôi đã tước đi mọi lý do vớ vẩn của sự trì hoãn mà chính bạn tự tạo ra bây lâu nay.
Về quan điểm thứ #3 của tôi, bạn cũng nên hiểu sâu hơn một chút. Bởi việc nắm chắc cú pháp và cấu trúc của một ngôn ngữ lập trình rất đơn giản, nhưng việc hiểu và ngấm hết được tinh hoa của ngôn ngữ đó sẽ tiêu tốn của bạn ít nhất là 5000 giờ làm việc chăm chỉ. Nghe có vẻ gian nan nhưng tôi tin rằng một khi bạn đã quyết tâm, không gì là không thể.
Techtalk via Techmaster
Người Viết Đinh Công Minh