Pascal - Một ngôn ngữ thoi thóp
*Lưu ý: Bài viết chỉ thể hiện quan điểm cá nhân và không có ý chỉ trích bất kỳ cá nhân hay tổ chức nào. Vui lòng gở bỏ hết ứng dụng liên quan đến gạch đá và rút dây bàn phím trước khi xem.
Pascal - Một thứ mà chắc chắn các ITer nào cũng đã thử sức khi còn ngồi trên ghế nhà trường vào năm lớp 8 và 11 hay trong các cuộc thi Olympic Tin Học. Đó là sản phẩm của một giáo sư đã rinh giải Turing - Niklaus Wirth.
Trước hết, mình xin nói sơ lược về Pascal một tí. Pascal là một ngôn ngữ lập trình hướng cấu trúc thuộc dạng mệnh lệnh do Niklaus Wirth phát triển vào những năm 1970 dựa trên cơ sở của ALGOL. Pascal là một ngôn ngữ lập trình được Wirth phát triển cho mục đích giáo dục. Nó có cú pháp dùng khá nhiều từ nhưng hầu hết là tiếng anh và cũng khá dễ hiểu, đơn giản
VD: Chương Trình Hello World
program HelloWorld;
begin
writeln('Hello World'); readln;
end.
Nhưng mình có một thắc mắc: “Pascal có phải chỉ để giảng dạy ?”, và sau nhiều làm phiền “Thánh Google” thì “ông ta” đã cho mình một câu trả lời : Vâng, chính xác là thế!
Trước đây, khi mà ông cha ta còn phải dùng cái máy tính với màn hình cong CRT và cái Case thì để dưới cái màn hình chạy Windows 1, Windows NT thì Pascal thì vẫn có đất dụng võ riêng. Lúc ấy, các phần mềm nền Console (tương tự như cmd - không có UI/UX) thì Pascal được coi là tương đương với ngôn ngữ “ông cha” C. Sau đó thì ngày càng ít người dùng vì nó ngày càng không còn phù hợp và lộ rõ các khuyết điểm , thậm chí Brian Kernighan đã bỏ công viết một cuốn sách (không phải PDF đâu) có tiêu đề dài hơi là Tại sao Pascal không phải là ngôn ngữ lập trình ưa thích của tôi (Why Pascal is not my favorite Programming Language) chỉ để phê phán Pascal và đến ngày nay, sau khi 2 năn phủ đầu học nó, giành mấy cái bằng Olympic tin học cho máy cái đề bài “Trên trời dưới đất” (Kiểu như “1 đoàn khách du lịch đến Việt Nam, hãy tìm tọa độ để hành lý của họ” hay “Xe tăng xuất phát từ điểm n bất kỳ, hãy tính số bánh xe”,…) chỉ để thực hiện mấy cái thuật toán phức tạp mà chẳng biết sau này có áp dụng được vào thực tế hay không nữa. Rồi lại đi học đại học thì đa phần đều học C, C++, Java,… (hồi trước thì có vài trường dạy Pascal còn bây giờ mất hết rồi). Ra đi làm thì lại front-end, back-end, Object-Oriented Programming các kiểu,… bla bla. Để rồi tối nằm mà nghĩ “Hồi ấy mình học Pascal để làm cái *éo gì thế nhỉ?”. (Có một số bác học xong Pascal rồi lên học Delphi thì nó đã trở thành 1 ngôn ngữ khác rồi, mình không nói đến)
Tại sao ngày nay Pascal chỉ còn xuất hiện trong trường học? Có phải là do nó có nhiều khuyết điểm, khó sử dụng hay phải học thuộc nhiều từ vựng, phải để ; cuối lệnh (kiểu nghĩ của học sinh hay các bác “Sửu nhi”- vào học thì thầy dạy sao làm y vậy, hay còn liếc sang đứa bên cạnh) hoặc nó sinh mã phức tạp, dài, chương trình chạy không hiệu quả, thư viện hạn chế, cộng đồng hỗ trợ ít,… (cách nghĩ của các pro, coder, dev-er,…). Thì bây giờ chúng ta hãy đi phân tích các khuyết điểm của nó:
- Về các từ khóa thì không vấn đề nhưng mà có một số từ khóa khá… vô dụng (program - chỉ để chú thích tên chương trình).
- Con trỏ khá vô dụng và khó sử dụng, và cả khó khai báo
VD:
Type
int = ^integer;
hay
var
p : pointer;
(Các thím nào dùng C/C++ đã quen với việc dùng * thì Pascal sẽ khiến các bạn thét lên “WT*F?”) - Khai báo biến phải đặt trong var (biến toàn cục) và phải khai báo hết toàn bộ, từ biến dùng nhiều lần đến dùng một lần.
- Không Case Sensitive (Phân biệt hoa-thường) -> khó đặt tên biến (khi trường hợp phải dùng 2 biến cho hai vị trí khác nhau nhưng lại sử dụng chung một tên)
- Được thiết kế ban đầu cho việc giảng dạy -> hệ thống thư viện hàm được thiết kế còn khá ít.
- Không thống nhất về Compiler (vô vàng các compiler nhưng chỉ có Turbo là thấy thoải mái nhất. ^^). và cũng có khá ít IDE (Chỉ có Free Pascal, Borland Pascal, Dev-Pas, V-pas,… - Thường thấy là trên nền console không hiệu quả)
- Kiểu liệt kê cũng ổn, kiểu bản ghi cũng đã lỗi thời - vì bây giờ toàn dùng Database, hệ thống hàm làm việc với hệ thống tập tin cũng kém hiệu quả.
- Hiện chỉ còn thoi thóp trong môi trường giáo dục trung học, còn đại học thì,… như đã nói.
- Không chạy đa nền tảng, chỉ chạy trên nền Console của DOS hay UNIX
- Pascal yêu cầu phức tạp về hệ thống lệnh, đẹp thì đẹp thật nhưng mấy anh coder dạo ngày nay thích nhanh và mạnh là chính nên code Pascal khá… khó chịu.
- Các định nghĩa cơ bản được học bằng pascal nhưng một khi đã quen với Pascal thì chuyển sang C thì thấy nó thiếu rất nhiều thứ (#define - định nghĩa người dùng, hằng, các kiểu trả về, lại không có hàm main, thiết kế procedure và function chỉ cho một mục đích,…) và khiến các bạn không quen.
- Không dùng Non-print Character, Regular Expression -> Khó ứng dụng viết chương trình hiệu quả cao.
Còn nhiều lắm…
Vậy mình đã phân tích xong các yếu điểm của Pascal khiến nó thoi thóp nằm trong máy chiếc PC 512 Ram đặt trong trường trung học.
Pascal là một ngôn ngữ đẹp, ngay cả Cha đẻ của C - Dennis Riches còn khen và bênh vực cho Pascal thì chắc hẳn Pascal sẽ rất phát triển và làm bộ móng cho các ngôn ngữ sau này. Nhưng đó chỉ là cách nghĩ của 15 năm trước, còn hiện tại thì học xong thì chẳng còn gặp lại nó nữa, nó càng ngày càng bộc lộ nhiều yếu điểm, số lượng lập trình viên dùng và hỗ trợ ngày càng ít. Có thể nói nó đang “Chết dần chết mòn” trong thế giới công nghệ “3 Năm là cũ, 7 năm là cổ, 10 năm là bị khai tử” như ngày nay. và cuối cùng có thể nó sẽ “trút hơi thở cuối cùng” và làm collapse (sập) cả giàn máy WinXP 512 MB Intel Celeron 69 MHz ở trường học
Rồi, bây giờ bạn có thể cắm lại bàn phím và bắt đầu tự tin thể hiện bản lĩnh Anh Hùng Bàn Phím… à không Sửu Nhi bàn Phím mới đúng ^^ (đùa thôi).