Moja szkoła rozpoczyna program informatyki od kursów programowania w C ++, co oznacza, że jest to pierwszy język, którego uczy się wielu uczniów.
Widziałem, że wiele osób nie lubi C ++ i przeczytałem wiele powodów. Niemal wydaje się, że popularna jest opinia, że C ++ nie jest zbyt dobrym językiem. Mam wrażenie, że nie jest bardzo lubiany na podstawie niektórych pytań na StackExchange, a także postów, takich jak:
http://damienkatz.net/2004/08/why-c-sucks.html
http://blogs.kde.org/ node / 2298
http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks
http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/
itd.
(Uwaga: nie uważam, że C ++ jest złym językiem. W rzeczywistości jest to główny język, którego używam. Jednak Internet, a także niektórzy profesorowie sprawili wrażenie, że nie jest to bardzo lubiany język. W rzeczywistości , jeden z moich profesorów ciągle szarpie się na C ++, ale wciąż jest to język początkowy na mojej uczelni!)
Mając to na uwadze, dlaczego jest to pierwszy język nauczany w wielu szkołach? Jakie są powody rozpoczęcia programu nauczania w C ++?
Uwaga: To pytanie jest podobne do „Czy C ++ nadaje się jako pierwszy język”, ale jest nieco inne, ponieważ nie jestem zainteresowany, czy jest odpowiedni, ale dlaczego został wybrany.
Odpowiedzi:
Każdy język ma kultowych zwolenników zarówno kochanków, jak i hejterów; dotyczy to C ++, Java, C #, Haskell, Objective-C, cokolwiek.
Istnieje wiele ważnych powodów, aby lubić lub nie lubić języka.
Ostatecznie istnieje kilka powodów, dla których C ++ jest głównie nauczany na uniwersytetach:
Opiera się na C; dlatego przejście z C do C ++ nie jest zbyt bolesne. Sporo uniwersytetów uczy C przed C ++ (co ma wiele sensu w IMO).
Jest to jeden z najpopularniejszych języków w branży (zaczyna się zmieniać wraz z Javą, programowaniem mobilnym, programowaniem internetowym itp., Ale wciąż tam jest)
Jest to język napisany przez akademika dla celów akademickich (tj. Badawczych) ; dlatego wielu profesorów korzysta z niego na co dzień i doskonale się z nim zna, co czyni go oczywistym wyborem ze względu na treść ich kursu.
Nie przejmuj się zbytnio odrzucaniem go jako „złego” języka; Polecam zanurzyć się w to, naprawdę się uczyć, budować z niego projekty o średnim lub dużym rozmiarze. Następnie zrób to samo z innymi językami; w tym momencie będziesz miał wystarczające doświadczenie i wgląd, aby powiedzieć „Myślę, że C ++ jest zły, ponieważ X, Y, Z” lub „Myślę, że C ++ jest dobry, ponieważ A, B, C, którego Java nie ma”.
Wciąż musisz się wiele nauczyć, młody konik polny.
źródło
Mówiąc wprost, jest to bardzo dobry język nauczania, ponieważ nie trzyma ręki. Ludzie, którzy uczą się jeździć na manualnej skrzyni biegów, prawie nie mają problemów po raz pierwszy w automatyce, ale odwrotność nie jest prawdą. Nauka trwa dłużej, ale na studiach musisz ćwiczyć 4-letnie programy zabawkowe, zanim będziesz musiał coś uczynić przydatnym.
źródło
Na to, czego naucza się w szkole, zwykle kierują się tym, co wiedzą profesorowie, a także to, co było wtedy używane w branży i popularne.
Pomyśl o szkołach jako o kapsule czasu w przeszłości. :)
Naprawdę chciałbym, żeby było na odwrót.
źródło
Angielski został również opisany jako naprawdę zły, zhakowany razem, niespójny język, ale ponieważ tylu ludzi tutaj wie, moi rodzice i nauczyciele zdecydowali, że dobrym pomysłem jest nauczenie mnie tego.
Myślę, że tak samo jest z C ++. Jest to język, który zna wiele osób, więc warto opanować podstawową znajomość języka.
Ma również tę zaletę, że jest na tyle niski, że pozwala poczuć, co dzieje się na poziomie sprzętowym.
Wreszcie, nie ma problemów „komercyjnych”, które mają niektóre inne języki (np. Java-Oracle lub .NET-MS). Wiem, że wiele uniwersytetów nie chciałoby być oskarżanych o nauczanie produktu jednej firmy nad innym.
źródło
Jeśli C ++ jest taki zły, to jak wytłumaczysz, że większość programów, z których korzystasz w życiu codziennym, jest napisanych w C ++?
Istnieje kilka powodów, aby uczyć się C ++ na studiach od pierwszego roku:
Jest w dużej mierze używany. Istniejąca baza kodów jest po prostu ogromna i nawet teraz, gdy istnieją języki takie jak Ruby, Python lub C #, C ++ jest nadal często używany, nawet podczas tworzenia aplikacji od podstaw, w tym na stronach internetowych. W takim przypadku nauka języka C ++ jest dobrym wyborem. Przynajmniej lepszy niż dwa lata nauki Ada, czyli czegoś, czego nigdy nie wykorzystasz w życiu, chyba że opracujesz aplikacje dla statku kosmicznego.
To nie jest zbyt abstrakcyjne. Na przykład, jak możesz wyjaśnić uczniom, jakie są wskaźniki, jeśli nauczyli się tylko języka C # lub Java?
Jest to dość trudne w porównaniu, powiedzmy, z PHP. Oznacza to, że studenci, którzy nie są przygotowani do programowania, wkrótce odejdą, co nie jest takie złe i pozwala uczniowi zmarnować dwa lub trzy lata, zanim zrozumie, że tworzenie oprogramowania nie jest dla niego.
To sprawia, że C ++ jest bardziej odpowiedni niż Ada, Java lub PHP.
źródło
Mówiąc ogólnie, jeśli potrafisz nauczyć się i opanować C ++, możesz nauczyć się i opanować praktycznie każdy inny język. Powodem, dla którego się nie lubi, jest to, że aby być w tym biegłym i mieć szybki czas wydania, musisz bardzo dobrze znać język i jego standardową bibliotekę.
Jednak w języku, takim jak Java, można uzyskać szybki czas wdrożenia z niewielką zaawansowaną wiedzą na temat tajników biblioteki językowej / standardowej. Do diabła, znam na pamięć tylko pięć rzeczy ze standardowej biblioteki Java (poza podstawowymi rzeczami, takimi jak kolekcje).
Biorąc to pod uwagę, C ++ jest nadal powszechnie używanym językiem ze względu na świetne połączenie szybkości i metodologii zorientowanej obiektowo. Podczas gdy wiele osób uważa, że nie jest to pełne OOP, uważam, że daje to większą elastyczność OOP, nie zmuszając cię do całkowitego fanatyzmu. Większość kompilatorów pozwala nawet pisać czyste C.
Gdybym miał wybór, wziąłbym C ++ nad Javą każdego dnia, ale to tylko ja jestem fanboyem. Ogólnie rzecz biorąc, Java jest przydatna, ponieważ będzie działać na prawie każdej architekturze, dla której jest zbudowany interpreter Java. Dlatego w przypadku aplikacji klienckich, które muszą być obsługiwane na wielu platformach, jest uważane za najlepsze narzędzie do tego zadania, a większość nowych napisanych aplikacji i tak jest oparta na sieci.
źródło
Jak powiedzieli mi niektórzy moi profesorowie, łatwiej jest zacząć od dołu lub od niskiego poziomu, a następnie przejść na wyższy poziom. Język taki jak C ++ daje świetne wprowadzenie do tego, na czym tak naprawdę polega bycie informatykiem. Język ten może nie być tak efektowny jak Java, Python, Ruby itp., Ale pozwala lepiej zrozumieć ważne funkcje programu, takie jak wskaźniki i zarządzanie pamięcią. Nawet jeśli nie jest to język, który planujesz lub chcesz używać przez resztę życia, z pewnością docenisz go w nadchodzących latach, kiedy zaczniesz znajdować pożądaną ścieżkę programowania.
źródło
C ++ może być jednym z najprostszych języków dla programów konsolowych dla początkujących. Oczywiście język jest złożony, ale możesz skupić się na podzbiorze proceduralnym. Możesz zignorować istnienie wskaźników przez dłuższy czas. Możesz zacząć od prostego, a następnie budować.
Składnia początkowa programu „hello world” jest mniejsza w porównaniu z Javą lub C #. Czy początkujący powinien widzieć słowo „statyczny” dla aplikacji hello world? W języku Java / C # robią.
źródło
Kiedy studiowałem informatykę, najpierw uczyłem się Javy, ale teraz mój uniwersytet uczy dwóch lingwistów obliczeniowych: najpierw Prologa, a potem C ++.
C ++ jest nauczany z co najmniej następujących powodów:
Jest to język ogólnego przeznaczenia, w którym można pisać oprogramowanie dla dowolnego systemu operacyjnego (ponieważ istnieje wiele kompilatorów). Został zaprojektowany jako dobry język produkcyjny, ułatwia ponowne użycie części programu, współpracę ze sprzętem i oprogramowaniem w świecie rzeczywistym itp.
To jest naprawdę szybkie. Nie można używać Python, Scheme lub Prolog do przetwarzania ogromnych zestawów danych, które są obecnie powszechne. Pomyśl o algorytmach graficznych z milionami węzłów. (Dlatego też gry komputerowe są zwykle pisane w C ++.)
Studenci mogą dowiedzieć się, co robi kompilator. Właściwie, dopóki tylko uczyłem się języka Java (począwszy od liceum), praca kompilatora zawsze wydawała mi się magią. Po prostu nie dowiadujesz się o stosie, stosie łączenia statycznego vs. dynamicznego itp. Jako początkujący Java. C ++ de-mistyfikuje cały komputer.
Jeśli chodzi o to, co potrafi, jest w porządku w czasie nauki (chociaż jest to prawdopodobnie jeden z najbardziej skomplikowanych języków, jeśli naprawdę się w nim zagłębisz). Oferuje ładną bibliotekę, która pomaga w płynnej krzywej uczenia się. (Istnieją jednak różne podejścia do tego. Na moim uniwersytecie uczono nas, jak pisać własne klasy strun i inteligentne wskaźniki, zanim pozwolono nam korzystać z biblioteki; Bjarne Stroustrup, wynalazca C ++, zachęca do odwrotnej kolejności.)
źródło
C / C ++ jest w rzeczywistości lepszym językiem niż większość innych, po pierwsze dlatego, że nie dodaje fałszywego poczucia bezpieczeństwa. Po drugie, ponieważ wiesz, co robisz.
Naprawdę uwielbiam ten język i uważam go za lepszy od większości alternatyw.
Jest również tak produktywny, jak większość innych języków, i nie jest aż tak „cholerny”, jeśli wiesz, co robisz i zastanów się, zanim skopiujesz losowe kody.
Również dobra lektura - http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Jednak niektóre rzeczy w C ++ są w rzeczywistości złe, na przykład wyjątki i nieintuicyjny narzut w niektórych przypadkach. To chyba powód, dla którego Linus jest tak negatywny w cytowanym przez ciebie poście.
Dobra lektura dotykająca jednego z powiązanych tematów - http://blogs.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx
źródło
źródło
Wcześniej był Pascal, wcześniej Pascal był podobny do Basic. Interesującą częścią jest - co dalej? Może nic. Mam jednak trochę uwagi na temat „dlaczego c ++”. Ponieważ jest ciężko, ale nie jest tak samo seplenienie. Nie, naprawdę rozumiem, że C ++ jest dobrym językiem do programowania systemu, wiem, że istnieje wiele projektów zakodowanych w C ++ i jest mnóstwo bibliotek, aby uczniowie mogli z nim wszystko stworzyć. Ale mówimy o uczniach i ich możliwościach tworzenia logiki i zrozumienia systemu. Nie możesz być dobrym koderem C ++, jeśli nie możesz stworzyć prostej logiki i zrozumieć, jak działa system, co jest moim zdaniem głównym powodem. I tak, kolejnym prostym powodem jest stabilny początek kariery.
źródło