7 ngôn ngữ lập trình đáng ghét nhưng không thể thiếu đối với lập trình viên

C

Ngôn ngữ này nên được gọi là “chương trình biên dịch hợp ngữ di động” hay còn gọi là trình hợp dịch hơn là một ngôn ngữ máy tính đầy đủ (trình hợp dịch là chương trình dịch code viết bằng hợp ngữ sang code mà máy tính đọc được). Bạn sẽ phát khùng lên khi sử dụng bộ tiền xử lý để mở rộng một cái gì đó hay chán nản cùng cực khi viết các tập tin tiêu đề-header riêng rẽ.

Về lý thuyết, hầu như không ai sử dụng sức mạnh của số học con trỏ để đạt được những thành công siêu thông minh thay vì cấp phát cấu trúc dữ liệu. Việc viết các comment rất dài để giải thích các đoạn code với con trỏ sẽ lấy đi toàn bộ thời gian của bạn. Và khó mà nhớ hết mọi quy tắc của C để tránh các lỗ hổng bảo mật như tràn bộ nhớ đệm (buffer overflow/buffer overrun).

Buffer overflow là hiện tượng dữ liệu ghi vào bộ nhớ đệm-buffer lớn hơn kích thước của buffer làm cho phần dữ liệu dư ra được ghi vào phần bên cạnh của buffer gây ra nhiều lỗi. Lỗi này thường bị hackers lợi dụng để chạy code của chúng bằng cách đưa code vào phần dữ liệu dư ra.

Tóm lại là bạn không có lựa chọn nào khác tốt hơn C vì Unix được viết bằng C và đang là nền tảng cho hầu hết điện thoại di động lẫn đám mây. Không hẳn là tất cả đều dùng C khi code trên các nền tảng này nhưng phải có ai đó thường trực để đảm bảo mọi thứ được kết hợp tốt. Các driver thiết bị và chương trình nhúng khác cũng dùng C. C là cơ sở để Linux/Unix tiến về phía trước.

JavaScript

Cố gắng hiện đại hóa trong JavaScript của các nhà sáng tạo ngôn ngữ này khiến cuộc sống của các developer JavaScript luôn tràn ngập vô số dấu ngoặc ngọn, ngoặc vuông, ngoặc tròn và phải đảm bảo chúng được lồng vào nhau đúng cách. Với JavaScript, giấc mơ hồng lãng mạn chỉ biến thành kết quả thật sự khi bạn vượt qua được các hàm vô danh, các kiểu kết thúc và cấu trúc dữ liệu JSON.

JavaScript còn có những chi tiết kỳ quặc, ví dụ như nếu x là một chuỗi chứa ký tự “1” thì x+1 là chuỗi “11” và x-1 lại cho ra số 0! Liệu bạn có thể nhớ được sự khác nhau giữa false, null, NaN, undefined? (false, null, NaN, undefined là các falsy-giá trị được coi là sai trong JavaScript). Vì sao JavaScript lại có cả 4 giá trị này dù chúng có vẻ giống nhau?? Và vì sao chúng không hành xử nhất quán như nhau?

Dù đặt nhiều câu hỏi tại sao tới đâu thì bạn cũng chỉ giữ được các nguyên tắc của mình trong vâi giây cho đến khi cần kiểm tra email hay mua thứ gì đó trên mạng. Bạn vẫn sẽ cần JavaScript trong một thời gian dài nữa vì dù bạn phàn nàn nhiều tới đâu thì Internet, World Wide Web và các trình duyệt vẫn ở đó, Node.js thông minh vẫn đến và ép bạn viết JavaScript trên máy chủ. (Node.js là trình thông dịch JavaScript)

PHP

PHP không phải là một ngôn ngữ máy tính thật sự mà giống một công cụ bổ sung trí thông minh cho HTML tĩnh. Bạn có thể dùng các thẻ-tag tĩnh để liên kết các thông tin đã lưu trong cơ sở dữ liệu với PHP. Một cách hình tượng, tất cả những gì bạn làm với PHP là dùng hồ nối các chuỗi lấy từ dữ liệu.

Cú pháp trẻ con hay code giống trò chơi không phải là vấn đề khi hầu hết thế giới Web được xây dựng bằng PHP, như hầu hết nội dung trực tuyến của  WordPress, Joomla, Drupal và cả Facebook, mạng xã hội mà mọi người ngày càng dành nhiều thời gian cho nó hơn. Đổi lại, Facebook đã tạo ra máy ảo  HipHop tạo cảm hứng cho hãng Zend nâng cấp PHP lên phiên bản 7.0 nhanh gấp hai lần các bản cũ, giúp bạn tiết kiệm hàng triệu USD tiền điện để bạn sẽ tiếp tục chọn PHP trong tương lai dài hạn.

