Một sinh viên năm thứ nhất hỏi tôi: “Tôi phải học ngôn ngữ lập trình nào? Tôi có phải học mọi ngôn ngữ lập trình hay chỉ vài ngôn ngữ thôi?”

Tôi bảo anh ta: “Không ai có thể học mọi ngôn ngữ lập trình được vì có nhiều lắm. Tuy nhiên, nếu bạn học một ngôn ngữ cho tốt, sẽ dễ dàng học ngôn ngữ khác. Tôi tin người lập trình tốt nên thấy thoải mái với một số ngôn ngữ khác nhau và người lập trình phải có khả năng dùng tri thức nền tảng của một ngôn ngữ và áp dụng cho các ngôn ngữ khác tương đối nhanh chóng. Ngày nay hầu hết các trường đều dạy về C, C++ và Java như các ngôn ngữ lập trình nền tảng cho sinh viên của họ. Tất nhiên, có nhiều ngôn ngữ lập trình hơn nhưng chúng KHÔNG phổ biết hay được dùng rộng rãi trong công nghiệp phần mềm.

Nếu bạn hỏi ý kiến cá nhân của tôi, tôi muốn nói C là ngôn ngữ mà mọi người phải biết. C có thể được xem như “hợp ngữ”, vì nó phơi ra máy phần cứng nền tảng và buộc sinh viên phải hiểu rõ ràng mối quan hệ giữa phần mềm và phần cứng. Hiệu năng trong ngôn ngữ C là tuyệt hảo vì tốn kém cho mọi câu lệnh phẩn mềm là rõ ràng. Cuối cùng, trình biên dịch làm dễ dàng cho việc kiểm tra mã hợp ngữ được sinh ra, lại chính là công cụ tuyệt hảo cho hiểu ngôn ngữ và kiến trúc máy.

C++ thực tế là khái niệm nền tảng của kĩ nghệ phần mềm hiện đại và cách tiếp cận hướng đối tượng: bao bọc với các lớp và che giấu thông tin qua dữ liệu và phép toán private, lập trình bằng mở rộng qua phương pháp ảo và lớp suy dẫn. C++ cũng làm cho việc quản lí bộ nhớ thành một nhiệm vụ dễ dàng.

Java là ngôn ngữ phổ biến, đặc biệt cho những người xây dựng ứng dụng web. Tôi nghĩ rằng Java giữ vai trò quan trọng trong mọi chương trình kĩ nghệ phần mềm và khoa học máy tính. Bằng nghiên cứu Java, sinh viên sẽ biết nhiều hơn về lập trình song hành và hiểu rằng chương trình có thể được phối trí để xem xét trạng thái riêng của nó và để xác định hành vi riêng của nó trong môi trường thay đổi.

Tôi tin ngôn ngữ lập trình là nền tảng cho MỌI chương trình công nghệ thông tin. Bạn KHÔNG thể đi xa được nếu bạn KHÔNG làm chủ ít nhất một ngôn ngữ lập trình. Mọi việc làm trong lĩnh vực công nghệ thông tin đều yêu cầu tri thức và kĩ năng trong ngôn ngữ lập trình. Nếu bạn không thể là nhà toán học, nhà tài chính, hay kế toán viên, nếu bạn KHÔNG hiểu số học thì bạn cũng không thể là người kĩ sư phần mềm, người phát triển phần mềm, người quản lí hệ thông tin nếu bạn KHÔNG biết cách lập trình ít nhất trong một ngôn ngữ lập trình.

—-English version—-

Programming language

A first year student asked me: “Which programming language that I should learn? Should I learn all programming languages or only a few? I told him: “No one can learn all programming languages as there are so many. However, If you learn one programming language well, it would be easier to learn another. I believe a good programmer should be comfortable with a number of different languages and that the programmer must be able to use the fundamental knowledge of one language and apply to another relatively quickly. Today most schools are teaching C, C++ and Java as the fundamental programming languages to their students. Of course, there are much more programming languages but they are NOT popular or widely used in the software industry.

If you ask for my personal opinion, I would say C is the language that everyone must know. C can be seen as an “assembly language”, as it exposes the underlying hardware machine and forces the student to understand clearly the relationship between software and hardware. Performance in C language is excellent because the cost of every software statement is clear. Finally, compilers make it easy to examine the generated assembly code, which is an excellent tool for understanding machine language and architecture.

C++ is actually the fundamental concepts of modern software engineering and object-oriented approach: encapsulation with classes and information hiding through protected and private data and operations, programming by extension through virtual methods and derived classes. C++ also make storage management such as an easy task.

Java is a popular language, especially to the people who build web applications. I think that Java has an important role to play in all software engineering and computer science programs. By study Java, students will know more about concurrent programming and understand that a program can be instrumented to examine its own state and to determine its own behavior in a dynamically changing environment.

I believe programming language is the foundation of ALL information technology programs. You can NOT go far if you do NOT mastering at least one programming language. Every jobs in information technology field require a knowledge and skills in programming language. If you cannot be a mathematician, a financier, or an accountant if you do NOT understand arithmetic then you also cannot be a software engineer, a software developer, or an information system manager if you do NOT know how to program at least one programming language.