Tại sao Java là ngôn ngữ chung tại nhiều tổ chức? [đóng cửa]


22

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?


9
Đừng lo lắng. Hãy cho Oracle một nửa cơ hội và họ sẽ khắc phục tình trạng này :) Các vụ kiện của họ chống lại Android và Apache chỉ là khởi đầu của việc đẩy các nhà phát triển đi. Tôi giảng dạy tại một tổ chức đã lấy những điều trên làm gợi ý để bắt đầu dạy Python, với dự đoán về thị trường trong tương lai.
Samoody

3
Những thiết lập học tập mà bạn đang đề cập đến? Tôi không biết bất cứ nơi nào mà sinh viên CSci dự kiến ​​chỉ học một ngôn ngữ. (Ngoái, tôi còn đi học, bạn có thể đã nhận được bởi với C và Đề án, tôi nghĩ, nếu bạn chọn loại chính và của bạn một cách cẩn thận, nhưng bạn muốn được sử dụng ít nhất hai ngôn ngữ khác nhau.)
David Thornley

16
Bạn có thể giải thích làm thế nào bộ đệm L1 của bạn hoạt động? Bạn có thể thiết kế một ALU? Bạn có thể giải thích phương trình Maxwell không? Những gì về tính chất nhiệt động của bo mạch chủ của bạn? Bạn có thể xây dựng một ổ đĩa USB? Bạn có thực sự biết máy tính của bạn hoạt động như thế nào không? Hay bạn đã chọn một mức độ trừu tượng phù hợp với sở thích của bạn và đi từ đó?
Hệ thống số liệu

5
Bởi vì quyết định rằng bạn cần hiểu quản lý bộ nhớ để "hiểu cơ bản các máy họ đang lập trình" là một mức độ hoàn toàn tùy ý để dừng lại. Nếu không cần thiết phải hiểu những vấn đề bạn quan tâm, thời gian của bạn thường dành thời gian tốt hơn để nghiên cứu những gì bạn quan tâm (vì không ai có đủ thời gian để tìm hiểu mọi thứ). Và bất kỳ đối số nào bạn trình bày về lý do tại sao các lập trình viên Java cần học quản lý bộ nhớ có thể được mở rộng vô tận cho đến khi mọi người cần biết vật lý nguyên tử để "hiểu" bất cứ điều gì.
Hệ thống số liệu

7
Hơn nữa, nếu có ai tranh luận về người rơm ở đây, thì bạn chưa bao giờ nghe nói về một chương trình CS duy nhất chỉ trình bày Java như một ngôn ngữ lập trình.
Hệ thống số liệu

Câu trả lời:


30

Đây không phải là một vấn đề Java, nó là một vấn đề giảng dạy. Không biết làm thế nào để lập trình không phải là lỗi ngôn ngữ, đó là lỗi của sinh viên. Tương tự như vậy đối với tất cả các vấn đề của bạn, GC, kiến ​​thức cơ bản về máy móc, cách mọi thứ hoạt động "dưới mui xe" để nói.

Nắm bắt chính của bạn về bộ sưu tập rác ném tôi một chút. Trừ khi bạn đang thực hiện bộ sưu tập rác C hoặc C ++ thường rất tốt và không thành vấn đề. Bạn có muốn tất cả họ học lắp ráp? Các ngôn ngữ cấp cao hơn rất nghiêm ngặt rất hữu ích cho việc giảng dạy. Nó cung cấp cho bạn sự linh hoạt của các thư viện, gói và các chi tiết khác khi bạn cần, mà không có bất kỳ ngôn ngữ "đường" khó hiểu nào có trong hầu hết các ngôn ngữ cấp cao khác (PHP, Ruby, Python, Perl).


