it-swarm-vi.com

C ++ có phù hợp làm ngôn ngữ đầu tiên không?

Một trường đại học địa phương đang dạy C++ cho sinh viên đại học năm thứ nhất (16 tuổi) không có kinh nghiệm lập trình trước đó.

Là ngôn ngữ lập trình đầu tiên, C++ có phù hợp không?

26
Ed James

Nhấn mạnh Không .

Đối với bất kỳ mục tiêu nào bạn có trong đầu cho sinh viên, một ngôn ngữ hoặc chuỗi ngôn ngữ khác sẽ nhanh hơn và tốt hơn. Ví dụ.

"Học sinh cần hiểu các khái niệm cấp thấp."

Mã hóa "cấp độ thấp" không bao gồm việc lấy các đối tượng từ new, đưa chúng trở lại delete, và đôi khi có một con trỏ trỏ đến một nơi nào đó không nên. Hàm, lớp và mẫu không phải là cấp thấp. RAII, 12 cách sử dụng const, std::ostream::operator<<, protectednew không phải là khái niệm cấp thấp. Những thứ đó có ý nghĩa cấp độ thấp và bạn sẽ bỏ qua những thứ đó trong nhiều tháng hoặc cho đến khi một lớp học trong tương lai và giảng dạy về ngữ nghĩa C++ thay thế.

Tôi đề nghị trình biên dịch với một môi trường tốt và tài liệu giảng dạy như MIPS hoặc MMIX. Nếu bạn đang vội, hãy dạy C với các đường vòng ít nhất là nhìn vào đầu ra của trình biên dịch. Điều này sẽ cung cấp cho bạn tất cả những hiểu biết cấp thấp về C++, và sau đó một số, nhanh hơn.

"Học sinh cần hiểu hướng đối tượng."

Định hướng đối tượng được tích hợp trong C++ là cách quá phức tạp cho việc giảng dạy OO khái niệm hoặc gần như bất kỳ khái niệm cấp cao nào khác. Xem Câu hỏi thường gặp về C++ để biết danh sách dài, đẹp Vì những lý do tiềm năng tại sao. Bạn phải đánh tất cả những thứ đó, sẽ mất rất nhiều thời gian với các lập trình viên mới, hoặc nếu không bạn phải bỏ qua rất nhiều, khiến các lập trình viên mới chìm trong bóng tối - một cách hiệu quả, không thực sự biết C++!

Tôi khuyên bạn nên học một ngôn ngữ cấp cao, đơn giản hơn với các đối tượng trước tiên (Python, Ruby, Squeak, LISP chung, Vợt), nếu bạn phải dạy C++. Ngoài ra, học đa hình như một khái niệm tách biệt với OO bằng cách truy cập một ngôn ngữ chức năng.

"Học sinh cần hiểu các mẫu và siêu lập trình mẫu."

Không ai thực sự hỏi điều này, nhưng tôi ước họ sẽ làm thế. C++ có các mẫu Nice và STL rất tuyệt, nhưng chúng không nên là ưu tiên đủ cao để dạy C++ trước. Dạy hệ thống loại OCaml hoặc Haskell và sau đó trang bị thêm các khái niệm đó có thể nhanh hơn.

"Học sinh cần học giải quyết vấn đề."

Vâng, bạn có được ngôn ngữ này bằng bất kỳ ngôn ngữ nào và bạn sẽ nhận được nhiều hơn nếu nó ở hầu hết các ngôn ngữ khác ngoài C++ vì có ít hành lý hơn. Một lần nữa, xem Câu hỏi thường gặp về C++ để biết danh sách tất cả những điều học sinh sẽ học thay vì kỹ năng giải quyết vấn đề.

"Tất cả những điều trên và chúng tôi chỉ cần sử dụng một ngôn ngữ." hoặc "Nhà tuyển dụng muốn nó." hoặc "Chúng tôi cần ngôn ngữ kiểu C." hoặc ...

