Сначала я расстроился. Как же так? Опыт длительный. Начинал еще с ЕС ЭВМ. Масса сменяющей друг друга техники прошло через мои руки, разные системы, языки — и я вдруг «ничего не понимаю». Потом призадумался.
А что, вообще, означает «программист»? Естественно, человек, который пишет программы. От последнего слова и возник этот термин. Но сейчас в него вкладывают несколько более широкое понятие. Программистами называют и системщиков, и сетевиков, и администраторов. Сами они программы не пишут, но программистами считаются. А программирование управляющих программ для станков с числовым программным управлением?
Вернемся к истокам, когда вычислительная техника делала только первые шаги. Не было языков высокого уровня. Мизерная память, и всегда недостаточно места. Программы писались в машинных кодах. Гораздо позже появился язык ассемблера, приближенный к этим кодам, но уже язык! Более легкий для понимания и требующий транслятора в эти коды. Когорта программистов резко расширилась. Знание кодов конкретной машины перестало быть актуальным, а работа с ними из ранга искусства превратилась в ненужный хлам.
Новый виток ознаменовался появлением языков высокого уровня. Они требовали больше памяти и места, но то и другое было уже в избытке. Я помню, как сам возился с операторами ассемблера, выискивая, как бы сократить память хотя бы на несколько байтов. За скорость тоже шла непрерывная борьба. И за место. Ох, уж это место на диске! Приходилось удалять все лишнее и не только, чтобы отладить новую программу.
Еще один душещипательный фактор всплывает в памяти. Машинное время. Мы за него дрались! Образно выражаясь, конечно. Эра персональных компьютеров начисто ликвидировала эту проблему.
Но, стоп! Я увлекся. Не лекцию о развитии техники я читаю. Главная мысль в том, что никакая наука, никакое производство так стремительно не прогрессировало, как компьютеры. Математика, к примеру, — наука вечная. Ряды Фурье, какими они были век назад, такими и остались. Значения синуса тридцати градусов не изменится и через столетия. А вычислительные машины… Их представить себе невозможно даже через двадцать лет. В фантастических романах тридцатилетней давности ЭВМ описывались огромными с необозримым количеством проводов, кабелей и кнопок. Разве такие сейчас ноутбуки с беспроводным выходом в Интернет?
Менялась техника, системы, менялись и языки программирования, приемы и подходы. И все это на протяжении одного инженерного поколения, которое еще, кстати, вполне активное. Переход всего лишь на новую версию Windows требует определенного приспособления и на определенное время замедляет работу. А что можно сказать о шифровальщике машинных кодов, перепрыгни он из своего времени в наше? Многое, конечно, он счел бы более удобным, простым, даже фантастически легким, но не сразу. Нужно время для адаптации. И смог бы он быстро освоить современное программирование? Весь его опыт сводился к самой сложной для того времени проблеме: составить машинные коды и заставить их работать. А тут совершенно другая идеология!
Точно так же при любом качественном скачке программист предыдущего уровня может растеряться на следующем, не сразу понять его и даже не стать осваивать, всеми силами цепляясь за знакомое и понятное. А скачков было достаточно.
Много времени и сил я отдал операторному программированию. Когда стало преобладать обьектно-ориентированное, мне тяжело было в него вникнуть. Надо было взглянуть на все с непривычной точки зрения. Помню, как молодые специалисты, которых вскормили новым подходом еще на институтской скамье, легко ориентировались в классах, объектах и их свойствах. Связать же два оператора им было трудно. Они сразу начинали искать уже написанный где-то компонент, чтобы быстро присоединить его к программе. Я же в то время — наоборот: мог элементарно создать сто операторов, но не видел, как найти всего лишь одну команду, заменяющую добрую половину из них. Возникает ассоциация с кульманом. Конструктора, создающие сложные чертежи, в свое время не видели больше ничего, кроме хорошего карандаша, ластика и исправного кульмана. Когда появилась возможность делать все на компьютере, многие из них испугались да так и не перешли на новые рельсы. Легкость проектирования чертежа виртуально — без бумаги и кульмана — не всеми была понята.
Качественным скачком было появление персональных компьютеров. Потом переход к многооконному режиму. До сих пор сменяют друг друга системы Windows. Самым изумительным явлением и скачком в развитии стало появление Интернета. Когда с Запада хлынули готовые программные системы, собственное программирование оказалось в загоне. Многие разработки были переведены еще с нашей собственной неуклюжей техники и имели старую идеологию. Развиться они просто не успели. Готовые иностранные системы имели отличный интерфейс и решали нужные нам проблемы. Поэтому многие программисты стали переквалифицироваться в пользователей новых систем. Свое писать оказалось не нужно.
Появление Интернета снова потребовало создания программ — программ для мировой Сети. Программисты сейчас там востребованы. Но требуется новый уровень знаний и умения. Появилось множество языков web-программирования. И каждый из них требует скрупулезного освоения. Зачастую программист с большим опытом оказывается в ситуации: могу, хочу, но нужно освоить. Вот и получается, что он вдруг не подготовлен и ничего не может сразу сделать. И все это из-за быстроты сменяемых декораций. Программист как бы едет в привычном поезде, где все до боли знакомо. А за окном мимо проносятся новые экспрессы. Скоро поезд устареет, а как взять билет на экспресс?
Меня не раз посещала мысль, что несколько последних лет развитие техники идет вперед большими прогрессивными шагами. Но это наращивается количество. Наращивается удобно, хорошо. А впереди предстоит новый качественный скачок. Возможно, он настолько изменит наши подходы и к технике и к программированию, что мы пока этого себе даже не представляем. Вероятно, где-то уже идет зарождение нового, но оно еще не приобрело законченные формы.
Какими же будут компьютеры всего через десять лет?