C++ sẽ bị thay thế bởi Python?

Mỗi CPU đi kèm với một ngôn ngữ mạch gọi là ISA (Instruction Set Architecture) Assembly. ISA Assembly là ngôn ngữ phần cứng bao gồm các hoạt động thao tác dữ liệu cơ bản, tính toán toán học và lập trình có cấu trúc (i. e. , jmp). Tuy nhiên, việc viết mã Hợp ngữ cho mọi yêu cầu tính toán chắc chắn là tốn thời gian, vì vậy các lập trình viên trước đây đã phát minh ra các ngôn ngữ và trình biên dịch thân thiện với con người.

Nhà khoa học máy tính tiên phong Dennis Ritchie đã triển khai ngôn ngữ lập trình C cho các yêu cầu phát triển hệ điều hành Unix. Vào thời kỳ này, toàn bộ lĩnh vực công nghệ máy tính đang khởi tạo nền tảng của nó, vì vậy hầu hết các lập trình viên đều sử dụng C để xây dựng các chương trình máy tính ban đầu, chẳng hạn như trình biên dịch, hệ điều hành, phần mềm cơ sở dữ liệu và chương trình mạng. Sau đó, C++ đã mở rộng C và khai sinh ra một ngôn ngữ lập trình mới với nhiều tính năng dành cho nhà phát triển hơn bằng cách duy trì các yếu tố hiệu suất của C

Vào những năm 20, các lập trình viên đã triển khai các giải pháp thay thế C/C++ như Go, D, Rust và Carbon với nhiều tính năng khác nhau mà C/C++ không bao giờ cung cấp. Các ngôn ngữ này vẫn cạnh tranh với tư cách là ngôn ngữ thay thế C/C++ hơn là ngôn ngữ thay thế vì những lý do sau

C và C++ là ngôn ngữ nền tảng

Nếu chúng ta tìm thấy sự ra đời của mọi chương trình máy tính cứu sống chúng ta ngày nay, cuối cùng chúng ta sẽ tìm thấy C hoặc C ++. Hãy suy nghĩ về những gì bạn làm bây giờ. Bạn có thể đọc câu chuyện này trên Google Chrome — Trình duyệt nguồn mở Chromium (công cụ kết xuất Blink, V8 và ứng dụng trình duyệt) được viết bằng C++. Giả sử rằng bạn đang chạy Chrome trên GNU/Linux — Nhân Linux được viết bằng C. MySQL, hệ thống quản lý cơ sở dữ liệu quan hệ phổ biến nhất, được viết bằng C/C++. Tất cả các hệ điều hành phổ biến đều cung cấp API lõi C hoặc C++ cho các chức năng lõi

Mặc dù có các lựa chọn thay thế C/C++ ổn định, nhiều lập trình viên vẫn thích C hoặc C++ hơn để lập trình hệ thống. Trong hầu hết các trường hợp, các lập trình viên chọn C++ vì đó là ngôn ngữ tốt nhất để giao tiếp với các API cấp hệ điều hành. Ví dụ: Google đã viết công cụ Flutter bằng C++

Công cụ rung sử dụng C/C++ để sử dụng các hàm thư viện GTK, ảnh chụp màn hình của tác giả

Hầu hết các thành phần cốt lõi trong lĩnh vực điện toán đều sử dụng C/C++ làm ngôn ngữ triển khai trong nhiều thập kỷ và các ngôn ngữ C/C++ đang duy trì các tiêu chuẩn cho cú pháp ngôn ngữ trong một thời gian dài. Chải chuốt một sự thay thế cho C/C++ cũng giống như thay đổi nền tảng của một ngôi nhà sau tất cả các công trình xây dựng

C và C++ trao toàn quyền kiểm soát những gì chúng tôi viết

C/C++ cho phép tự do xử lý tài nguyên chương trình theo ý muốn khi viết mã nguồn. Ví dụ: C/C++ cho phép bạn cấp phát/giải phóng bộ nhớ vật lý trực tiếp để lưu trữ các thành phần dữ liệu. C/C++ cung cấp một cách để làm việc với các luồng cấp hệ điều hành gốc thay vì quản lý thời gian chạy đồng thời riêng biệt như Go. C/C++ không cung cấp tính năng quản lý bộ nhớ tự động (thu gom rác), vì vậy các lập trình viên nên ngăn chặn rò rỉ bộ nhớ một cách cẩn thận và hiệu quả. Xem cách mã nguồn thư viện Folly của Meta triển khai các chiến lược quản lý bộ nhớ thủ công

