Евангелисты вместо бухгалтеров

DesignerHipster.com
DesignerHipster.com

Я пишу в основном из желания поучаствовать в дискуссии, развернувшейся вокруг статьи «Доказательное программирование». Форма статьи была выбрана автором иронично-саркастическая, «первоапрельская», а вопросы затронуты, как мне кажется, очень даже серьёзные и важные, требующие долгого и обстоятельного комментария. С другой стороны, @wetnose «всё сказал», и вторгаться в его личное пространство после этого я не хочу. Поэтому − отдельная статья.

И всё-таки почему программисты постоянно создают новые языки программирования? Почему они так много внимания уделяют выбору языка? Существуют ли объективные критерии превосходства одного языка над другим?

(Кстати, другой важный вопрос, затронутый в статье − этично ли удовлетворять личное любопытство за счёт клиента, и нужен ли программистам свой кодекс профессиональной этики − я не хочу затрагивать. Если что, то на него отвечает дядюшка Боб в своей программной статье “The Programmer's Oath”. Видео.)

Эта тема периодически всплывала и раньше, например, при обсуждении индекса TIOBE. Но здесь я вижу признаки того, что дискуссия имеет шанс перейти в конструктивное русло:

Зачем усложнять, когда всё просто?!

«Выживают» те ЯП, которые приносят большую прибыль.

Конечно, насчёт «большей прибыли» − это чрезмерное обобщение, вроде «в программах на Rust нет ошибок». Но комментарий при этом содержит одну рациональную мысль: нельзя рассматривать индустрию программирования как «вещь в себе», исключая различные влияния извне. А что в наибольшей степени влияет на индустрию в период становления?

Финансы, конечно же.

Какими были 1990-е годы для бизнеса? Постиндустриальный уклад уже давал о себе знать возрастанием роли информационного обмена и снижением доли промышленного производства в экономике ведущих наций. Но крупным бизнесом ещё управляло поколение с индустриальным складом ума, которое привыкло иметь дело с материальной собственностью, с конкретным продуктом. Приобретение компьютеров вполне укладывалось в их образ мышления − примерно как приобретение станков и инструментов, но программы?…

Чтобы подписать топ-менеджера индустриальной эры на приобретение дорогого софта или участие в разработке ин-хаус, нужно было найти соответствующие аналогии в понятиях той эры. Поэтому с чьей-то лёгкой руки программы, перестав быть бесплатным приложением к компьютеру, стали считаться основными средствами. Можно купить лицензию и поставить на баланс, получив разовый налоговый вычет. Можно затратить N человеко-лет на разработку методом «Водопад», потом ввести в эксплуатацию и начать списывать амортизацию. Как будто программа − это сложная машина или здание. Как будто.

Java, несомненно − продукт этой переходной эпохи. Каждая её фича внушает высшему менеджменту уверенность в завтрашнем дне. Си-подобный синтаксис гарантирует, что ваши предыдущие вложения в обучение работников защищены. Виртуальная машина позволит в будущем обновлять компьютеры без дополнительных затрат на адаптацию программ. Спецификация стандартизована ISO, что обеспечивает независимость от вендора. Производительность, безопасность, гарантия обратной совместимости и другие баззворды конца 90-х тоже нашли своё место в маркетинге Sun. Java просто не могла не стать успешной с таким высочайшим уровнем соответствия запросам потребителя.

Прошло ни много ни мало − четверть века, и оказалось, что потребителю было нужно не то, что он хотел.

Несмотря на современность и перспективность, программы оказались очень рискованным вложением по сравнению со зданиями и станками. Можно купить лицензию и недооценить или провалить внедрение. Или затратить средства на разработку и не получить работоспособного продукта. Или оказаться жертвой патентного тролля. Или…

Другая причина того, что бизнес изменил отношение к программам − это их неизбежное устаревание, которое было здорово недооценено в 1990-х. Я не хочу здесь огульно хаять Java. Устаревание программ связано с разными факторами, и Java отлично позаботилась о многих из них в рамках стратегии “Write Once Run Anywhere”. Например, о закрытии уязвимостей, о поддержке новых операционных систем. Но с главным фактором устаревания программ − изменением требований − Sun ничего поделать не могла: этот фактор лежит целиком за пределами программной индустрии и совершенно ей неподконтролен.

А ещё за эти 25 лет внутри программной индустрии успела вырасти и набрать вес отдельная категория программ − программы со свободным и открытым кодом. Я лично затрудняюсь сказать, был ли успех FOSS следствием переоценки бизнесом отношения к программной отрасли, или же, наоборот, одной из причин этой переоценки. Факт в том, что если в отношении покупного или внутреннего ПО предприятие может выбирать, что с ним сделать − поставить на учёт как основное средство или списать на операционные расходы, то любая модификация, доработка, внедрение открытого ПО − это операционные расходы и только они.

Итак, бизнес не относится больше к софту как к материальному объекту, который, будучи однажды произведён (закуплен), должен оправдать свою стоимость за определённый период. Средства на разработку (продление подписки) просто списываются по мере необходимости. Что это значит для программной индустрии? Разумеется, программист по-прежнему должен минимизировать расходы на производство программ и вместе с тем повышать их качество. Однако требования к инструментам изменились.

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

Важнейшими требованиями, предъявляемыми к языку, теперь являются:

С учётом всего вышесказанного неудивительно, что новые стандарты не создаются, а старые − загнивают. И что рейтинги языков программирования выглядят так, как выглядят. И спрос на рынке труда, и средние зарплаты формируются именно таким образом.

А если вам кажется, что произошёл сбой в матрице, и происходящее в индустрии нелогично и неверно, то бывает достаточно подняться в размышлениях на уровень выше, чтобы вернуть себе спокойствие и уверенность в завтрашнем дне.

@Tanner
03.04.2021 21:20 UTC
Первоисточник

Комментарии

@
03.04.2021 19:24 UTC
0
НЛО прилетело и опубликовало эту надпись здесь
@Tanner
03.04.2021 19:44 UTC
0
Я подумал про Smalltalk, хотя Джаве от него не так уж много досталось в наследство.
@sotland
04.04.2021 08:46 UTC
0

Полагаю когда увидим ответ, то не согласимся ))