5
Tôi không nói rằng các ngôn ngữ cấp cao hơn không nên được dạy. Nhưng tôi đang nói rằng một cái gì đó ở cấp độ thấp hơn (theo thứ tự C hoặc Fortran hoặc một số ngôn ngữ lập trình hệ thống khác) cũng nên được dạy. (Đi thấp hơn C sẽ ít hữu ích hơn vì dưới mức đó, bất cứ điều gì bạn học được đều sẽ dành riêng cho một kiến ​​trúc máy đơn lẻ). Tôi không nói rằng tất cả các sinh viên tốt nghiệp CS nên là những lập trình viên cấp thấp tuyệt vời. Nhưng tôi đang nói rằng nếu đối mặt với một vấn đề cấp thấp, họ không nên thốt lên và chết, vì tất cả các sinh viên xung quanh tôi dường như làm.
Billy ONeal

3
@Billy: Đi xuống thấp hơn thì trình độ học tập ban đầu của bạn thật khó khăn. Tôi thấy mình đang nhìn vào mã C ++ / C và có một chút thời gian vui vẻ quấn lấy đầu nó. Đừng mong đợi phép màu, nhưng cũng đừng mong đợi thiên thần. Các lập trình viên cần phải có ổ đĩa, thiếu rằng tất cả họ sẽ "văng và chết" khá nhanh cho dù vấn đề ở cấp độ nào.
Josh K

5
@Josh: Đủ công bằng, nhưng IMHO tiếp xúc chính thức với ít nhất một môi trường lập trình khác là điều cần thiết để được cấp bằng CS. Bằng cấp không nói "Tôi hiểu Java", nó nói, "Tôi hiểu CS". Cả hai không giống nhau và bạn không thể đạt được sự hiểu biết đầy đủ về CS khi sử dụng Java (hoặc cho vấn đề đó, bất kỳ ngôn ngữ nào ). (BTW, +1)
Billy ONeal

2
@JoshK: Không có khả năng gỡ lỗi ở mức thấp và giảm khả năng suy luận chính xác về ý nghĩa của mã họ viết.
Mason Wheeler

1
Tôi biết các lập trình viên chỉ học Java và sợ C ++ hoặc C vì họ phải sử dụng các con trỏ. Tôi không biết liệu ai đó không thể lập trình với con trỏ có thể được coi là một lập trình viên thực sự hay không: sau tất cả, tất cả các máy tính và thời gian chạy hiện đại vẫn dựa trên một kiến ​​trúc cơ bản liên quan đến các thanh ghi, bộ nhớ chính, stack, heap. Vì vậy, tôi thích lập trình bằng Java hơn là trong C ++ (chắc chắn sẽ dễ dàng hoàn thành công việc hơn nếu bạn không phải bận tâm về quản lý bộ nhớ) nhưng tôi đồng ý rằng việc dạy học chắc chắn không nên bị hạn chế đối với Java.
Giorgio

12

Các trường đại học có thực sự làm điều này? Hay đây chỉ là một nhận thức mà mọi người nhận được khi họ nhận được một ứng viên phỏng vấn việc làm tồi?

Tôi đã lấy bằng CS 4 năm trước và trong khi Java được sử dụng trong các lớp giới thiệu, nó không được nhấn mạnh đặc biệt sau đó. Ngoài đầu tôi, các khóa học yêu cầu cốt lõi yêu cầu bạn học Java, C, C ++, SML (ngôn ngữ lập trình chức năng), lắp ráp, matlab và CAST (ngôn ngữ mô tả mạch). Điều này không tính đến tất cả các khóa học CS về lý thuyết và toán học và tất nhiên, nửa tá các khóa học CS tự chọn sẽ tiếp xúc với bạn nhiều hơn. Từ việc nói chuyện với bạn bè ở một số trường đại học khác nhau, có vẻ như những gì họ đang làm khác đi nhiều.