Meta sử dụng các tính năng quản lý bộ nhớ thủ công, ảnh chụp màn hình của tác giả

Quản lý bộ nhớ tự động và các giới hạn đối với việc xử lý bộ nhớ chắc chắn là những cách tiếp cận tốt để làm cho một ngôn ngữ hiện đại, hiệu quả và trừu tượng hơn — nhưng những tính năng này tạo ra chi phí hoạt động trong thời gian chạy ngôn ngữ và làm giảm sự tự do của lập trình viên

C và C++ không hạn chế quyền truy cập bộ nhớ, cung cấp các thao tác quản lý bộ nhớ thủ công và trao quyền tự do cho người lập trình bằng cách cho phép người lập trình điều khiển chương trình theo ý muốn. Khi bạn viết chương trình bằng C/C++, mã nguồn của bạn sẽ làm những gì bạn hướng dẫn một cách hiệu quả — không có gì khác

C và C++ thực sự nhanh và hiệu quả

Hiệu quả của một chương trình cụ thể phụ thuộc vào hai yếu tố chính. độ phức tạp về thời gian của các thuật toán được lập trình viên sử dụng và hiệu quả của chương trình nhị phân. Chắc chắn chúng ta có thể kiểm soát độ phức tạp của các thuật toán vì chúng ta có thể thay đổi chúng bằng cách cập nhật mã nguồn. Mặt khác, trình biên dịch tạo ra các tệp nhị phân, vì vậy chúng tôi không có cách nào dễ dàng để cải thiện hiệu quả từ khía cạnh đó

Tuy nhiên, chúng ta có thể chọn một trình biên dịch tạo ra các tệp nhị phân nhanh và hiệu quả. Trình biên dịch GNU C tạo các tệp nhị phân dành riêng cho nền tảng mà không cần nhúng môi trường thời gian chạy chuyên dụng. Mô hình thực thi lập trình C sử dụng mã khởi động tối thiểu được xác định trong đoạn hướng dẫn hội crt0. Nhìn vào phần crt0 ví dụ sau trên Linux

Mã khởi động được thực thi trước chức năng chính trong C, ảnh chụp màn hình của tác giả

C++ chắc chắn là một ngôn ngữ phức tạp, nhưng nó không mang lại tính trừu tượng cao hơn như Python và Golang. Ngoài ra, nó cung cấp cho bạn một cách để sử dụng phiên bản ngôn ngữ tiêu chuẩn ưa thích (tôi. e. , C++14) để biên dịch — vì vậy bạn chỉ có thể sử dụng các tính năng tối thiểu với C++ vì C++ hiện đại có tính năng phát triển C++ phức tạp. C++ đã tồn tại hơn ba thập kỷ và được tối ưu hóa hiệu suất của nó kể từ thời kỳ đầu của kỷ nguyên điện toán

C và C ++ là ngôn ngữ thân thiện với học thuật

Các lập trình viên thường bắt đầu lập trình ở các giai đoạn khác nhau trong sự nghiệp của họ. Một số lập trình viên học lập trình ở độ tuổi đi học với các thiết bị máy tính đầu tiên của họ. Tuy nhiên, hầu hết các lập trình viên cải thiện kỹ năng lập trình của họ trong thời gian học tập tại các trường đại học. May mắn thay, hầu hết tất cả các trường đại học đều bắt đầu dạy lập trình với C bằng cách cho sinh viên cơ hội học cách chương trình máy tính hoạt động với các thành phần phần cứng. Tôi đã viết bài viết sau đây để giải thích thêm về cách một chương trình máy tính kết nối với phần cứng

5 điều cần biết trước khi bạn viết mã tối ưu hóa

Những sự thật này giúp bạn gây ấn tượng với cả phần cứng và lập trình viên với mã được tối ưu hóa