Dạy nhiều hơn một ngôn ngữ.

Ý tưởng rằng bạn tiết kiệm thời gian hoặc năng lượng bằng cách dạy hoặc học chỉ một ngôn ngữ là hoàn toàn vô lý. Nó dựa trên ý tưởng rằng việc học bất kỳ ngôn ngữ nào cũng mất chính xác hàng tháng X ( GỢI Ý! ) trong đó X là một số duy nhất hoặc một số cho mỗi ngôn ngữ. Điều này gần giống với ý tưởng rằng bạn có thể tiết kiệm thời gian và tiền bạc bằng cách bỏ qua tất cả 'yêu cầu' và 'thử nghiệm' rác.

Đối với nhiều cú pháp, bạn sẽ làm tê liệt các sinh viên một cách nguy hiểm nếu bạn dạy họ mong đợi cú pháp C trong mọi ngôn ngữ bằng cách khiến chúng thiên vị cực kỳ so với các ngôn ngữ khác.

Hầu như bất kỳ con đường nào đều nhanh hơn và tốt hơn so với bắt đầu với C++. Học một ngôn ngữ cấp cao đơn giản và sau đó C++ sẽ nhanh hơn. Học lắp ráp và sau đó C++ sẽ nhanh hơn. Bất cứ điều gì khác ngoài C++ sẽ đưa sinh viên đến đó nhanh hơn và họ sẽ biết nhiều hơn để khởi động. Trước tiên, đừng dạy C++.

61
Jesse Millikan

Không, C++ là một ngôn ngữ khó ngay cả đối với các nhà phát triển C++ có kinh nghiệm. Ngay cả đối với các thuật toán đơn giản nhất, bạn phải giải thích nhiều sự tinh tế trong ngôn ngữ. Hãy xem xét một ví dụ Hello World:

#include <iostream>

int main()
{
  std::cout << "Hello World!" << std::endl;
}

Cái gì đó #include chỉ huy? Cái gì std::cout. Tại sao ::? Những gì là <<? Ohhh, nó là một nhà điều hành quá tải! Toán tử quá tải là gì? Sooo, với ints, nó không dịch chuyển chút nào, nhưng với bất cứ điều gì std::cout là, nó xuất công cụ ra bàn điều khiển. Ồ, std::cout là một luồng và các luồng có <<>> Toán tử quá tải.

Chúng ta hãy xem cùng một mẫu trong Python:

print("Hello World!")

Vậy đó, hãy viết mã một số thuật toán.

54
Marco Mustapic

Đây có thể không phải là ngôn ngữ đầu tiên tốt: cú pháp phức tạp, nhiều quy tắc, ngôn ngữ cũ, quản lý bộ nhớ dễ bị lỗi. Tốt hơn là dạy cho sinh viên của bạn một cái gì đó nhiều hơn OO như Smalltalk, hoặc một cái gì đó đẹp hơn để lập trình với như Python, hoặc một cái gì đó có chức năng như Haskell.

Họ có thể học C++ sau này trong cuộc sống (nếu họ không thể giúp được), sau khi họ đã học các ngôn ngữ tốt hơn.

21
Andres F.

Câu trả lời ngắn gọn: Có!

Tôi sẽ nói rằng bất kỳ ngôn ngữ là một khởi đầu phù hợp nhưng đặc biệt là C++ (hoặc tương đương). Ngày nay, C # và Java là những ngôn ngữ chính được sử dụng và lập trình với những ngôn ngữ này, bạn nhanh chóng học cách dựa vào API và IDE, nhưng với C++, bạn có cơ hội học lập trình từ đầu, bao gồm cả hiệu suất tối ưu hóa, vv.

Không bao giờ là một ý tưởng tồi để tìm hiểu những điều cơ bản về lập trình, lặp và sắp xếp trước khi bạn chỉ mù quáng dựa vào một ngôn ngữ được xây dựng trong .Sort ();

18
Mantisen

