0 👍
575 lượt xem
bởi (🏅0)
Nọ mình xem 1 clip nói về OOP sẽ chết và DOD ( Data oriented design ) sẽ là xu hướng mới, liệu nó có xảy ra được không ạ
bởi
Cho xin link clip bạn ơi. Chưa nghe đến DOD bao giờ. Chỉ biết Data Driven Programming thôi.
bởi

2 câu trả lời

0 👍
bởi
DOD là xu thế từ lâu do tốc độ của memory hiện tại không bắt kịp với CPU. Nên khi thiết kế những hệ thống khắt khe về performance người ta sẽ phải tính đến data layout và access pattern trước sao cho những cái gì cần truy cập cùng lúc thì nằm gần nhau để nó fit vào cùng một cache line. Bởi vì khi miss cache thì CPU có nhanh mấy cũng phải đợi memory nó đọc chứ không xử lý được gì. Cái này lại ngược với OOP vì thằng OOP nó design hệ thống dựa trên mô hình quan hệ giữa các đối tượng. Vô tình khiến cho khi ta truy cập một property của đối tượng sẽ khiến cache phải load thêm rất nhiều property rác không liên quan đến tính toán hiện tại.

ECS là pattern được sử dụng nhiều trong các hệ thống theo DOD vì object được composite từ nhiều component. Các component nằm cạnh nhau trong memory nên khi ta truy cập đến một kiểu component thì sẽ không bị load nhầm rác như OOP. Structure of array thay vì array of structure. Ngoài ra về khả năng scale thì ECS nó scale theo chiều ngang, thêm logic là thêm component chứ nó không refactor inheritance tree (khó).

OOP thì mình cũng đíu thích lắm, vì có mấy thằng fanboy OOP như kiểu Java, cái đíu gì cũng là object nhìn đã thấy ngu. Đợt này có lambda thì bớt ngu cơ mà nc là đã ghét thì khó thay đổi. Nhưng bảo OOP dead vì DOD hay ECS thì không đúng. Không phải hệ thống nào cũng cần performance, và không phải hệ thống nào cũng cần scale tới mức gặp vấn đề với deep inheritance tree. Nên DOD, ECS với nhưng bài toán trên có thể overkill và làm phức tạp hoá vấn đề.

DOD cũng chả phải mới mẻ gì, cỡ 10 năm trước mình làm cũng gặp suốt rồi. Tuỳ domain thôi, một số loại domain thì DOD rất phổ biến. Thời buổi giờ nc là không nên chỉ biết mỗi OOP, nên luyện thêm các bộ môn khác, kể cả không dùng thì vẫn giúp ta biết được chỗ ngu của OOP, từ đó code OOP tốt hơn =ư

P/S: đố ae biết Qt Quick là OOP hay DOD?
bởi
cả 2.
0 👍
bởi (🏅169)
Tham khảo link của một chuyên gia nhé: https://fryzal.com/post/why-not-oop/
Coding Guru là nơi dành cho cộng đồng lập trình viên Việt Nam hỗ trợ nhau về tất cả các vấn đề liên quan đến công nghệ.

Chúng ta hãy cùng nhau xây dựng một cộng đồng công nghệ Việt Nam mạnh mẽ, thúc đẩy và giúp đỡ nhau cùng phát triển, thăng tiến trong sự nghiệp.

***
Nơi đam mê hội tụ
***
...