Java hay C ++ cho các khóa học CS đại học?


11

Tôi đang trong giai đoạn tự mình đăng ký vào trường để lấy bằng CS. Trường tôi đang xem thực sự cung cấp cả Java- và C ++ - dựa trên các khóa học phát triển phần mềm giới thiệu (lập trình hướng đối tượng, các mẫu thiết kế, đại loại như vậy). Đó là lựa chọn của sinh viên để theo dõi, nhưng chỉ có thời gian để theo dõi.

Biết những gì bạn biết bây giờ, nếu bạn có sự lựa chọn, bạn sẽ đặt nền tảng chương trình giảng dạy CS của mình bằng Java hoặc C ++?

Cuộc tranh luận hiện tại của tôi hiện tại như thế này:

Một người bạn tốt (có bằng tiến sĩ về AI) đang chào mời Java là sự lựa chọn tốt hơn bất kể tôi làm gì, nếu chỉ để mở ra nhiều cơ hội việc làm sau này, mặc dù anh ta có thể bị thiên vị vì tất cả công việc của anh ta đều ở Java (anh ta thích nó). Tôi sống ở khu vực Boston, MA, Hoa Kỳ và tôi thấy một lượng công việc Java và C tương đương.

Mặt khác, mặc dù tôi chưa hoàn toàn giải quyết được những gì tôi muốn làm với bằng cấp khi tôi hoàn thành, sở thích của tôi sẽ là phát triển cho Mac, hiện tại tôi đang làm trong một khả năng hạn chế. Cuối cùng, tôi đã bị hạn chế về C ++, nhưng tôi không có Java và nhìn vào các dự án của tôi trong công việc hàng ngày, tôi không thấy cần phải sử dụng nó sớm, "sớm" ít nhất hai năm.

Tôi có lẽ nên lưu ý rằng tôi là một người trưởng thành trở lại trường sau 20 năm (hiện tại tôi không có bằng cấp nào) vì vậy tôi đang tìm cách tối đa hóa cơ hội và thời gian tốt nhất có thể. Tôi hơi nghiêng về C ++ nhưng tôi vẫn mơ hồ, và một số lời khuyên khách quan bên ngoài sẽ giúp ích ở đây.

Hoặc tôi chỉ có thể suy nghĩ quá nhiều về nó.

CẬP NHẬT: Hóa ra lựa chọn ngôn ngữ không quá rõ ràng như tôi đã phỏng đoán ban đầu. Trong khi một vài khóa học cốt lõi tập trung vào Java, một số khóa học cốt lõi khác hoạt động chủ yếu bằng C và Java, nhưng cũng có một số khóa khác được sử dụng để đo lường tốt. Trên thực tế, phần còn lại của học kỳ của tôi sẽ ở trong Objective-C sau khi dành thời gian cho Java và Javascript. Học kỳ trước là C, Javascript và PHP, cộng với một vài bài khác được yêu cầu. Vì mọi thứ đã bị chia rẽ khá nhiều, và tôi vẫn đang nhận được câu trả lời cho vấn đề này, hiện tôi đang cố gắng thực hiện chương trình giảng dạy của mình để tôi đáp ứng tất cả các yêu cầu về bằng cấp nhưng để tiếp thu nhiều ngôn ngữ mà tôi có thể xử lý một cách hợp lý . Cho đến nay, điểm số của tôi đã không phải chịu đựng khi cố gắng làm điều này.


1
Mọi người trong môi trường nghiên cứu học thuật đang chào mời java ngay bây giờ. Ngoài ra, bất kể ngôn ngữ bạn cần học từ trường đại học làm thế nào để học ngôn ngữ mới. C ++ có mặt như java nhưng không có gì khẳng định họ sẽ ở trong 5 năm nữa. Các ngôn ngữ / công nghệ mới luôn xuất hiện, vì vậy bạn cần chuẩn bị sẵn sàng để tiếp nhận chúng và trở nên lão luyện nhanh chóng.
Chris

1
@Chris: Đó là lý do tại sao khuyến nghị của tôi là học một cái gì đó tạo điều kiện cho việc học thêm, chứ không phải là thứ phổ biến hiện nay. Tôi muốn giới thiệu C ++ hoặc Python chứ không phải Java (rõ ràng vì những lý do khác nhau).
David Thornley

Đó không phải là ngôn ngữ quan trọng. Đó là khái niệm trừu tượng. Có được khái niệm đúng, vì vậy các sinh viên có thể dễ dàng học bất cứ điều gì sau này trong cuộc sống của mình.
J-16 SDiZ

1
Tôi đang ở trong một tình huống tương tự (háo hức): trở lại trường học cho CS sau 20 năm xa trường. Trường tôi cũng có bản phân tách Java / C ++. Sau khi đọc mọi thứ ở đây và thậm chí đưa ra +1 cho câu trả lời hàng đầu, tôi vẫn sẽ tiếp tục với Java và đây là lý do tại sao, trong trường hợp nó hữu ích cho bạn: Tôi đến từ phát triển web (Javascript, PHP, Python) , vì vậy sự hỗ trợ của các thư viện Java là một lợi thế. Giả sử tôi cũng dành thời gian để thực sự nắm bắt các nguyên tắc OOP, tôi không nghĩ việc chuyển sang C ++ (nếu cần thiết) sẽ khó khăn đến vậy. Java là nền tảng giữa kịch bản và biên dịch.
được hollenbeck

2
Tôi nghĩ rằng tôi không đồng ý với mọi câu trả lời. Nó thực sự không quan trọng . Bạn sẽ học các khái niệm tương tự trong cả hai ngôn ngữ và bạn sẽ học ngôn ngữ khác mà bạn không chọn và các ngôn ngữ khác thông qua việc học và nghề nghiệp của bạn.
Matsemann

Câu trả lời:


51

Cá nhân tôi sẽ sử dụng C ++ vì nó sẽ cung cấp cho bạn thông tin chi tiết về cách các phần của Java hoạt động dưới mui xe (ví dụ về Con trỏ). Di chuyển sang Java từ C ++ khá tầm thường, trong khi di chuyển theo cách khác thì khó khăn hơn nhiều.

Điều thực sự khó khăn về hệ sinh thái Java là số lượng lớn các khung, thư viện, v.v. - dù sao đi nữa, chúng không thể bao gồm tất cả những điều đó tại Đại học.

Vào cuối ngày nó sẽ không thành vấn đề nhiều những gì ngôn ngữ mà bạn chọn, miễn là bạn tìm hiểu những nguyên tắc này.

JUG của tôi sẽ giết tôi vì chứng thực C ++ ;-)


1
+1 cho điểm tuyệt vời về kích thước của hệ sinh thái Java và giải thích chuyển đổi.
Jas

1
Vấn đề với việc học một hệ sinh thái lớn tại một trường đại học là điều đó sẽ không hữu ích trong suốt sự nghiệp chuyên nghiệp của bạn. Tốt hơn hết là bạn nên học ít thư viện hơn và học các khái niệm hoặc làm quen với các tính năng ngôn ngữ thực tế.
David Thornley

2
Một bước khởi đầu nữa đối với C ++ là sau đó bạn có thể quản lý C ++ trên .NET Framework, mang lại cho bạn cơ hội học C #, F # và bất kỳ ngôn ngữ nào khác trong thời gian chạy đó. Java cũng có sự dẫn dắt tuyệt vời cho JVM và các ngôn ngữ như Scala, nhưng không có JVM C ++ mà tôi biết.
CodexArcanum

Là một người thích nghĩ rằng anh ta khá giỏi trong C ++ (và Java), tôi không nghĩ bất kỳ khóa học lập trình giới thiệu hiện đại nào cũng nên có trong C ++. Nó đơn giản là quá khó. Nếu trường đại học hoàn toàn không dạy C ++, hãy di chuyển, chắc chắn, nhưng để giới thiệu tôi sẽ đi với một thứ đơn giản và đẹp hơn như Java. Có lẽ nếu tôi không nghĩ rằng tất cả đều xấu, tôi thậm chí có thể đã đề xuất một ngôn ngữ được gõ động.
Dukeling

