Những hiểu nhầm của sinh viên mới học về lập trình

Chia sẻ những kinh nghiệm test, chuyện vui buồn của Tester Việt nam
Post Reply
Linhnn1795
Fresher Tester
Posts: 29
Joined: Mon 24 Sep, 2018 4:24 pm
Contact:

Những hiểu nhầm của sinh viên mới học về lập trình

Post by Linhnn1795 » Wed 10 Oct, 2018 9:39 am

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…


Tất cả đều là những suy nghĩ lệch lạc

BỞI: 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!

Ai cũng có thể học lập trình

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ĩ…


MP Software - Tuyển dụng IT
Hotline: 088.648.2953
Website

tvn
Admin
Posts: 4811
Joined: Tue 10 Aug, 2010 10:11 am
Location: HCM
Contact:

Re: Những hiểu nhầm của sinh viên mới học về lập trình

Post by tvn » Wed 10 Oct, 2018 6:12 pm

Chia sẻ trên của Linhnn1795 có thể đúng cho trường hợp bạn đã biết lập trình một ngôn ngữ lập trình A (ví dụ java, và đang muốn tìm hiểu ngôn ngữ lập trình B (C#). Chính vì vậy với lập trình viên đã biết lập trình 1 ngôn ngữ, họ chỉ cần mất 2 tuần để có thể lập trình bằng một ngôn ngữ khác (ở mức độ cơ bản). Cái chính và quan trọng mà các công ty đang tìm là khả năng tư duy (kỹ thuật lập trình)

Học lập trình, quan trọng là học "kỹ thuật lập trình" chứ không phải học "ngôn ngữ lập trình." Nên nếu bạn muốn làm lập trình viên thì bạn phải học kỹ thuật lập trình, bao gồm nhiều thứ trong đó có phương pháp tư duy và mô hình hóa (chuyển đổi thực thể ngoài thực tế thành đối tượng trong bài toán lập trình). Khi bạn đã hiểu phương pháp cách thức, ngôn ngữ lập trình chỉ là phương tiện để thể hiện (hiện thực hóa) suy nghĩ của bạn thành một chương trình phần mềm.

Ví dụ, bạn hãy lập trình sao để tìm ra số nhỏ nhất trong 1 chuỗi số.

Trước tiên, bạn cần phải có một danh sách các số được đánh số thứ tự, ví dụ từ 1 đến n.
Bạn phải làm sao để biết số nào là nhỏ nhất? (nếu là mắt thường của con người, liếc qua là biết ngay số nhỏ nhất)
Nhưng làm sao để "máy tính" nó hiểu rằng số nào nhỏ nhất. Mình phải "lập trình" cho nó bằng cách "hướng dẫn/bảo" nó đi so sánh từng giá trị một.
1. Lấy số đầu tiên ở vị trí 1 (gọi là V[i.]) kiểm tra xem có nhỏ hơn số kế tiếp (V[i+1]) hay không
2. Nếu V[i.] nhỏ hơn, thì lấy V[i.] so với số tiếp theo V[i+2]
3. Nếu V[i.] không nhỏ hơn, thì lấy V[i+2] đi so với số tiếp theo sau V[i+2]
...
n. cuối cùng sẽ tìm thấy số nhỏ nhất.

Đây gọi là "thuật toán"

Lưu ý, trên đây là một ví dụ cơ bản để dễ hiểu. Nếu là thực tế, thì thường sẽ sử dụng 1 biến tạm đặt tên là Min, để gán giá trị đầu tiên cho nó, rồi lấy Min đi so sánh với từng giá trị còn lại trong chuỗi (danh sách số). Nếu số nào nhỏ hơn Min, thì cập nhật lại Min = số nhỏ hơn đó. Cuối cùng, sau khi so sánh hết mọi số thì Min là giá trị nhỏ nhất trong dãy số này.

Tóm lại, vậy học lập trình không đơn giản như học một ngôn ngữ lập trình.



Post Reply

Return to “Góc chia sẻ kinh nghiệm của Tester Việt nam”