lên cấp. gitconnected. com

Sau này, hầu hết các trường đại học dạy cơ bản về cấu trúc dữ liệu và thuật toán với C++ mà không sử dụng các phần phức tạp của C++. Sinh viên đại học thường tham gia lập trình cạnh tranh sau khi học các môn liên quan đến thuật toán. Hầu hết các lập trình viên cạnh tranh thích C ++ vì tốc độ, tính sẵn có của cấu trúc dữ liệu tối ưu sẵn có và cú pháp tối thiểu

Rust chắc chắn là một ngôn ngữ tốt với sự an toàn của bộ nhớ, hiệu suất và các tính năng sẵn có, nhưng cú pháp Rusty không thân thiện với những nhà phát triển viết mã lần đầu. Go là một ngôn ngữ tốt cho các mục đích công nghiệp, nơi nhóm của bạn mong đợi mã hiệu quả tối thiểu giống như C và môi trường phát triển giống như Python. Tuy nhiên, để sử dụng trong học thuật, tính trừu tượng của Go quá tối thiểu và không phù hợp với các mã giả truyền thống, vì vậy những người hướng dẫn học thuật sẽ không bao giờ sử dụng Go để thay thế cho C/C++

Câu chuyện sau giải thích tại sao mọi lập trình viên nên bắt đầu lập trình với C

Tại sao mọi nhà phát triển nên bắt đầu lập trình với C

Bạn có thể bắt đầu lập trình với bất kỳ ngôn ngữ nào — nhưng bắt đầu với C sẽ có nhiều đặc quyền hơn

shalithasuranga. trung bình. com

Các lựa chọn thay thế hiện đại vẫn cần C và chúng tập trung vào các mục tiêu khác nhau

Như đã đề cập trước đây, tất cả các hệ điều hành POSIX và hệ điều hành không phải POSIX (i. e. , Windows) cung cấp một thư viện C để xử lý các hoạt động của kernel, vì vậy việc gọi các tính năng kernel từ C/C++ rất dễ dàng vì chúng ta không cần viết các ràng buộc dành riêng cho ngôn ngữ hoặc trình bao bọc của bên thứ ba. Một số hệ điều hành thậm chí còn tích hợp sẵn trình biên dịch và gỡ lỗi GNU C/C++ để thúc đẩy phát triển C/C++. Nếu chúng tôi sử dụng Rust and Go, chúng tôi cần các ràng buộc của bên thứ ba dành riêng cho ngôn ngữ để giao tiếp với các API của hệ điều hành. Các ngôn ngữ thay thế hiện đại vẫn cung cấp các cách gọi mã C. Ví dụ: Go cung cấp cho bạn tính năng Cgo để gọi mã C

Hầu như tất cả các giải pháp thay thế C/C++ đều cố gắng cung cấp các tính năng C++ còn thiếu với cú pháp ngôn ngữ rất khác so với C++. Nếu một lập trình viên tìm kiếm các giải pháp thay thế cho C/C++, họ thường mong đợi một quá trình chuyển đổi suôn sẻ và ít tốn thời gian hơn. Ngoài ra, họ không mong muốn học một ngôn ngữ mới để tìm giải pháp cho các tính năng C/C++ mà họ không thích

Các lập trình viên đã thiết kế và cải tiến C cho các trường hợp sử dụng lập trình cấp thấp và không có ngôn ngữ hiện đại nào được tạo ra chỉ nhắm vào các mục tiêu của C. C ++ làm cho C trở nên tương lai hơn và nâng tầm từ giai đoạn lập trình cấp thấp. Rust, Go, D và Carbon là các lựa chọn thay thế C/C++ — không phải thay thế và các lựa chọn thay thế này có mục tiêu tương lai của riêng chúng

Câu chuyện sau đây giải thích tại sao mọi lập trình viên cần học ngôn ngữ C++ trong sự nghiệp của họ

Tại sao mọi lập trình viên nên học C ++ trong sự nghiệp của họ

Thành thạo C++ không phải là một nhiệm vụ dễ dàng, nhưng một khi bạn đã hoàn thành nó — bạn sẽ nhận được những đặc quyền vô giá

