Еще лет пять назад, увидев вот такую тему на форуме – Будущее программирования - обсудим? – я бы с ходу достал шашку и пошел бы рубиться до потери пульса. Но сейчас я стал старый, ленивый. Просмотрел краем глаза оригинал упомянутой в теме статьи и с горечью обнаружил, что уже не цепляет. Не хочется ни спорить, ни опровергать, ни предлагать собственного видения будущего. Годы берут свое, однако :(
Ну а поскольку старческий маразм начинает маячить на горизонте, то уже можно и побрюзжать на молодежь с их оптимистично-фантастическим взглядом в будущее ;)
Во-первых, раздражает вера в то, что что-то можно тщательно спроектировать и хорошо придумать. Мол, код нужно хранить не в тексте, и даже не в (бинарном-)XML, а в реляционной СУБД. И если тщательно разработать соответствующий язык запросов… Откуда возьмется это “тщательно”, кто это сделает? Производство ПО – это производство, это не наука, в которой доказательство гипотезы Пуанкаре можно искать десятилетиями. В производстве любое работающее решение – это компромисс между желаемым и возможным, да еще и найденный в жестких временных рамках. И таки да, промышленно используемые языки программирования (Cobol, Fortran, C, C++, Java, C#, Perl, Ruby и пр.), страдающие целыми кучами болезней, – это как раз иллюстрация данного факта.
Во-вторых, раздражает нежелание адекватно воспринимать окружающий мир и отталкиваться от объективной реальности. История показала, что текстовое представление программ оказалось самым живучим. Не смотря на многочисленные попытки перейти от этого представления к какому-нибудь другому. По мне, так это объективный факт. Такой же, как восход Солнца на Востоке, а не на Юге. Тем не менее, не переводятся горячие головы, которые думают, что если “тщательно” подумать, то можно создать новую объективную реальность и заставить весь мир отказаться от хранения кода программ в текстовых файлах. Собственно, такое нежелание воспринимать реальность объективно проявляется не только по отношению к текстовым файлам, но и в других вопросах. Просто текстовые файлы – это очень яркий и показательный пример.
В-третьих, раздражает недооценка временности временных решений. Мол, сейчас временно есть зоопарк Web-программирования: сервер-сайд (JSP, ASP, etc) + клиент-сайд (JavaScript) + презентация (HTML, CSS). И это плохо. Но это временно, потом все будет хорошо. Или вот C++ – это плохо, это ужасный язык, он должен исчезнуть. Но временно пусть будет, а потом придет Java и все будет хорошо.
Не будет. Нет ничего более долговременного, чем временное ;)
В-четвертых, раздражает непонимание того факта, что завтрашнее будущее программирования определяется вовсе не тем, что сегодня выдумывают ученые в области computer science. Т.е. то, чем обычный разработчик будет заниматься, зависит не от сегодняшнего state of the art, а от того, на чем начали писать очередную промышленную систему вчера, если не позавчера.
Каждый день пишется все больше и больше кода. Но пишется на языках, которые применяются уже не один год – на Java, на C#, на JavaScript, на C++ и даже на Cobol. И именно это определяет ближайшее будущее. По двум простым причинам:
1. Написанный сегодня код нужно будет дописывать завтра. Поэтому раз на JavaScript пишут сейчас, то на нем будут писать и завтра.
2. Программируя на конкретном языке разработчик получает опыт и наработки, которые он не захочет просто так взять и выбросить. Поэтому, если Вася Пупкин писал на JavaScript сегодня, то он продолжит писать на JavaScript и завтра. Потому что умеет, потому, что у него есть багаж знаний. Этот же принцип работает и по отношению к компаниям, которые производят ПО. Если у конторы есть N миллионов строк на Java, которые можно переиспользовать в новых продуктах, то контора завтра будет писать на Java, переиспользуя эти N миллионов строк, а не переписывая их на каком-нибудь Haskell-е.
Повторюсь еще раз – тот факт, что с каждым днем производится все больше и больше кода (возможно, лавинообразно больше), и именно этот код будет определять ближайшее будущее – сей факт сильно недооценивается предсказателями будущего.
Ну и, в-пятых, мне фиолетово, какое будет будущее у программирования. Изменения в нем происходят не мгновенно, а поступательно. Поэтому в наличии будет достаточно времени, чтобы перестроится.