@Hu3yP7
04.04.2021 13:50 UTC
0

А зачем вам нужны анимешники вместо бухгалтеров?

@vladob
04.04.2021 21:40 UTC
+2

Анимешники не спрашивают, нужны ли они кому-то. Сами приходят.

@Win08
06.04.2021 13:29 UTC
0
Лаконичность, проста, читаемость...

Можно выбрать только два одно из трех...

@Tanner
06.04.2021 19:46 UTC
0
Даже если бы это было так, то одно − это лучше, чем ничего.
@overmes
11.04.2021 16:34 UTC
0

Ммм… Не лежит ли ответ на поверхности?
Причина — текущие языки не решали имеющуюся проблему
Зачем был сделан джаваскрипт? Чтобы работать в браузере.
Джава для кросс платформенности
C++ си с классамм
Питон для борьбы со скобками
Голанг для скорости и сборщика мусора
Раст для безопасности
Котлин против null pointer error
И тд и тп
Для PHP можете ответить сами ;)
Typescript ^^ некоторые имеют ответ в названии

@Tanner
11.04.2021 21:05 UTC
0
Это может быть до некоторой степени справедливо. Примитивно, но смысл ясен. Однако это не объясняет, почему вдруг, в один прекрасный день «борьба со скобками» для индустрии стала важнее «кроссплатформенности».
11.04.2021 23:52 UTC
0

Почему одни машины популярнее других?
Часть реальных заслуг, часть красота, часть технические свойства, часть хайпа, часть поддержка (библиотеки), часть что это имеется в магазине в необходимом количестве.


Все могут доставить вас из пункта А в пункт Б

12.04.2021 00:47 UTC
0
Отрицание существования ответа − это не ответ.
12.04.2021 00:54 UTC
0

Если в мире все бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл?