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?

1 Like

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.

3 Likes

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 :smile:
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 :smile:


Đôi khi vẫn gặp phải một số sách viết bằng Pascal :joy:

2 Likes
  • Vì giáo trình cũ, chỉ có Pascal và C.

  • Vì C/C++ phù hợp với việc dạy CTDL&GT 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&GT).

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.

3 Likes

vì c/c++ có con trỏ =)) ,thử java tạo đối tượng rồi null xong tham chiếu rồi phải theo oop thấy phiền, với lại mấy cái khác nó hỗ trợ sẵn , chủ yếu mình vào lấy cái hàm của người ta rồi lắp ghép thì niều

1 Like

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…

1 Like

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.

2 Likes

Đọ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ử :smiley:

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.

2 Likes

hi
Vô thin, có vẻ như việc đổ lỗi cho nền giáo dục luôn là lí do của sự thất bại , Việt Nam trong bạn luôn là cái gì đó tệ nhỉ , từ giao thông đến kinh tế , chính trị, đồng ý là có những mặt tiêu cực nhưng giáo dục không bao giờ thất bại chỉ có bản thân mới thất bại, việc học không chỉ dựa vào nền giáo dục , thứ dựng sẵn cho bạn đu theo đến khi bạn đu theo nhưng không giải quyết đc vấn đề thực tiễn thì lại quay ra đổ lỗi cho nó, không có 1 nền giáo dục nào là hoàn thiện , ở Mĩ (nếu bạn sính ngoại) mỗi trường 1 bộ sách khác nhau, thế thì tại sao lại có chuyện như vậy, bởi vì mỗi người soạn đều có ý kiến khác nhau, bạn muốn sinh ra để học theo cách giáo dục của người khác ??? . Mình không thể hiện cái lòng yêu nước gì ở đây cả nhưng bản thân mình vẫn tự thỏa mãn khi đc sinh ra ở Việt Nam, không khủng bố , không xả súng , không hồi giáo cực đoan 1 cách quá phổ biến ,đừng quá đổ lỗi cho Việt Nam, chỉ con người mới có lỗi với nhau , và bản thân bạn cảm thấy có lỗi với bản thân thôi

3 Likes

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ý

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