Trên thực tế tôi tin rằng nó có thể là một lựa chọn tốt như một ngôn ngữ đầu tiên vì một lý do rất thực tế: Sau khi học C++, bất kỳ ngôn ngữ nào khác mà bạn gặp sẽ có vẻ như dễ học.

14
ennuikiller

Tôi đã tự học C++ khi tôi 15-16 tuổi.

Tốt hơn là để lại phép thuật cho người khác và tự học các hoạt động bên trong của mọi thứ.


Nói một cách thẳng thắn, nếu bạn không thể tìm ra cú pháp và ngữ nghĩa C++ cấp nhập cảnh, thì bạn không giỏi về máy tính. Nó không khó lắm đâu. Không có lý do chính đáng để tránh "C với các lớp".

Nếu bạn mong đợi sinh viên bắt đầu làm việc với siêu lập trình mẫu, suy ra các cuộc gọi đa hình và gỡ rối nhiều hệ thống phân cấp thừa kế - đó là điều vô lý đối với một lớp cấp nhập cảnh cho bất kỳ loại ngôn ngữ nào bạn sử dụng.

Có một xu hướng rất xấu là muốn che giấu sự phức tạp của lập trình cho sinh viên. Điều đó không kết thúc tốt (cf Spolsky's Java Bài tiểu luận về trường học). Những người đó kết thúc trên DailyWTF nếu họ không thẳng tiến. Trừu tượng bị rò rỉ và khi nào (không nếu) sự trừu tượng hóa rò rỉ, điều đó còn tệ hơn cả việc phải đối phó với nó. Tôi đã đã làm việc với tư cách là một TA cho sinh viên C++ cấp độ đầu vào. Hoặc là mọi thứ phải được giấu kín hoặc họ phải đưa ra ánh sáng được kiểm tra. Phép thuật là kẻ thù của người học.

Nếu tôi phải đề xuất một ngôn ngữ bắt đầu được biên dịch thành mã máy, một biến thể Pascal có lẽ sẽ là cách tiếp cận tốt nhất. Nó có một cách tiếp cận thường xuyên và có cấu trúc hơn so với gia đình C từ những gì tôi nhớ lại.

10
Paul Nathan

Không.

Là một ngôn ngữ giảng dạy, C++ chỉ nhỉnh hơn C, một trong những ngôn ngữ giảng dạy tồi tệ nhất xung quanh. Nó giới thiệu rất nhiều sự phức tạp ở phía trước, một số phần của ngôn ngữ không trực quan sâu sắc và hầu hết thời gian bạn học nhiều về C++ hơn là về lập trình nói chung.

Điều đó không có nghĩa là C++ (hoặc C) là ngôn ngữ xấu hoặc không đáng để học; chỉ là có những ngôn ngữ giảng dạy tốt hơn, chẳng hạn như Python.

8
John Bode

Tôi sẽ nói 'không'- Tôi có một sự háo hức và mong muốn học lập trình, và đã đi ngay vào năm giới thiệu của tôi ở trường đại học với C++ ngay lập tức. Kết hợp với một giáo viên dạy C++ như thể đó là một ngôn ngữ khác (các khái niệm có ý nghĩa với họ, không nhất thiết là các khái niệm về ngôn ngữ hoặc ứng dụng trong thế giới thực), và các dự án ném vào chúng tôi ngay lập tức mỗi tuần, tôi đã gặp nạn và bị đốt cháy cùng với một nửa lớp Vào thời điểm tôi thậm chí có thể tiêu hóa, thử nghiệm và áp dụng những gì tôi được dạy, tôi đã vật lộn với bài tập về nhà của dự án mà nhân đôi khi làm bài kiểm tra. Tôi sẽ tranh luận rằng đó là một khóa học 200 cấp hơn 100.

Tôi thực sự đã cố gắng hết sức. Tôi không yêu cầu sự thông cảm, tôi biết đó sẽ là một thử thách, nhưng giáo viên thậm chí sẽ không giúp tôi. Chỉ bảo tôi đi đọc sách giáo khoa, như tôi đã từng làm.

Tôi sẽ tranh luận (và một số người sẽ không đồng ý) rằng Ruby hoặc Python là ngôn ngữ tốt hơn nhiều để đưa ai đó vào thế giới lập trình. Sạch sẽ, súc tích, dễ đọc , cú pháp rõ ràng hơn.

8
Kevin

Có hai loại giáo dục sau trung học thiết yếu: trường đại học và trường thương mại. Sự khác biệt là ở những gì bạn muốn được chuẩn bị để làm sau khi tốt nghiệp. Trong lĩnh vực ô tô, đó là việc bạn sẽ là thợ cơ khí hay kỹ sư cơ khí.

Điều đó đang được nói, C++ là một ngôn ngữ đầu tiên tuyệt vời nếu bạn muốn trở thành một kỹ sư, và là một ngôn ngữ tệ hại nếu bạn muốn trở thành người lập trình tương đương với một thợ máy.

Một lớp giới thiệu về C++ sẽ dành nhiều thời gian để nói về các kiểu dữ liệu, định nghĩa, khai báo, con trỏ, cấp phát bộ nhớ, v.v. Đây là một nền tảng tuyệt vời nếu bạn dự định dành một vài học kỳ để xây dựng để có thể làm bất cứ điều gì hữu ích, nhưng muốn biết rằng một khi bạn đến đó, bạn có nền tảng để xử lý bất kỳ mức độ phức tạp nào.

Mặt khác, nếu bạn muốn có thể làm điều gì đó hữu ích nhanh hơn, nhưng đừng bận tâm nếu tên miền và độ phức tạp bị hạn chế, thì việc dành toàn bộ thời gian cho những khái niệm cấp thấp hơn đó sẽ là một sự lãng phí. Có rất nhiều lập trình viên có thể viết một trình xác nhận mẫu html tuyệt vời, nhưng không biết cách tiếp cận thiết kế trình điều khiển thiết bị.

7
Karl Bielefeldt

Chắc chắn rồi. Ngôn ngữ đầu tiên của tôi là C, nhưng đó thực sự chỉ là để dễ dàng cho lớp chúng tôi vào C++. Nó đã tạo ra Java dễ xử lý hơn nhiều khi tôi vào Đại học. C++ có thể có một đường cong học tập hơi dốc hơn, nhưng nếu nó được dạy đúng cách thì nó sẽ ổn.

Không, C++ không phù hợp làm ngôn ngữ đầu tiên. Như được hiển thị ở đây, nhiều lập trình viên chuyên nghiệp chia sẻ ý kiến ​​này, nhưng đây cũng là một ý kiến ​​mà các giáo viên chuyên nghiệp có.

Đây là những gì a báo cáo từ trưởng khoa của Đại học Carnegie Mellon phải nói về việc sử dụng C++ cho một khóa học giới thiệu để lập trình cho sinh viên năm nhất:

Các ngôn ngữ tiêu chuẩn như C hoặc C++ không phù hợp với khóa học này vì sự phức tạp và thiếu sót của chúng cản trở cả các kỹ thuật lý luận không chính thức và cơ giới hóa.

CMU cung cấp hai khóa học giới thiệu, một khóa học bắt buộc và một khóa học chức năng. SML đã được chọn để lập trình chức năng. Tôi không biết những gì đã được chọn cho khóa học bắt buộc, nhưng báo cáo đề cập đến việc sử dụng một tập hợp con của C.

4
Joh

Không. Hoàn toàn không.

Nếu tôi có cách của mình, tôi sẽ không cho phép sử dụng nó trong môi trường học thuật gần như hoàn toàn. Không phải vì những lý do trái ngược với những lý do đã được đưa ra, mà vì quá nhiều người nghĩ C++ (hoặc nó biến thể) là câu trả lời cho gần như mọi vấn đề vì bạn có thể sử dụng nó trong gần như mọi tình huống. Nó là tuốc nơ vít lập trình.

Một số người sử dụng nó để thắt chặt ốc vít, một công cụ hoàn toàn hợp lý cho công việc. Những người khác sử dụng nó như một prybar, trong khi thường hiệu quả, không thực sự lý tưởng bởi vì một cái tuốc nơ vít, bất kể cha bạn có thể nói gì với bạn, không phải là một prybar, và có thể thất bại thảm hại do sử dụng sai vì cấu tạo của thân cây không được chế tạo một cách cố ý đối với loại lực lượng mà một prybar sẽ gặp phải. Vẫn còn những người khác có thể thử và sử dụng nó như một cú đấm hoặc một cái đục, và họ hầu như sẽ luôn gặp phải vấn đề vì tay cầm của tuốc nơ vít không được chế tạo cho loại lạm dụng nổi bật mà đục hoặc đục được thiết kế để chịu được.

Theo tôi, công việc của một lập trình viên là thường biến các vấn đề thực sự thành tự động hóa để cung cấp một mức độ hiệu quả được cải thiện (giảm sự cam kết tài nguyên cho một nhiệm vụ), vận tốc (giảm thời gian thực hiện một nhiệm vụ), khả năng dự đoán (tăng độ lặp lại của một nhiệm vụ), hoặc tổ chức (tăng nhận thức về mối quan hệ giữa các nhiệm vụ).

Mặc dù có thể hiểu rằng mọi người lập trình nên có một số kiến ​​thức phổ biến về hoạt động của máy tính ở mức độ thấp, và cụ thể là thiết bị IO và cấp phát bộ nhớ, chắc chắn không thực sự phải sử dụng kiến ​​thức đó cho bất kỳ mức độ đáng kể, hãy để một mình tận dụng nó cho phần lớn các nhiệm vụ. Cố gắng làm điều đó mà không hiểu bối cảnh rộng lớn hơn của vấn đề đặt rủi ro không ngừng cho một nỗ lực.

Thật phi lý khi một ngôn ngữ lập trình đầu tiên phải là C/C++ hoặc các biến thể gần gũi, vì loại vấn đề mà C và các dẫn xuất của nó giải quyết chắc chắn không phù hợp với một số phần lớn các vấn đề hiện tại và tương lai (trừ trường hợp phải giải cứu một chương trình trước đây, có tua vít), và trên thực tế là nhiều hơn các vấn đề rất nhỏ sắp tới. Hầu hết các lập trình viên sẽ không bao giờ tiến gần đến việc phát triển các tính năng hệ điều hành cốt lõi hoặc giao diện thiết bị trực tiếp, mặc dù làm tăng tính phổ biến của các thiết bị di động nhỏ, được kết nối với nhau. Hầu hết sẽ làm việc và sống như chúng ta đã làm. Sửa và loại bỏ mã đã hơn hai thế hệ cũ, thực hiện trên công nghệ đã hiển thị tuổi hoặc làm việc trong rìa công nghệ trên ứng dụng sát thủ (x + 1).

Đối với ngôn ngữ đầu tiên, tôi sẽ xem xét Lego NXT, một biến thể LabView phong phú nhưng có tính năng cao. Mặc dù Lego NXT không được sử dụng rộng rãi trong các dự án thương mại, nhưng nó sẽ trình bày bản chất cơ bản của những gì nó được lập trình theo cách "giàu cảm biến". Tôi có thể ghép nối nó với một ngôn ngữ kịch bản trung lập có phần nền tảng như Javascript hoặc TCL/TK. Cả hai sẽ có tác động tương đối thấp về những gì bạn phải khám phá để thực hiện các nhiệm vụ rất cơ bản nhưng hiệu quả, với lợi nhuận cao về vòng phản hồi và tính linh hoạt để giới thiệu và giải quyết các mức độ phức tạp khác nhau của vấn đề. Thêm vào đó, nó cung cấp một cơ hội tốt cho sinh viên khi họ tiến lên để khám phá tiềm năng vượt quá những gì được cung cấp trong môi trường đóng hộp: cơ hội thử làm việc trong những nơi tối tăm, ẩm ướt, thấp của thiết bị IO và trình điều khiển tùy chỉnh với một lượng nhỏ chi phí.

Sau khi họ học lái bốn xi-lanh tự động, sau đó đẩy họ lên hotrod thủ công v8 lớn, nếu họ thực sự quan tâm và có động lực. Nếu Joel không thể tìm thấy các lập trình viên ngôi sao nhạc rock dưới bất kỳ hòn đá nào dưới chân anh ta, anh ta có thể phải tiếp tục tìm kiếm một nơi khác, hoặc suy nghĩ lại tại sao anh ta có thể cần nhiều hơn một tua vít trong hộp công cụ của mình.

2
JustinC

Chắc chắn rồi. Có những ngôn ngữ khác có thể dễ dàng hơn cho sinh viên năm đầu tiên nắm bắt. Tuy nhiên, có nhiều cách mà một giáo viên có thể từ từ giới thiệu các khái niệm trong C++.

2
jzd

Chắc chắn C++ có thể là ngôn ngữ đầu tiên. Nhưng đó là về cách nó được dạy.

Mọi người đều nói, ngôn ngữ đầu tiên nên rất dễ nắm bắt. Nhưng quan điểm của tôi là, hầu hết mọi người bắt đầu lập trình ở bậc đại học. Vì vậy, bạn có thể dạy một cái gì đó họ có khả năng nắm bắt. Và với C++, bạn có thể đi từ cấp thấp hơn đến cấp cao hơn về lập trình.

2
Gulshan

Khi tôi học đại học, C++ là ngôn ngữ nền tảng được dạy trong suốt năm đầu đại học. Lý thuyết là nó chứa một số khái niệm lập trình phức tạp, vì vậy nếu bạn có thể thành thạo nó, bạn có thể chọn các ngôn ngữ khác. Nó phục vụ tôi tốt như một nền tảng tốt.

Phải nói rằng, trong năm cuối cấp, tôi đã phục vụ trong một ủy ban để xác định xem có nên chuyển ngôn ngữ cốt lõi sang Java hay không. Sau khi nói chuyện với một số nhà tuyển dụng nổi tiếng và một số cựu sinh viên của khoa, người ta đã xác định rằng việc chuyển sang Java là mối quan tâm tốt nhất của sinh viên. Các nhà tuyển dụng chúng tôi đã nói chuyện muốn mọi người có kinh nghiệm trong ngôn ngữ họ đang sử dụng để thuê họ. Tôi tin rằng bây giờ, 10 năm sau, họ vẫn đang sử dụng Java làm ngôn ngữ cốt lõi của họ.

Một lưu ý tương tự, chúng tôi đã tìm cách thuê một vài sinh viên tốt nghiệp đại học gần đây với các kỹ năng C++ thực sự tốt. Chúng tôi không thể tìm thấy bất kỳ.

1
SchwartzE

Tôi sẽ nói có. Nhưng bất kỳ ngôn ngữ nào thực sự có thể là ngôn ngữ đầu tiên. Tôi nghĩ C++ là tốt bởi vì mặc dù nó phức tạp và đôi khi khó khăn, nhưng nó cho bạn thấy những gì bạn thực sự có thể làm (ít hạn chế hơn). Ngoài ra, nó có một số thiết kế hướng đối tượng có thể giúp bạn sẵn sàng tiếp nhận các ngôn ngữ khác.

C++ là ngôn ngữ đầu tiên của tôi và tôi rất vui vì điều đó. Nó khiến tôi suy nghĩ trong suy nghĩ OOP từ rất sớm và tôi rất biết ơn vì điều đó. Nhưng cuối cùng, nó thực sự phụ thuộc vào những gì bạn muốn làm. Ngôn ngữ không quan trọng bằng nhiều vì nếu bạn có thể làm tốt với một ngôn ngữ, rất có thể bạn sẽ không gặp vấn đề gì khi chọn ngôn ngữ khác. Bạn muốn làm gì? Tạo trò chơi? Chương trình cho điện thoại di động? Mỗi người sẽ có công cụ và ngôn ngữ phù hợp hơn cho nó.

1
user16281

C++ là ngôn ngữ chuyên gia, không phải ngôn ngữ mới bắt đầu ... sẽ nói C trước, không phải Java hoặc C # hoặc Python ... tại sao? Bởi vì C dạy bạn quan tâm đến bộ nhớ của bạn và một số Các khái niệm phức tạp như con trỏ bị "ẩn" bởi tất cả các ngôn ngữ vẫn hiện diện ở khắp mọi nơi. Tôi đã thấy rất nhiều nhà phát triển trẻ thậm chí không hiểu tại sao đôi khi bộ nhớ nên được giải phóng và tin rằng trình thu gom rác không phải là một chú lùn nhỏ tất cả các craps mã hóa: chúng khởi tạo, chúng khởi tạo và bùng nổ nó phát nổ ngay cả khi chúng có RAM XXXXGb ... Nhưng chúng không hiểu tại sao trình thu gom rác không chỉ đơn giản là làm sạch mọi thứ một cách kỳ diệu! Và tôi đã thấy loại nhà phát triển này mã hóa C++ (và thậm chí điên hơn, ở Corba) và đó là một cuộc tàn sát !!!!!!!!!! Vì vậy, tôi sẽ khuyên bạn nên học mã hóa trong C và sau đó đi tới Python/Java/C # cho các khái niệm đối tượng và tất cả các đường xung quanh Sau đó, khi bạn hiểu tất cả những điều đó, bạn đi đến C++ và bạn cảm thấy sức mạnh của C++ nhưng bạn cũng khám phá tất cả những nguy hiểm của nó và tại sao nó không nên được sử dụng bởi bất cứ ai;)

1
mandubian

Một số điểm mà người mới bắt đầu dễ mắc lỗi trong C++ là:

thực hiện các bài tập mà bạn muốn kiểm tra = vs ==

Còn thiếu ;

Khả năng đọc của dấu ngoặc nhọn so với đầu Pascal

Và sau đó có tất cả các tập tin bao gồm, macro, quản lý bộ nhớ, vv để gây nhầm lẫn.

Vì vậy, tôi muốn nói rằng C++ không phải là ngôn ngữ tốt nhất để bắt đầu - tuy nhiên không có gì phải nghi ngờ rằng nó có thể rất hữu ích khi bạn đã học nó.

Tôi sẽ - như những người khác cũng đề xuất - sử dụng C #, Java hoặc thậm chí có thể VB - và tốt IDE với cú pháp làm nổi bật, trình gỡ lỗi, vv để giúp làm cho nó dễ dàng hơn để phục hồi từ các lỗi.

1
Rune Andersen

KHÔNG. Có rất nhiều thứ mà C++ có, điều đó khiến người mới khó hiểu. Đừng tham gia vào fallacie "tất cả các ngôn ngữ lập trình đều như nhau".

Bắt đầu với Basic hoặc Pascal, (bỏ qua nội dung "chúng bị phản đối") và sau đó, với C/C++/Java/C #/Perl. Hoặc nếu bạn có cơ hội, đầu tiên với Logo & Karel, sau đó là Cơ bản hoặc Pascal.

P.D. Một số trường đại học & trường đại học có lớp so sánh & sử dụng Ngôn ngữ lập trình, và điều xảy ra là tôi đã dạy lớp đó ;-)

