Tại sao C ++ thường là ngôn ngữ đầu tiên được dạy trong trường đại học? [đóng cửa]


12

Trường tôi bắt đầu chương trình giảng dạy khoa học máy tính với các khóa học lập trình C ++, nghĩa là đây là ngôn ngữ đầu tiên mà nhiều sinh viên học.

Tôi đã thấy rằng nhiều người không thích C ++ và tôi đã đọc nhiều lý do tại sao. Dường như có nhiều ý kiến ​​phổ biến rằng C ++ không phải là một ngôn ngữ rất tốt. Tôi có ấn tượng rằng nó không được yêu thích lắm dựa trên một số câu hỏi trên StackExchange cũng như các bài đăng như:
http://damienkatz.net/2004/08/why-c-sucks.html
http://bloss.kde.org/ nút / 2298
http://bloss.cio.com/esther_schindler/linus_torvalds_why_c_sucks
http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/
v.v.

. , một trong những giáo sư của tôi liên tục nói xấu về C ++, nhưng nó vẫn là ngôn ngữ bắt đầu ở trường đại học của tôi!)

Với ý nghĩ đó, tại sao đây là ngôn ngữ đầu tiên được dạy ở nhiều trường? Các lý do để bắt đầu một chương trình giảng dạy với C ++ là gì?

Lưu ý: Câu hỏi này tương tự như "C ++ có phù hợp làm ngôn ngữ đầu tiên không", nhưng hơi khác một chút vì tôi không quan tâm đến việc nó có phù hợp hay không, nhưng tại sao nó lại được chọn.


6
Trường nào & ở đâu? Tất cả những người ở gần tôi (3 người trong thị trấn và một vài người khác trong vòng vài giờ lái xe) dạy Java như ngôn ngữ đầu tiên. C ++ xuất hiện vào năm ngoái hoặc hai năm trước (tùy theo khóa học mà học sinh tham gia). Đó là cách đó trong ít nhất 10 năm qua.
Thất vọngWithFormsDesigner

7
Các giáo sư cũng giống như các lập trình viên khác khi chỉ có những lượt thích và không thích hợp lý vừa phải. Đồng thời, họ giống như những sinh viên thiếu kinh nghiệm.
Mike Dunlavey

@Casey Bạn có thể gặp phải một số xích mích với những người dùng khác ở đây, vì bạn chỉ đưa ra một tuyên bố rằng C ++ không thích nhưng không có bất kỳ lời biện minh nào cho việc này. Nếu trọng tâm của bạn chỉ là tìm hiểu lý do tại sao C ++ được chọn trong các trường đại học, tôi thực sự khuyên bạn nên chỉnh sửa bất kỳ tài liệu tham khảo nào mà nó thích hoặc không thích vì điều đó phần lớn không liên quan đến câu hỏi thực tế của bạn.
Adam Lear

4
Trong năm đầu tiên, tất cả là về việc tách lúa mì ra khỏi vỏ.
Steven Evers

2
Sẽ rất thú vị khi có một số thống kê về việc có bao nhiêu trường cao đẳng / đại học sử dụng ngôn ngữ nào cho các khóa học giới thiệu của họ.
Jerry Coffin

Câu trả lời:


25

Mỗi ngôn ngữ đều có một giáo phái theo sau những người yêu thích và ghét nhau; điều này đúng với C ++, Java, C #, Haskell, Objective-C, bất cứ điều gì.

Có nhiều lý do hợp lệ để thích hoặc không thích một ngôn ngữ.

Cuối cùng, có một vài lý do tại sao C ++ được giảng dạy chủ yếu trong các trường đại học:

Đừng quá vội vàng trong việc coi đó là ngôn ngữ "xấu"; Tôi khuyên bạn nên đi sâu vào nó, thực sự tìm hiểu nó, xây dựng một số dự án có quy mô vừa và lớn bằng cách sử dụng nó. Sau đó làm tương tự với các ngôn ngữ khác; tại thời điểm đó, bạn sẽ có đủ kinh nghiệm và hiểu biết sâu sắc để nói "Tôi nghĩ C ++ là xấu vì X, Y, Z" hoặc "Tôi nghĩ C ++ là tốt vì A, B, C mà Java không có".

Bạn vẫn còn nhiều điều để học, châu chấu trẻ.


2
Nó có thể không phải là một ngôn ngữ "xấu" nếu bạn đi theo triết lý "xấu là chủ quan", nhưng đối với hầu hết mọi mối quan tâm kỹ thuật, có một ngôn ngữ an toàn hơn, hiệu quả hơn. Theo tôi, lý do C ++ được dạy là vì đó là những gì mọi người sử dụng và đó là những gì mọi người sử dụng bởi vì đó là những gì mọi người biết và đó là những gì mọi người biết vì đó là những gì các trường đại học dạy. Ngoài sự nổi tiếng, C ++ không có giá trị đáng kể mà tôi có thể thấy, và tôi lập trình với nó một cách chuyên nghiệp.
weberc2

13

Nói một cách đơn giản, đó là một ngôn ngữ giảng dạy rất tốt bởi vì nó không nắm tay bạn. Những người học lái xe trên hộp số tay hầu như không gặp rắc rối lần đầu tiên trong số tự động, nhưng điều ngược lại là không đúng. Mất nhiều thời gian hơn để học, nhưng ở trường đại học bạn có 4 năm chương trình đồ chơi để thực hành trước khi bạn phải làm bất cứ điều gì hữu ích.


9
Tôi lo lắng bởi thực tế là sự tương tự sai lầm này đã thu hút được rất nhiều sự ủng hộ. Đây không phải là cách học tập hoạt động. Một trong nhiều quan niệm sai lầm về didactics.
Konrad Rudolph

12
C++ isn't that bad. 

Những gì đang được dạy ở trường thường được thúc đẩy, bởi những gì các giáo sư biết, và những gì đang được sử dụng trong ngành công nghiệp và phổ biến vào thời điểm đó.

Hãy nghĩ về các trường học như một viên nang thời gian trong quá khứ. :)

Tôi thực sự muốn nó là cách khác xung quanh.


một điểm rất hợp lý! Tôi đã không được cung cấp bất kỳ bài tập về con trỏ thông minh hoặc RTTI hoặc RAII ở trường đại học. WTF!
Chani

12

Tiếng Anh cũng được mô tả là một ngôn ngữ thực sự tồi tệ, bị hack cùng nhau, ngôn ngữ không nhất quán, nhưng vì rất nhiều người ở đây biết điều đó, cha mẹ và giáo viên của tôi đã quyết định dạy nó cho tôi.

Tôi nghĩ nó giống với C ++. Đó là một ngôn ngữ mà nhiều người biết, vì vậy nó đáng để có được sự lưu loát cơ bản.

Nó cũng có lợi thế là mức độ đủ thấp để thực sự mang lại cho bạn cảm giác về những gì đang diễn ra ở cấp độ phần cứng.

Cuối cùng, nó không có vấn đề "thương mại" mà một số ngôn ngữ khác có (như Java-Oracle hoặc .NET-MS). Tôi biết nhiều trường đại học sẽ không muốn bị buộc tội dạy một sản phẩm cụ thể của công ty hơn một sản phẩm khác.


1
+1 cho c ++ không phải là ngôn ngữ thương mại. Thật tốt khi học một ngôn ngữ mà không phải lo lắng về chính trị và chiến thuật kinh doanh. <cài đặt Java7 trên Linux chẳng hạn>
Chani

5

Nếu C ++ quá tệ, làm thế nào để bạn giải thích rằng hầu hết các sản phẩm phần mềm bạn sử dụng trong cuộc sống hàng ngày đều được viết bằng C ++?

