Liệu có ngôn ngữ lập trình nào còn nhanh hơn và tinh gọn hơn cả C hay C++ không?

A: Cameron Purdy, Lập trình hợp ngữ, C, C++, Java, C#, vv.

=========

Ông già cáu kỉnh đầy trách nhiệm đang lên tiếng đây.

Bất cứ ai đi đặt câu hỏi về việc một ngôn ngữ lập trình nào đó có nhanh hay không đều chẳng hiểu gì về việc lập trình.

Đầu tiên hãy hiểu việc lập trình đã, sau đó mới quan tâm tới ngôn ngữ.

Một phiên bản sắp xếp nhanh (quicksort) được viết bằng Ruby, PHP, Visual Basic, hay Javascript đều nhanh hơn nhiều sắp xếp nổi bọt (bubble sort) viết bằng hợp ngữ, C, C++, Rust, Go, Java, hay C#. Để thử nghiệm điều này, hãy cứ lấy một mảng chứa một triệu cái tên và chạy hàm sắp xếp đó xem xem hàm nào xong trước tiên nhé.

Điều này không có nghĩa rằng Ruby nhanh hơn C. Cũng chả đồng nghĩa với việc Visual Basic nhanh hơn Go đâu. Nó nói lên rằng cách thiết kế là rất quan trọng, cấu trúc dữ liệu quan trọng và giải thuật cũng rất quan trọng. Chỉ sau khi biết được làm cách nào để thực hiện tốt được tất cả những thứ đó thì một người mới cần lo lắng về tốc độ của ngôn ngữ lập trình thôi nhé.

Đối với việc tối ưu ở mức thấp (cục bộ), rất khó tìm ra được một ngôn ngữ tốt hơn C hay C++. Việc tối ưu mức cục bộ chỉ quan trọng nếu bạn đã thiết kế đúng, dùng cấu trúc dữ liệu chuẩn và đang xem xét tới những thuật toán phù hợp mà thôi.

Hợp ngữ không nhanh hơn C đâu. Tôi vẫn đang viết hợp ngữ đấy (6502, JVM bytecode, XVM IR). Tôi biết các loại code hợp ngữ nữa (6502, 68k, x86, bytecode, vv). Đối với bất kỳ dự án khá lớn nào, trình biên dịch C sẽ tạo ra những mã nguồn tốt hơn nhiều so với những gì tôi có thể làm với hợp ngữ. Khi viết hợp ngữ, chính bạn là người phải tối ưu mọi thứ. Gợi ý nhé: Có lẽ bạn không xuất sắc lắm đâu.

Càng “tinh gọn” thì, bạn càng có ít sự lựa chọn mà thôi. Cuối cùng sẽ phải là C hoặc hợp ngữ, và bạn phải lẩn tránh các thư viện bằng mọi giá. (Thư viện là lý do số một khiến cho những lần build không được “tinh gọn” cho lắm.)

Mặt khác, nếu kích thước chương trình chạy là điều quan trọng nhất thì, có lẽ Perl là lựa chọn tinh gọn nhất đấy, bởi nhiều khả năng runtime của Perl gần như là tức thì rồi, vì thế bạn chỉ cần có chương trình nhỏ, gọn và dễ đọc mà thôi.

Theo: Vũ Cường

Leave a Reply

Your email address will not be published. Required fields are marked *