1
umlcat

Tôi bắt đầu với C++ ở trường trung học. Tôi nhặt được một bản sao của cuốn sách này: C++ Cách lập trình theo Delist và Delist . Cuốn sách này khá hay.

Thành thật mà nói không có câu trả lời đúng hay sai ở đây, cá nhân tôi thấy rằng C++ có thể nắm bắt được. Tôi đã học được tất cả các cách để OOP (Tôi đã gặp phải "điều này" mà bây giờ tôi không hiểu làm thế nào tôi không thể có được điều đó nhưng bất cứ điều gì). Hãy thử, đừng Nếu bạn gặp khó khăn, hãy kiểm tra các ngôn ngữ khác và tiếp tục học những ngôn ngữ mới. Ý tưởng là khi bạn thấy cùng một khái niệm trong 2-3 hình thức khác nhau, bạn sẽ hiểu chúng tốt hơn. Như tôi đã nói, khái niệm về "điều này "Con trỏ làm tôi bối rối nhưng khi tôi thấy điều tương tự trong Python (tự đặt tên thay thế) thì nó có ý nghĩa với tôi ngay lập tức vì tôi đã hiểu nó trong C++. Do learn Java nếu bạn có thể dạy cho nhiều trường đại học. Hãy học python hoặc Ruby vì đó là ngôn ngữ du jour và nếu bạn có thể khám phá thêm thị trường ngách/những thứ mới như Clojure (và tất cả các lisps khác), Haskell, Scala ...