Có thể có một số lý do để học C ++ ở trường đại học từ năm đầu tiên:

  • Nó được sử dụng chủ yếu. Cơ sở mã hiện tại chỉ là rất lớn và thậm chí bây giờ có các ngôn ngữ như Ruby, Python hoặc C #, C ++ vẫn được sử dụng rất nhiều ngay cả khi tạo các ứng dụng từ đầu, kể cả cho các trang web. Trong trường hợp này, học C ++ là một lựa chọn tốt. Ít nhất là tốt hơn so với việc dành hai năm để học Ada, tức là thứ bạn sẽ không bao giờ sử dụng trong cuộc sống của mình, trừ khi bạn phát triển các ứng dụng cho tàu vũ trụ.

  • Nó không quá trừu tượng. Ví dụ, làm thế nào bạn có thể giải thích cho sinh viên con trỏ là gì nếu họ chỉ học C # hoặc Java?

  • Nó là đủ khó so với, nói, PHP. Điều đó có nghĩa là những sinh viên không được lập trình sẽ sớm rời đi, điều này không tệ lắm và tránh cho sinh viên lãng phí hai hoặc ba năm trước khi hiểu rằng phát triển phần mềm không dành cho mình.

Điều này làm cho C ++ phù hợp hơn Ada, Java hoặc PHP.


1
Có vẻ như C sẽ tốt hơn cho hai điểm thứ hai của bạn. Có trường nào dạy Ada không? Tôi chắc chắn sẽ vượt qua C ++ nhưng sau đó tôi lại thấy lạ!
Jetti

C ++ được chọn cho các sản phẩm thương mại vì đó là những gì nhiều người biết hơn, không phải vì những lo ngại về kỹ thuật của nó. C ++ là một ngôn ngữ không an toàn, khó sử dụng so với nhiều ngôn ngữ hiện đại. Ngôn ngữ không được chọn dựa trên giá trị của chúng nhưng vì chúng phổ biến.
weberc2

Hơn nữa, tôi không thể nghĩ ra nhiều thứ Ada làm tệ hơn C ++ và tôi thích sử dụng nó hơn C ++ (dù sao mã của tôi sẽ đơn giản và an toàn hơn), và tôi lập trình trong C ++ một cách chuyên nghiệp! Và để dạy học sinh về con trỏ, luôn có Ada, Go hoặc bất kỳ ngôn ngữ lành mạnh nào. Và liên quan đến điểm cuối cùng của bạn, C ++ là không khó khăn. Nhiều vấn đề mà các lập trình viên C ++ gặp phải không liên quan gì đến lập trình, nhưng với việc khắc phục C ++. Lập trình ở mọi cấp độ khá đơn giản về phía trước trong một ngôn ngữ lành mạnh.
weberc2

5

Nói chung, nếu bạn có thể học và thành thạo C ++, bạn có thể học và thành thạo khá nhiều ngôn ngữ khác ngoài kia. Lý do nó không thích là vì, để thành thạo nó và có thời gian phát hành nhanh, bạn cần phải làm quen với ngôn ngữ và đó là thư viện chuẩn.

Tuy nhiên, trong một ngôn ngữ như Java, bạn có thể có thời gian triển khai nhanh chỉ với một số kiến ​​thức nâng cao về các phần mở rộng của ngôn ngữ / thư viện chuẩn. Chết tiệt, tôi chỉ biết như năm điều từ thư viện tiêu chuẩn Java (ngoài những thứ cơ bản như các bộ sưu tập).

Điều đó đang được nói, C ++ vẫn là một ngôn ngữ được sử dụng rộng rãi vì nó là sự kết hợp tuyệt vời giữa tốc độ và phương pháp hướng đối tượng. Mặc dù nhiều người tin rằng nó không đầy đủ OOP, tôi tin rằng nó mang lại cho bạn hầu hết sự linh hoạt của OOP mà không buộc bạn phải là một kẻ cuồng tín. Hầu hết các trình biên dịch thậm chí cho phép bạn viết C.

