13 Jan, 2021
Ngôn ngữ lập trình
Một sinh viên hỏi tôi: “Ngày nay có bao nhiêu ngôn ngữ lập trình? Ngôn ngữ nào là tốt nhất? Liệu có thể dùng một ngôn ngữ máy tính cho mọi ứng dụng không? Tôi cần biết ngôn ngữ nào?”
Có lẽ có nhiều ngôn ngữ lập trình hơn ngôn ngữ nói trên thế giới ngày nay. Cứ vài tháng, ai đó lại tạo ra một ngôn ngữ lập trình ở đâu đó. Ngôn ngữ lập trình đã tiến hoá từ ngôn ngữ mã máy thế hệ thứ nhất của 0 và 1 sang thế hệ hai được phân loại như “hợp ngữ” nơi mã có thể được viết và được chuyển đổi thành mã máy bằng quá trình gọi là hợp dịch. Ngôn ngữ thế hệ thứ ba có một vài cách nhóm lại: Ngôn ngữ mệnh lệnh như Cobol, Fortran và Pascal; ngôn ngữ hướng đối tượng như Java, C++, và Smalltalk; ngôn ngữ hàm như Lisp và ML; và ngôn ngữ logic như Prolog. Ngày nay, sinh viên cũng quen thuộc với ngôn ngữ thế hệ thứ tư khi họ thiết kế cho các mục đích chuyên dụng như SQL cho truy vấn dữ liệu; Powerbuilder, Delphi, Focus, và Access cho ứng dụng cơ sở dữ liệu; Visual basic và tcl cho làm bản mẫu; và html và javascript cho miền web toàn cầu.
Không có “ngôn ngữ tốt nhất” vì từng ngôn ngữ phục vụ cho một mục đích và đóng góp cho công nghệ vào thời điểm đó. Khi tôi còn trong trường, tôi đã học Fortran và hợp ngữ nhưng khi tôi bắt đầu làm việc, tôi đã học Ada và tôi nghĩ Ada là rất tốt, đặc biệt trong các ứng dụng nhúng. Khi C và Unix tới cùng và cho phép tôi làm nhiều thứ thế, tôi nghĩ ngôn ngữ này chắc sẽ là hoàn hảo nhưng thế rồi mọi thứ lại thay đổi. Với mọi thế hệ ngôn ngữ lập trình, có cái gì đó tốt hơn, cải tiến nhiều hơn so với thế hệ trước. Tôi chắc chắn có những điều tốt hơn sẽ tới trong tương lai gần nữa.
Tất nhiên, có thể dùng một ngôn ngữ để viết phần mềm ứng dụng. Bạn có thể làm hầu hết mọi thứ bằng ngôn ngữ mã máy. Ngôn ngữ lập trình được tạo ra cho mục đích nào đó và chọn lựa ngôn ngữ tốt hơn quả có tạo ra khác biệt trong bảo trì, hiệu năng và dùng lại phần mềm. Là kĩ sư phần mềm, cân nhắc then chốt của bạn trong mọi dự án là chi phí, lịch biểu và chất lượng. Không thành vấn đề ngôn ngữ nào được dùng. Đôi khi, khách hàng yêu cầu ngôn ngữ đặc biệt trong dự án nhưng như một tuỳ chọn, bạn có thể xem xét mức kĩ năng của người phát triển trong công ti của bạn. Tốt hơn cả là dùng ngôn ngữ mà người phát triển của bạn đã giỏi. Chi phí của việc học ngôn ngữ mới và thời gian làm chủ chúng có thể không phù hợp cho dự án của bạn. Tất nhiên, bạn có thể chọn ngôn ngữ phù hợp nhất cho miền ứng dụng của mình. Chẳng hạn, Cobol là tốt hơn với các ứng dụng kinh doanh còn Java sẽ tốt hơn cho các ứng dụng web.
Là người kĩ sư phần mềm, bạn có lẽ học C, C++, C# hay Java ở trường. Chúng là các ngôn ngữ lập trình rất phổ biến ngày nay nhưng ngôn ngữ thay đổi qua thời gian, và người kĩ sư phần mềm có kinh nghiệm phải có khả năng học ngôn ngữ mới một cách dễ dàng, và tôi chắc chắn bạn có lẽ học vào ngôn ngữ trong vài năm tới.
—-English version—-
Programming Languages
A student asked me: “How many computer programming language exist today? Which one is the best? Is it possible to use one computer language for all applications? What language do I need to know?
There are probably more programming languages than spoken languages in the world today. Every few months, someone creates a programming language somewhere. Programming language has evolved from the first generation machine code language of o and 1 to second generation categorized as “Assembly languages” where the code can be written and converted into a machine code by a process called assembly. The third generation programming languages have several grouping: Imperative languages such as Cobol, Fortran and Pascal; Object-Oriented Languages such as Java, C++, and Smalltalk; Functional languages such as Lisp and ML; and Logic Language like Prolog; Today, students are also familiar with the fourth generation languages as they are designed for special purposes such as SQL for data queries; Powerbuilder, Delphi, Focus, and Access for database applications; Visual basic and tcl for prototyping; and html and javascript for world-wide-web domain.
There is no “best language” as each serve a purpose and contribute to the technology at that time. When I was in school, I learned Fortran and Assembly languages but when I started to work, I have to learn Ada and I thought Ada was very good, especially in the embedded applications. When C and Unix come along and allowed me to do so many things, I though this language would be perfect but then everything changed again. For every generation of programming language, there are something better, much improve over previous one. I am sure there are better things to come in the near future too.
Of course, it is possible to use one language to write software applications. You can do almost anything with machine code language. Programming language is created for certain purpose and better language choice does make a difference is in software maintenance, performance, and reuse. As software engineers, your key considerations in every project are cost, schedule, and quality. It does not matter which programming language is used. Sometime, customers require specific language in the project but as an option, you may want to consider the skill level of your developers in your company. It is better to use a language that your developers are already good at. The cost of learning new languages and the time to master them may not be suitable for your projects. Of course, you may select a language that best suits the domain of your application. For example, Cobol is better with business application and Java would be better for web application.
As software engineer, you probably learn C, C++, C# or Java in school. They are very popular programming languages today but language does change over time, an experienced software engineer should be able to learn a new language easily, and I am sure you probably learn several new languages in the next few years