Quay trở lại một số ngày trước Java chúng tôi không có lựa chọn này và tất cả chúng tôi đều học C ++, vì vậy tôi không thấy có vấn đề gì với những người vẫn học C ++ trước tiên. Tôi đoán phần giới thiệu trong Java tốt hơn phần giới thiệu trong Turbo Pascal.
Bratch

18

Tôi phải không đồng ý với hầu hết mọi người ủng hộ Java ở đây. Học C ++, ngay cả khi bạn chưa nghiên cứu kiến ​​trúc máy tính và vi xử lý, mang đến cho bạn rất nhiều hiểu biết vô giá về cách thức hoạt động và vận hành của các chương trình máy tính.

Đáng chú ý, tôi KHÔNG ủng hộ bạn không nên học Java (tốt hơn là C #) vì đây là các lang phát triển ứng dụng nhanh, hiện đại và các khung lớn đã được xây dựng xung quanh chúng cho phép bạn truy cập vào rất nhiều chức năng "miễn phí", như truy cập tệp trừu tượng và tương tự, tuy nhiên, một kỹ sư phần mềm thực thụ nên biết ít nhất một số C ++, C hoặc ít nhất là trình biên dịch, bởi vì đó là những gì tách biệt bạn khỏi các loại script-kiddie.

Khi bạn thành thạo một cách hợp lý với C ++, tự tin với quản lý bộ nhớ và STL, việc chọn Java / C # sẽ rất dễ dàng.


Đồng ý, tôi khẳng định rằng việc học Java nếu bạn đã thành thạo C ++ sẽ dễ dàng hơn nhiều so với học C ++ nếu bạn đã thành thạo Java.
Carson63000

Vấn đề với việc trở nên "thành thạo một cách hợp lý với C ++" là sẽ mất nhiều năm và bạn vẫn sẽ chỉ học được một tập hợp con nhỏ của OOP.
Henry

Java không phải là một ngôn ngữ phát triển ứng dụng nhanh chóng. Nó có thể ở cấp độ cao hơn một chút so với C ++, nhưng nó không gần với mức độ trừu tượng của Python, Ruby, Perl hoặc Visual Basic.
Evan Kroske

@Evan - Có, Java là ngôn ngữ phát triển "nhanh" nếu không có gì khác cho các thư viện rộng lớn của nó (Người ta thường nói rằng bất kỳ nhà phát triển Java nào cũng có tài liệu API Java mở trong khi làm việc) cũng như không phải quản lý bộ nhớ thủ công. Và người đàn ông đã thiết kế Java, đã thiết kế nó bởi vì anh ta không đi đến đâu bằng C ++. Cộng với số lượng lớn các ứng dụng Java được triển khai hàng ngày (rào cản nhập thấp hơn) là một đối số khác cho tính "nhanh chóng" của nó.
Jas

9

Các trường học và học giả ủng hộ Java là lựa chọn đầu tiên nên kiểm tra đầu của họ (hoặc đơn giản là nhận một công việc thực sự ngoài đó.) Tôi đang nói đây là một người đã thực hiện cả phát triển ứng dụng và hệ thống trong Java trong 12 năm qua. Java là một ngôn ngữ tàn bạo để giảng dạy.

Lý do là như sau: cấm những người có năng khiếu, hầu hết sinh viên có thể (và rất có thể sẽ không bao giờ) nắm bắt hướng đối tượng mà không hiểu lập trình mô-đun. Và họ không thể hiểu lập trình mô-đun mà không hiểu lập trình có cấu trúc bằng ngôn ngữ thủ tục. Đơn giản và đơn giản. Chứng nhận của điều này (trong số những thứ khác) là mặc dù chúng ta đã biết OO trong 3-4 thập kỷ nay, mọi người vẫn viết hyper-spaghetti trong thực tế.

Hơn nữa, một người chỉ dựa vào ngôn ngữ dựa trên gc (có thể là Java hoặc .NET) có thể không bao giờ thực sự đến gần với phần cứng. Trừ khi toàn bộ tham vọng của bạn là tạo ra các trang web động, hãy đoán xem? Bạn cần phải thoải mái với việc tiếp cận với ngôn ngữ.

Bạn đến trường CS để trở thành một nhà khoa học và lập trình viên máy tính toàn diện (hy vọng với một vài giờ tín dụng thực hành lập trình bằng nhiều ngôn ngữ lập trình.) Nếu bạn biết tất cả là Java (hoặc .NET hoặc C hoặc Python bất cứ điều gì) thì bạn là một "lập trình viên Java" (không phải là một lập trình viên có thể làm việc trên Java, mà là một "lập trình viên Java"). Và điều đó có ý nghĩa nhiều như việc bạn nói rằng bạn là một "thợ mộc búa" hay "thợ cơ khí lái vít Phillip", không phải vậy.

Một trường học tốt sẽ đưa bạn đến C (hoặc một số ngôn ngữ thủ tục khác như Pascal hoặc Ada), sau đó là C ++ và một hội đồng, để bạn tự học Java khi bạn theo đuổi các khóa học capstone dự án vào năm học cơ sở / năm cuối. Ngoài ra, nó sẽ cung cấp cho bạn khả năng tiếp xúc với các ngôn ngữ chức năng để bạn hiểu khái niệm chuyển các khối tính toán dưới dạng đối số, tính toán miễn phí hiệu ứng phụ, minh bạch vị trí và tương tự (có ứng dụng thực tế thực sự, ngay cả trên web.)

Bạn cần phải biết segfault là gì. Bạn cần biết phân trang, bộ nhớ ảo và tất cả những thứ nhảm nhí đó có nghĩa gì. Bạn cần biết cách phân tách các vấn đề trong các mô-đun (có thể là thủ tục và dựa trên OO). Bạn cần biết các hệ thống OO thực sự được triển khai như thế nào (để bạn biết được chi phí.) Bạn cần biết sự trừu tượng hóa của OO (và chúng xảy ra vì thế giới và các vấn đề phức tạp không nhất thiết phải hướng đối tượng.)

Bạn cần biết tất cả những thứ đó để trở thành một nhà khoa học máy tính giỏi, có khả năng làm việc cho doanh nghiệp hoặc ở cấp độ rất thấp, thực hiện ở cấp độ hệ thống, cho cả thương mại hoặc khu vực công, cả quy mô lớn và nhỏ tỉ lệ.

Các học giả, những người đã thúc đẩy Java là ngôn ngữ duy nhất để cai trị tất cả họ hoàn toàn không biết gì về những gì ngành công nghiệp thực sự cần. Không biết gì Không thể tha thứ được. Đó là những gì xảy ra khi họ làm việc trên các tháp ngà nhìn từ xa.

Họ đã biến các khoa Khoa học Máy tính thành các trường dạy nghề 4 năm đắt tiền, tạo ra những chú ngựa con lập trình một ngôn ngữ. Và điều đó có thể được tha thứ nếu ít nhất họ có thể dạy cho sinh viên các kỹ năng kinh doanh / doanh nghiệp / tổ chức cơ bản (nghĩa là từ bỏ mặt tiền CS và áp dụng chương trình giảng dạy MIS.) Nhưng họ thậm chí không làm điều đó, mà tôi nghĩ đó là một sự bất đồng lớn cho ngành công nghiệp, nền kinh tế và cuối cùng là sinh viên.

Tôi muốn đề nghị bạn đọc tác phẩm của Joel Spolsky trên "Trường học Java".

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Tóm lại, nếu họ không dạy cho bạn một ngôn ngữ lập trình thủ tục (có thể là ngôn ngữ công nghiệp như C hoặc Ada hoặc một ngôn ngữ đủ tốt để dạy như Pascal) và họ cung cấp cho bạn nếu C ++ (nếu bạn may mắn) hoặc Java / C # (nếu bạn không may mắn), tôi sẽ tìm một trường khác. Rõ ràng và đơn giản, từ một anh chàng đã sử dụng Java để sống trong thế giới thực trong một thời gian dài.


Từ một người biết Java, C và C ++ khá tốt và những người không tốt nghiệp quá lâu, tôi sẽ không đồng ý. C (hoặc C ++) VS Java - Java là cách 'dễ dàng hơn'. Có lẽ nếu tôi bắt đầu với C ++ (mà tôi nghĩ là khá tuyệt vời (nhưng không dễ) btw) (thay vì (Delphi (eww) +) Java) thì tôi hoàn toàn có thể bị mất điều kiện, từ bỏ và không trở thành lập trình viên (mặc dù có lẽ chúng ta vừa có một giáo viên C ++ tồi). Nhưng vâng, học C ++ để hiểu nội bộ của Java là hoàn toàn vô giá. Và tôi đoán khoảng 95% lập trình viên ngày nay "không bao giờ thực sự đến gần với phần cứng".
Dukeling

" C (hoặc C ++) VS Java - Java là cách 'dễ dàng hơn" "- đó là một điều nổi tiếng được đưa ra. Tôi không chắc chắn những gì phải làm với bài viết của tôi, mặc dù (?????)
luis.espinal

Dễ hiểu hơn, dễ dạy hơn, dễ học hơn, do đó tôi không đồng ý rằng "Java là một ngôn ngữ tồi tệ để giảng dạy" và bạn nên học C trước (có thể một ngôn ngữ thủ tục dễ dàng hơn là tốt). Tôi cũng nói C hoặc C ++ là tốt để biết, nhưng không nên bắt đầu, bởi vì trong trường hợp này, bạn có khả năng làm mất đi tất cả trừ những lập trình viên khó tính nhất, bởi vì tôi chắc chắn rằng tất cả những người sẽ sống sót trong phần giới thiệu về lập trình qua C ++. Không phải tôi nhớ một thế giới lập trình viên khó tính, nhưng những người khác có thể. Vâng, bạn đang nói là tròn trịa, nhưng tôi nói chì với Java hoặc tương tự.
Dukeling

Dễ hiểu và dạy hơn không nhất thiết phải là một ngôn ngữ thích hợp cho mục đích sư phạm. Sau 12 năm làm việc với Java, tôi đã bị thuyết phục về điều này. Chẳng hạn, một ngôn ngữ sư phạm tốt hơn nhiều so với C hoặc C ++ sẽ là Python, hoặc bất kỳ ngôn ngữ nào không bắt buộc mọi phương thức phải ở trong một lớp, đó là một ngôn ngữ thực sự đa mô hình trái ngược với Java, nơi mọi thứ được "cho là" một đối tượng, nơi không có lựa chọn thay thế tốt nào để vượt ra ngoài các lớp và gói, v.v. Nó giới hạn khả năng dạy mô hình thích hợp.
luis.espinal

Java, bằng cách buộc bạn học lập trình ở chế độ mọi đối tượng, hướng đối tượng, nó cung cấp các ẩn dụ mô hình kém cho các mô hình khác phù hợp hơn với mô hình thế giới thực. Một nhà phát triển chuyên nghiệp từ các chiến hào có thể làm việc xung quanh giới hạn đó. Sinh viên không, và tha thứ cho tôi, nhưng rất ít giáo sư đại học có kinh nghiệm từ các chiến hào để biết phân biệt. Tôi sẽ chọn Python hoặc Ruby (hoặc thực tế là Lisp hoặc BASIC) trên Java nếu C / C ++ quá khó.
luis.espinal

4

Tôi nghĩ rất nhiều phụ thuộc vào tính cách của bạn. Ít nhất theo quan điểm của tôi, Java và C ++ có những định hướng hoàn toàn khác nhau thu hút những loại người khác nhau đáng kể.

Khi bạn bắt đầu với nó, Java thực sự chủ yếu là một thư viện lớp lớn, có đủ ngôn ngữ để có thể khởi tạo các đối tượng và gọi các phương thức từ thư viện đó. "Học Java" bao gồm, phần lớn là ghi nhớ (hoặc ít nhất là nhận thức được) những gì trong thư viện và cách thức tổ chức, vì vậy bạn có thể tìm thấy những thứ bạn muốn khi bạn muốn.

C ++ chú trọng ít hơn nhiều vào việc cung cấp mã viết sẵn. Mặc dù nó bao gồm một thư viện (STL 1 ), thư viện đó ít nói về mã được bao gồm hơn là về một phong cách và tập hợp các nguyên tắc. Hoàn toàn có thể viết mã rõ ràng và dễ nhận biết là mã "STL", mặc dù nó sử dụng rất ít hoặc thậm chí không có mã được viết sẵn nào cả.

Cũng có một sự khác biệt khá lớn về cách sử dụng các ngôn ngữ. Java đã nhấn mạnh vào việc giữ cho ngôn ngữ đơn giản. Điều này giúp dễ dàng xây dựng các công cụ thao tác mã Java theo nhiều cách khác nhau (ví dụ: để tái cấu trúc). Điều đó cũng có nghĩa là bạn có xu hướng cần các công cụ có thể làm như vậy, bởi vì tái cấu trúc thường liên quan đến những thay đổi khá lớn đối với số lượng lớn mã.

C ++ là một nhiều ngôn ngữ phức tạp hơn, mà phương tiện (trong số những thứ khác) mà xây dựng các công cụ để thao tác mã nguồn C ++ là rất nhiều khó khăn hơn cho Java. Sự cân bằng cho điều đó là ít cần thiết hơn - một công việc tái cấu trúc có thể liên quan đến hàng trăm thay đổi đối với hàng chục tệp trong Java có thể được thực hiện bằng cách (ví dụ) thay đổi một tham số mẫu duy nhất trong C ++.

Java chú trọng nhiều hơn vào việc dễ học. C ++ chú trọng nhiều hơn vào việc dễ sử dụng - nhưng (không may) chỉ khi bạn thực sự biết những gì bạn đang làm.

Tôi sẽ không ủng hộ cái này hay cái khác. Ý kiến ​​của tôi về các ngôn ngữ ít liên quan hơn nhiều so với việc bạn có ý tưởng về những gì mong đợi từ mỗi ngôn ngữ và nhìn nhận một cách trung thực về bản thân để tìm ra cái nào phù hợp với bạn hơn.

1 Vâng, tôi biết điều đó không thực sự chính xác, nhưng tôi đang cố gắng để điều này không biến thành một cuốn sách ...


3

Tôi không thể tin rằng mọi người đang ủng hộ C ++ như một ngôn ngữ đầu tiên! Bạn sẽ dành phần lớn thời gian để viết đĩa nồi hơi và cố gắng khắc phục những hạn chế và câu cá trong ngôn ngữ hơn là thực sự học cách lập trình.

Java là một ngôn ngữ đơn giản hơn nhiều và sẽ không cản trở việc học của bạn.

Nếu bạn phải học C ++, hãy tìm hiểu các khái niệm với Java và sau đó chuyển đến C ++ hoặc tốt hơn là OBJ-C nếu bạn muốn viết phần mềm Mac. Java và OBJ-C không quá giống nhau.

FYI Tôi đã dành 10 năm làm nhà phát triển C ++ thương mại.


Đây sẽ không phải là ngôn ngữ đầu tiên của tôi. Tôi là một lập trình viên đang quay trở lại trường học để lấy bằng. Kinh nghiệm của tôi với C ++ và Java còn hạn chế, nhưng tôi có kinh nghiệm với C và Objective-C. Nhưng cảm ơn vì đã dành thời gian để trả lời.
Philip Regan

3
Java sẽ cản trở việc học của bạn. Nó sẽ dạy cho bạn toàn bộ sự thật về các khái niệm độc lập với ngôn ngữ.
DeadMG

2

Tôi muốn giới thiệu C ++. Tôi đã có một số lớp học về Java và một số về C ++ ở trường đại học và các kỹ năng ngôn ngữ cụ thể mà tôi học được từ C ++ đã giúp tôi nhiều hơn khi học các ngôn ngữ bổ sung sau này. Ngoài ra, mặc dù tôi thấy Java nhiều hơn so với cơ hội việc làm C ++, hầu hết đang tìm kiếm một ngăn xếp Java đầy đủ, như:

  • EJB 1.x / 2.0, JNDI, JMS, JTA / JTS, RMI, JDBC, Servlets, JSP, SAX / DOM, Dịch vụ web, SOAP, WSDL, UDDI, JAXB, JavaMail, Wap, WML, HTML
  • Tomcat, Apache Xalan, Apache Xerces, Jserv, JRun, JBuilder, TogetherJ, Web Logic 5.x / 6.x, Websphere 3.5 / 4

Và rất có thể một chương trình giảng dạy dựa trên Java sẽ không giúp bạn chuẩn bị tốt hơn nhiều so với chương trình dựa trên C ++ so với danh sách như thế.


1
Tôi đã thêm rằng (ít nhất là trong khu vực của tôi) các công việc C ++ cũng trả lương cao hơn một chút so với các công việc Java (khách quan) và thường thú vị hơn (chủ quan).
Cercerilla

2

Thật khó vì Java dễ học hơn. Bạn sẽ làm việc sớm hơn với Java.

C ++ là một ngôn ngữ khó sử dụng hơn nhiều. Con trỏ và quản lý bộ nhớ là khái niệm và thực tế khó khăn để làm việc với. C ++ không cung cấp cho bạn bất kỳ mạng lưới an toàn.

Về lâu dài, sẽ rất hữu ích khi hiểu tất cả những điều mà C ++ dạy cho bạn. Ngoài ra, việc chuyển đổi từ C ++ sang Java dễ dàng hơn nhiều so với hướng khác.

Nhưng tôi tự hỏi liệu khi bắt đầu và trong rất nhiều dự án bằng cấp, việc làm thêm và gỡ lỗi bạn phải làm để có được thứ gì đó hoạt động trong C ++ thực sự sẽ khiến dự án của bạn khó khăn hơn, thời hạn của bạn khó khăn hơn để đáp ứng và cuộc sống của bạn khó chịu hơn nhiều . Để đạt được điều tương tự trong C ++ và Java, tôi sẽ nói rằng trong hầu hết mọi trường hợp, bạn sẽ hoàn thành công việc nhanh hơn trong Java và gặp ít vấn đề khó chịu hơn. Đó có thể là một vấn đề thực sự lớn khi bạn đang ở cuối học kỳ và có năm khóa học cần dự án cuối khóa học của họ trong cùng một ngày.

Mặt khác của điều đó là nếu những thử nghiệm đó không khiến bạn ném vào khăn hoàn toàn, chúng sẽ giúp bạn trở thành một lập trình viên tốt hơn nếu bạn thành thạo C ++. Và nếu sự nghiệp của bạn là với C # hoặc Java hoặc python và bạn không bao giờ phải chạm vào một con trỏ khác trong cuộc sống của mình, bạn sẽ đánh giá cao nó hơn rất nhiều ...


2

C ++ là linh hoạt hơn và cung cấp một sự hiểu biết sâu sắc hơn. Không nghi ngờ gì nữa, bạn sẽ kiếm được nhiều hơn từ C ++ hơn là từ Java. C ++ cũng khó hơn, vì nó phức tạp hơn.

Điều đó nói rằng, các công việc C ++ gần như không phổ biến như các công việc Java.

Java và hậu duệ của nó, C #, là các giải pháp tiêu chuẩn cho không gian mã hóa sắt lớn của doanh nghiệp / doanh nghiệp. Tôi thực sự khuyên bạn nên học một trong hai trong năm thứ hai của bạn và rất thoải mái với điều đó khi bạn hoàn thành văn bằng của mình. Nó sẽ cho phép bạn có được công việc dễ dàng hơn nhiều . Điều đó không có nghĩa là tôi nghĩ rằng những công việc đó có lợi ích trí tuệ trung bình. Gần đây tôi đã vượt qua các công việc phần mềm craigslist ở Rocky Mountains và hầu hết các công việc là C # / Java và liên quan đến phần mềm được gọi là phần mềm " CRUD "; IMO đó rất nhàm chán.


1

Đã dạy cả C ++ và Java ở cấp đại học, tôi rất muốn giới thiệu Java .

Java hỗ trợ quá trình học tập và khuyến khích hành vi lập trình tốt. Các thư viện tích hợp cho Java rất hữu ích và dễ dàng có sẵn trong mọi cài đặt. Có thể tạo một ứng dụng GUI trong một câu, sử dụng các thư viện tích hợp sẵn trong mọi cài đặt Java và phù hợp với tất cả các hướng dẫn mà sinh viên tìm thấy trong tìm kiếm của Google, rất quan trọng để giúp sinh viên vượt qua ngôn ngữ và bắt đầu hiểu các khái niệm lập trình .

Các IDE cho Java cung cấp hỗ trợ cho cả sinh viên bắt đầu và tiếp tục. Đưa các công cụ tái cấu trúc mạnh mẽ vào cuộc trò chuyện sớm (ví dụ như thảo luận về OOP) sẽ giúp sinh viên học cách viết mã duy trì.

Mặc dù C ++ là một ngôn ngữ hữu ích để biết, nhưng các khái niệm bổ sung được học trong C ++ không thực sự xứng đáng với nỗ lực bổ sung của ngôn ngữ nói chung. Có một bộ "gotchas" lớn hơn phải được dạy xung quanh có thể được giới thiệu sau đó (vấn đề quản lý bộ nhớ và bộ đệm tràn ra để đặt tên cho một cặp vợ chồng). Yêu cầu học sinh hiểu những điều này trước khi chuyển sang các khái niệm như độ phức tạp thuật toán và tính kế thừa làm bạn chậm lại, cách yêu cầu người lái xe hiểu áp suất lốp trước khi lái xe sẽ làm chậm Driver Ed. Chắc chắn, bạn cần phải biết nó. Nhưng bạn chỉ cần phải biết nó như một cái gì đó mà bạn sẽ nhận được sai một ngày nào đó, không phải là một khối xây dựng một khái niệm lớn hơn.


2
Nếu bạn gặp vấn đề nghiêm trọng với lỗi tràn bộ đệm và quản lý bộ nhớ, bạn đang dạy C ++ sai. Những container tiêu chuẩn nào có thể tràn như bộ đệm?
David Thornley

Mảng nào? Thực tế, tôi có thể đã dạy C ++ sai; điều này đã được hơn một thập kỷ trước.
Alex Feinman

0

Tôi nghĩ rằng câu hỏi lớn hơn để tự hỏi mình là bạn có muốn trở thành một lập trình viên giỏi hoặc tập trung vào khoa học máy tính. Nếu CS là mục tiêu của bạn và bạn muốn đi theo lộ trình PHD thì có lẽ Java là con đường để đi. Java cung cấp các lớp bộ sưu tập Java, có rất nhiều cấu trúc dữ liệu và thuật toán. Ưu điểm của điều này là gấp đôi: Đầu tiên là bạn có thể chơi xung quanh với các cấu trúc dữ liệu và thuật toán để xem những gì chúng làm trước khi lo lắng về cách chúng được xây dựng. Thứ hai, điều này cung cấp cho các giáo sư nhiều cơ hội hơn để dạy các nguyên tắc CS sử dụng các cấu trúc dữ liệu mà không phải lo lắng về sự bẩn thỉu của nitty. Sau đó, họ có thể quay lại và để học sinh của mình tạo ra các cấu trúc từ đầu.

Mặt khác, C ++ là ngôn ngữ cấp thấp hơn. Nó buộc bạn phải xem xét con trỏ và thu gom rác. Đường cong học tập hơi dốc hơn một chút nhưng cuối cùng khi bạn thấy mình đi xuống lập trình với các khung bên ngoài, bạn sẽ cảm thấy không giống như bạn chỉ dựa vào ma thuật ẩn giấu. Hơn nữa, nhiều công ty lớn hơn vẫn đang sử dụng C ++. Việc chuyển từ Java sang C ++ khó hơn so với C ++ sang Java.


Ngay bây giờ, mục tiêu của tôi là chỉ cần phát triển phần mềm, để trở thành một lập trình viên tốt hơn. Tôi ít quan tâm đến việc theo đuổi học thuật sâu rộng vào thời điểm này.
Philip Regan
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.