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ó:

  1. 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).
  2. 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?”)
  3. 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.
  4. 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)
  5. Đượ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.
  6. 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ả)
  7. 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ả.
  8. 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.
  9. Không chạy đa nền tảng, chỉ chạy trên nền Console của DOS hay UNIX
  10. 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.
  11. 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.
  12. 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 :slight_smile:

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).

14 Likes

:slight_smile: Rồi sao nữa :)))
Kêu nó thoi thóp xong sao nữa :smile:

Liên tục kêu mọi người trẻ trâu rồi sao nữa ?
Đùa đấy :))
Việc pascal có chết hay không thì cũng không thể phủ nhận nó là một ngôn ngữ đầu tiên mà chúng ta được tiếp cận(Phần đông như vậy )
Giúp chúng ta hiểu cơ bản về lập trình là như thế nào ! Rồi qua đó phát triển đi lên.
Còn việc nó thoi thóp hay bla bla vấn đề đi nữa thì chắc cũng chẳng mấy ai quan tâm. VÌ khi đã lên “cơ ngón tay” cao hơn thì việc đó cũng đâu còn quan trọng :))
Ý kiến của một sửu nhi bàn phím :smile:

8 Likes

Ý kiến chút về mấy cái thi trong Olympic với thuật toán : nó đều có áp dụng trong thực tế. Ví dụ thuật toán luồng cực đại sử dụng cho việc lắp đặt các đường ống dẫn nước này nọ và tất nhiên là nước mình thì làm gì biết mấy vụ này; còn lý thuyết nhánh cận thì được sử dụng để giải quyết các vấn đề về việc làm,… Trừ một cái là đề thi Tin quốc gia năm nay cho như hạch, lấy đề nước ngoài và hình như bỏ vô google translate hay sao mà câu cú rồi cách viết gây hiểu nhầm tùm lum.
Và một điểm nữa là là pascal có hỗ trợ cho OOP và GUI (IDE Lazaruz) nên vẫn có thể viết được một số app đơn giản.
Mấy cái còn lại thì khá đúng.

6 Likes

Comment dữ dội quá :joy:

1 Like

:slight_smile: Mình còn kém hiểu biết mà :slight_smile:

1 Like

Cá nhân mình nghĩ Pascal vẫn còn thoi thóp trong thời gian dài nữa đấy. Vì trường phổ thông vẫn cần nó. Tại sao? Vì nó phiền phức nhưng rất rõ ràng. Ví dụ như vòng lặp for chẳng hạn, thầy cô dạy là for thì cần biến chạy từ đâu đến đâu kiểu như for i:= 1 to 10 do writeln(i) , và Pascal sẽ báo lỗi ngay nếu bạn thiếu, còn C thì sao, bạn viết for (; ; ); C vẫn chịu và học sinh sẽ hỏi bạn nhức cả đầu taị sao thế này, tại sao thế kia. Hơi khó tiếp cận cho người mới làm quen với lập trình. Thế nên mấy bác làm về giáo dục không riêng Vn mà trên thế giới vần ưa thích một ngôn ngữ rõ ràng để giảng dạy hơn.

2 Likes

Sao các trường không dạy Python hay C/C++ ta, Python dễ học, dễ nhớ và linh hoạt mà :slight_smile:

6 Likes

Đọc bài viết biết bạn chưa dùng Pascal bao giờ. Cũng chả định cãi nhưng bạn nên search google để biết một điều: Free Pascal vẫn đang được phát triển bởi cộng đồng mã nguồn mở. Object Pascal (Delphi) là con cưng của Embarcardero (mà có thể bạn sẽ bảo Object Pascal không phải Pascal, ừ thì đành chịu vậy)

1 Like

mình đã 2 năm học Pascal rồi nhé bạn ^^

1 Like

Pascal thì chỉ dùng để dạy học sinh học lập trình thôi, có gì đâu mà phải bàn.

1 Like

