Моя школа начинает учебный курс по информатике с курсов по программированию на С ++, то есть это первый язык, который изучают многие ученики.
Я видел, что многим людям не нравится C ++, и я читал множество причин, почему. Похоже, популярное мнение, что C ++ не очень хороший язык. У меня сложилось впечатление, что он не очень понравился, основываясь на некоторых вопросах на StackExchange, а также на постах, таких как:
http://damienkatz.net/2004/08/why-c-sucks.html
http://blogs.kde.org/ узел / 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/
и т. д.
(Примечание: я не считаю, что C ++ - это плохой язык. На самом деле это основной язык, которым я пользуюсь. Однако Интернет, как и некоторые профессора, создали у меня впечатление, что это не очень популярный язык. На самом деле один из моих профессоров постоянно треплет на C ++, но это все еще начальный язык в моем колледже!)
Имея это в виду, почему этот первый язык преподается во многих школах? Каковы причины запуска учебной программы по программированию на C ++?
Примечание. Этот вопрос похож на «Подходит ли C ++ в качестве первого языка», но немного отличается, поскольку меня не интересует, подходит ли он, но почему он выбран.
Ответы:
Каждый язык имеет культ поклонников и ненавистников; это верно для C ++, Java, C #, Haskell, Objective-C, что угодно.
Есть много веских причин любить или не любить язык.
В конце концов, есть несколько причин, почему C ++ преимущественно преподается в университетах:
Он построен на вершине C; поэтому переход с C на C ++ не слишком болезненный. Многие университеты преподают C до C ++ (что имеет большой смысл в IMO).
Это один из самых популярных языков в отрасли (он начинает меняться с Java, мобильной разработкой, веб-разработкой и т. Д., Но он все еще там)
Это язык, который был написан академическим, для академических (то есть исследовательских) целей ; поэтому многие преподаватели используют его на ежедневной основе и очень хорошо с ним знакомы, что делает его очевидным выбором для содержания их курса.
Не спешите отвергать его как «плохой» язык; Я рекомендую вам погрузиться в это, по-настоящему изучить его, создать несколько проектов среднего и большого размера, используя его. Затем сделайте то же самое с другими языками; в этот момент у вас будет достаточно опыта и понимания, чтобы сказать: «Я думаю, что C ++ плох, потому что X, Y, Z» или «Я думаю, что C ++ хорош, потому что A, B, C, которого нет в Java».
Тебе еще есть чему поучиться, молодой кузнечик.
источник
Проще говоря, это очень хороший язык обучения, потому что он не держит вас за руку. Люди, которые учатся водить на механической коробке передач, почти не испытывают затруднений при первом включении в автоматическом режиме, но обратное неверно. Обучение занимает больше времени, но в колледже у вас есть 4 года игрушечных программ, чтобы потренироваться, прежде чем делать что-то полезное.
источник
То, чему учат в школе, обычно зависит от того, что знают профессора, и что использовалось в промышленности и популярно в то время.
Думайте о школах как о капсуле времени в прошлое. :)
Я действительно хотел бы, чтобы все было наоборот.
источник
Английский также был описан как действительно плохой, взломанный вместе, противоречивый язык, но так как многие люди здесь знают его, мои родители и учителя решили, что это хорошая идея - научить меня этому.
Я думаю, что то же самое с C ++. Это язык, который знают многие люди, поэтому стоит немного овладеть им.
Он также имеет то преимущество, что достаточно низкий уровень, чтобы действительно дать вам представление о том, что происходит на аппаратном уровне.
Наконец, у него нет «коммерческих» проблем, которые есть у некоторых других языков (например, Java-Oracle или .NET-MS). Я знаю, что многие университеты не хотят обвиняться в том, что они преподают продукт одной конкретной компании другому.
источник
Если C ++ настолько плох, как вы объясните, что большинство программных продуктов, которые вы используете в своей повседневной жизни, написаны на C ++?
Может быть несколько причин изучать C ++ в колледже с первого года обучения:
Это в основном используется. Существующая кодовая база просто огромна, и даже сейчас, когда есть языки как Ruby, Python или C #, C ++ все еще широко используется даже при создании приложений с нуля, в том числе для веб-сайтов. В этом случае изучение C ++ является хорошим выбором. По крайней мере, лучше, чем тратить два года на изучение Ады, то есть то, что вы никогда не будете использовать в своей жизни, если не будете разрабатывать приложения для космических кораблей.
Это не слишком абстрактно. Например, как вы можете объяснить студентам, что такое указатели, если они изучили только C # или Java?
Это достаточно сложно по сравнению, скажем, с PHP. Это означает, что студенты, которые не созданы для программирования, скоро уйдут, что не так уж и плохо, и ученику не нужно тратить два-три года, чтобы понять, что разработка программного обеспечения не для него.
Это делает C ++ более подходящим, чем Ada, Java или PHP.
источник
Вообще говоря, если вы можете выучить и освоить C ++, вы можете выучить и освоить практически любой другой язык. Причина, по которой он не нравится, состоит в том, что для того, чтобы быть опытным в этом и иметь быстрое время выпуска, вы должны быть очень хорошо знакомы с языком и его стандартной библиотекой.
Тем не менее, на языке, таком как Java, вы можете иметь быстрое время развертывания, имея лишь некоторые расширенные знания о плюсах и минусах языка / стандартной библиотеки. Черт, я знаю только пять вещей из стандартной библиотеки Java наизусть (кроме основных вещей, таких как коллекции, конечно).
Тем не менее, C ++ все еще широко используется из-за отличного сочетания скорости и объектно-ориентированных методологий. Хотя многие считают, что это не полный ООП, я считаю, что это дает вам большую часть гибкости ООП, не заставляя вас быть полным фанатиком. Большинство компиляторов даже позволяют писать чистый C.
Если бы у меня был выбор, я бы взял C ++ вместо Java в любой день, но я просто фанат. Вообще говоря, Java полезна, потому что она будет работать практически на любой архитектуре, для которой создан интерпретатор Java. Поэтому для клиентских приложений, которые необходимо поддерживать на нескольких платформах, он считается лучшим инструментом для работы, и большинство новых написанных приложений в любом случае основаны на веб-технологиях.
источник
Как сказали мне некоторые из моих профессоров, легче начать с низа или с низкого уровня, а затем идти вверх. Такой язык, как C ++, дает вам отличное представление о том, что такое компьютерный ученый. Это может быть не такой гламурный язык, как Java, Python, Ruby и т. Д., Но он позволяет получить общее представление о важных функциях программы, таких как указатели и управление памятью. Даже если это не тот язык, который вы планируете или хотите использовать до конца своей жизни, вы по достоинству оцените годы, когда начнете находить желаемый путь программирования.
источник
C ++ может быть одним из самых простых языков для консольных программ начального уровня. Конечно, язык сложный, но вы можете сосредоточиться на процедурном подмножестве. Вы можете игнорировать существование указателей в течение довольно долгого времени. Вы можете начать с простого, затем построить.
Для запуска и запуска этой исходной программы "hello world" меньше синтаксиса "пух" по сравнению с java или C #. Должен ли новичок видеть слово «статический» в приложении «Hello World»? В Java / C # они делают.
источник
Когда я изучал информатику, сначала изучали Java, но сейчас мой университет преподает нам два языка для компьютерных лингвистов: сначала Пролог, а затем С ++.
C ++ преподается (по крайней мере) по следующим причинам:
Это язык общего назначения, вы можете написать программное обеспечение для любой операционной системы с ним (потому что существует много компиляторов). Он разработан, чтобы быть хорошим рабочим языком, он позволяет легко повторно использовать программные части, взаимодействовать с реальным аппаратным и программным обеспечением и т. Д.
Это действительно быстро. Вы не можете использовать Python, Scheme или Prolog для обработки огромных наборов данных, что часто встречается в наши дни. Представьте себе алгоритмы графа с миллионами узлов. (Вот почему компьютерные игры обычно пишутся на C ++.)
Студенты могут узнать, что делает компилятор. На самом деле, пока я только изучал Java (начиная с старшей школы), работа компилятора всегда казалась мне волшебной. Вы просто не узнаете о стеке и куче, о статических и динамических связях и т. Д. Как новичок в Java. C ++ де-мистифицирует весь компьютер.
Что бы он ни делал, это нормально во время обучения (хотя, возможно, это один из самых сложных языков, если вы действительно углубитесь в это). Он предлагает хорошую библиотеку, которая помогает с плавной кривой обучения. (Однако существуют разные подходы к этому. В моем университете нас учили, как писать собственные классы строк и умные указатели, прежде чем нам разрешили использовать библиотеку; Бьярн Страуструп, изобретатель C ++, поощряет противоположный порядок.)
источник
C / C ++ на самом деле лучший язык, чем большинство других, во-первых, потому что он не добавляет ложного чувства безопасности. Во-вторых, потому что ты знаешь, что делаешь.
Я действительно люблю язык и считаю, что он превосходит большинство альтернатив.
Он также продуктивен, как и большинство других языков, и не такой «аварийный», если вы знаете, что делаете, и подумаете, прежде чем копировать-вставлять случайные кодеки.
Также хорошее чтение - http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
Тем не менее, некоторые вещи в C ++ на самом деле плохие, например, исключения, и в некоторых случаях неинтуитивные издержки. Это причина, я думаю, почему Линус так негативно относится к сообщению, которое вы цитировали.
Хорошее чтение, чтобы коснуться одной из смежных тем - http://blogs.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx
источник
источник
Раньше был Паскаль, раньше Паскаль был чем-то похожим на Basic. Интересная часть - что дальше? Может быть, ничего. У меня есть мысль о том, почему C ++. Потому что это тяжело, но не так сложно, шутка. Нет, я действительно понимаю, что C ++ является хорошим языком для системного программирования, я знаю, что есть много проектов, написанных на C ++, и есть тонны библиотек, поэтому студенты могут создавать все с его помощью. Но мы говорим о студентах и их возможности создавать логику и понимать систему. Вы не можете быть хорошим программистом на C ++, если не можете создать простую логику и понять, как работает система, и это, на мой взгляд, главная причина. И да, еще одна простая причина - стабильное начало карьеры.
источник