С++ — «латинский» XXI века

I’m going back to ones and zeros.
(You had ones? Lucky bastard! All we got were zeros.)
The Perils of Java Schools by Joel Spolsky, Thursday, December 29, 2005

 
Я возвращаюсь назад к нулям и единицам.
(У тебя есть единицы? Везучий отморозок! У нас были только нули.)
Опасности Java школ. Джоэл Спольски, четверг, 29 декабря 2005

Все чаще и чаще, в разговорах бывалых возникает тема — «программисты скоро вымрут, и останутся дизайнеры программного обеспечения».

Действительно, мы убиваем времени, на анализ достоинств и недостатков высокоуровневых технологий таких, как .NET, Java, Component Object Model (COM), Remote Method Invocation (RMI), использование eXtensible Markup Language, Ruby on Rails. Мы читаем, обсуждаем и выслушиваем противоречивые мнения, так называемых, «авторитетных экспертов», западаем на красивые бренды, товарные марки и загадочные, а потому привлекательные, аббревиатуры COM, RMI, XML. Мы непродуктивно тратим время на знакомство, осмысление и изучение современных инструментальных средств — Microsoft Studio с её Visual C++, C#, Basic и прочее Visual, которое придумывают в Microsoft. Borland Development Studio RAD, JBuilder и Netbeans, JBoss, технология J2EE, и этот ряд можно продолжать и продолжать. В мишуре красивых маркетинговых этикеток графического пользовательского интерфейса, тысяч и тысяч символов программного кода описания классов, мы забываем о главном — все это, имеет смысл при наличии одного маленького кристаллика кремния, который называется процессором и, кроме того, как просто двигать байты с дозволенной ему частотой, делать он ничего не может. Не смотря на впечатляющие достижения электроники последнего десятилетия, несмотря на появление процессоров, названия которых предваряют Dual- или Quad- с намеком на параллелизм выполняемых инструкций, на ГГц тактовой частоты, по сути своей, современнейший процессор в части исполнения кода основан на фундаментальных принципах Джона фон Неймана (англ. — John von Neumann, нем. — Johаnn von Neumann).

Допустим, Вы — начинающий программист. Вы уже успели написать несколько программ, казалось бы, научились использовать одну из инструментальных систем, например, Turbo C++, JBoss или Delphi, естественно, в операционной системе Windows. Ваши приложения работают, выглядят более-менее, имеют красивые иконки, окна, кнопки, таблицы и прочие «прибамбасы». Но, во время компиляции, Вы обращали внимание на количество транслированных строчек исходного кода? — Это не те десятки, которые принадлежат Вашим мозгам и пальцам, а десятки и сотни тысяч, которые написали разработчики инструментальной среды. Обратите внимание на размер исполняемой программы (в Windows, как правило, это файл с расширением .exe) — сотни килобайт или, даже, мегабайты, а не те 5-6 десятков килобайт, которые занимает файл с Вашим кодом. Как такое может быть?

Между Вашей программой и центральным процессором огромный труд других программистов Code Gear, Sun Microsystems или Microsoft по организации графического интерфейса и управлению отображением на экране, обработки клавиатуры, диспетчеризации процессов, распределение памяти и прочее, прочее. При этом, все продавцы инструментальных средств пытаются убедить Вас, что это Вы управляете вычислительным процессом. Попробуйте перенести Ваш исполняемый файл на машину с операционной системой Linux или, что ещё более жестко, на другую аппаратную платформу и не предпринять мер по устранению несовместимости — Ваша программа не будет работать.

Поэтому, забудем на некоторое время «красивости» интегрированных систем программирования RAD (Rapid Application Development — концепция создания средств разработки программных продуктов) и вернемся к основам — битам и байтам. Зачем всё это? — спросите Вы.

К сожалению, сегодня, ситуация с изучением программирования напоминает попытки построить небоскрёб на песке, без фундамента скреплённого цементом и выдержанного месяцами и годами закалки. Вас пытаются научить комбинировать готовые конструкций (Borland Builder C++ — дословно, Borland’овский строитель С++). В результате, программа выглядит красиво, однако, шатается и обязательно когда-то рухнет, а главное, никогда не поднимется высоко.

