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?
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?
Câu trả lời:
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<<
, protected
và new
không phải là khái niệm ở mức độ 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 để dạy các khái niệm OO 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 các lý do tiềm năng tại sao. Bạn có thể phải nhấn tất cả những thứ đó, sẽ mất một thời gian rất, rất lâu với các lập trình viên mới; nếu không, bạn phải bỏ qua rất nhiều thứ, 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 về 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, Common Lisp, 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 đẹp 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, hãy 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 một ngôn ngữ kiểu C." hoặc là...
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ữ cụ thể nào cũng mất chính xác X tháng ( HINT! HINT! ) 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ả cá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. Đừng dạy C ++ trước.
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;
}
#include
Lệnh đó là gì? Có gì std::cout
. Tại sao ::
? Là <<
gì Ohhh, nó là một nhà điều hành quá tải! Toán tử quá tải là gì? Sooo, vì ints
, nó không thay đổi chút nào, nhưng cho dù std::cout
là gì , nó sẽ xuất công cụ lên bàn điều khiển. Ohhh, std::cout
là một luồng và các luồng có quá tải <<
và >>
toán tử của chúng .
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.
Đâ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ì đó OO hơn 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 nó), sau khi họ đã học các ngôn ngữ tốt hơn.
Câu trả lời ngắn gọn: Có!
Tôi muốn nói rằng bất kỳ ngôn ngữ nào cũ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 tối ưu hóa hiệu suất, v.v.
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 ();
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.
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 (bài tiểu luận Trường học Java của Spolsky). Những người đó kết thúc trên DailyWTF nếu họ không thẳng thắn. Sự trừu tượng bị rò rỉ, và khi (không nếu) sự trừu tượng bị rò rỉ, điều đó còn tệ hơn là phải đối phó với nó. Tôi đã làm việc như một TA cho sinh viên cấp C ++. Hoặc là mọi thứ phải được giấu kín tất cả các cách, hoặc chúng phải được đư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.
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. Cùng 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 đã sụp đổ 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, 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.
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ó sẵn các ngôn ngữ giảng dạy tốt hơn, chẳng hạn như Python.
string
kiểu dữ liệu mà quá tải khai thác thích +
, =
và ==
làm những điều mà sinh viên nhiều hơn hoặc ít hơn mong đợi, so với cách ứng nhu cầu xử lý chuỗi để được thực hiện trong C. Do đó "nhẹ" . Tôi sẽ không đề nghị hoặc là một ngôn ngữ giảng dạy.
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ị.
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ó làm cho 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 thôi.
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ó.
Dưới đây là những gì một báo cáo từ trưởng khoa của Đại học Carnegie Mellon 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.
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.
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 chuôi không được xây dựng có chủ ý đố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à phân bổ IO và bộ nhớ, nhưng thực sự không phổ biến để sử dụng kiến thức đó ở bất kỳ mức độ đáng kể nào, chứ đừng nói đến việc tận dụng nó cho đại đa số các nhiệm vụ. Cố gắng làm như vậy mà không hiểu bối cảnh rộng lớn hơn của vấn đề sẽ đưa rủi ro không ngừng vào 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 trăm 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 một loạt các vấn đề 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 chương 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 bóng tối, ẩm ướt,
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.
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 chẳng hạn
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 sẽ nói C ++ không phải là ngôn ngữ tốt nhất để bắt đầu - tuy nhiên không có nghi ngờ gì 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í là VB - và một IDE tốt với cú pháp tô sáng, trình gỡ lỗi, v.v. để giúp cho việc khôi phục lỗi dễ dàng hơn.
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 về ngôn ngữ họ đang sử dụng để thuê họ. Tôi tin bây giờ, 10 năm sau, họ vẫn đang sử dụng Java làm ngôn ngữ cốt lõi.
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ỳ.
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ự đi xuống với những gì bạn muốn làm. Ngôn ngữ không quan trọng bằng 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ì? Làm game? 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 với nó.
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 hay C # hay Python ... tại sao? bởi vì C dạy bạn quan tâm đến trí nhớ của bạn và một số 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 ở 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ỏ giúp xóa sạch mọi cơn điên mã hóa: chúng khởi tạo, chúng khởi tạo và bùng nổ ngay cả khi chúng có XXXXGb RAM ... Nhưng họ không hiểu tại sao người dọn rác không chỉ đơn giản là làm sạch mọi thứ! Và tôi đã thấy loại nhà phát triển mã hóa trong C ++ (và thậm chí điên rồ 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 được sử dụng bởi bất kỳ ai;)
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.
PD 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 đó ;-)
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ụ, ở MIT, người ta học các nguyên tắc cơ bản của thuật toán bằng python. ví dụ 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.
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 vài 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.
Tôi bắt đầu với C ++ ở trường trung học. Tôi đã chọn một bản sao của cuốn sách này: C ++ Cách lập trình bởi 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ử nó, đừng nản lò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 hơn. Như tôi đã nói, khái niệm về con trỏ "này" 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ế), nó có ý nghĩa với tôi ngay lập tức vì tôi đã hiểu nó trong C ++. Đừng học Java nếu bạn có thể dạy nhiều trường như vậy. 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 nhiều thứ thích hợp / mới như Clojure (và tất cả các lisps khác), Haskell, Scala ...
Không. Tôi sẽ bắt đầu với Java hoặc C #. Nếu bạn muốn học C ++, có thể dễ dàng hơn sau khi bạn đã học những điều cơ bản, chẳng hạn như lớp học là gì, cách thực hiện các vòng lặp và dĩa (nếu, sau đó là câu lệnh), v.v ... Điều quan trọng hơn nhiều là học cách xem một vấn đề hoặc một phương trình toán học và lập trình nó hơn là tìm hiểu xem bạn đã giải phóng tất cả bộ nhớ hay chưa.
Có vẻ như giả định đằng sau câu hỏi này là "C ++ có vẻ phức tạp như vậy, liệu một người 16 tuổi có thể chọn nó làm ngôn ngữ đầu tiên (lập trình máy tính) không?"
Khi chúng tôi lên 4 hoặc 5 tuổi, chúng tôi nhận được hầu hết các cấu trúc bằng tiếng mẹ đẻ, chỉ cần tiếp xúc nhiều với nó thông qua việc nghe người khác nói nó. Hình thành những câu tuyệt vời cần một thời gian cuộc sống, không có câu hỏi đó.
C ++ chắc chắn ít phức tạp / phức tạp hơn nhiều so với hầu hết các ngôn ngữ của con người. 16 tuổi chắc chắn có thể nhận nó. Họ sẽ viết mã tuyệt vời với nó? Phải chờ đợi và xem.
Người mới bắt đầu cần đánh giá cao 'lập trình' trước. Theo kinh nghiệm của tôi trong việc đào tạo một lớp người mới bắt đầu, họ đánh giá cao những gì họ hiểu nhất. Giống như Python so với C #, họ đánh giá cao Python vì mức độ rất cao và không sử dụng các ký hiệu như C #, nghĩa là rất gần với ngôn ngữ của con người, rất tiếng Anh. Vì vậy, tôi khuyên bạn nên học lập trình từ cấp cao đến cấp thấp.