ak_47: (Default)
[personal profile] ak_47

Многие учебные заведения преподающие компьютерные науки шарахаются от 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.

If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

Profile

ak_47: (Default)
АК-47

Most Popular Tags

Expand Cut Tags

No cut tags
Powered by Dreamwidth Studios