Принимая курсовые проекты у своих студентов, незадачливо считающих себя «крутыми программерами», на спор, в течение 20-30 секунд мне удаётся «уронить» их выстраданные «шедевры», элементарно, использую некорректные значения в полях ввода. Для многих шок, когда в результате выполнения функции API Windows размер тома на жестком диске объёмом больше 4Гб получается отрицательным. В завершении экзекуции, требование объяснить сообщение времени исполнения программы С++:

Access violation at address 406EE288 in module ‘bdertl60.bpl’. Read of address 00000000

сразу снимает вопрос о положительной оценке и ауру «крутизны».

Современное программное обеспечение напоминает русскую матрёшку. Самая большая кукла — архитектура, вроде, .NET, кукла поменьше — средства реализации, типа, Java или платформа Windows, ещё меньше DLL’ки, объекты, методы, наконец, строчки кода, но до бита процессора еще далеко… Во время обучения такая матрешка очень хорошо скрывает суть управления вычислительной системой, т.е. скрывает то, в чём и состоит суть программирования. Однако, искушение воспользоваться современными возможностями инструментальных средств велико. Но, помните, что если Вы получили права в нашем ГИБДД, то это ещё не значит, что Вы умеете ездить на машине и, надеюсь, у Вас хватить ума не садиться за руль Формулы 1. Так какого черта Вы садитесь «за руль» очередной Studio. не понимая что такое машинное слово, SP, PSW, PC в процессоре?

Во времена А.С. Пушкина все лицеисты и гимназисты изучали «мертвый» латинский язык. Никто на нем не говорил в России XIX века, но грамотные люди его знали. Латинский язык в те времена — это строгость мысли и дисциплина ума, основа большинства европейских языков. Выходя из своей семьи в мир, ребенок понимал, что не только семейные устои ценны, а есть иные устои, отличные от домашних, иные принципы мышления и способы выражения мысли.

В эпоху информационных технологий заменой латинскому становятся языки программирования, позволяющие напрямую «разговаривать» с машинами. Почему С++? Да, потому, что классика передовой технологии общения с ЭВМ, удобный способ моделирования мира — объектно-ориентированного программирования (ООП). Да, потому, что С++ не оглупляет, как Basic и не путает, как ADA. Конечно, Pascal общепризнан в качестве учебного, но уж слишком частого нажатия клавиш он требует. В С++ любой алгоритм более лаконичен и изящен.

Надеюсь, что знания С++ позволят Вам настроить свои мозги на точность выражения мыслей. Надеюсь, Вы скоро убедитесь, что на С++ можно «рассказывать» о решении любых задач, не только информационных и математических …

Мистер Твикс, если у Вас план? — Если у меня план, если у меня план …

А план наш будет таков:
1) Ознакомьтесь с теоретическими материалами 2-х файлов; и не просто ознакомьтесь, а изучите внимательно, пытаясь понять суть обсуждаемых вопросов;
2) Если Вы, действительно хотите научиться, то самостоятельно, именно самостоятельно, проработайте все контрольные вопросы, именно проработайте, т.е. решите на бумаге все задачи и только потом
3) Выполните лабораторные работы с использованием методического пособия …;
4) Самостоятельно выполните практические задания;
5) Вышлите результаты своей работы по адресу is.algorithms@gmail.com
6) Получив в ответ комментарии, проработайте их. И, если замечания существенны, выполните исправления — работа над ошибками.

ПОМНИТЕ! Во время обучения ОШИБКИ НЕИЗБЕЖНЫ. Поэтому, самая большая глупость в это время — их стесняться. Глупых вопросов не бывает — человек не в состоянии знать все. Поэтому, задавайте любые вопросы.

Все материалы находятся в папке /Занятие 1.
Кроме того, не будем искушаться последними инструментальными средствами, и используем среду программирования Borland C++ 3.0 для операционной системы DOS, которая успешно работает под Windows любой версии. Дистрибутив этой среды находится в папке … Просто, установите эту системы. О том, как работать в этой среде прочитайте в документации http://www….

CC BY-NC 4.0 С++ — «латинский» XXI века, опубликовано waksoft, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.


Респект и уважуха

Добавить комментарий