Tại sao chúng ta học Java tại trường đại học? [đóng cửa]


25

Java thường được tìm thấy trong các học viện. Lý do đằng sau đó là gì?


9
Không có chi phí cấp phép cho Java IDE giống như đối với hệ sinh thái Microsoft. Thêm học phí lớn của bạn cho uni.
mjhilton

16
Gì? bạn có thể nhận Microsoft Visual Studio Express miễn phí.
quant_dev

12
Trên thực tế hầu hết thời gian bạn có thể nhận Visual Studio miễn phí nếu bạn là sinh viên cộng với mọi ứng dụng khác của Microsoft.
Erin

5
bởi vì bạn muốn kiếm tiền khi bạn tốt nghiệp phải không? Dành 4 năm để nghiên cứu những thứ mà không ai sử dụng realtrên thế giới không phải là một lợi ích cho sinh viên hoặc các công ty muốn thuê sinh viên.

5
@JarrodRoberson, chỉ một số công ty sử dụng Java, các trường đại học nên thực sự giáo dục bạn về nhiều ngôn ngữ khác nhau để bạn chuẩn bị tốt hơn cho thế giới thực. Bạn không muốn bị mắc kẹt khi chỉ là một lập trình viên Java khi có rất nhiều cách suy nghĩ và phát triển khác.
CaffGeek

Câu trả lời:


73

Một vài trường đại học có ai đó biết rõ rằng nhiều quyết định (nếu không phải hầu hết) xoay quanh sở thích, không thích, ý kiến, sở thích của người đó, v.v. Ví dụ, Texas A & M có nhân viên Bjarne Stroustrup; có lẽ ít ai ngạc nhiên khi chương trình giảng dạy của họ có xu hướng nhấn mạnh C ++.

Hầu hết các trường đại học là một chút khác nhau mặc dù. Đầu tiên, các quyết định thường được thực hiện nhiều hơn vì lợi ích của giảng viên so với các sinh viên. Tiêu chí lớn nhất trong nhiều trường hợp là "ngôn ngữ nào đòi hỏi ít nỗ lực nhất từ ​​phía chúng tôi?" Hầu hết trong số họ cũng cẩn thận trong sự lười biếng của mình - họ muốn không chỉ ngôn ngữ có ít khái niệm tiên tiến nhất để học, mà còn là ngôn ngữ (ví dụ) chậm nhất để đổi mới, cập nhật hoặc nắm bắt bất cứ điều gì mới.

Thứ hai, hầu hết các quyết định được đưa ra bởi ủy ban. Điều này có nghĩa là quyết định cuối cùng hiếm khi (nếu có) bất cứ ai thực sự muốn - đó chỉ là điều mà ít thành viên nhất trong ủy ban (đặc biệt là những người có ảnh hưởng nhất) thấy đặc biệt phản đối. Nó giống như chọn một hương vị kem. Một người thực sự thích dâu tây, nhưng một người khác bị dị ứng với dâu tây. Một người khác thực sự thích sô cô la, nhưng người khác không thể chịu đựng được. Tuy nhiên, một người khác nghĩ rằng nho khô là tuyệt vời, nhưng hai người khác lo lắng khi nhắc đến "rượu rum" sẽ được hiểu là khuyến khích lạm dụng rượu - vì vậy họ kết thúc với vani, mặc dù đó không phải là điều ai thực sự muốn.

Cuối cùng, mặc dù nó thường chạy trực tiếp với hầu hết những gì hai tiêu chí trước đó sẽ tạo ra một cách cô lập, nhưng nhìn chung họ cần (hoặc ít nhất là muốn) được coi là đáp ứng nhu cầu của ngành công nghiệp.

Java là giao điểm của ba điều này:

  1. Mọi khái niệm mà nó thể hiện đều được biết đến vào năm 1980. Không có nhiều điều để biết ngoài khái niệm cơ bản nhất về OOP là gì.
  2. Đó là sự lựa chọn không vị, không mùi, không độc hại, có thể phân hủy sinh học, chính xác.
  3. Gần như ngôn ngữ khác duy nhất trong lịch sử tồn tại lâu và (có lẽ) được đổi mới ít hơn là SQL. Mặc dù chúng hầu như không phải là thứ bạn gọi là mục tiêu chuyển động nhanh, nhưng COBOL và Fortran vẫn đổi mới nhiều hơn Java.
  4. Nó được sử dụng rộng rãi. Khi bạn nhận được nó, profs và PHB có tiêu chí tương tự.

Lưu ý rằng tôi không thực sự nói (ví dụ) rằng không có gì để biết về Java hơn là khái niệm cơ bản nhất về OOP là gì - chỉ có điều đó là tất cả những gì cần thiết để thực hiện công việc giảng dạy về nó.


phân bổ ý kiến ​​đã bị xóa khỏi đây, vì ý kiến ​​về câu trả lời này được chia.
Tên hiển thị

1
FWIW, tôi thích vani.
Cuộc đua nhẹ nhàng với Monica

Tôi đã đăng ký để nâng cấp câu trả lời của bạn
user2445942

22

Tôi đã học Khoa học Máy tính trong những năm đầu thập niên 90 ngay trước khi Java ra đời. Cách tiếp cận theo sau bởi các giáo sư của chúng tôi là như sau.

Năm đầu tiên: khóa học giới thiệu về lập trình và thuật toán trong Pascal. Tại sao lại là Pascal? Bởi vì nó là một ngôn ngữ sạch được thiết kế để dạy các khái niệm về lập trình mà không có phương tiện để hack. Tất nhiên sinh viên chúng tôi biết rằng ngôn ngữ phổ biến nhất vào thời điểm đó là C và có một ngôn ngữ mới đang ngày càng phổ biến: C ++. Vì vậy, chúng tôi đã đọc và thảo luận về các ngôn ngữ này mọi lúc và thực hiện các dự án nhỏ bằng cách sử dụng chúng một mình. Vì vậy, ý tưởng là: ở lớp chúng tôi thực hiện lý thuyết nghiêm túc (Pascal) trong khi ở nhà, chúng tôi học cách hack (C). :-)

Trong năm thứ hai, chúng tôi đã có một khóa học hệ điều hành, trong đó chúng tôi được yêu cầu thực hiện các bài tập về C và lắp ráp. Giáo sư đã không cung cấp cho chúng tôi một khóa học hoàn chỉnh về C (chỉ một vài bài học) bởi vì (1) chúng tôi đã có một khóa học về lập trình trong năm đầu tiên và (2) ông nói rằng mọi nhà khoa học máy tính biết các khái niệm về lập trình nên có thể đọc một cuốn sách và học một ngôn ngữ lập trình mới. Khóa học diễn ra khá suôn sẻ và tất cả chúng tôi đều thấy bình thường rằng C và hội thảo là những chủ đề thiết thực mà bạn tự học hoặc thảo luận trên hành lang với các sinh viên khác nhưng không đáng để thực hiện một khóa học.

Trong năm thứ ba, chúng tôi đã có một khóa học về ngôn ngữ lập trình, trong đó chúng tôi đã nghiên cứu các mô hình khác nhau của ngôn ngữ lập trình (mệnh lệnh, chức năng, logic, hướng đối tượng), chúng tôi đã học các khái niệm chung và kỹ thuật triển khai và sửa đổi ngôn ngữ lập trình chính (Pascal, C, Modula2, Simula, Lisp, C ++, Prolog). Điều giáo sư của chúng tôi đã nói với chúng tôi khi bắt đầu khóa học là: bạn không nên đánh giá khóa học này bằng cách suy nghĩ về việc bạn biết bao nhiêu ngôn ngữ lập trình vào cuối khóa học, mà là về tất cả các khái niệm chung mà bạn đã học, chúng như thế nào liên quan đến nhau, chúng tốt cho cái gì, chúng được sử dụng trong ngôn ngữ nào. Sau đó, học một ngôn ngữ cụ thể chỉ là vấn đề đọc một cuốn sách, xem mã hiện có, cố gắng sử dụng nó trên một dự án cụ thể, v.v.

Tôi thấy cách tiếp cận này rất thích hợp và hiệu quả. Tôi không nghĩ rằng trường đại học nên nhắm đến việc chuẩn bị các lập trình viên giỏi mà là cung cấp kiến ​​thức tốt cho phép hiểu ngôn ngữ lập trình và lập trình. Trở thành một lập trình viên giỏi sẽ chỉ là một tác dụng phụ của điều đó. Bây giờ tôi đang xem xét việc xin việc mà Ada bắt buộc và tôi không sợ nó, mặc dù tôi chưa bao giờ thực hiện bất kỳ chương trình nghiêm túc nào trong Ada trước đây.

Quay trở lại câu hỏi dạy Java. Tôi đoán Java thường được sử dụng để giảng dạy vì nó đủ trung lập và cho phép giải thích các nguyên tắc lập trình bằng ngôn ngữ cũng gần với thế giới công nghiệp.

Cá nhân tôi vẫn sẽ sử dụng Pascal hoặc một ngôn ngữ tương tự cho khóa học đầu tiên, bởi vì điều đó sẽ cho phép tôi phân biệt giữa các cấu trúc điều khiển và cấu trúc dữ liệu, trong các ngôn ngữ hướng đối tượng / Java được tích hợp chặt chẽ. Vì vậy, theo tôi, Pascal sẽ cho phép giới thiệu dần dần về các khái niệm cơ bản của lập trình.

Ngoài ra, một nhà khoa học máy tính (và một lập trình viên giỏi) nên biết về các cơ chế / cấu trúc thời gian chạy cơ bản như ngăn xếp, heap, truyền tham số, cấp phát bộ nhớ, con trỏ hoặc cách thực hiện các kiểu dữ liệu trừu tượng mà không cần sử dụng các tiện ích tích hợp của ngôn ngữ (danh sách, bộ, vv). Java lấy đi phần lớn những thứ này từ các lập trình viên (dĩ nhiên là tốt), nhưng một người mới bắt đầu nên tìm hiểu về những điều này. Có lẽ sau một khóa học lập trình đầu tiên trong Java, người ta cũng nên học một khóa tổng quát hơn về các khái niệm ngôn ngữ lập trình.

Đây chỉ là kinh nghiệm và ý kiến ​​của tôi.


1
Khi tôi ở uni năm thứ nhất, chúng tôi đã làm Ada cho các khóa học lập trình (một số phần trong khóa học hệ thống máy tính). Năm thứ 2 có phong cách ngôn ngữ khá giống nhau. Năm thứ 3, chúng tôi đã được nói chính xác điều này, "mọi nhà khoa học máy tính biết các khái niệm về lập trình sẽ có thể đọc một cuốn sách và học một ngôn ngữ lập trình mới". Đến cuối năm, chúng tôi đã tự học C, C ++, Java và ngôn ngữ bạn từng làm trong dự án của mình (của tôi là Python) Đó là sự chuẩn bị tốt nhất tôi từng có cho thế giới thực, cách học nhanh và nhanh chóng
Amy

(+1) Các ngôn ngữ lập trình liên quan đến Pascal, tốt hơn nên được sử dụng để dạy lập trình, bởi vì cha đẻ của nó "Niklaus Wirth" cẩn thận thiết kế chúng, để dạy. ;-)
umlcat

@umlcat: Cảm ơn. Vâng, tôi nghĩ thật tốt khi có C hoặc C ++, nơi bạn có thể phá vỡ các quy tắc và hack. Nhưng trước khi phá vỡ các quy tắc, bạn phải biết những quy tắc bạn đang vi phạm. Đối với điều này, rất hữu ích khi có một ngôn ngữ lập trình sạch như Pascal để tìm hiểu cách bạn nên lập trình trong một "thế giới lý tưởng". Sau đó, ít nhất bạn biết những gì bạn đang làm khi bạn hack. :-)
Giorgio

@Giorgio: Tôi nghĩ rằng sinh viên nên được dạy Pascal trước, và sau đó, C / C ++ và sau đó là Java. Tôi không có ý chỉ một hoặc một, nhưng, tất cả chúng theo một thứ tự cụ thể. Một số trường bỏ việc dạy một người có lợi cho người khác.PD Tôi cũng làm việc trong C và Java. Hy vọng nó sẽ giúp ;-)
umlcat

@umlcat: Tôi hoàn toàn đồng ý. Tôi cũng sẽ thêm một số Lisp, Haskell, Prolog: càng nhiều mô hình lập trình mà người ta biết thì càng tốt.
Giorgio

10

Tôi đang ở trường thì Java xuất hiện. Và trường đại học của tôi gần như thay đổi chỉ sau một đêm. Mọi người đã hết sức ham chơi tại Java trong giới học thuật. Tôi là một người khi nó xuất hiện, và vào thời điểm năm cuối cấp, gần như tất cả các học viện đã nhanh chóng chuyển sang chương trình giảng dạy của họ. Không chỉ ở trường đại học của tôi mà ở khắp mọi nơi. Nó thực sự rất nhanh. Khóa học giới thiệu thứ hai của chúng tôi là Pascal và đã nhanh chóng chuyển đổi sang Java sau chưa đầy một năm. Tại sao họ chuyển đổi nhanh như vậy? Hai lý do lớn.

Một học giả muốn dạy lý thuyết và thuật toán. Các ngôn ngữ tạo điều kiện cho bạn học các thuật toán không cần nhiều kinh nghiệm để vận hành là tốt nhất: Scheme, Python, Java, Smalltalk, v.v. Ngôn ngữ càng khiến bạn mất tập trung khi học các thuật toán thực. Vào thời điểm đó, các ngôn ngữ kịch bản là các công dân hạng hai được các nhà tuyển dụng cau mày vì rẻ tiền hoặc nhanh chóng và bẩn thỉu. Các học giả đã xem chúng như một con mèo sao chép nhiều hơn, nhưng những gì các nhà tuyển dụng muốn cũng ảnh hưởng đến các học giả.

Điều đó đưa chúng ta đến lý do tiếp theo. Nhà tuyển dụng muốn có trải nghiệm ngôn ngữ nhất định và tại thời điểm đó là C / C ++. Nhưng, C / C ++ cần rất nhiều kinh nghiệm để tìm hiểu và có rất nhiều trường hợp góc và nếu ands hoặc buts gây mất tập trung. Chúng tôi đã học các khóa học về C / C ++ nhưng không phải ở cấp độ thấp hơn. Vào thời điểm đó, các nhà tuyển dụng rất tức giận với các chương trình CS vì các sinh viên đã không trở thành những bậc thầy về C / C ++.

Java đã quét qua ngành công nghiệp quá nhanh như học viện. Vì vậy, cuối cùng học viện đã nhận được những gì họ muốn. Ngôn ngữ cấp cao dễ học hơn và ngôn ngữ nhà tuyển dụng muốn. Tất cả đều quá hoàn hảo. Tôi đã có một người bạn trở lại học viện có thể 3 năm sau khi tôi rời đi, và anh ta nói rằng bạn có thể tìm thấy một cuốn sách Java trong mọi chủ đề CS. Đó là cách Java nhanh chóng chiếm lĩnh học viện.

Cá nhân tôi nghĩ rằng Java đã không làm ngơ CS Tôi nghĩ rằng đó thực sự là một điều tốt vì sinh viên có thể học CS, tham gia vào Nguồn mở và tìm việc ngay cả khi còn đi học. Tôi vẫn tin rằng bạn nên học nhiều ngôn ngữ khi là sinh viên CS và đó không nên là Java. Nhưng, nếu tất cả họ đã sử dụng trăn Joel cũng sẽ ghét trăn.


Nếu trường học của bạn vẫn sử dụng Pascal vào giữa những năm 90, thì dù sao họ cũng đã quá hạn cho một cuộc đại tu. Các lớp CS đầu tiên của tôi là ở Pascal, nhưng đó là vào năm 1980! Thật thú vị, mặc dù, đó chỉ là các khóa học giới thiệu - các lớp cấp cao hơn đã sử dụng C (cho nội bộ hệ điều hành), Modula (cho thiết kế trình biên dịch), Prolog và một số khóa học sau đại học thậm chí đã sử dụng Ada. Tôi không hiểu tại sao các trường học vẫn không làm điều này.
TMN

1
hầu hết hoặc tất cả vẫn sử dụng Pascal vào cuối năm 1995, một số ít đã chuyển sang Modula. Mine bắt đầu giới thiệu C ++ vào năm 1995 cho người cao niên, giữ Pascal cho đàn em. Tôi nghĩ rằng bây giờ họ đã thay thế Pascal bằng Java (họ thực sự cần một ngôn ngữ cấp thấp vì rất nhiều công việc liên quan đến tương tác với phần cứng, vì vậy C ++ có lẽ vẫn còn tồn tại).
jwenting

Chúng tôi đã sử dụng C / C ++ khá nhiều sau khóa học giới thiệu về Pascal. Prolog, LISP, Scheme, Smalltalk, hội đều được sử dụng trong các lớp trung cấp. Khi tầm quan trọng của việc tiêu thụ công nghệ của chính phủ giảm bớt vào những năm 1990, Ada đã bị loại bỏ và chỉ được đề cập đến vào cuối những năm 1990. Tôi nghĩ rằng những nguy hiểm của Java không liên quan gì đến Java, nhưng với sự độc canh và học tập. Bây giờ tôi là nhà phát triển Flex và Adobe đã chấm dứt khả năng kiếm sống với nó vào tuần trước. Tôi không lo lắng vì tôi có một lịch sử lâu dài không sử dụng chỉ 1 ngôn ngữ. Tôi có Java, Ruby, Php, Python để quay trở lại.
chubbsondub

8

Có một vài lý do cho việc đó bao gồm:

  • Sự phổ biến trong thị trường việc làm - nếu các trường đại học muốn sinh viên của họ có việc làm (và giới thiệu nhiều sinh viên hơn vào trường đại học), họ cần dạy các ngôn ngữ liên quan.
  • Đơn giản hóa chương trình giảng dạy
  • Dễ dàng hơn để chấm điểm và dễ dàng hơn để thực hiện bài tập về nhà của bạn trong đó.
  • Rác được thu gom nên không cần dạy con trỏ và quản lý bộ nhớ thủ công

Xin lưu ý rằng có một số trường dạy C # vì nhiều lý do tương tự. Có nhiều lý do hơn, một số trong đó đặc biệt hơn đối với từng trường. Về bản chất, Java đã trở thành "BASIC" hướng đối tượng của năm qua.


Có những cuốn sách Java tuyệt vời cũng như bán kết OOP, chẳng hạn như đối tượng đầu tiên của Java sử dụng BlueJ. Tuy nhiên, trong C # tôi đã không thấy những cuốn sách học tập như vậy đưa bạn từ đầu và học hỏi bạn một cách tốt. Bạn có đồng ý với tôi không?
Goma

Tôi sẽ. Dạy học là một nhiệm vụ rất khó khăn, và giáo viên vẫn đang học cách dạy tốt nhất. Bạn sẽ tìm thấy một số trường học trực tuyến như Strayer keep to C # và các trường học gạch và vữa có xu hướng về Java. Có lẽ bởi vì các trường học trực tuyến phục vụ cho các sinh viên đã đi làm. Sách lập trình cơ bản có thể áp dụng cho bất kỳ ngôn ngữ nào, vì vậy có sẵn tài liệu.
Berin Loritsch

"Rác được thu thập để không cần dạy con trỏ và quản lý bộ nhớ thủ công." nếu bạn là một kỹ sư phần mềm không biết về con trỏ và quản lý bộ nhớ hoặc không biết cách chúng hoạt động, bạn đang thiếu một số kiến ​​thức rất quan trọng.
đúng

Java có thể không có *cú pháp, nhưng sẽ rất khó sử dụng nếu không có hiểu biết cơ bản về con trỏ.
dan04

@WTP và đó là lý do tại sao Java thường được sử dụng cho các khóa học giới thiệu (trong đó Pascal hoặc Modula trước đây đã được sử dụng) và sau đó C (++) được giới thiệu.
jwenting

6

Tôi thích bài đăng của Joel Spolsky có tựa đề The Perils Of Java School . Tôi nghĩ Berin Loristch đã đúng về việc đơn giản hóa chương trình học và nó cũng được áp dụng vào thế giới thực.

Tôi đã nghe những điều sau đây đã nói nhiều lần: "bằng cấp Khoa học Máy tính không phải là bằng cấp để học lập trình, đó là học lý thuyết". Ngôn ngữ không nhất thiết phải quan trọng (mặc dù nó không gây cản trở) miễn là lý thuyết được học. Java là một ngôn ngữ tương đối dễ tiếp thu và cho phép có nhiều thời gian hơn để học lý thuyết đằng sau mọi thứ. Đây là một trong những lý do mà MIT sử dụng Scheme (vì vậy tôi đã nghe).


2
Mit đã ngừng sử dụng Scheme vài năm trước - cemerick.com) / 2009/03/24 /]
nate c

@nate c - ya Tôi không chắc chắn. Tuy nhiên, Python cũng khá dễ học. Cảm ơn các liên kết mặc dù!
Jetti

Tôi sẽ hoàn toàn làm phiền với các học sinh của mình nếu tôi đang dạy một lớp. Tôi sẽ khuyến khích viết ngôn ngữ lập trình của riêng bạn và bạn chỉ có thể sử dụng ngôn ngữ lập trình đó trong suốt khóa học.
berlinbrown2

1
@Berlin - Tôi đoán đó là lý do tại sao bạn không phải là giáo viên :)
Jetti

3

Nhiều câu trả lời được đưa ra ở trên là những câu trả lời hay, nhưng chúng bỏ qua một cái gì đó.

Java là một ngôn ngữ đa nền tảng. Một sinh viên có thể sử dụng máy Mac của mình, PC khác và tài khoản Unix sinh viên khác. Các mã tương tự sẽ làm điều tương tự. Hãy nghĩ rằng việc giáo viên và bộ phận CNTT của trường hỗ trợ dễ dàng hơn nhiều.

Đây là tầm quan trọng thực sự của Java khi nó xuất hiện. Trò đùa là "Mã một lần, gỡ lỗi ở mọi nơi", nhưng nó thực sự đưa phần cứng và hệ điều hành ra khỏi phương trình.


Có lẽ điều này giải thích tại sao Java được chọn trên C, C ++ hoặc C #, nhưng Ruby và Python (trong số những người khác) chỉ hoạt động tốt trên nền tảng chéo.
Eric Wilson

Điểm tốt. Tôi tin rằng các bộ phận CS cũng ủng hộ các ngôn ngữ được đánh máy mạnh mẽ, vì một số lý do. Ngoài ra, Java đã có một khởi đầu tại Hoa Kỳ Ruby không thực sự xuất hiện ở đây cho đến năm 1999 hoặc sau đó và Python khá hạn chế cho đến khi 2.0 xuất hiện.
Matthew Flynn

1

Tôi đã nghe các giáo sư nói rằng họ sử dụng java để dạy bởi vì:

  • sử dụng mô hình mới hơn (OOP, một số khái quát)
  • cú pháp rất đơn giản, mặc dù khá dài dòng
  • không có khái niệm nâng cao như chức năng bậc cao, đóng cửa, cà ri hoặc tiếp tục có thể gây nhầm lẫn cho mọi người vẫn học các khái niệm cơ bản
  • rất nhiều thư viện viết cho nó
  • sinh viên không bị sa lầy trong việc gỡ lỗi rò rỉ bộ nhớ vì có một gc

Cá nhân tôi rất vui vì tôi đã lấy CS tại Berkeley khi họ sử dụng Scheme để giảng dạy. Mặc dù tôi đã không nhận ra rằng ngôn ngữ đó thực sự thanh lịch như thế nào cho đến một vài năm sau đó.


1

Một chút nền tảng

Tôi học lớp Java duy nhất được cung cấp tại trường của chúng tôi. Đây là cuối thập niên 90 đến đầu năm 2000. Java đã phát triển nhưng gần như không cất cánh. Xuất phát từ rất nhiều sự phát triển trong C, tôi đã hơi nản lòng với tất cả các mã soạn sẵn cần để khởi động Java. Tôi không thể tập trung vào nhiệm vụ của mình. Tôi không thể chỉ mở một tập tin với "mở". Tôi đã phải xác định lớp và sau đó nhập khẩu, vv, vv

Tôi là kỹ sư máy tính, vì vậy tôi đã lập trình lắp ráp trước rồi đến C và sau đó là C ++, Scheme và một khóa học Java đó. Nó chủ yếu là một chương trình học theo định hướng C. Lớp thuật toán được dạy bằng C.

Khi tôi đi vào ngành công nghiệp, Java rõ ràng là người chơi chiếm ưu thế. Có lẽ nó là người chơi duy nhất trong quá trình chuyển đổi từ các hệ thống COBOL phụ trợ sang các ứng dụng kinh doanh web Java. Java đã có những bước tiến lớn trong thế giới kinh doanh trong những năm đầu 2000 ngày.

Đồng thời, tôi không biết tất cả các khung công tác Java nhưng tôi biết cách viết mã và thích nghi với môi trường Java. Nếu tôi tham gia các khóa đào tạo về các tiêu chuẩn mã hóa Java tốt, có lẽ tôi đã có thể bắt đầu với phong cách hoặc kiến ​​thức Java tốt hơn về hệ sinh thái Java.

Nhìn lại, tôi không nghĩ nó quan trọng.

Để trả lời câu hỏi của bạn: Tại sao chúng ta học Java tại trường đại học?

Java nên được dạy nhưng không được sử dụng trong tất cả các khóa học:

Bạn nên học Java tại một số thời điểm trong trường đại học nếu bạn đang học khoa học máy tính. Nó là phổ biến trong thế giới kinh doanh. Bạn nên học Java và có thể là C #. Tôi sẽ không TUYỆT ĐỐI sẽ không dạy Java như một khóa học lập trình giới thiệu. Và Java chắc chắn không phải là ngôn ngữ chính được sử dụng trong tất cả các khóa học.

Về phê bình Java:

Java nhận được rất nhiều lời chỉ trích và nó luôn luôn có. Tôi đã đọc các tạp chí Java có đề cập đến Java với một dấu hỏi, "Java đã sẵn sàng cho Doanh nghiệp chưa?". Nền tảng Java vẫn là một nền tảng được sử dụng rộng rãi. Nhưng, đối với hầu hết các tác vụ lập trình chung, Java hoạt động tốt. Và không có bất kỳ vấn đề lớn nào khi sử dụng Java. Nó sẽ không làm tổn thương kỹ năng của bạn. Nó có thể nếu bạn chỉ dựa vào các thư viện Java mà không học những gì diễn ra bên dưới. Nhưng Java không gây ra bất kỳ tổn thương não nào (một số nhà phát triển thực sự tin điều này là đúng).

Ngoài ra, tại sao các nhà phát triển không tấn công C hoặc C ++? Hoặc ít nhất là C ++. Các mô hình lập trình mệnh lệnh rất giống nhau. Và tôi sẽ không bao giờ xem xét việc viết một ứng dụng web bằng C ++ nhưng tôi có thể với Java.

Đây là cách tôi sẽ thiết lập một chương trình giảng dạy:

  1. Khóa học giới thiệu: Lược đồ, Python, Ngôn ngữ hội, C (cả ba)
  2. Khóa học thuật toán: C, Haskell, Python (cả ba)
  3. Khóa học hệ điều hành / Khóa học kết nối mạng: C / C ++
  4. Phát triển GUI: Java Swing, C ++ trên Win32
  5. Lập trình hướng đối tượng: (điều này thật khó khăn, tôi sẽ không có khóa học OOP). C ++, Java, C #
  6. Doanh nghiệp? Phát triển: Java, C #, Python
  7. Thiết kế ngôn ngữ, trình biên dịch: Haskell, Scala, C, hội, lược đồ, Lisp chung, Prolog.

Các ngôn ngữ tôi liệt kê trong chương trình giảng dạy của tôi là khá phổ biến. Rất nhiều trường đang dạy nhiều ngôn ngữ mà không có vấn đề. Trong công nghiệp, bạn sẽ sử dụng nhiều ngôn ngữ lập trình khác nhau. Bạn sẽ sử dụng các ngôn ngữ mà bạn chưa từng nghe đến.

Chủ đề về Java trong trường học không phải là vấn đề trừ khi họ hoàn toàn muốn bảo vệ bạn khỏi Java hoặc họ muốn dạy CHỈ Java. Trong cả hai trường hợp, các trường đều không chính đáng.

(Xin lỗi, Ruby lang)


(-1) "Ngôn ngữ hội" quá phức tạp đối với "Khóa học giới thiệu". Tôi không có nghĩa là "không dạy nó", ý tôi là "Chúng tôi sẽ dạy nó sau"
umlcat

1

Xin lỗi, chỉ trả lời dài nhàm chán:

(1) Ý của bạn là:

"Tại sao chúng ta học Java ở trường đại học, như một ngôn ngữ lập trình đầu tiên?"

(2) Hay ý bạn là:

"Tại sao chúng ta học Java ở trường đại học, dù sao, ngay cả khi chúng ta học các ngôn ngữ lập trình khác, trước Java?"

Âm thanh như bạn thực sự có nghĩa là cả hai câu hỏi.

Trong trường hợp (1):

Tôi không nghĩ Java (hoặc .NET C # và Visual Basic) nên được dạy như ngôn ngữ lập trình đầu tiên. Pascal có cấu trúc và mô đun nên là đầu tiên, ngay cả khi nó có vẻ cũ và lỗi thời.

Nhiều người nghĩ rằng chúng ta nên dạy cho mọi người lập trình hướng đối tượng hoặc lập trình theo chức năng, chỉ vì "cường điệu" hoặc "xu hướng" của nó.

Tôi học Structured Pascal như một phiên bản nhỏ của "Lập trình hướng đối tượng", không phải là một cái gì đó tương tự. Tôi thấy một chương trình có cấu trúc như một đối tượng nhỏ.

Sau đó, tôi đề nghị tiếp tục các ngôn ngữ Hàm và Object Pascal.

Và sau này, C, C ++, C #, VB.Net, Java.

Những lý do chính khiến tôi không thích Java hoặc C #, là ngôn ngữ lập trình đầu tiên, vì chúng có các khái niệm "con trỏ", "con trỏ tới đối tượng" và "đối tượng" ("tài liệu tham khảo").

Tôi tin rằng các sinh viên nên có trong đầu, sự khác biệt và tương đồng giữa các khái niệm đó. Việc so sánh các đối tượng String trong Java là một ví dụ điển hình cho sự kỳ quặc đó:

String A = "Mars";
String A = "Venus";

// pointer comparison or object comparison ???
if (A == B)
{
  DoSomething();
}

Trong trường hợp (2):

Tôi nghĩ rằng Java hoặc C # nên được dạy ở trường, bởi vì chúng có một số tính năng tốt được cập nhật, đồng thời, chúng có sử dụng trong thế giới thực.


0

Bạn nên học Java tại một số thời điểm trong trường đại học nếu bạn đang học khoa học máy tính. Nó là phổ biến trong thế giới kinh doanh. Bạn nên học Java và có thể là C #. Tôi sẽ không TUYỆT ĐỐI sẽ không dạy Java như một khóa học lập trình giới thiệu. Và Java chắc chắn không phải là ngôn ngữ chính được sử dụng trong tất cả các khóa học.

Tôi không thể không đồng ý nhiều hơn. Java là ngôn ngữ tại trường đại học của tôi mà bạn phải học để tham gia chương trình CS & E tại trường của tôi. Java cực kỳ dễ dạy. Bởi vì bạn có thể giới hạn bản thân trong một số khái niệm nhất định mà "người không lập trình" có thể học.

Tôi cũng không thể biết bạn sẽ hay KHÔNG TUYỆT VỜI dạy Java như một khóa học lập trình giới thiệu. Về cơ bản, bạn nói rằng bạn sẽ KHÔNG TUYỆT ĐỐI KHÔNG dạy nó ?

Lý do đơn giản đã được giải thích. Java không có phí giấy phép. Bạn có thể dạy nó bằng một trình soạn thảo kiểm tra cơ bản. Nó được sử dụng cho những lý do sai lầm chắc chắn.

Tôi không đồng ý với câu trả lời trước đó, rằng Java đã không khiến các sinh viên vượt qua nó "ngu ngốc", nó thực sự cho thấy khi họ gặp vấn đề với các khái niệm thực sự đơn giản như mảng và danh sách trong C ++.


Tôi sẽ chỉ ra rằng sự thiếu hiểu biết không giống như "ngu ngốc". Mọi người "vượt qua" Java có thể không biết những "khái niệm đơn giản" đó bởi vì họ không được dạy. Điều đó không có nghĩa là nếu họ mất một thời gian để tìm ra nó, họ sẽ không hiểu được.
Jetti

0

Việc chuyển đổi từ C sang Java đã xảy ra không đúng lúc .

Ở đâu đó khoảng năm 2000. Tôi đã học lớp C cuối cùng tại trường đại học.

  • C ++ có quá nhiều tính năng không gây nhầm lẫn cho người mới. (Và nó vẫn còn. Và dự định thêm một số.)

  • NET đã không đủ chín chắn và thậm chí còn hơn đắt hơn ngày hôm nay.

  • Mục tiêu C đã và việc sử dụng nó của Apple đã bay bên dưới radar ( không có iPhone xung quanh)


Các vấn đề .NET khác tại thời điểm đó? Không có thời gian chạy di động - không có sẵn mono .
ZJR

Không có tính trung lập của trình soạn thảo văn bản . ( cuộc chiến soạn thảo văn bản là xấu, nhưng có thật) Và một IDE mặc định làm cho sinh viên đam mê lò hơi .
ZJR

BTW, tôi muốn thế giới ưa thích đi theo con đường Objective C , Apple sẽ không phải là đứa trẻ duy nhất trong sân bóng đó và ngay cả mô hình kinh doanh của nó cũng sẽ bớt mất trí hơn một chút.
ZJR

0

Tôi cảm thấy bắt buộc phải thêm vào các câu trả lời ở đây vì tôi không thực sự thấy bất kỳ câu trả lời nào trong số này thực sự bao hàm quan điểm của tôi.

Tôi là một lập trình viên sở thích. Tôi đã đi trước đường cong khi nói đến 'máy tính' và 'lập trình'. Tôi đã hoàn thành chương trình đại học - Cử nhân - vào năm 2007 và Thạc sĩ khoảng hai năm sau - 2009. Tôi đã làm việc với rất nhiều ngôn ngữ bao gồm Hội, QuickBASIC, C, C ++, Java, PHP, Perl, Python, BASH ScScript, Javascript, COBOL, v.v. .

IMHO, ngôn ngữ được sử dụng để dạy lập trình cho sinh viên là một chỉ báo về thời đại mà chúng ta hiện đang sống. Ví dụ, trong những năm 1980, hội là ngôn ngữ cấp thấp trong khi C được coi là ngôn ngữ cấp cao.

Trong những năm 1990, C ++, Java, Perl và các ngôn ngữ như vậy đã đạt được tầm quan trọng chủ yếu vì mức độ cao hơn nhiều so với C và thể hiện các nguyên tắc phát triển nhanh chóng. Vì vậy, họ đã ngừng dạy hội cho các sinh viên CS và dạy C như một cách thể hiện thuật toán. Dần dần điều đó đã thay đổi trong thập kỷ qua, nơi C được coi là ngôn ngữ cấp thấp để nắm bắt bản chất của thuật toán một cách hiệu quả và không có quá nhiều bí quyết của 'hệ thống'. Điều này thực sự cực kỳ quan trọng vì trọng tâm của chương trình giảng dạy CS phải mang tính 'lý thuyết' hơn là thực tế và mỗi khi ai đó muốn viết một thuật toán, nếu anh ta / cô ta bị sa lầy với phân bổ bộ nhớ và số học con trỏ thì bạn sẽ không nhận được bất cứ nơi nào

Ngay cả hôm nay nếu bạn tham gia chương trình Thạc sĩ CS, bạn sẽ phải hoàn thành một số yêu cầu 'Hệ thống' (ít nhất ở Hoa Kỳ và điều này không khác lắm đối với các trường đại học Hoa Kỳ), nơi sinh viên cần có thể lập trình các ứng dụng cấp hệ thống và trong một số trường hợp nhất định sâu như hack cấp kernel để thực sự vượt qua các yêu cầu. Vì vậy, mặc dù C không phải là ngôn ngữ defacto đang được dạy trong trường học, nhưng nó có liên quan nếu bạn muốn chuyên về Hệ thống hoặc Máy tính hiệu suất cao hoặc các hốc như vậy.

Tôi cũng muốn đề cập đến một điểm khác là C đòi hỏi rất nhiều kỷ luật để làm mọi thứ đúng trong khi các ngôn ngữ như Java có một chút thoải mái về những ràng buộc như vậy. Điều này giúp tiến hành các khóa học dễ dàng hơn mà không yêu cầu RA / TA khởi chạy GDB để gỡ lỗi chương trình của học sinh :)


