thảo luận Object-Oriented Programming is Bad

  • Người tạo chủ đề Người tạo chủ đề cs_50i
  • Ngày bắt đầu Ngày bắt đầu

cs_50i

bố Bơ

Các thím xem clip này và có nhận định gì?
Cá nhân tôi đã làm qua đủ loại Programming paradigms thì OOP rất hay tuy nhiên những khuyết điểm của nó hoàn toàn có thể thay thế bằng các mô hình khác. Việc bài xích đến nỗi xem nó như thứ cần loại bỏ khỏi tư tưởng thiết kế phần mêm là một cách phiến diện. Với những project lớn thì việc multi-developer, multi-module. OOP là cách giải quyết những bài toán này hiệu quả.

Nhưng trong thiết kế phần mềm, cố gắng nhét OOP vào khắp mọi nơi trong project thì tôi khẳng định dù có inject patterns chuẩn và cẩn thận cỡ nào đi nữa cũng sẽ gây ra hiệu ứng nonsensible (hiệu ứng dư thừa vô nghĩa). Mà nói chung vấn đề về OOP, những cons của nó là cái để phải thảo luận và nên tránh.
 
Sửa lần cuối:

Các thím xem clip này và có nhận định gì?
Cá nhân tôi đã làm qua đủ loại Programming paradigms thì OOP rất hay tuy nhiên những khuyết điểm của nó hoàn toàn có thể thay thế bằng các mô hình khác. Việc bài xích đến nỗi xem nó như thứ cần loại bỏ khỏi tư tưởng thiết kế phần mêm là một cách phiến diện. Với những project lớn thì việc multi-developer, multi-module. OOP là cách giải quyết những bài toán này hiệu quả.

Nhưng trong thiết kế phần mềm, cố gắng nhét OOP vào khắp mọi nơi trong project thì tôi khẳng định dù có inject patterns chuẩn và cẩn thận cỡ nào đi nữa cũng sẽ gây ra hiệu ứng nonsensible (hiệu ứng dư thừa vô nghĩa). Mà nói chung vấn đề về OOP, những cons của nó là cái để phải thảo luận và nên tránh.
hồi xưa đi học có học lập trình prolog, thấy nó hay hay nhưng ngoài việc để giải bài tập ra chưa ứng dụng nó vào thực tế đc, thím nghĩ sao về việc lập trình ko nhìn vấn đề theo hướng thủ tục mà nhìn nó theo hướng khai báo, phần xử lý thế nào thì để cho máy làm
 
hồi xưa đi học có học lập trình prolog, thấy nó hay hay nhưng ngoài việc để giải bài tập ra chưa ứng dụng nó vào thực tế đc, thím nghĩ sao về việc lập trình ko nhìn vấn đề theo hướng thủ tục mà nhìn nó theo hướng khai báo, phần xử lý thế nào thì để cho máy làm
Prolog nó ứng dụng nhiều vào AI, nhất là xử lý ngôn ngữ, mấy cái khó nhằn trong ngành y. còn nếu làm theo hướng programming declarative thì chủ yếu là phải tiếp cận theo hướng quy nạp toán học. Ví dụ như bài toán: Sum = 1^2...n^2 / bình thường ta cứ cho nó lặp đế hết n và i*i là xong (O)n. Quy nạp thì phát kiến ra công thức: n(n+1)(2n+1)/6. Máy tính nó khỏi phải access tới bộ nhớ gì hay lặp đến n làm gì, nó sẽ làm phép tính theo các toán hạng bằng các thanh ghi. (O)1

Tóm lại là programming declarative là tìm ra công thức của một bài toán bằng nhiều cách nhưng phổ biến là quy nạp.
 

Các thím xem clip này và có nhận định gì?
Cá nhân tôi đã làm qua đủ loại Programming paradigms thì OOP rất hay tuy nhiên những khuyết điểm của nó hoàn toàn có thể thay thế bằng các mô hình khác. Việc bài xích đến nỗi xem nó như thứ cần loại bỏ khỏi tư tưởng thiết kế phần mêm là một cách phiến diện. Với những project lớn thì việc multi-developer, multi-module. OOP là cách giải quyết những bài toán này hiệu quả.

Nhưng trong thiết kế phần mềm, cố gắng nhét OOP vào khắp mọi nơi trong project thì tôi khẳng định dù có inject patterns chuẩn và cẩn thận cỡ nào đi nữa cũng sẽ gây ra hiệu ứng nonsensible (hiệu ứng dư thừa vô nghĩa). Mà nói chung vấn đề về OOP, những cons của nó là cái để phải thảo luận và nên tránh.
Lâu lâu đổi gió functional hoặc declarative functional Sài với mấy cái Rx lib cũng vui.
Nhiều ông code Rx đọc source thấy chán kkk.
 
Cá nhân tôi thấy mấy cái này vô nghĩa vđ

Vấn đề ko phải bạn làm OOP hay FP, mà là nó đi vào thực tế như nào, giải quyết bài toán gì.