Nếu có những trường đại học chỉ dạy Java, thì đó thực sự là một thảm kịch. Không phải vì Java là xấu, mà bởi vì nó chỉ là một công cụ của nhiều người nên có sẵn cho một lập trình viên. Một nhà phát triển chỉ biết Java tương đương với một thợ mộc, người chỉ biết sử dụng búa. Tuy nhiên, tôi gặp khó khăn khi tin rằng đó thực sự là trường hợp, ít nhất là đối với các trường đại học được tôn trọng. Tôi nghi ngờ rằng đây chỉ là nhận thức từ việc nhìn thấy các ứng cử viên xấu và đổ lỗi cho nhà trường về sự bất tài của ứng viên thay vì thiếu động lực / động lực / sự tò mò / tính chuyên nghiệp / v.v.


2
Đã đồng ý. Tôi mới tốt nghiệp vài năm trước và trong khi hầu hết các lớp học của tôi được dạy bằng Java, thật khó để tốt nghiệp mà không học một lớp được dạy bằng C hoặc C ++, và chúng tôi cũng có một khóa học ngôn ngữ lập trình nhấn mạnh việc sử dụng Haskell .
mipadi

Ở mức độ của tôi, chúng tôi đã làm Pascal trước, sau đó Java là ngôn ngữ OO của chúng tôi. Mặc dù năm thứ 2 vừa qua, 90% giáo sư không quan tâm bạn sử dụng ngôn ngữ nào. Một số người trong chúng ta đã sử dụng c / c ++ / ruby ​​/ C # / python / thậm chí haskell, nhưng hầu hết mọi người bị mắc kẹt với những gì họ biết, java. Chỉ có một số ít các khóa học được yêu cầu sử dụng assembly / c / c ++, cụ thể là những thứ như đồ họa 3D (tùy chọn) của chúng tôi prettymuch đã thi hành c / c ++ cho opengl. Và rõ ràng khóa học hệ thống cơ bản đã thi hành lắp ráp SPARC (vì chúng tôi cố tình làm việc & ở mức độ thấp). Tôi nghe nói họ đã chuyển sang python / c ++ trong năm đầu tiên bây giờ ....
Aren

11

Tôi thực sự ngạc nhiên khi đây là tình huống như nhiều trường học. Khi tôi có bằng CS, tôi đã có một loạt các khóa học ngôn ngữ mà giữa chúng bao gồm tất cả các ngôn ngữ phổ biến thời đó (gần 40 năm trước): trình biên dịch (Univac 1108 và MIX), FORTRAN IV, SNOBOL4, COBOL, Lisp và Algol 68. Tôi không thể tưởng tượng được chỉ có một ngôn ngữ được dạy. Hoặc làm thế nào tôi có thể đánh giá cao những gì trình biên dịch phải làm mà không cần phải viết một số chương trình biên dịch.

Chúng tôi đã sử dụng Algol và FORTRAN cho hầu hết các khóa học về dữ liệu và thuật toán. Tôi muốn có nhiều thời gian hơn với Lisp - thay vào đó chúng tôi chỉ giới thiệu và bây giờ đang cố gắng tìm hiểu lại một số khái niệm. Chúng tôi đã sử dụng SNOBOL4 để viết các trình phân tích cú pháp - và mô hình khớp với quay lui đã tạo ra một nền tảng tốt cho công việc sau này, các thư viện regex có nhiều ngôn ngữ hiện đại.

Phần giới thiệu về nửa tá ngôn ngữ này đã thu hút sự quan tâm đến tôi từ đó đến nay.


8

Để có được lý do thực sự, bạn sẽ phải hỏi những người điều hành các tổ chức đó (và thậm chí sau đó, họ có thể không nói cho bạn biết).

Một số lý do có thể (và tôi không bào chữa cũng không buộc tội bất kỳ ai ở đây, chỉ đoán thôi):

Bạn có thể hoàn thành công việc trong Java

Java nó là một ngôn ngữ có mục đích chung và như vậy có thể được sử dụng để giải quyết rất nhiều vấn đề.

Rất nhiều giáo viên hiểu Java

Thật khó để dạy một ngôn ngữ mà bạn không hiểu

Java là phổ biến

Điều đó có nghĩa là có rất nhiều tài nguyên Java - sách, cộng đồng đang hoạt động, thư viện mã, v.v.