0
nkassis

Nếu "phù hợp" là viết tắt của "có thể", có. Nếu cho "tốt", chắc chắn là không.

Bạn có thể thích, thậm chí yêu C++, nhưng để bạn học tốt hơn một số ngôn ngữ và làm việc trong một thập kỷ với các cơ sở mã hóa thối nát, hãy trải nghiệm "chế tạo phần mềm không cần thiết thực sự hoạt động" - thì C++ sẽ có sức hấp dẫn.

Không phải lúc bắt đầu khi bạn còn trinh, hãy nghịch ngợm với những vấn đề nhỏ, đơn giản (nhưng được cho là thú vị và vui vẻ).

Tôi sẽ bắt đầu với python, tiếp theo là SICP (lược đồ) hoặc một cái gì đó tương tự. Có thể đảo ngược hoặc xen kẽ. Với những người bạn chỉ có thể đi và giải quyết vấn đề. Thay vì chiến đấu với hệ thống, đi bộ trong bùn sâu và tìm hiểu tất cả các loại kỳ quặc phi lý và lý do lịch sử của chúng.

Sau này, khi bạn đã có thể lập trình thoát khỏi túi giấy, hãy chuyển sang kim loại trần: tìm hiểu cách lắp ráp và một số kiến ​​trúc, cộng với có thể là Knuth's Mix. Tôi không có nghĩa là ghi nhớ opcodes hoặc làm nhiều thứ thực sự, chỉ để hiểu bộ nhớ, đăng ký, ALU, bộ nhớ cache, ngắt, và ở cấp độ đọc.

Sau đó, với nền tảng đó, bạn có thể tiếp xúc với các ngôn ngữ khác, bao gồm cả C++. Có lẽ một ý tưởng tốt để thêm một số "lịch sử và sự phát triển của ngôn ngữ" ở giữa.

0
Balog Pal

Bạn có thể chọn bất kỳ ngôn ngữ nào để học các nền tảng của lập trình. Tôi đã học được những thứ trong C/C++. nhưng 7 năm sau, các công cụ/ngôn ngữ được thay đổi trong trường của tôi và họ thích Java/C #. các ngôn ngữ chỉ là công cụ. Những gì bạn cần để có được tốt hơn là các nguyên tắc cơ bản. ví dụ. trong MIT mọi người học các nguyên tắc cơ bản của thuật toán bằng python. vd Java có thể tốt cho lập trình web. Nhưng C/C++ tốt cho các dịch vụ và ứng dụng hiệu suất cao. Vì vậy, nó phụ thuộc vào tình huống của bạn.

0
sarat