lên cấp. gitconnected. com

Phần kết luận

Các lập trình viên trước đây đã viết lịch sử máy tính của chúng tôi trong thời kỳ tiến hóa của C/C++. Họ đã xây dựng nhân hệ điều hành, ngôn ngữ lập trình, hệ thống cơ sở dữ liệu, hệ điều hành di động và phần mềm mạng bằng C và C++. Hầu như tất cả các dịch vụ web hiện đại đều hoạt động ngày nay, nhờ C/C++. Ví dụ: phần mềm máy chủ web phổ biến nhất, như Apache HTTP và Nginx, sử dụng C/C++ làm ngôn ngữ triển khai. Các lập trình viên trước đây đã viết gần như tất cả các thành phần phần mềm mạng và trình duyệt web nội bộ phổ biến bằng C/C++. Các nhà phát triển web thích chọn Java và Node. js cho các dịch vụ web, nhưng cả Java và Node. js đến vì C/C++

Một số lập trình viên coi các ngôn ngữ phổ biến như Rust, Go, D và Carbon là những ngôn ngữ thay thế C/C++. Trong khi đó, một số lập trình viên xem xét việc sử dụng các ngôn ngữ đó như các lựa chọn thay thế C/C++ có thể thay thế C/C++ trong tương lai. Những ngôn ngữ hiện đại này được tạo ra cho các mục đích và yêu cầu cụ thể — không phải để thay thế C/C++

Microsoft đã tạo TypeScript, nhưng chúng tôi vẫn sử dụng JavaScript. Jetbrains đã tạo ra Kotlin, nhưng chúng tôi vẫn sử dụng Java. Có hàng trăm lựa chọn thay thế C/C++, nhưng các lập trình viên vẫn sẽ sử dụng C/C++ vì việc viết lại lịch sử máy tính theo định hướng C/C++ là không thực tế. Điều đó không có nghĩa là C và C++ là ngôn ngữ tốt nhất—các ngôn ngữ thay thế có thể hoạt động tốt hơn C/C++ ở một số khía cạnh (tôi. e. , độ phức tạp, an toàn bộ nhớ, v.v. ) — nhưng họ không thể biết C/C++ tồn tại ở đâu vì các lập trình viên trước đây đã viết toàn bộ lịch sử máy tính hiện đại bằng C và C++

Python sẽ thay thế C?

Ngôn ngữ lập trình Python đã đạt mức cao nhất mọi thời đại trên chỉ số TIOBE với 8. đánh giá 5%. Theo các nhà phân tích của TIOBE, với tốc độ này Python có thể vượt qua C và Java để trở thành ngôn ngữ lập trình phổ biến nhất

Ngôn ngữ C sẽ được thay thế?

Một số lập trình viên coi các ngôn ngữ phổ biến như Rust, Go, D và Carbon là những ngôn ngữ thay thế C/C++ . Trong khi đó, một số lập trình viên xem xét việc sử dụng các ngôn ngữ đó như các lựa chọn thay thế C/C++ có thể thay thế C/C++ trong tương lai. Những ngôn ngữ hiện đại này được tạo ra cho các mục đích và yêu cầu cụ thể — không phải để thay thế C/C++.

Lập trình C sẽ trở nên lỗi thời?

Thế giới máy tính tràn ngập các ngôn ngữ lập trình cấp cao, nhưng ngay cả ngày nay, một ngôn ngữ máy tính lâu đời như C vẫn còn tồn tại trong thế giới máy tính< . Thậm chí ngày nay, có vô số hệ thống vẫn sử dụng C làm ngôn ngữ lập trình chính ở nhiều nơi trên thế giới. . Even today, there are multitudes of systems that still make use of C as the main programming language in many parts of the world.

C có còn được sử dụng vào năm 2022 không?

C có thể cũ, nhưng nó chắc chắn phù hợp vào năm 2022 và có thể sẽ vẫn như vậy . Sự đơn giản của C cung cấp cho bạn một cánh cổng hoàn hảo vào thế giới lập trình. Nó giúp bạn hiểu cách triển khai chi tiết của bất kỳ thuật toán nào.