Java rất dễ

Bạn không cần phải hiểu nhiều thứ hay lý thuyết cấp thấp để làm Java. Bạn có thể không làm tốt , nhưng ít nhất bạn có thể hoàn thành công việc.

Java có sức lan tỏa

Bạn có thể chạy nó trên nhiều hoặc ít hơn bất cứ điều gì.

Có việc làm cho lập trình viên Java

Có rất nhiều công việc cần Java - giáo viên được cho là đang chuẩn bị cho sinh viên vào thế giới thực.

Có giới hạn thời gian

Trên nhiều khóa học, không có thời gian để dạy nhiều ngôn ngữ, lý thuyết, khái niệm cấp thấp, v.v.

Đó là những gì sinh viên muốn

Rất nhiều sinh viên đã nghe nói về (và thậm chí đã sử dụng) Java. Họ thích vì nó quen.


6

Đó là những gì ngành công nghiệp yêu cầu. Thiếu nhà phát triển Java nên các trường bắt đầu tạo ra chúng. Các công ty có các nhà phát triển có thể bắt đầu làm việc ngay khi họ bước qua cánh cửa.

Dù sao, ngôn ngữ không thành vấn đề. Họ có thể dạy một ngôn ngữ không phải là GC và vẫn tạo ra những lập trình viên tồi. Các trường ngôn ngữ sử dụng là một chi tiết thực hiện. Các trường học nên dạy các khái niệm. Nếu đây không phải là trường hợp thì đó là trường học không phải là ngôn ngữ họ dạy. Chỉ vì ai đó không biết con trỏ là gì không có nghĩa là họ không thể trở thành một lập trình viên hiệu quả.

Dù sao thì GC cũng là con đường của tương lai.


4
Bạn không cần phải biết con trỏ là gì. Nhưng bạn cần có khả năng tiếp thu khái niệm tương đối nhanh chóng. Không hiểu con trỏ, hoặc các khái niệm tương tự như con trỏ, cho thấy sự thiếu hiểu biết về khoa học máy tính nói chung. Tôi không nói rằng tất cả các sinh viên tốt nghiệp CS cần phải là những lập trình viên cấp thấp tuyệt vời, nhưng tôi nói rằng ít nhất họ nên có một sự hiểu biết khái niệm về những gì đang diễn ra khi họ nhận được bằng đại học 4 năm.
Billy ONeal

1
CS không phải là về lập trình.
Javier

1
@Javier: CS không về lập trình như thế nào? Chắc chắn có nhánh CS, "Khoa học máy tính lý thuyết", không phải về lập trình, mà phần lớn về lập trình.
Billy ONeal

1
@Billy ONeal: định nghĩa wikipedia hơi dài, nhưng phần gần với lập trình nhất là "nghiên cứu các kỹ thuật thực tế để thực hiện chúng". nghĩa là, đó không phải là về việc triển khai (lập trình) mà là nghiên cứu các kỹ thuật triển khai (thuật toán, cấu trúc, ngôn ngữ, v.v.)
Javier

1
@Javier: Tôi nghĩ rằng "nghiên cứu về lập trình" và "hành động của lập trình" là một trong cùng một. Rốt cuộc, mã được đọc thường xuyên hơn nhiều so với nó được viết. Nhưng đó là vấn đề bên cạnh - khi bạn nhận được bằng CS, điều bạn sẽ làm là lập trình.
Billy ONeal

4

Lười biếng và động cơ lợi nhuận. Java nhận được hầu hết mọi người 80%, với 20% nỗ lực. Tuy nhiên, điều này thường tạo ra các lập trình viên voodoo "khỉ thấy khỉ", những người không có hiểu biết sâu sắc về những gì đang xảy ra và không thể đào sâu hơn các công cụ cấp cao.

Dạy C / C ++ đúng cách là khó. Ngay cả khi được thực hiện tốt, một số ít sẽ không hoàn toàn hiểu các khái niệm cấp thấp như con trỏ (có nghiên cứu về điều này). Hơn nữa, nó dường như không liên quan ngay lập tức trong thị trường việc làm.