Đầy người chửi JS, chửi no-sql. Nhưng nó sinh ra giải quyết vấn đề của nó, và nó làm tốt. Oke thế là đủ rồi.
 
Cá nhân tôi thấy mấy cái này vô nghĩa vđ

Vấn đề ko phải bạn làm OOP hay FP, mà là nó đi vào thực tế như nào, giải quyết bài toán gì.

Đầy người chửi JS, chửi no-sql. Nhưng nó sinh ra giải quyết vấn đề của nó, và nó làm tốt. Oke thế là đủ rồi.
chính xác rồi, những thứ như này chỉ có tính chất tham khảo vấn đề. Kể cả 1 cái project chắc chắn nó sẽ vướng cái vấn đề này, nhưng về các mặt khác nó làm tốt thì vẫn làm thôi.
 
tuy có hơi rườm rà và dư thừa, nhưng một project lớn nhiều dev làm chung, dev nhảy ra nhảy vào thì mình thấy nó cần thiết.
 
Mình nghe nói làm game dev thì sẽ cảm nhận OOP rõ ràng hơn mấy cái khác. Bạn nào xác nhận giúp mình với.
 
OOP nó chặt chẽ, dễ dạy cho người mới. Chứ sinh viên mới vào trường mà dạy mấy ngôn ngữ quá linh hoạt thì có mà tẩu hỏa nhập ma.

Đến khi rành OOP rồi thì dĩ nhiên nhìn thấy nó có nhiều hạn chế, sẽ kiếm nhiều thứ khác để bù đắp vào, nhưng không thể như vậy mà xổ toẹt OOP đi được. Như vậy chả khác nào sinh viên đại học chửi tụi nhóc cấp hai giải phương trình bậc 2 mà lập delta làm quái gì cho mất công.
 
OOP concept rất đơn giản nhưng mà cách dạy học làm cho nó trở nên phức tạp. Người học có thể nói vanh vách các tính chất của OOP nhưng khi mà lao vào thực tế lại không biết thi triển võ công ntn.

Kinh nghiệm phỏng vấn các bạn sinh viên thực tập đều đưa ví dụ rất trơn tru, vd như có class Animal, class Cat và class Dog kế thừa blabla... nhưng thử đưa một bài tập nho nhỏ để impl một cái gì đó thực tế thì chịu chết :big_smile:
 
OOP concept rất đơn giản nhưng mà cách dạy học làm cho nó trở nên phức tạp. Người học có thể nói vanh vách các tính chất của OOP nhưng khi mà lao vào thực tế lại không biết thi triển võ công ntn.

Kinh nghiệm phỏng vấn các bạn sinh viên thực tập đều đưa ví dụ rất trơn tru, vd như có class Animal, class Cat và class Dog kế thừa blabla... nhưng thử đưa một bài tập nho nhỏ để impl một cái gì đó thực tế thì chịu chết :big_smile:
Tôi thường bảo các em sv, tốt nhất học OOP thì đừng xoáy vào mấy cái ví dụ thú với chó làm gì. Nhảy mẹ nó vào Qt C++ mà xem họ thi triển OOP, hoặc fork một project opensource về nghiệp vụ doanh nghiệp viết bằng JAVA mà học. Éo ai suốt ngày lớp thú 4 chân, lớp thú dưới nước kế thừa cái éo gì ở đây, phỏng vấn mấy bạn sv như này tôi phát nhọc. Mà tôi gặp suốt :(

à mà các bạn ấy rất hay nói rất phức tạp về abstraction, encapsulation, inheritance and polymorphism. Trong khi gói gọn là mấy tính chất này là cách để quản lý state.
 
Sửa lần cuối:
Tôi thường bảo các em sv, tốt nhất học OOP thì đừng xoáy vào mấy cái ví dụ thú với chó làm gì. Nhảy mẹ nó vào Qt C++ mà xem họ thi triển OOP, hoặc fork một project opensource về nghiệp vụ doanh nghiệp viết bằng JAVA mà học. Éo ai suốt ngày lớp thú 4 chân, lớp thú dưới nước kế thừa cái éo gì ở đây, phỏng vấn mấy bạn sv như này tôi phát nhọc. Mà tôi gặp suốt :(
Cái này do sai lầm từ lúc dạy học rồi nên cũng khó trách các bạn. Vào cty toàn phải reset lại cái mớ kiến thức OOP "rác" mà các bạn được học.

OOP nên bắt đầu với intention và abstraction. Bạn muốn giải quyết một vấn đề gì? Dùng OOP để giải quyết vấn đề đó ntn? Phải trừu tượng hóa ntn cho hợp lý. Đấy đơn giản vậy thôi, một khi các bạn đã nắm dc thì SOLID hay Design Pattern hay Principles gì đi nữa nó cũng rất tự nhiên.
 

Thống kê chủ đề

Ngày tạo
cs_50i,
Người trả lời cuối
vhptt89,
Trả lời
58
Lượt xem
12.404
Quay lại
Lên đầu trang