Nếu tôi có sự lựa chọn, tôi sẽ đưa C ++ qua Java bất cứ ngày nào, nhưng đó chỉ là tôi là một fanboy. Nói chung, Java rất hữu ích vì nó sẽ chạy trên hầu hết mọi kiến ​​trúc có trình thông dịch Java được xây dựng cho nó. Vì vậy, đối với các ứng dụng khách cần được hỗ trợ trên nhiều nền tảng, nó được coi là công cụ tốt nhất cho công việc và hầu hết các ứng dụng mới được viết đều dựa trên web.


Nó có thể không đúng với mã đối tượng, nhưng lời hứa của các ngôn ngữ C bao gồm C ++ ngày trước là có các trình biên dịch cho mọi nền tảng để có thể sử dụng cùng một mã nguồn để biên dịch các ứng dụng cho nhiều nền tảng khác nhau.
JohnFx

Đó là sự thật. Hầu hết các nền tảng * NIX đã tích hợp sẵn trình biên dịch và có xu hướng ảnh hưởng tâm lý đến hầu hết mọi người dưới dạng "Chắc chắn, tôi có thể tải xuống trình biên dịch THAT, nhưng trình biên dịch này đi kèm với hệ điều hành của tôi nên chắc chắn nó phải là tốt nhất".

Bạn nên thử các ngôn ngữ khác ngoài Java - có những lựa chọn thay thế tạo nên thứ tốt nhất của cả hai thế giới. Ví dụ, cung cấp tốc độ, tính di động và đơn giản nó làm cho việc đồng thời trở nên dễ dàng.
weberc2

4

Như một số giáo sư của tôi đã nói với tôi, việc bắt đầu từ phía dưới, hoặc mức độ thấp, và sau đó làm việc theo cách của bạn sẽ dễ dàng hơn. Một ngôn ngữ như C ++ cung cấp cho bạn một giới thiệu tuyệt vời về việc trở thành một nhà khoa học máy tính thực sự là gì. Nó có thể không phải là một ngôn ngữ quyến rũ như Java, Python, Ruby, v.v ... nhưng nó cho phép bạn có được sự hiểu biết cốt lõi về các tính năng quan trọng của chương trình như con trỏ và quản lý bộ nhớ. Ngay cả khi đó không phải là ngôn ngữ bạn dự định hoặc muốn sử dụng cho đến hết đời, bạn sẽ đánh giá cao trong những năm tới khi bạn bắt đầu tìm thấy con đường lập trình mong muốn của mình.


Điều này nghe có vẻ như là một đối số cho Ada, không phải C ++ ...
weberc2

3

C ++ có thể là một trong những ngôn ngữ đơn giản nhất cho các chương trình bảng điều khiển cấp độ mới bắt đầu. Chắc chắn ngôn ngữ là phức tạp, nhưng bạn có thể tập trung vào một tập hợp con thủ tục. Bạn có thể bỏ qua sự tồn tại của con trỏ trong một thời gian khá lâu. Bạn có thể bắt đầu đơn giản, sau đó xây dựng.

Có ít cú pháp "lông tơ" hơn để đưa chương trình "hello world" ban đầu đó chạy và chạy so với java hoặc C #. Người mới bắt đầu có nên xem từ "tĩnh" cho ứng dụng hello world không? Trong java / C # họ làm.


3

Khi tôi học ngành khoa học máy tính, Java đã được sử dụng trước tiên, nhưng trường đại học của tôi hiện đang dạy hai ngôn ngữ cho chúng tôi các nhà ngôn ngữ học tính toán: đầu tiên là Prolog và sau đó là C ++.