2
Nhưng nếu yuo hiểu con trỏ, bạn có thể hiểu tài liệu tham khảo dễ dàng hơn nhiều.
Michael K

3

Tôi chủ yếu đồng ý nhưng ở một mức độ nhất định.

Nếu bạn muốn dạy CS CS tập trung vào các cấu trúc dữ liệu hoặc thuật toán. Lấy hầu hết những thứ không cần thiết ra khỏi đường là một điều tốt. Bạn sẽ không phải là sinh viên để đối phó với stuf cấp thấp khi học các khái niệm cấp cao.

Mặt khác, công cụ cấp thấp cũng nên được dạy. Chỉ để chúng tôi có được nhiều lập trình viên xung quanh.


Tôi không nói về một khóa học duy nhất. Đối với một khóa học duy nhất, điều đó là tốt. Đối với toàn bộ chương trình giảng dạy, nó không phải là.
Billy ONeal

3

Như mọi khi nó là một câu hỏi về những gì bạn muốn dạy và bao nhiêu thời gian bạn phải làm nó trong.

Làm mọi thứ trong Java có nghĩa là bạn không phải đối phó với các con trỏ đi lạc và free / malloc. Điều đó có nghĩa là khá ít lỗi khó tìm.

Điều này không có nghĩa là bạn không nên tìm hiểu về máy cơ bản - thứ mà bạn phải giỏi trong giao dịch - nhưng có lẽ bạn nên chọn công cụ phù hợp cho công việc. Các thuật toán cấp cao có lẽ không phải là chủ đề tốt nhất cho khóa học trình biên dịch.


Đối với một khóa học giới thiệu lập trình hoặc một khóa cấu trúc dữ liệu, Java là ổn. Tuy nhiên, không phải cho toàn bộ chương trình học 4 năm.
Billy ONeal

@Billy. Đã đồng ý. Tôi chỉ đề cập đến việc sử dụng Java sẽ mua cho bạn một số thứ bạn không phải lo lắng. Bạn nên học những điều cơ bản trong các khóa học khác mà không cần Java.

2

Có quá nhiều để hỏi rằng họ được dạy một cái gì đó về cách máy tính thực sự hoạt động? Tôi không có ý nghĩa gì với tôi rằng bất kỳ đề cương khóa học CS nào sẽ không bao gồm một cái gì đó của hệ điều hành và kiến ​​trúc máy tính. Tôi không nói rằng bạn sẽ có thể thiết kế một máy tính ở mặt sau của một phong bì, nhưng một tổng quan chung đặt tất cả các ngôn ngữ vào quan điểm. Ý tôi là, Java chạy trong một máy ảo!


1
chương trình khoa học máy tính tốt nào không bao gồm khóa học HĐH và khóa học tổ chức máy tính không?
mipadi

Tôi chắc chắn hy vọng không!
Michael K

0

Thành thật mà nói tôi không nghĩ rằng bạn nên mất sự tôn trọng đối với tất cả các cấp độ và đặc biệt không phải là CS vì ngôn ngữ duy nhất được dạy là Java.

Bất kỳ comp tốt. sinh viên sci hiểu rằng bằng cấp CS của mình không gì khác hơn là một tờ giấy và kiến ​​thức thực sự sẽ đến từ các dự án cá nhân và nghiên cứu cá nhân. Tôi muốn nghĩ rằng những sinh viên giỏi biết rằng họ cần biết C và học cách hoàn thành công việc trong Linux / Unix và học cách KHÔNG nắm trong tay các ngôn ngữ hiện đại.


-1

