Chào mọi người,em có 1 thắc mắc là OOP có cần thiết với lập trình nhúng hay không và nếu chọn OOP phải cần theo như nào cho hiệu quả với C ạ?, em xin cảm ơn
OOP cần thiết với lập trình nhúng?
Nói sao nhỉ.
- C không hỗ trợ OOP
- OOP cũng chỉ là 1 trong những hướng tiếp cận để lập trình.
- Có thể bạn bị nhầm lẫn giữa OOP và pointer. (Cái này mình gặp nhiều ở các bạn sinh viên rồi).
Theo mình, để đánh giá việc này còn phụ thuộc vào sức mạnh của embedded device của bạn và công việc mà bạn muốn thực hiện. Embedded không đơn thuần là chỉ viết driver, modules, nó còn có thể là development of apllications, system intergration …
- Như bạn Loc nói, OOP là 1 kiểu tư duy, hướng tiếp cận.
- C được sinh ra để trở thành 1 ngôn ngữ hướng thủ tục nó giúp C trở nên hiệu quả hơn và có thể dễ dáng map constructs trực tiếp với assembly, nó không phải sinh ra cho hướng đối tượng. Giống như đôi đũa sinh ra để gắp, nhưng nếu bạn cố gắng sử dụng nó để múc canh, điều đó cũng được thôi. Nhưng sẽ rất vất vả và không xứng đáng.
- C++ hỗ trợ điều đó. Nhưng đổi lại nó có thể sẽ tiêu tốn bộ nhớ hoặc là giao tiếp phần cứng, hoặc những vấn đề liên quan khác. Ví dụ như virtual function, templates …
- Trong 1 hệ thống nhúng ta hoàn toàn có thể bắt gặp C ở tầng dưới, C++, python, java ở tầng trên. Hoặc đơn giản chỉ có duy nhất C.
- Hiện tại, trên các diễn đàn cũng có rất nhiều bàn luận về việc viết lại linux kernel bằng c++. Điều này hoàn toàn có thể thực hiện được bởi các kĩ sư tài năng, nhưng vấn đề là chi phí nên chưa thể thực hiện.
- Như vậy, mọi ngôn ngữ đều có mục đích của nó, tất cả đều có điểm mạnh và điểm yếu của riêng mình, hãy sử dụng ngôn ngữ phù hợp với hoàn cảnh và mục đích của bạn.
Nó không quá cần thiết.
Tức là biết thì cũng tốt và không biết cũng không hẳn xấu.
Nhiều nền tảng không hỗ trợ ngôn ngữ có OOP.
Những chỗ hỗ trợ ngôn ngữ có OOP thì ngôn ngữ này cũng đều có thể dùng theo cách không dùng OOP.
Mục đích lập trình trên PC khá khác so với mục đích của lập trình nhúng nên OOP có thể rất cần nếu lập trình trên PC nhưng nhúng thì không hẳn do mục đích của nó.
OOP là 1 concept. dĩ nhiên là app dụng được hết. concept gốc của OOP là message passing giữa các đối tượng. không phải abstraction, inheritance gì đâu.
Alan Kay cha đẻ của OOP note:
I'm sorry that I long ago coined the term "objects" for this topic because it gets many people to focus on the lesser idea.
The big idea is "messaging"