Cobol

Nếu bạn nghĩ rằng ngôn ngữ này đã chết từ những năm 70 của thế kỷ trước thì bạn đã quá sai lầm. Những người yêu thích thứ ngôn ngữ có cú pháp phức tạp với hàng trăm từ bị hạn chế vẫn đang duy trì các phiên bản mới, với những ý tưởng vay mượn từ các ngôn ngữ khác và đưa chúng lên một frame gần 60 năm tuổi (Cobol ra đời năm 1959). Ngày nay, Cobol 2014 có các bảng động, một ý tưởng nhen nhóm hơn chục năm từ năm 2002.

Có những tin tức mới thú vị hơn, như khi bạn gõ Cobol lên Dice.com, có 543 công việc có từ khóa này. Các công việc Cobol ở các công ty bảo hiểm và nhà thầu quốc phòng có ở khắp nơi. Những người đầu tiên sử dụng mainframe vẫn dùng Cobol để hoàn thành công việc. Các nhà khoa học máy tính vẫn dùng Cobol để viết các logic kinh doanh trong thao tác cơ sở dữ liệu vì việc mua một mainframe hay máy tính lớn hơn để chạy Cobol ngày càng dễ dàng hơn.

XSLT

Ngôn ngữ hàm dùng để chuyển đổi XML này tỏ ra thông minh và là một giải pháp rất tốt khi bạn cần trích xuất các bit và thành phần của các tài liệu XML lớn. Nhưng nó lại cản trở bạn khi bạn cần một cái gì đó phức tạp hơn chức năng search và replace (tìm kiếm và thay thế) đơn giản.

Đây là một ngôn ngữ có phong cách hàm rõ ràng và sử dụng các biến-variable với mục đích tương tự như hằng số trong nhiều ngôn ngữ khác, theo chuyên gia về XSLT Bob DuCharme.

Dù vẫn là một nền tảng mạnh cho nhiều chương trình xử lý dữ liệu lớn, XML hiện đang thất bại trước các format hiệu quả hơn như JSON. Bạn không cần đến XSLT chỉ để viết một vài dòng code cơ bản miêu tả chính đoạn văn bản. Nhưng việc viết tất cả code để miêu tả XML sẽ khó khăn hơn nhiều so với việc thấu suốt được cấu trúc XSLT.

Java

Là nền tảng cho web và di động, Java cũng là ngôn ngữ đầu tiên được nhiều trường trung học đưa vào chương trình. Bộ sưu tập thư viện của java sâu hơn và giá trị hơn hầu như mọi ngôn ngữ khác. Nhưng dường như cấu trúc của nó vẫn bị kẹt lại những năm 70 khi C ra đời, dù máy ảo và thư viện hiện đại hơn, từ những năm 90. Quản lý bộ nhớ tự động là một bước tiến lớn cho đến khi code của bạn quyết định quỳ gối khi bộ thu gom rác lấy lại quyền điều khiển. Đ ể đảm bảo người thu gom rác không khởi động khi đang có một sự kiện quan trọng, ví dụ 1 cuộc gọi tới 911, các developers Android còn có thủ thuật khi nào nên gửi trước yêu cầu lịch sự cho một bộ thu gom rác.

Ngoài ra, khi Oracle vá hoặc giải quyết các vấn đề trong những phiên bản mới, code và thư viện mới lại không thể chạy trên máy ảo cũ.

Python

 

Là ngôn ngữ được các nhà khoa học xã hội như sinh học, kinh tế học ưa thích sử dụng. Python cũng là một ngôn ngữ hiện đại được giới trẻ đào sâu tìm hiểu với đặc điểm code rõ ràng, ít dấu câu.

Những thay đổi tiến bộ trên các phiên bản mới 3.0 trở đi lại không tương thích với phiên bản cũ 2.7 khiến bạn phải luôn kiểm tra mình đang cài đặt phiên bản nào, và để ý nhiều hơn đến các cú pháp được sử dụng trong từng phiên bản. Bạn cũng phải cài thêm các gói hỗ trợ để chuyển đổi chương trình từ 2.x lên 3.x.

Ngoài ra, việc thụt lùi vào trong dễ làm bạn đau lòng vì phải dành thêm thời gian đếm số khoản trắng. Bạn cần  một chương trình biên tập khoảng trắng đơn giản hỗ trợ việc này. (Python đánh dấu các khối lệnh lồng vào nhau bằng cách để chúng thụt lùi vào trong thay vì dùng các cặp dấu ngoặc nhọn {} )

Be the first to comment

Leave a Reply

Your email address will not be published.


*