Tôi không thấy vấn đề gì khi sử dụng Java. Vấn đề lớn nhất (như bạn đã đề cập) là khi các trường đại học dạy lập trình mệnh lệnh là cách tốt nhất và duy nhất để giải quyết tất cả các vấn đề của bạn. Điều này rất xa sự thật. Ví dụ, thay vì sử dụng ba ngôn ngữ bắt buộc (hoặc thậm chí tệ nhất là cùng một ngôn ngữ) cho ba khóa học khác nhau, họ nên sử dụng ba mô hình lập trình khác nhau. Một ví dụ là Java (mệnh lệnh), Prolog (khai báo) và Haskell (chức năng).

Về lý do tại sao điều này xảy ra, tôi nghĩ đó là sự kết hợp của (1) chính trị - chủ tịch không cởi mở hoặc có lợi ích cá nhân / nhà tài trợ, và (2) sự lười biếng - giáo sư đã từng là sinh viên và họ dạy bất cứ điều gì họ biết hoặc thích.


-1

Đại học Calvin ở Grand Rapids Mi. Khi họ chuyển từ Java sang Python cho các lớp lập trình giới thiệu, giáo sư không tin tưởng đã đề cập đến một nhóm chúng tôi gần cuối học kỳ, "Rất nhiều trong số họ thực sự có thể lập trình, thật không thể tin được". Sự kinh ngạc của anh trái ngược với những trải nghiệm trước đây với Java. Điều này không làm cho Java trở thành một ngôn ngữ xấu, chỉ khó để bắt đầu lại từ đầu. Tôi sẽ tranh luận điều tương tự về C, hoặc C ++ hoặc bất kỳ ngôn ngữ nào đòi hỏi kiến ​​thức sâu sắc về các sơ đồ hoặc loại phân bổ bộ nhớ.


1
Erm, Python đòi hỏi kiến ​​thức sâu sắc về các loại giống như các ngôn ngữ khác mà bạn đã đề cập.
Billy ONeal

Tôi hy vọng rằng các ngôn ngữ có thông dịch viên sẽ dễ học hơn nhiều, vì sinh viên có thể nhận được tuyên bố phản hồi bằng tuyên bố thay vì biên dịch bằng biên dịch.
kevin cline

@BillyONeal Bạn đọc nhầm tôi, Bối cảnh là sự phân bổ bộ nhớ trong câu cuối cùng của tôi. Tôi vẫn chưa quan tâm đến kích thước hoặc # các yếu tố của str () hoặc dict () hoặc tuple () hoặc list () hoặc set () ... Tôi chỉ 'sử dụng' chúng.
Ben DeMott

@kevincline Cảm ơn Kevin - đây là những gì tôi đã cố gắng vượt qua. Đánh giá các downvote tôi cần
rèn

-2

Tôi có bằng kỹ sư hệ thống máy tính, vì vậy tôi đã nghiên cứu lắp ráp, vi xử lý, VHDL, cổng logic là gì và làm thế nào để tạo ra một flip-flop từ chúng, tôi đã nghiên cứu các mạch điện, bộ khuếch đại hoạt động, bộ lọc thông thấp, biên độ điều chế, xây dựng một mạch trong phòng thí nghiệm nghe như bàn phím điện thoại, bị rối với máy phân tích logic, đã học một số lớp vật lý. Về phía Linux - tôi đã biên dịch lại kernel trước đó, viết trình điều khiển thiết bị nhỏ và hệ thống tệp bài tập về nhà.

Nhưng sau đó tôi nhận ra rằng tôi thích nhiều thứ cấp cao hơn rất nhiều. Tôi thích Python hơn C. Tôi thích C # và tôi thích trình thu gom rác. Tôi thích toán học, thuật toán và cấu trúc dữ liệu, nhưng tôi không phải là một fan hâm mộ đặc biệt của con trỏ - tôi có thể gây rối với chúng; Tôi chỉ không muốn.

Vì vậy, bạn nghĩ rằng trường đại học nên dạy nhiều C hơn, ít Java hơn. Một số người khác nghĩ rằng họ nên dạy mọi thứ trong Đề án. Spolsky sẽ mất cả hai.

