Mình nghĩ tai sao ta không trung hòa các ý kiến với nhau?
Theo cá nhân mình nghĩ thì cả 2 đều quan trọng, mình xin phân tích kỹ hơn:
Trước tiên mình xin có 1 vài nhận xét về bài của 2 bạn:
+ Đầu tiên là bạn
gaique, mình rất đồng tình với bạn là nếu mình nắm thật vững 1 ngôn ngữ nào đó và việc học các
ngôn ngữ khác sẽ dễ dàng hơn nhiều
+ Nhưng mình xin phản đối ý kiến cho rằng
giao diện không quan trọng, biết rằng giải thuật chình là linh hồn của chương trình nhưng nếu phần giao diên không đẹp thì chương trình cũng sẽ không được coi trọng (ví dụ như khi mua 1 món hàng, dù biết rằng chất lượng bên trong nó rất tuyệt vời nhưng nếu phần mẫu mã bao bì bên ngoài nó không bắt mắt thì cũng không được khách hàng ưu chuộng)
+ Ngoài ra nếu bạn cho rằng
ngôn ngữ cấp cao hay hơn
ngôn ngữ cấp thấp thì không phải. Mổi ngôn ngữ có 1 thế mạnh riêng (Java là về mạng, C là về lập trình ứng dụng, SQL là về database,...), vì thế đã là 1 người lập trình viên thì phải biết lựa chọn cho mình ngôn ngữ thích hợp nhất.
+ Còn về bạn
satthu thì bạn cho rằng không cần học các giải thuật thì bạn vẫn viết được các
chương trình business, bởi vì các thư viện của các ngôn ngữ đã cung cấp cho bạn rất nhiều hàm viết sẵn.
+ Vâng bạn có thể viết các
chương trình ứng dụng bằng các giải thuật tự chế của mình, nhưng bạn hãy thử viết 1
chương trình hệ thống thử xem (như hệ điều hành, các trình biên dịch, hay các phần mềm nhúng...)
* Mình lấy ví dụ như bài toán tìm 1
danh sách lặp vòng mà mình đố các bạn hôm bữa, đây là 1 bài toán được ứng dụng rất nhiều trong thực tế. Như trong việc
quản lý các thư mục của hệ điều hành hay như trong
các trình download web.
* Mình xin nói cụ thể hơn, giả sử bạn có 1 trình down web không có khả năng xử lý lặp vòng, vậy khi bạn đang down
1 trang web với tất cả các đường link của nó, nhưng lỡ các trang web này
link vòng vòng với nhau thì sao (khi đó chương trình của bạn sẽ rơi vào
vòng lặp vô tận). Nhưng nếu dùng
giải thuật vét cạn hôm trước của bạn để tránh 1 danh sách lặp vòng vậy thì khi down 1 trang web ta phải mất
rất nhiều thời gian so với lúc bình thường.
* Hay 1 ví dụ khác về việc
truy xuất dữ liệu trong database, nếu ở cấp
lập trình ứng dụng bạn chỉ cần biết các cậu lệnh truy vấn SQL để truy xuất các dữ liệu trong bảng là được rồi, nhưng với các
nhà lập trình hệ thống thì họ phải nắm thật vững các
giải thuật về truy xuất dữ liệu (truy xuất tuần tư, truy xuất theo cây, hay dùng bảng băm,...) để làm sao giúp bạn truy xuất dữ liệu tối ưu nhất.
Kết luận: Giải thuật hay ngôn ngữ đều quan trọng, nhưng về giải thuật nếu bạn chỉ
lập trình ứng dụng thì không cần quan tâm lắm, nhưng nếu là
1 nhà lập trình hệ thống thì bạn phải nắm thật vững các giải thuật.
Mình vẫn còn nhiều điều muốn nói nhưng mất công các bạn nói mình
nhiều chuyện, với lại sáng mai mình thi rồi, vì vậy hôm nay mình quyết tâm phải offline (tức là mình sẽ treo chuột khoảng 1 tuần:p )
Hẹn sớm gặp lại!!!
