EDIT: Câu hỏi này lúc đầu dường như đang làm hỏng Java và tôi đoán tại thời điểm này nó là một chút. Tuy nhiên, điểm lớn hơn mà tôi đang cố gắng đưa ra là tại sao bất kỳ một ngôn ngữ nào được chọn làm một kết thúc đều là giải pháp cho tất cả các vấn đề. Java tình cờ là cái được sử dụng vì vậy đó là thứ tôi phải đánh bại ở đây, nhưng tôi không cố ý xé toạc Java một cái mới :)
Tôi không thích Java trong hầu hết các môi trường học thuật. Tôi không nói rằng bản thân ngôn ngữ là xấu - nó có một số khía cạnh cực kỳ mong muốn, quan trọng nhất là khả năng chạy mà không cần biên dịch lại trên hầu hết mọi nền tảng. Không có gì sai khi sử dụng ngôn ngữ cho Ứng dụng tiếp theo của bạn ^ TM. (Không phải điều gì đó cá nhân tôi sẽ làm, nhưng đó là nhiều hơn vì tôi có ít kinh nghiệm với nó hơn là thiết kế kém)
Tôi nghĩ thật lãng phí khi các khóa học CS cấp cao được dạy sử dụng Java làm ngôn ngữ. Quá nhiều đồng nghiệp của tôi không thể lập trình đáng giá, bởi vì họ không biết làm việc trong một thế giới không có rác. Về cơ bản, họ không hiểu các máy móc mà họ đang lập trình. Khi ai đó có thể làm việc bên ngoài một thế giới rác được thu gom, họ có thể làm việc bên trong một thế giới, nhưng không phải ngược lại. GC là một công cụ, không phải là một cái nạng. Nhưng cách nó được sử dụng để dạy sinh viên khoa học máy tính là một cái nạng.
Khoa học máy tính không nên dạy toàn bộ bộ khóa học phù hợp với một ngôn ngữ. Các sinh viên rời đi với ý tưởng rằng tất cả các thiết kế tốt là thiết kế Java thành ngữ và Thiết kế hướng đối tượng đó là MỘT CÁCH THỰC SỰ ĐÚNG ĐÓ LÀ CÁCH DUY NHẤT CÓ THỂ ĐƯỢC LÀM. Các ngôn ngữ khác, ít nhất một trong số chúng không phải là ngôn ngữ được thu gom rác, nên được sử dụng trong giảng dạy, để giúp sinh viên hiểu rõ hơn về máy móc.
Thật xấu hổ khi ai đó có PHD trong CS từ một tổ chức được kính trọng không thể lập trình ra khỏi túi giấy.
Điều tồi tệ hơn là khi tôi nói chuyện với những giáo sư CS thực sự hiểu cách mọi thứ vận hành, họ chia sẻ cảm xúc như thế này, rằng chúng tôi đang làm bất mãn cho sinh viên của mình bằng cách làm mọi thứ bằng Java. (Lưu ý rằng ở trên sẽ giống nhau nếu tôi thay thế nó bằng bất kỳ ngôn ngữ nào khác, nói chung sử dụng một ngôn ngữ là vấn đề, không phải chính Java)
Tổng cộng, tôi cảm thấy tôi không còn có thể tôn trọng bất kỳ loại bằng cấp nào - khi tôi không thể thấy những người xung quanh có thể lập trình thoát khỏi các vấn đề của fizzbuzz.
Tại sao / làm thế nào mà nó có được theo cách này?