Tại sao C và C++ không độc lập với nền tảng?

Bài viết này được đóng góp bởi Sania Parween. Nếu bạn thích GeeksforGeeks và muốn đóng góp, bạn cũng có thể viết một bài báo bằng cách sử dụng đóng góp. chuyên viên máy tính. org hoặc gửi bài viết của bạn tới donate@geeksforgeeks. tổ chức. Xem bài viết của bạn xuất hiện trên trang chính của GeeksforGeeks và trợ giúp các Geeks khác

Vui lòng viết bình luận nếu bạn thấy bất cứ điều gì không chính xác hoặc bạn muốn chia sẻ thêm thông tin về chủ đề thảo luận ở trên

Nó được thiết kế để triển khai hệ điều hành UNIX. Trong UNIX, cả hệ điều hành và hầu hết các chương trình đều được viết bằng C

Nó còn được gọi là ngôn ngữ lập trình hệ thống vì nó rất hữu ích để viết các chương trình hệ thống (giao diện giữa phần cứng và ứng dụng người dùng) như trình biên dịch, trình điều khiển thiết bị, vBIOS (Hệ thống đầu vào/đầu ra cơ bản), trình liên kết, trình biên dịch mã, v.v.




C là một ngôn ngữ lập trình di động

Nếu bạn viết mã C trong máy của mình, nó sẽ chạy trên bất kỳ máy nào hỗ trợ C mà không cần sửa đổi một dòng mã nào

Bởi vì nó không bị ràng buộc với bất kỳ phần cứng hoặc hệ thống nào. Có thể nói, nó là ngôn ngữ độc lập với phần cứng hoặc ngôn ngữ độc lập với nền tảng

Đó là lý do tại sao c được gọi là ngôn ngữ di động




Các ngôn ngữ hiện đại được điều khiển từ ngôn ngữ C

Hầu hết các ngôn ngữ hiện đại đều bắt nguồn từ C bao gồm C ++, Java, PHP, Javascript, Python, Perl, v.v.

Một điểm quan trọng cần lưu ý là trong khi JAVA là ngôn ngữ độc lập với nền tảng thì JVM phụ thuộc vào nền tảng. Các JVM khác nhau được thiết kế cho các HĐH khác nhau và mã byte có thể chạy trên các HĐH khác nhau

C

Trình biên dịch C phụ thuộc vào nền tảng vì nó được liên kết chặt chẽ với nhân hệ điều hành, khác với hệ điều hành khác nhau

Nhưng trong những năm qua, tất cả các hệ điều hành đều đi kèm với các trình biên dịch và thư viện được cài đặt sẵn giúp nó trở thành nền tảng hoàn toàn độc lập cho lập trình cơ bản. Đối với lập trình cấp thấp sâu hơn được liên kết chặt chẽ với HĐH & HDL (ví dụ: khi chúng tôi đang xử lý các bảng cấp phát bộ nhớ), hành vi trở nên phụ thuộc nhiều hơn vào nền tảng và mối quan hệ của nó với Trình biên dịch C

C++

Một chương trình C++ có thể hoặc không phụ thuộc vào nền tảng. Nếu bạn gọi các hàm được cung cấp bởi trình biên dịch trên Windows chứ không phải trong các hệ điều hành khác, thì chương trình C++ của bạn sẽ chỉ biên dịch trên Windows. Đó là sự phụ thuộc vào nền tảng. Nhưng nếu bạn tránh gọi các hàm phụ thuộc vào nền tảng chẳng hạn như các hàm đó, bạn có thể biên dịch chương trình C++ ở bất cứ đâu

C#

C# được thiết kế để trở thành ngôn ngữ độc lập với nền tảng theo truyền thống của Java (mặc dù nó được triển khai chủ yếu trên Windows). Cú pháp của nó tương tự như cú pháp của C và C++, và C# được thiết kế để trở thành một ngôn ngữ hướng đối tượng

PHP

PHP độc lập với nền tảng và có thể chạy trên mọi nền tảng — Linux, Unix, Mac OSX, Windows. Điều này là do bạn có thể mở mã nguồn cho bất kỳ nền tảng nào. Nhưng khi nói đến lập trình mạng, nó cũng là “khuyết tật”, không thể cạnh tranh với Java trong lĩnh vực độc lập nền tảng

con trăn

Python và Java là ngôn ngữ thông dịch, trong khi C là ngôn ngữ biên dịch. Các ngôn ngữ được biên dịch thường nhanh hơn vì chúng trực tiếp chuyển đổi mã thành mã máy, các ngôn ngữ được giải thích không phụ thuộc vào nền tảng và mã được viết trong đó được thực thi nhanh chóng bỏ qua giai đoạn biên dịch

ĐI

Bởi vì go tạo mã máy phụ thuộc vào nền tảng và … ngôn ngữ Nếu bạn có mã nguồn, bạn có thể biên dịch nó trong bất kỳ nền tảng nào

nếu bạn biên dịch và xây dựng mã chương trình C trong windows, hãy sao chép mã đó. exe sang máy linux, đó là. tập tin exe sẽ không chạy ở đó. Theo cách tương tự nếu bạn biên dịch mã chương trình tương tự trên linux, bạn sẽ nhận được một. out tệp sẽ không chạy trên windows nếu được sao chép trực tiếp vào đó. Tôi không có bất kỳ ví dụ nào để giải thích, không có mã để tôi có thể gây ấn tượng với anh ấy. Bạn có không? . Một lần nữa, bạn có thể hỏi #include Int main(){ int i=10; . Nó sẽ in 11 ở bất kỳ nền tảng nào, vậy làm sao chúng ta có thể nói c không độc lập với nền tảng. Vì vậy, đây là lý do và ví dụ. Trong java, python hoặc bất kỳ ngôn ngữ độc lập nền tảng nào khác, kích thước của số nguyên là cố định. Hãy nói về java, trong java kích thước của một số nguyên là 4 byte. Trong C, kích thước số nguyên phụ thuộc vào bộ xử lý Kích thước lưu trữ của kiểu dữ liệu int là 2 hoặc 4 hoặc 8 byte. Nó thay đổi tùy thuộc vào bộ xử lý trong CPU mà chúng tôi sử dụng. Nếu chúng ta đang sử dụng bộ xử lý 16 bit, bộ nhớ 2 byte (16 bit) sẽ được phân bổ cho kiểu dữ liệu int. Tương tự, 4 byte (32 bit) bộ nhớ cho bộ xử lý 32 bit và 8 byte (64 bit) bộ nhớ cho bộ xử lý 64 bit được phân bổ cho kiểu dữ liệu int. int (2 byte) có thể lưu trữ các giá trị từ -32,768 đến +32,767 int (4 byte) có thể lưu trữ các giá trị từ -2,147,483,648 đến +2,147,483,647. Nếu bạn muốn sử dụng giá trị số nguyên vượt quá giới hạn trên, bạn có thể sử dụng “long int” và “long long int” vì giới hạn này rất cao

Hãy hiểu bằng một ví dụ #include Int main(){ int i=10; . 2 chạy mọi đồ họa. h trong windows trong chương trình c, sau đó chạy chương trình đã biên dịch đó trong Linux, tệp tiêu đề sẽ không hoạt động, vì đồ họa. h không được xác định trong Linux. có nhiều kịch bản như vậy trong ngôn ngữ C. Có một số tối thiểu không. yêu cầu phần cứng để chạy chương trình C, trong khi nó không bắt buộc trong java. Mã này có đầu ra khác nhau trên nền tảng khác nhau, đối với 8/16 bit sẽ in Có và đối với 32 hoặc 64 bit sẽ in Không. Trong java, kích thước số nguyên là 4byte cố định nếu bộ xử lý là 16 bit, trình biên dịch java sẽ lấy hai thanh ghi để lưu trữ số nguyên. Đây là một số đầu vào từ Himanshu thưa ngài. chúng tôi đã gặp phải nhiều vấn đề về nền tảng khi làm việc với Motorola trên các thiết bị nhúng. Khi chúng tôi chuyển mã sang nhiều thiết bị, nhiều sự cố mạng đã được phát hiện. Sau đó, chúng ta có thể thấy sự khác biệt, các nền tảng này đang sử dụng các bộ xử lý khác nhau từ nhiều nhà cung cấp như từ QUALCOMM, chất bán dẫn quy mô miễn phí, v.v. một số bộ xử lý hỗ trợ little endian và một số hỗ trợ big endian. Nền tảng khác nhau có kích thước số nguyên và độ dài khác nhau không tương thích

Tại sao ngôn ngữ C không phải là nền tảng độc lập?

Trong trường hợp C hoặc C++ (ngôn ngữ không độc lập với nền tảng), trình biên dịch tạo ra một. exe phụ thuộc vào hệ điều hành . Khi chúng tôi cố gắng chạy cái này. exe trên hệ điều hành khác, nó không chạy, vì nó phụ thuộc vào hệ điều hành và do đó không tương thích với hệ điều hành khác.

Tại sao C không đa nền tảng?

Bản thân ngôn ngữ C là đa nền tảng, bởi vì bạn không trực tiếp chạy mã C trên máy . Mã nguồn C được biên dịch thành hợp ngữ và hợp ngữ là mã dành riêng cho nền tảng. Phần duy nhất không đa nền tảng là trình biên dịch và kết quả lắp ráp.

Tại sao Java là nền tảng độc lập còn C thì không?

Do ứng dụng mã nguồn dành riêng cho hệ thống, nó có tính di động hạn chế . Nó giúp mã gốc (được viết bằng C hoặc C++) dễ dàng giao tiếp với các chương trình khác (được viết bằng Java hoặc các ngôn ngữ khác). Ngoài ra, đây là điều mang lại sự độc lập cho nền tảng Java.