Đúng, đúng là bằng đại học chỉ là một tờ giấy, nhưng "đừng để việc học cản trở việc học của bạn". Luôn có Wikipedia, Stack Overflow, Coursera.org, v.v ... Có vẻ như các trường đại học truyền thống sẽ trở nên ít quan trọng hơn.

Nếu tôi có thể học đại học khắp nơi, thì tôi đã đi đến một trường khác, tôi sẽ không học bất kỳ công cụ kỹ thuật điện nào, mà là môn Toán, CS + chuyên ngành Vật lý và tiếng Pháp. Cào tiếng Pháp; Tôi nên đi du học ở Thụy Sĩ và học 5 ngôn ngữ tự nhiên khi học. Tôi cũng sẽ quay lại và tìm một người đã thuyết phục tôi rằng tôi nhất định phải tham gia một số lớp học kinh tế ở trường đại học để tồn tại trong thế giới thực và đập vào đầu anh ta với bộ sưu tập sách của Milton Friedman (chỉ một số ít sách về chủ đề kinh tế mà tôi đọc mà không hút). Tôi cũng sẽ không trả tiền cho cuốn sách Freakonomics 1 hoặc một cuốn sách về ngôn ngữ Perl.

Nhìn lại, tôi sẽ làm nhiều việc khác nhau. Tất cả những gì tôi có thể làm bây giờ và tôi khuyên bạn nên làm điều này, là chọn cuộc phiêu lưu của riêng bạn: http : //www.codinghorror.com/blog/2008/03/ch rủi-your -own-adventure.html

Bây giờ, tôi đã kiếm được 100 tỷ đô la trên thị trường chứng khoán và tôi đã đầu tư vào nghiên cứu ung thư, tôi sẽ thuê các nhà khoa học để loại bỏ thế giới rác thải nhựa; Tôi đã quyên góp đủ tiền mặt cho chiến dịch Ron Paul để cuộc chiến ở Trung Đông sẽ kéo dài hơn 3 năm trước.

Nhận ra rằng bạn sẽ không bao giờ lấy lại được thời gian của mình, vì vậy hãy cố gắng sử dụng nó một cách khôn ngoan.


Downvoters, xin vui lòng xây dựng.
Công việc

-2

Vài năm trước tôi đã đọc ở đâu đó rằng, ở Anh, quyết định Java được đưa ra để lôi kéo nhiều sinh viên hơn vào lập trình. Rõ ràng là nó dễ dàng hơn trong não vì thiếu các con trỏ khó chịu và quản lý bộ nhớ, v.v ... Tôi đoán rằng đây là lý do tại sao Python nhanh chóng được sử dụng như một 'công cụ học tập' mới. Tôi có ý kiến ​​rằng khóa học uni điển hình của bạn sẽ không biến bạn thành một lập trình viên. Tất cả những gì nó có nghĩa là làm cho bạn có một lượng kiến ​​thức nhất định và giúp bạn lập trình. Ngày mà người ta có thể tự gọi mình là lập trình viên thường đến một chút thời gian sau khi uni và khi thời điểm đó đến, con trỏ, bộ sưu tập rác và mô hình lập trình khác ngoài OOP, không phải là vấn đề.


-2

Tại sao Java được sử dụng?

Ba lý do:

  1. Java sử dụng cú pháp kiểu C. Nhiều lập trình viên quen thuộc với nó, vì vậy nó làm giảm thời gian học tập.

  2. Tiền đã được sử dụng để tiếp thị Java là tuyệt vời và hiện đại. Nhưng so với lisp, java đang sống trong thời kỳ đồ đá.

  3. JVM. JVM là một điều thú vị về java là hợp pháp, không chỉ là quảng cáo thổi phồng. Mặc dù JVM nên được ca ngợi như là một nền tảng để chạy các chương trình, nhưng bản thân nó không xứng đáng với sự tồn tại của ngôn ngữ Java. Về mặt lý thuyết và thực tế, bạn có thể biên dịch nhiều ngôn ngữ khác nhau cho JVM.