0

Tôi nghĩ rằng một phần lớn của nó là những gì đang được sử dụng trong ngành công nghiệp.

Chương trình CS của tôi có một Ban cố vấn công nghiệp, gồm các nhân viên cấp cao từ các công ty công nghệ và hàng không vũ trụ địa phương, và họ có rất nhiều đầu vào vào chương trình giảng dạy. Các lớp CS giới thiệu đã bỏ Pascal để ủng hộ C vào năm tôi bắt đầu (1986), phần lớn theo lệnh của IAB. Tương tự, đã có một nỗ lực để dạy Ada trong một số khóa học cấp cao hơn vì các công ty hàng không vũ trụ địa phương đã phải sử dụng nó cho công việc DoD.

Java khá phổ biến hiện nay, đặc biệt là bây giờ các thiết bị Android đang cất cánh. Nó hút từ góc độ mô phạm, nhưng sau đó, C. cũng vậy.


0

Bởi vì họ hy vọng rằng ít sinh viên sẽ trượt khóa học, đó là một FAIL trong chính nó, IMHO. Có lẽ một trong những lý do tại sao hầu như không ai có bằng đại học nghiêm túc nữa, ít nhất là ở đây.

Java là ngôn ngữ quá đơn giản và không dạy cho PC có mô hình tài nguyên hạn chế. Trong khi cùng một lúc buộc vào "không có gì không thể giải quyết bằng một dòng suy nghĩ khác".

Vâng, nó tốt cho các khái niệm OOP và các vấn đề về đồ chơi, nhưng nó dạy cách tiếp cận các vấn đề từ góc độ sai. Sử dụng cấu trúc gọn gàng ở đây, vít phần còn lại.

Nhưng giới hàn lâm nổi tiếng là mơ mộng về AI, OWL và các công nghệ đồ chơi khác. Trong khi họ tiếp tục nghiên cứu những thứ như vậy, đôi khi, ai đó cũng phát minh ra thứ gì đó tuyệt vời ở đó, nhưng nếu bạn muốn trở thành một nhà phát triển giỏi, bạn phải học một cách độc lập.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.