C ++ được dạy cho (ít nhất) các lý do sau:

  • Đó là ngôn ngữ có mục đích chung, bạn có thể viết phần mềm cho bất kỳ hệ điều hành nào với nó (vì tồn tại nhiều trình biên dịch). Nó được thiết kế để trở thành một ngôn ngữ sản xuất tốt, giúp bạn dễ dàng sử dụng lại các phần của chương trình, tương tác với phần cứng và phần mềm trong thế giới thực, v.v.

  • Nó thực sự rất nhanh. Bạn không thể sử dụng Python hoặc Scheme hoặc Prolog để xử lý các tập dữ liệu khổng lồ , thường gặp trong thời gian này. Hãy nghĩ các thuật toán đồ thị với hàng triệu nút. (Đó cũng là lý do tại sao các trò chơi trên máy tính thường được viết bằng C ++.)

  • Học sinh có thể học những gì trình biên dịch làm. Trên thực tế, miễn là tôi chỉ học Java (bắt đầu từ trung học), công việc của người biên soạn luôn có vẻ như là phép màu đối với tôi. Bạn chỉ không tìm hiểu về stack và heap, toàn bộ điều liên kết tĩnh so với động, v.v. khi là người mới bắt đầu Java. C ++ khử bí mật toàn bộ máy tính.

  • Đối với những gì nó có thể làm, nó là ổn trong thời gian học (mặc dù nó có thể là một trong những ngôn ngữ phức tạp nhất nếu bạn thực sự đào sâu vào nó). Nó cung cấp một thư viện đẹp giúp học tập trơn tru. .


Điều này không giải thích tại sao Ada, ví dụ, không được dạy là ngôn ngữ đầu tiên.
weberc2

2

C / C ++ thực sự là một ngôn ngữ tốt hơn hầu hết các ngôn ngữ khác, trước tiên là vì nó không thêm một cảm giác an toàn sai lầm. Thứ hai bởi vì bạn có tho biết những gì bạn đang làm.

Tôi thực sự yêu thích ngôn ngữ này, và tôi coi nó vượt trội so với hầu hết các lựa chọn thay thế.

Nó cũng hiệu quả như hầu hết các ngôn ngữ khác, và không phải là "sự cố" nếu bạn biết bạn đang làm gì và suy nghĩ trước khi bạn sao chép-codea ngẫu nhiên.

Cũng là một bài đọc tốt - http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Tuy nhiên, một số điều trong C ++ thực sự tồi tệ, ví dụ như các trường hợp ngoại lệ và chi phí không trực quan trong một số trường hợp. Đây là lý do, tôi đoán, tại sao Linus rất tiêu cực về nó trong bài viết mà bạn trích dẫn.

Đọc tốt để chạm vào một trong những chủ đề liên quan - http://bloss.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx


3
Câu trả lời này hoàn toàn sai. Đầu tiên và quan trọng nhất vì không có ngôn ngữ nào gọi là C / C ++.
Konrad Rudolph

1
  1. Các giáo sư không muốn chuẩn bị một khóa học mới và có giới hạn về số tiền bạn có thể cung cấp.
  2. Ngôn ngữ đến và đi, vì vậy họ đã từ bỏ việc cố gắng vượt trội (Xem # 1)
  3. Đó là một trường đại học và không phải là một trường kỹ thuật. Tập trung vào việc cung cấp một nền tảng hơn là đào tạo công việc.
  4. Bao gồm một phạm vi lập trình đủ rộng: máy chủ, máy tính để bàn, nhúng, UNIX, Windows.
  5. Họ sử dụng nó như một khóa học loại trừ. Mỗi lĩnh vực nghiên cứu chính có ít nhất một.

1

Trước đó có Pascal, trước đó Pascal có một cái gì đó tương tự Basic. Phần thú vị là - tiếp theo là gì? Có lẽ không có gì. Tôi có một mặc dù về "tại sao c ++". Bởi vì nó khó nhưng nó không khó như nhau. Không, tôi thực sự hiểu rằng C ++ là ngôn ngữ tốt cho lập trình hệ thống, tôi biết rằng có rất nhiều dự án được mã hóa trên C ++ và có rất nhiều thư viện để sinh viên có thể tạo mọi thứ với nó. Nhưng chúng ta đang nói về sinh viên và khả năng của họ để tạo ra logic và hiểu hệ thống. Bạn không thể là một lập trình viên C ++ giỏi nếu bạn không thể tạo ra các logic đơn giản và hiểu cách hệ thống hoạt động và đó là lý do chính theo quan điểm của tôi. Và vâng, một lý do đơn giản khác là sự nghiệp bắt đầu ổn định.

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.