1
Chào mừng bạn Điều này có vẻ như nếu có thể là bài viết đầu tiên của bạn cho Lập trình viên trao đổi Stack. Vui lòng xem trang lập trình faq.stackexchange.com/faq để được tư vấn về danh tiếng, hỏi và trả lời câu hỏi. Một điểm quan trọng là câu trả lời nên có nhiều thông tin, không mang tính khiêu khích. Nếu bạn đưa ra một khẳng định như Java là thời kỳ đồ đá và Lisp là hiện đại, hãy giải thích tại sao. Nhiều độc giả có thể biết Lisp được chỉ định vào năm 1958 và chỉ trẻ hơn FORTRAN một chút. Nếu bạn muốn nói rằng một cái gì đó về Java được chia sẻ với FORTRAN hoặc Algol điều khiển thiết kế của nó và giới hạn nó, hãy mô tả nó.
Nhà phát

-3

Câu hỏi của bạn đang hỗ trợ cho phát hiện của một người khác đã viết một bài báo nói rằng Java rất tuyệt nhưng không đủ nặng cho tính toán khoa học. Tôi nghĩ rằng anh ta chỉ nên sử dụng Big Decimal với tất cả các quy tắc tốt của nó, NAN, v.v. và tiếp tục với nó.

Tôi muốn chỉ sống trong một thế giới thu gom rác tự động. Nó lành mạnh hơn, sạch hơn, gọn gàng hơn, thẩm mỹ hơn, ngăn ngừa lãng phí tiền bạc cho các chi phí y tế, đáng mong đợi hơn - không phải gắn thẻ thứ gì đó không mong muốn - chỉ đơn giản bằng cách hủy bỏ nó hoặc đặt nó thành null hoặc khi tôi chuyển ra khỏi phạm vi, vật phẩm sẽ tự động được gắn thẻ để thu gom rác ..

Ok, bây giờ tôi chỉ nói về Java nhưng sẽ hữu ích nhất nếu điều này cũng hoạt động trong kịch bản rác thực sự. Java được viết một lần chạy ở bất cứ đâu đủ tốt để tôi có thể sử dụng nó làm ngôn ngữ trong trường học. Không có rò rỉ bộ nhớ và được yêu thích bởi các lập trình viên hạnh phúc, những người không muốn dành thời gian gắn thẻ cho mọi đối tượng họ sử dụng và ngừng sử dụng chính nó là logic tốt thay cho Java.

Java có con trỏ - chúng tôi gọi chúng là tài liệu tham khảo .. Chuỗi s1 = "Xin chào"; Chuỗi s2 = "Xin chào"; Chuỗi s3 = Chuỗi mới ("Xin chào");

s1 và s2 sẽ trỏ đến cùng một đối tượng String - đó là bởi tham chiếu s1 == s2, s1.equals (s3) nhưng s1 == s3 là sai vì s3 là đối tượng tham chiếu mới - đây là số học của java và tôi hiểu tất cả điều này rất xin lỗi, tôi không muốn được gắn nhãn là một người không hiểu được sự phức tạp nằm dưới của số học con trỏ từ C hoặc C ++.


2
Tài liệu tham khảo không phải là con trỏ. Bạn không thể sử dụng chúng một cách hợp lý và bạn không thể sử dụng chúng để diễn giải lại một phần bộ nhớ mà chúng trỏ tới. Và tất nhiên, cho dù bạn muốn sống trong một thế giới rác được thu gom đến mức nào, thì thực tế vấn đề là thế giới không phải là một thế giới rác được thu gom. Tôi không nói rằng Java là một ngôn ngữ xấu hoặc mọi người không nên sử dụng java. Nếu bạn thích nó, sử dụng nó, có những điều về nó là tuyệt vời. Tôi chỉ nghĩ rằng nó không phù hợp như một ngôn ngữ mới bắt đầu bởi vì nó che giấu những điều cần thiết cho các lập trình viên mới hiểu.
Billy ONeal
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.