Em k hỉu sao nhưng ngày xưa học Pascal thì mù tịt (k biết tý j lun ),vậy mà sau này đọc tài liệu C++ 1 cái thì thấy C++ dễ hơn cả Pascal !
Còn Python thì dễ học nhưng tài liệu Tiếng Việt ít quá !
Em vẫn thích C++ hơn ,đọc tài liệu này k hỉu thì tìm bộ tài liệu khác để đọc cho hỉu,chứ Python ít quá ! Nhìu khi mún tìm hỉu về 1 vấn đề j đó mà tài liệu hiện tại nó viết k hỉu mún tìm bộ khác để đọc thì chả thấy đâu …
Mới lại kiểu << và >> mình vẫn thấy thích hơn là %d hay %f của Python và C.

3 Likes

minh thấy pascal nó dở hơi, khó làm nền hơn C vì thiếu các kiểu như trả về… nên gây khó hiểu, vả các biến phải khai báo từ trc :frowning: . code mệt value :joy:

3 Likes

kiểu này chắc không chơi với ps/sql t-sql được rồi.

1 Like

Lên stackoverflow.com đi bạn :smile: Giao lưu với ae Tây ở đấy lun :blush:

1 Like

Em không có ý gì đâu, nhưng đây cũng là một ý kiến cần được lưu tâm: http://www.ddth.com/showthread.php/95997-Pascal-Món-quà-cay-độc-của-Bộ-GDĐT

5 Likes

Mà ae làm gì căng thế :wink:

1 Like

bạn nói cũng có phần đúng.
nhưng có 1 số điểm mình thấy không hợp lý lắm.

trường mình vẫn dạy nhóe… :slight_smile: hẳn 3 môn dùng Pascal :smile:

nó không có vô dụng và khó khai báo đâu nhóe… nó cũng có chức năng như trong C/C++ nên không thể nói là nó vô dụng được. Sử dụng có new và dispose cũng giống C++ có new và delete vậy. Mình thấy phần này nó khá là giống nhau.

bạn thật sự thấy nó khó khai báo? hay nó chỉ hơi lạ mắt?

Mình học Pascal, xong qua năm 2 học C,C++ rồi có được học con trỏ,… Sang năm 3 lại Pascal và mình thấy phần con trỏ của Pascal khá là thú vị. :smile:

Công nhận cái này là điểm mình không thích ở Pascal. bởi nó không linh động trong khai báo biến, muốn dùng lại phải quay lên đầu để thêm vào rồi lại quay xuống dưới dùng nó. :grin:

Mình thấy cái này không hẳn là vấn đề to tát lắm, bởi đặt tên giống nhau có thể dễ gây nhầm lẫn và khó sử dụng, đôi lúc lại tự hỏi không biết là mình đang dùng cái nào. Còn nếu bắt buộc phải đặt giống nhau thì có thể thêm 1,2,3… cũng là 1 cách để thay thế mà :smiley:

Cái này thì mình không có ý kiến gì nhưng mà mình hay code bằng Sublime Text.

chỗ này mình không hiểu lắm. Nếu dùng database thì khi truy xuất bạn vẫn phải cần 1 thứ gì đó có cấu trúc để lưu thông tin tạm thời chứ?

2 điều này thì mình cũng đồng ý với bạn :smiley:


Dù sao thì vẫn thích Pascal tuy là có thể không dùng đến nó nữa. :yum:
à mà khi mới vào đọc bài này mình biết là nếu đọc được bài này thì a @tandatcr2000pro sẽ phản ứng hơi gay gắt mà. :smile_cat:

7 Likes

cảm ơn bài góp ý chân thành của bạn :smiley: . Tuy đó là quan điểm cá nhân nhưng vẫn phải xét về phần đúng ‘_’ . Nhưng mình nghĩ tại sao không dạy Python, Ruby, C gì mà lại đi dạy Pascal (những 2 năm 8-11). :joy:

2 Likes

Cái này thì mình cũng không biết, mình thấy Pascal cũng khá là dễ nắm bắt. mình được học Pascal đầu tiên và giờ mình vẫn học được các ngôn ngữ khác bình thường mà.

3 Likes

mình cũng vốn xuất thân từ Pascal đây, nhưng mà một khi học các ngôn ngữ khác thì quay lại thì mình đã tự hỏi như vậy. Pascal thực sự ngày càng bộc lộ nhiều yếu điểm và bây h là 2016 - giải pháp tốt hơn là Python chứ không còn là Pascal nữa :frowning:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?