Калашмат Автомашникова (ak_47) wrote,
Калашмат Автомашникова
ak_47

Если бы C++ не существовало, то его бы следовало придумать.

Многие учебные заведения преподающие компьютерные науки шарахаются от C++ как от чумы, полагая что этот язык а) чрезвычайно сложен для студентов и б) является нагромождением нелепостей, котрые скопились за долгую историю языка и которые могут непоправимо травмировать нежные детские души. В итоге в лучшем случае преподавание ведётся на живых языках таких как C и Java, а в худшем - на мертворождённых мутантах, плодах академического исступления, навроде Scheme или SmallTalk.

На рубеже 19-20 вв. зачастую студентов всё ещё учили латыни. Не для того, чтобы на ней разговаривать или писать работы - латынь уже тогда была мёртвым языком - а целиком лишь для гимнастики ума. По мнению преподователей овладевание латинской грамматикой упорядочивало мышление, учило стройно излагать мысли на письме и в устной речи. В отличие от латыни, C++ это живой постоянно развивающийся язык, по сей день один из наиболее популярных инструментов в инженерном мире.

Изучение C++ вместо Pascal или Java на инженерных факультетах полезно вот почему:

  • На C++ можно изучать процедурное программирование точно так же как и на C или Pascal. В отличие от мёртвого Pascal, язык C++ до сих пор один из наиболее популярных; в отличие от C более строгая проверка типов в C++ приучает с младых ногтей избегать небрежности, которая так характерна для C.
  • На C++ можно изучать объектно-ориентированное программирование, включая такие уровни абстракции как templates. За историю использования языка собран колоссальный опыт как ОО приёмов, так и применения templates. К примеру, аналоги templates появились в Java сравнительно недавно. Во многих других языках они до сих пор отсутствуют.
  • На C++ можно изучать низкоуровневое программирование, т.к. благодаря одному из основных принципов языка - you don't pay for what you don't use - C++ всегда оставался близок к железу на котором он бежит, ничуть не уступая в этом C.
  • На C++ можно и нужно изучать основные концепции исполнения программы такие как адресация памяти и операции с ней посредством пойнтеров, memory barriers и спекулятивное исполнение, стэк и механика вызова функции, передача по ссылке или по значению и многое другое. Студенты выросшиие на Java и Python имеют очень отдалённое представление об этих материях, что непосредственно сказывается на качестве их инженерных решений.
  • На C++ можно и нужно изучать разработку софта как инженерную дисциплину. Те несуразности в C++ которые могут показаться на первый взгляд, при более пристальном изучении окажутся единственно верными решениями перед лицом неудобной, неукладывающейся в строгие академические рамки реальности в которой должен жить инженер. Каждое такое решение является продуктом мучительного поиска сильнейших людей в индустрии. Для абсолютно любого аспекта C++ можно найти разумное объяснение его существования. Оно будет задокументированно в качестве предложения в стандарт и одобренно большинством голосов комитета WG21 в ISO.

    Изучение истории C++, предложений по изменению языка уже само по себе является интереснейшим курсом молодого бойца для будущего инженера. Подобные решения ему придётся принимать на протяжении всей карьеры и на своей собственной шкуре испытать неразрешимые противоречия между техническими требованиями и имеющимися возможностями.

Those who don't understand C++ are doomed to reinvent it, poorly.

Subscribe

  • Берегите евреев

    Старый анекдот вновь актуален. В Мельбурне евреи собрались в синагогу на Новый Год, нарушив правила локдауна. Соседи, понятное дело, настучали куда…

  • Сверхпроводимость

    Как раньше человек узнавал новости? Для начала, ему самому надо было этого захотеть. Затем, что-нибудь сделать: купить газету или включить телевизор…

  • Serious concerns

    Соросу надо сделать втык тому, кто ведёт его твиттер. Совсем мышей не ловит: The Taliban’s behavior raises serious concerns about their commitment…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments