NÊN DẠY PASCAL HAY C TRONG NHÀ TRƯỜNG?


Đọc được một bài viết của một bạn nào đó nói về việc thay thế Pascal trong nhà trường bằng một ngôn ngữ khác, mình cũng muốn viết vài ý về điều này.

👉 Thứ nhất, phải khẳng định một điều là kiến thức về giáo dục và công nghệ phần mềm của chúng ta còn kém rất xa so với những chuyên gia trong ngành. Khi các bạn tranh cãi OOP hay functional programing hay hơn, thì họ đang thiết kế ra các ngôn ngữ và viết các trình biên dịch, khi ta đọc được một bài viết về cấu trúc đĩa cứng (và cảm thấy mình thật giỏi) thì cách đó mười năm họ đã kiếm tiền bằng cách viết các driver cho hệ điều hành, và khi ta chợt “phát hiện” ra học lập trình với Python hay hơn Pascal thì họ đã đào tạo hàng trăm hàng trăm hàng ngàn kỹ sư phần mềm rồi.

Bạn không tưởng tượng được nó xa đến mức nào đâu!

Cách đây rất lâu, khi tôi có cơ hội làm việc chung với một chuyên gia đầu ngành về nhận dạng ảnh/video, thầy ấy đã giới thiệu một số đề tài tiến sĩ mà thầy hướng dẫn, là những bài toán như nhận dạng chữ viết tay, nhận dạng khuôn mặt, đọc ảnh thiên văn và tính toán khoảng cách các thiên thể… và họ đã nghiên cứu những thứ như vậy từ hơn 20 năm trước.

👉 Thứ hai, phải xác định cho chính xác, ta đang học để làm ra cái gì? Viết phần mềm là một từ chung chung, vì phần mềm có rất nhiều loại, độ phức tạp, quy mô cũng vô cùng khác nhau. Bài giải phương trình bậc hai của bạn cũng là phần mềm, bộ Office của Microsoft cũng là phần mềm, và cỗ máy tìm kiểm phục vụ cả thế giới của Google cũng là phần mềm. Vì vậy bạn phải xác định rõ, bạn học để trở thành một kỹ sư, có thể đứng đầu được các dự án lớn, một nhà phân tích dữ liệu, hay học để trở thành một coder chỉ đâu đánh đó (Fresher forever! Yeah yeah!). Để làm được các vị trí khác nhau, bạn phải học những thứ khác nhau, và các bước để học vì vậy cũng khác nhau.

Bắt đầu với Pascal, C, Python hay thậm chí JS đều được, sau một vài tháng bạn đều có thể làm ra một-cái-gì-đó, nhưng bạn sẽ đi theo những con đường khác nhau, và sự khác nhau sẽ ngày càng rõ rệt sau vài năm.

Nói như vậy không có nghĩa ai bắt đầu học lập trình bằng Python, JS đều kém, bởi quan trọng là bạn đang làm gì, nếu bạn chỉ làm với front end, hoặc NodeJS, hay viết app với RN thì thành thạo JS vẫn tốt. Nhưng trong trường hợp này tôi vẫn có một lời khuyên: hãy mở rộng thêm ra, học thêm một ngôn ngữ khác, chắc chắn bạn sẽ thấy thêm nhiều cơ hội nữa.

👉 Vậy cá nhân tôi nghĩ gì?Tôi không nghĩ trong trường phổ thông, người ta dạy bạn lập trình để trở thành một lập trình viên. Cũng như bạn không học văn để trở thành nhà văn, học toán để trở thành nhà toán học. Người ta chỉ dạy những thứ giúp bạn hiểu máy tính thực sự hoạt động thế nào. Bởi máy tính đã trở thành một phần trong thế giới hiện đại, nên hiểu cách nó hoạt động trở nên rất quan trọng. Là một người “rành máy tính” giúp ích rất nhiều trong đời sống hàng ngày: bạn đỡ bị mất tiền bởi click vào các đường link lừa đảo, chị kế toán biết cách xử lý khi không nối được wifi, anh thợ sửa ống nước có thể trao đổi công việc với cô chủ nhà qua email… Để làm được 7-8 điểm các bài lập trình trong trường không khó, nếu bạn làm tốt được các môn toán lý hóa thì chẳng có lý gì lại không làm được các bài lập trình Pascal.

👉 Vậy tại sao không chọn C++, Java hay một ngôn ngữ khác? Thứ nhất, C++ và Java quá phức tạp, bạn không thể học C++ hay Java mà không nói gì về hướng đối tượng, nào là đa hình, nào là trừu tượng, những thứ đó phù hợp với người học lập trình để đi làm hơn. Nền tảng Java cũng khá phức tạp, bạn sẽ phải đau đầu về việc cài đặt biến môi trường, tìm hiểu về thư viện này nọ, có khi làm bài tập 2 tiếng thì mất 1 tiếng rưỡi chỉ để tìm hiểu tại sao nó không tìm thấy class của bạn để chạy.Thứ hai, các ngôn ngữ không chặt chẽ về kiểu như JS, PHP sẽ làm người dùng rối, đặc biệt là người dùng mới. Số 0 khác chuỗi ký tự “0” hay số 0 khác một biến nil sẽ logic và dễ hiểu hơn nhiều so với các phép so sánh lằng nhằng trong Javascript.Còn một lý do không thể không nhắc đến, đó là ở Việt Nam còn rất nhiều nơi không đủ trang thiết bị để dạy Java. Nếu bạn nghĩ ai cũng dễ dàng có được một chiếc PC 8GB RAM như bạn thì hãy đứng dậy và bước ra đường. Đừng ngồi trong phòng máy lạnh, rồi chỉ trích người khác “chỉ ngồi trong phòng máy lạnh”.

👉 Vậy còn C thì sao?Với tôi, C cũng có thể được dùng như một ngôn ngữ để dạy lập trình từ đầu: cấu trúc gọn gàng, sáng sủa, chặt chẽ về kiểu, các phép toán/logic đầy đủ… Thực tế cũng có rất nhiều trường đại học ở nước ngoài dạy ngôn ngữ đầu tiên là C chứ không phải Pascal. Có thể ở Việt Nam có nhiều lý do để chọn Pascal thay vì C: đội ngũ giáo viên (*), giáo trình… trong khi đó, thay đổi từ Pascal sang C không mang lại những giá trị rõ ràng.

(*)Nên nhớ, rất nhiều giáo viên tin học tại Việt Nam chưa một ngày đi làm phần mềm!

Còn lựa chọn nào khác?

Có một ngôn ngữ đơn giản hơn nữa là Scratch, ngôn ngữ thực sự được thiết kế cho việc học lập trình. Tuy nhiên nó hướng đến đối tượng trẻ em, trừ khi ta mang môn lập trình vào dạy trong chương trình PTCS thì mới nên áp dụng.

Tóm lại, tôi vẫn không tìm thấy một lý do thuyết phục cho việc thay đổi từ Pascal sang C. Còn nếu nói là học C sau này đi làm dễ dàng hơn, thì xin cho hỏi một câu: Bạn có đang đi làm và kiếm cơm bằng C không?

One thought on “NÊN DẠY PASCAL HAY C TRONG NHÀ TRƯỜNG?

  1. nếu dạy lập trình ở cấp 3 thì em đề nghị dạy VBA, không phải VB.NET, không phải mấy thứ javascript console.log(“hello world”) mà là Visual Basic for Application, thứ mà sẽ gắn liền với Microsoft Office, đồng thời gắn liền với hầu hết cuộc đời của các bạn nhân viên văn phòng sau này.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s