Trên thế giới này có bao nhiêu ngôn ngữ lập trình? Chịu, không ai biết được. Chỉ cần kể ra những cái tên nổi tiếng đã có rất nhiều: C, C++, Fortran, Pascal, JavaScript, Java, Python, Perl, Basic, C#, F#, Dart, Go… hay các ngôn ngữ chuyên dụng như SQL, VBA, Powershell script…Vậy tại sao tôi lại thích học về ngôn ngữ lập trình? Câu trả lời rất đơn giản: Vì tôi thích! Khi còn đi học, cũng như những sinh viên hay mơ mộng khác, tôi cũng có mơ ước một ngày nào đó sẽ tự phát minh ra một ngôn ngữ mới. Và thật sự tôi cũng đã từng tạo ra một vài trình biên dịch nhỏ trong quá trình học và làm việc: một trình dịch giúp hỗ trợ syntax highlighting khi khách hàng viết các SMS template (các SMS này sẽ có thể chứa các thông tin về đơn hàng và được gửi đến cho các tài xế), một trình dịch khác cũng phục vụ highlighting cho 1 Java IDE (kiểu như VS code – IDE này là một pet project).
Tôi không khuyến khích các bạn đi sâu vào nghiên cứu nó, nhưng tìm hiểu một chút sẽ mang lại rất nhiều kiến thức bổ ích, giúp việc tự học dễ dàng hơn rất nhiều, vì:
Bạn sẽ biết các bước trình biên dịch xử lý mã nguồn, đây là thứ gắn bó với bạn hàng ngày, hàng giờ cho đến nhiều năm sau
.
Khi xảy ra một thông báo lỗi, bạn có thể mường tượng ngay tại sao, thậm chí khi đọc qua một nền tảng hay ngôn ngữ mới, bạn sẽ dự đoán được những vấn đề mình có thể gặp phải.
Tại sao ngôn ngữ này là hướng đối tượng hoàn toàn, ngôn ngữ kia chỉ hỗ trợ một phần, ngôn ngữ nọ hoàn toàn không hỗ trợ? Hay tại sao ngôn ngữ này bắt buộc khai báo kiểu rõ ràng ngôn ngữ kia lại không? Nếu có thể hiểu được vấn đề từ góc độ người thiết kế ra ngôn ngữ, bạn sẽ hiểu được lý do tại sao họ chọn như vậy, hay nói cách khác, bạn sẽ hiểu được họ đã hi sinh cái gì để đánh đổi lại được lợi ích (thế mạnh) gì. Biết được thế mạnh của mỗi ngôn ngữ là điều quan trọng.
Continue reading “NGÔN NGỮ LẬP TRÌNH VÀ TRÌNH BIÊN DỊCH (3 LĨNH VỰC YÊU THÍCH CỦA TÔI – phần 2)” →