Code trâu là gì?

mọi người cho em hỏi code trâu là gì vậy ạ… thấy các bạn bảo code trâu là hạ sách khi đi thi… em cảm ơn mọi người lấy ví dụ về code trâu giúp em thì càng tốt ạ cảm ơn ạ

Là không có, không đầu tư thuật toán gì cứ lao vào mà code theo cái suy nghĩ của bản thân hoặc cái phương châm “chạy được là được”. Dùng sức trâu để giải quyết vấn đề.
Ví dụ 1:
Đề bài là "copy giá các giá trị mảng A qua mảng B.
Ông code không trâu sẽ dùng duy nhất hàm memcpy. Còn ông code trâu sẽ bắt đầu khai triển vòng for thần thánh.

Đề bài 2 là sort 1 mảng từ bé đến lớn.
Ông code không trâu sẽ ốp cái vector vào và chạy hàm sort. Còn ông code trâu sẽ tá lả các vòng for.
Người thường mất 2 dòng còn ông code trâu bay ngay 1 mặt giấy.

Hoặc nói theo cách văn vở là code theo những kiểu “Hết sức cồng kềnh” :smile:

12 Likes

Xét về competitive thì code trâu là khi bạn không tìm ra lời giải mà chỉ duyệt tất cả khả năng.

8 Likes

quào amazing em cảm ơn ạ

GIờ tui mới biết thuật ngữ này luôn á, trước chỉ nghe nói dến clean code với bad code thôi.

Theo như cách đinh nghĩa từ các comments bên trên, thì mình thuộc dạng “code trâu”, vì mình không biết thuật toán gì hết, cái nào mà loop được (không quá tốn thời gian, không quá ngốn phần cứng) thì mình đều loop hết.

Với cá nhân mình thì không vấn đề lắm, vì mình học code để làm mấy thứ linh tinh chơi thôi, chứ không phải để kiếm ăn, nên mình vẫn thích phương châm:

If it looks stupid but it works , it ain’t stupid

Mình edit thêm ý này
Trước đây mình cũng từng đọc một vài articles về việc “code trâu” như này, có hai ý mà mình thấy rất đáng lưu ý:
#1 là thời gian: thời gian để bạn suy nghĩ 1 thuật toán hay gì gì đó có thể rất lâu, thậm chí nghĩ không ra luôn, nên nhất là trong môi trường outsourcing, thời gian có giới hạn nếu bân không muốn bị OT. Kế nữa là khả năng fix bug và những bug tiềm ẩn; và khả năng cho người khác level thấp hơn mình tham gia code tiếp. Cách làm có vẻ đơn giản ngu đế mức ngu ngốc nhiều khi lại tốt. ( keep it simple, stupid " hoặc " keep it stupid simple ")

#2 là phần cứng, chi phí phần cứng ngày càng rẻ, và phần cứng ngày càng mạnh hơn, nên nó có thể cover nhiều issue về performace của cách code của bạn.

Có thể nhiều anh chị không đồng ý 2 ý này, nhưng kệ vì mình chỉ nói lại thôi :smiley:

7 Likes

Vừa rồi mình vô tình đọc một thảo luận trên mạng về một người lập trình lâu năm, làm được một số thứ hay ho, cũng thuộc loại lập trình viên giỏi (không nên đem so với Linus Torvalds nhé).

Ông ấy thổ lộ rằng ông ấy không thể nuốt trôi OOP được, ông ấy đã cố thử bỏ ra nhiều tháng để tự học nghiêm túc, đã thử chuyển một phần mềm ổng viết toàn function với procedure (hình như ổng dùng Delphi là chính, và C là phụ, không thấy đề cập đến mấy ngôn ngữ như Java, C#) để so sánh.

Ổng đi đến kết luận là không thấy ưu điểm chỗ nào của OOP vì tối ưu kiểu gì số dòng code cũng gấp 1,5 đến 2 lần so với chương trình viết bằng thủ tục. Ổng gửi code cho những người chuyên soi bug cũng đánh giá mã OOP không ưu điểm hơn mã thủ tục trong việc tiềm ẩn bug, cũng không chạy nhanh hơn, tiết kiệm hơn, gỡ lỗi cũng không dễ hơn.

Ổng muốn hỏi mọi người rằng tại sao OOP lại được yêu thích, thông dụng đến thế, phải chăng đó là một trò marketing để rồi người ta tin vào đó như một mặc định, rồi thế hệ nọ tiếp nối thế hệ kia, rồi các ngôn ngữ và IDE tích hợp nhiều thứ phục vụ OOP nên cảm thấy OOP như một cách tiếp cận hay, thực ra chỉ tốn thời gian vô bổ?

Người ta bàn luận rôm rả cái chủ đề đó.

Theo luồng thảo luận đó Thin tự đánh giá chủ quan mình hiểu thảo luận đó:

  • OOP thích hợp với những phần mềm làm việc tập thể hoặc có ý định sẽ làm việc tập thể. Vấn đề OOP giải quyết thường là vấn đề của thế giới ngoài cái máy tính, nghiệp vụ trong thực tế, “bài toán” của cuộc sống, kinh doanh. OOP không mạnh khi dùng để giải quyết nội tại trong khoa học máy tính.

  • Những phần mềm mà team không quá 3 người, team sống lâu với phần mềm/ dự án đó hàng 30 năm như các cụ tổ ở mấy công ty công nghệ/ phòng thí nghiệm/ trung tâm CS thuở ban đầu, team làm cho NASA thì OOP không ích gì.

  • OOP áp dụng vào viết ứng dụng cấp thấp hoặc cấp như viết hệ điều hành, driver, trình điều khiển thiết bị thì tỏ ra vướng víu, bất lợi.

Do vậy, code trâu là code gì thì mình không biết. Code đẹp là gì cũng không rõ. Liệu viết Java mà cố viết procedure thay vì OOP thì có bị gọi là code trâu? Viết C mà tìm cách OOP thì có trâu?

Có những đoạn code được xem là hay, là đẹp nhưng nói thiệt là nếu không là người “sở hữu” hội chứng Asperger, Savant thì không thể hiểu được nó muốn nói cái gì. Kiểu như E=mc2 <= hầu hết dân chúng bó tay với cái đẹp này.

7 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?