01/10/2018, 17:20
Tại sao cấu trúc dữ liệu và giải thuật đa số được viết trên C? Có thể sử dụng ngôn ngữ khác, như Python được không?
em lên mạng tự học cấu trúc dữ liệu và giải thuật thì thấy đa số là dạy và viết trên c/c++ em thắc mắc là không biết là có sử dụng ngôn ngữ khác như python không?
Bài liên quan
Không chỉ có C/C++ mà có nhiều sách còn viết bằng Pascal để dễ đọc hơn.
Còn lý do python ít được chọn có lẽ vì nó không chặt, không rõ ràng trong việc định kiểu dữ liệu.
Một nguyên nhân nữa là do các giáo trình đó được viết ra từ lâu rồi (thời của C/C++, Pascal, …), đã là nền tảng cho rất nhiều sinh viên ở Việt Nam, sử dụng tốt và có hiệu quả nên chẳng ai rảnh rỗi viết lại bằng ngôn ngữ mới hơn chi cho mất thời gian.
Vì hầu hết các sách giải thuật được viết vào thời mà C/C++ là ngôn ngữ lý tưởng nhất. Một lý do khác nữa có thể là do C/C++ là ngôn ngữ được chọn để học nhiều nên viết vậy thì sẽ có nhiều người đọc + hiểu hơn
Các ngôn ngữ mới bây giờ thì chưa có tính chặt chẽ lắm nên ít khi được sử dụng trong giải thuật
Đôi khi vẫn gặp phải một số sách viết bằng Pascal
Vì giáo trình cũ, chỉ có Pascal và C.
Vì C/C++ phù hợp với việc dạy CTDL> vì tính chặt chẽ của ngôn ngữ, nhất là về kiểu dữ liệu (Java cũng có sử dụng nhiều trong các code CTDL>).
Bạn nên học bản chất của thuật toán rồi cài lại bằng tay, nếu cần xem code Python thì nên tìm chỗ khác để xem, thay vì xem giáo trình.
TheAlgorithms/Python
All Algorithms implemented in Python. Contribute to TheAlgorithms/Python development by creating an account on GitHub.
OmkarPathak/pygorithm
A Python module for learning all major algorithms. Contribute to OmkarPathak/pygorithm development by creating an account on GitHub.
marcosfede/algorithms
Solved algorithms and data structures problems in many languages - marcosfede/algorithms
theo mình do C nhỏ gọn, gọn ở đây là phạm vi giới hạn kiểu dữ liệu của nó…Python là ngôn ngử OOP, cho phép bạn tùy biến kiểu dữ liệu…Nó mạnh mẽ vì bạn có thể tạo nên và xậy dựng thông tin cho các đối tượng nhiều thuộc tính…nhưng thật sự mỗi đối tượng được qui ước bởi 1 số tự nhiên ngẫu nhiên nào đó…bạn cần tìm 1 đối tượng nào đó thì chỉ cần biết 1 thuộc tính duy nhất …như id được qui định bời số tự nhiên …vậy 1 triệu thông tin id này sắp xếp theo mảng thì xây dựng 1 giải thuật lấy ra theo điều kiện của bạn …Nói ngắn gọn là giải thuật thường được thử trên các dữ liệu mẫu cơ bản nhất…như kiểu int, float …và mình nghĩ C là nền tảng phù hợp để làm việc này…
Pascal chứ nhỉ? C/C++ để cho compiler chi phối khá nhiều chi tiết.
C++ thì lại không nên, vì trong thư viện chung có đủ CTDL cơ bản rồi.
Đọc mấy cái câu hỏi kiểu này mình thấy chán. Lý do chán là vì có lẽ khi đi học chưa từng ai nói rằng lịch sử là một môn quan trọng. Sự thất bại của nền giáo dục Việt Nam bắt nguồn từ môn lịch sử
Fun fact: có đến 2/3 số CEO của S&P 500 là người yêu thích môn lịch sử.
Khuyên chủ thớt: bắt đầu mọi thứ (môn/ ngành/ khóa học trong trường hợp này) bằng cách đọc qua lịch sử của nó, từ đó sẽ không có những câu hỏi không có gì là “sinh viên” như này.
Câu hỏi rất hay, mình thấy người VN hay ít hỏi “tại sao” và thường chấp nhận như nó hiển nhiên. Điều này tạo ra chúng ta ít có tư duy phản biện.
Cấu trúc dữ liệu và Thuật toán trước hết là tư duy, và chúng ta thể hiện nó bằng NNLT nào thôi. Theo cá nhân mình thấy do đây (C/Pascal) gần như là ngôn ngữ “đầu lòng” của dev ở trường ĐH nên lấy dùng để làm ví dụ cũng khá hợp lý