Tôi sẽ trả lời với một câu hỏi khác: C ++ có phải là ngôn ngữ cấp cao không?
Đó không phải là: chính ngôn ngữ cung cấp cho bạn các lớp, quá tải toán tử và các mẫu. Đó chỉ là đường cú pháp xung quanh các cấu trúc, chức năng và macro. Ví dụ, LightBlue Brew là cầu nối không cao giữa bia (hướng đối tượng C) và C ++ vì Brew tình cờ tương thích nhị phân với C ++! The language itself gives you classes, operator overloading, and templates. That's just syntactic sugar around structs, functions, and macros. As an example, Lightblue BREW is a zero-overhead bridge between BREW (object-oriented C) and C++ because BREW happens to be binary-compatible with C++!
Cfront là "trình biên dịch" ban đầu cho C ++: nó được xử lý trước C. Trình biên dịch ban đầu cho Objective-C cũng chỉ là bộ tiền xử lý.
Đó là: Bạn có thể viết mã sử dụng các tính năng "cấp cao" (quản lý bộ nhớ, thu gom rác, biểu thức lambda, ...) mà không phải lo lắng về các chi tiết "cấp thấp" (quên miễn phí). Có rất nhiều thư viện C ++ ngoài kia (ví dụ: tăng). You can write code which uses "high-level" features (memory management, garbage collection, lambda expressions, ...) without worrying about "low level" details (forgetting to free). There are plenty of C++ libraries out there (e.g. Boost).
Nó hữu ích hơn nhiều khi phân loại một ngôn ngữ theo các tính năng mà nó có thay vì cho nó một số cấp cao. Lấy ví dụ, giải nén tiêu đề .bmp ("dib"):
- C: Dễ dàng. Chỉ cần sử dụng một cấu trúc. Bạn có thể phải lo lắng về khả năng, đóng gói và tính di động đối với các kiến trúc kỳ lạ.
- C ++: Sử dụng một cấu trúc. Nếu bạn thông minh, các cấu trúc cũng có thể xử lý tính nội bộ và đóng gói theo cách chủ yếu là di động.
- Java: Bạn phải tính toán độ lệch vào tiêu đề. Nếu đó là một mảng byte, bạn phải làm mặt nạ và tự đánh mình. (Nếu đó là bộ đệm NIO, bạn chỉ cần đặt phần nội tâm.)
- Realbasic: Đó là một bộ nhớ. Bạn phải tự tính toán độ lệch vào tiêu đề. Bạn có thể phải lo lắng về khả năng của Endianness, tùy thuộc vào việc bạn có sử dụng plugin mở rộng MemoryBlock hay không.
- Python: Chỉ import struct. Không có trường nào có tên mặc dù, vì vậy bạn phải theo dõi những thứ tự họ đang ở, vì vậy nó được đặt cược một chút so với việc tính toán độ lệch.
Ở đó, một vấn đề dễ dàng trong đó C ++ dường như là ngôn ngữ cấp cao nhất và C đứng thứ hai.
Tôi cũng sẽ lưu ý rằng sự tồn tại của các tính năng "cấp thấp" không tạo ra ngôn ngữ ở cấp độ thấp. Trong C#, bạn có thể viết mã "không được quản lý" và sử dụng số học con trỏ. Trong Python, bạn có thể gọi các hàm C hoặc C ++ và import objc để gọi Objective-C, mất tất cả các loại an toàn (Tôi làm điều này khi tôi viết một chương trình kiểm tra nhanh, vì nó dễ dàng hơn nhiều so với việc biên dịch và chạy lặp lại) .
Bên cạnh đó, con trỏ số học không cần phải ở mức thấp. Con trỏ thường được triển khai dưới dạng địa chỉ bộ nhớ và các tài liệu tham khảo C ++ thường được thực hiện dưới dạng con trỏ, nhưng không có lý do gì bạn không thể thay đổi triển khai cơ bản để làm cho các con trỏ được kiểm tra giới hạn hoặc thậm chí được kiểm tra loại.
Nó hoàn toàn phụ thuộc vào bối cảnh.
- So với PHP, C là mức thấp;
- So với lắp ráp x86, C là cấp cao;
- So với các hướng dẫn tôi đã sử dụng để xây dựng vũ trụ này nơi bạn cư trú, C ở mức cao đến mức bạn hầu như không thể nhìn thấy nó.
Nó phụ thuộc vào người bạn đang nói chuyện và về những gì, về câu trả lời là gì. Tuy nhiên, C là một chút của một con thú độc đáo, bởi vì (như Mike đã chỉ ra trong các bình luận), đó là cấp thấp nhất của tất cả các ngôn ngữ lập trình độc lập với kiến trúc chung, và đây là những ngôn ngữ mà bạn có thể gặp phải trong thực tế hiện đại. Vì vậy, trong thực tế, bạn có thể nghe thấy C được coi là "cấp thấp" trừ khi bạn đang nói chuyện với một người nghịch ngợm bit trong các sổ đăng ký với bàn ủi hàn để kiếm sống.
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
ĐọcHigh level language and low level language are the programming languages’s types.
Bàn luậnhigh level language and low level language is that, Programmers can easily understand or interpret or compile the high level language in comparison of machine. On the other hand, Machine can easily understand the low level language in comparison of human beings.
Cả ngôn ngữ cấp cao và ngôn ngữ cấp thấp đều là các loại ngôn ngữ lập trình.
Sự khác biệt chính giữa ngôn ngữ cấp cao và ngôn ngữ cấp thấp là, các lập trình viên có thể dễ dàng hiểu hoặc giải thích hoặc biên dịch ngôn ngữ cấp cao so với máy. Mặt khác, máy có thể dễ dàng hiểu ngôn ngữ cấp thấp so với con người.
1. | Ngôn ngữ cấp cao | Ngôn ngữ cấp thấp |
2. | Đó là ngôn ngữ thân thiện với lập trình viên. | Nó là một ngôn ngữ thân thiện với máy. |
3. | Ngôn ngữ cấp cao là ít bộ nhớ hiệu quả. | Ngôn ngữ cấp thấp là bộ nhớ cao hiệu quả. |
4. | Nó rất dễ hiểu. | Nó là khó hiểu. |
5. | Nó là đơn giản để gỡ lỗi. | Nó là phức tạp để gỡ lỗi tương đối. |
6. | Nó là đơn giản để duy trì. | Nó là phức tạp để duy trì tương đối. |
7. | Nó là di động. | Nó là không thể thực hiện được. |
8. | Nó có thể chạy trên bất kỳ nền tảng. | Nó phụ thuộc vào máy. |
9. | Nó cần trình biên dịch hoặc trình thông dịch để dịch. | Nó cần trình biên dịch cho bản dịch. |