Всем, доброго, с вами Мирра Андрюхан. В прошлой статье, мы разобрались с тем, что вопрос о необходимости знания языка Си, поистине глупый. Им в пору задаваться, разве что от лени. А теперь, стоит понять, почему язык Си такой, какой есть в своем изначальном виде.
Для начала могу сказать один момент, рассматривать все это будем с позиции понимания.
И так, в свое время был один поляк со славянскими корнями и работал он в свое время в одной из частных компаний запада в ОС Unix. Однако, его всегда неустраивал подход к созданию программ в последних 20-30 годах прошлого века. И тогда, он взял и создал язык Си, которых мог быть кратким в формальном описании алгоритма, который необходимо выполнить компьютеру, и в тоже время экономный по затрате оперативной памяти. Это, сейчас объемов ОЗУ и ПЗУ предостаточно, а тогда каждый байт был на счету. Так что, Си — это своего рода Ассемблер, но на уровне языков высокого уровня. Однако, в тоже время это не такой уж сложный язык программирования. Просто, все различается лишь тем, до какого уровня написания программ закапываться. Так что, это вам не язык, который якобы облегчает для вас написание ПО и вместо этого всего лишь навалил кучу кодов за вас в конечном итоге. В тоже время это подход к программированию, где сам выбираешь, как и что будешь делать, как будешь работать с памятью, но все это лишь продвинутый уровень применения для увесистых по своим возможностям программ. И, никто не заставляет нас применять свои навыки и умения в столь сложном направлении, которое является уделом тех, кто избрал для себя путь программиста и решил уйти в дело с головой.
С другой стороны, язык Си++ унаследовал все эти качества от языка Си. Однако, если быть честным изначально Си++ — это тот же самый язык Си, только с добавленными возможностями по работе с классами и объектами для поддержания объектно ориентированного программирования (ООП). Вся фишка в том, что все эти классы и объекты в конечном итоге массивы адресов памяти, в которых, либо исполняемый код, либо переменная, которые синтаксически не нарушают и не пересекаются с одними и теми же названиями переменных вне классов, т.к. в программном коде они уже перенесены в виде отдельных переменных. Например переменные «1» и «1.1» это две разные переменные, т.к. в первом случае это переменная «1», а во втором случае указатель на адрес в памяти, ссылающийся на внутренную переменную «1», которая только для нас с вами «1», а для компьютера это уже другая переменная. При этом, это все не составляет проблем для нас в программировании, т.к. нет нужды контролировать пересечение переменных, все это делается за нас на этапе компиляции и проверки исходного программного кода. Во всем, остальном это такой же Си, что был и раньше. Да, есть несколько удобных моментов, которых нету в Си, но по сути Си++ — это надстройка для Си. Со временем, кое-что немного изменилось, но для наших потребностей все осталось на своих местах. Да и к тому же, многие применяют малую часть возможностей языка Си++, все также программируя как раньше, на Си. Так и память меньше естся и прога легче работает. Это особенно важно, для программ которые применяются в командной строке. Только необходимое и ничего лишнего.
Из любопытства, я листал некоторые исходники стандартных программ для командной строки и могу сказать, что народ не сильно увлекался в применении всех возможностей языка Си++, а применял только необходимое. И это, не просто профессионализм, а чисто практичный подход, в котором не видется смысл все усложнять, ради понтов. Яркий тому пример, язык Питон. Он удобен, якобы практичен, но насколько медленно работает, когда применяешь на Linux Mint рабочий стол Cinnamon. Около 1 секунды пролетает время, прежде чем появится пуск-меню, при этом комп не нагружен. А все, что на языке Си++/Си написано работает моментально, за доли 1 секунды. При этом, на языке Си/Си++ эта всегда завершенный программный элемент, который может быть еще одним инструментом для командной строки в виде еще одной команды. С этой позиции мы и будем рассматривать практическую сторону изучения языка Си/Си++ в данном цикле статей.
Полагаю, я сделал немного сумбурный, но слегка понятный заход, что не стоит смотреть на девятый этаж девятиэтажного дома, достаточно поднять на два этажа, а там посмотрим, будем ли брать за другие. Ведь, каждый выбирает свой уровень владения языком программирования, сам.
С вами, был Мирра Андрюхан, приятных вам раздумий на тему браться/не браться за изучение Си/Си++.