01/10/2018, 11:57

Vì sao C++ được dùng trong embedded?

Chào các bạn,

Mình có một thắc mắc không biết giải thích thế nào. Theo như mình biết, class trong C++ được xem như là 1 struct. Vậy thì khi tạo 1 object, thì cần phải cấp vùng nhớ cho tất cả các biến trong struct đó có phải không (đồng thởi trả về 1 pointer trỏ tới đầu object)? Vậy chẳng phải với 1 class có nhiều biến thì sẽ tốn nhiều bộ nhớ nếu application của mình không sử dụng hết các biến trong class đó hay sao?

Ngoài ra, mình không hiểu lắm là các member functions trong C++ khi được tạo có được cấp phát bộ nhớ như thế nào?

Do thắc mắc như trên, mình vẫn chưa hiểu tại sao trong trường hợp nào thì chọn C++ để code embedded (thường rất hạn chế về memory).

Cảm ơn.

Văn Dương viết 13:57 ngày 01/10/2018

Trước giờ toàn thấy dùng C.

Nguyễn Thanh Vũ viết 14:07 ngày 01/10/2018

Có code embedded bằng C++ đó bạn. Library cho Arduino hay BLE module là một ví dụ. Vấn đề là mình chưa hiểu được advantage khi code bằng C++ cho embedded là gì

Dark.Hades viết 14:11 ngày 01/10/2018

Class nó như là 1 typedef, 1 kiểu dữ liệu, vậy nên nó chỉ dùng tới bộ nhớ khi tạo object.

Khi thiết kế những chương trình mà phần cứng hạn chế thì người lập trình phải quản lí chặt chẽ cái này, new/delete luôn đồng hành, và sẽ ưu tiên raw_ptr hơn smart_ptr.

Nó cũng giống việc bạn dùng C thôi, dùng cái gì thì tạo cái đó.

Trần Hoàn viết 13:57 ngày 01/10/2018

advantage khi code bằng C++ cho embedded là gì

Code cho class thì có các toán tử new, delete, ., ::dễ đọc hơn code cho struct trong C

Nguyễn Thanh Vũ viết 14:11 ngày 01/10/2018

Vậy thì tại sao không code C cho dễ, code C++ lam gì trong khi ưu điểm không rõ ràng nhỉ? Đó là cái minh thắc mắc. C++ phải có advantage gì đó thì mới chọn code chứ?

Hung viết 14:05 ngày 01/10/2018

Vì community thôi, dân embeded đa số viết bằng C nên C được lựa chọn. Số lượng libs nhiều và ổn định, được phát triển hằng ngày.

Về lý thuyết thì dùng ngôn ngữ nào cũng được, nhưng thực tế lại không. Javascript, Python, Java cũng có làm embeded nhưng không phong phú như C, libs lại quá ít, dễ thay đổi API

Nguyễn Thanh Vũ viết 14:04 ngày 01/10/2018

Mình đương nhiên biết là C được dùng phổ biến trong embedded. Vấn đề mình không hiểu là tại sao không phải mọi thứ đều viết bằng C mà một số lại chọn viết bằng C++, trong khi C++ không dễ viết như C.

nghia viết 14:10 ngày 01/10/2018

Chào Nguyen_Thanh_Vu!
C dễ viết hơn C++. Bạn có chắc không?

Nguyễn Thanh Vũ viết 14:05 ngày 01/10/2018

Cá nhân mình thấy thì với embedded C dễ viết hơn mà, cũng dễ structure mọi thứ hơn. Nếu không dễ hơn thì bạn phân tích cho mình thử xem sao?

bvp viết 14:09 ngày 01/10/2018

C++ nâng cấp từ C lên nên hỗ trợ nhiều hơn, viết dễ hơn nhé và có tính hệ thống hơn. Khi làm 1 hệ thống lớn thì dùng C++ bảo mật tốt, dễ bảo trì,…Lúc trước mình cũng từng suy nghĩ giống bạn nhưng giờ đã thay đổi suy nghĩ rồi :D.

Nguyễn Thanh Vũ viết 14:05 ngày 01/10/2018

Mình hiểu C++ bảo mật tốt hơn là do tính encapsulation phải không nhỉ? Bạn có thể ví dụ cụ thể hơn về việc dễ bảo trì cho mình được không (và nhưng advantage khác nữa). Tks bạn.

bvp viết 13:59 ngày 01/10/2018

khi thêm mới hoặc sửa đổi 1 tính năng nào đó thì nhờ vào hướng đối tượng mà công việc sẽ dễ dàng hơn rất nhiều. Mình nghĩ bạn nên học C++, lúc ấy sẽ thấy nó có nhiều điểm rất hay

rogp10 viết 14:07 ngày 01/10/2018

Bù lại dễ lạm dụng inheritance

Nguyễn Thanh Vũ viết 14:08 ngày 01/10/2018

vì sao lạm dụng inheritance lại là một điều xấu nhỉ?

Văn Dương viết 13:58 ngày 01/10/2018

Khi đã biên dịch ra rồi thì không còn cái gì là encapsulation nữa. Đều phơi ra cho thiên hạ xem hết.
Bảo mật nằm ở tầm của người lập trình.

Văn Dương viết 14:05 ngày 01/10/2018

Chắc luôn nhé !
Nhiều chỗ thì cái C++ khác C không mang lại cái ý nghĩa gì cả.

rogp10 viết 14:04 ngày 01/10/2018

Vì muốn gọi lại thì vẫn có thể new ra gọi (composition) chứ cần gì phải inheritance đặc biệt là C++ nữa.

Trần Hoàn viết 14:09 ngày 01/10/2018

Tiện cho mình hỏi luôn, một đối tượng đã delete rồi, hoặc là chưa khởi tạo thì khi delete có báo lỗi không?

Thi Nguyen viết 14:00 ngày 01/10/2018

Mình thì thấy C dùng để viết ct trong VĐK hay thiết kế Verilog…

nghia viết 14:09 ngày 01/10/2018

Em đồng ý với anh khi viết nhúng thì C dễ hơn C++. Chứ viết app = C thì thôi thà viết C++ cho khỏe!

Bài liên quan
0