(Dmitriy40)
А они точно нужны, новые языки?
Ну, что не вредно, то может быть и полезным. Так что пускай. Приток новых языков нужен хотя бы для того, чтобы выделенность* недостаточно в конечном счёте удобных не была чересчур долгой. Вообще, пока нет консенсуса по поводу того, содержит ли пул языков что-то близкое к идеалу (и что), или что он не будет никогда содержать ничего существенно лучшего, чем имеющееся сейчас, я бы не предлагал останавливаться.
* Сначала хотел написать «популярность», но это явно не было бы понято как надо. Имеется в виду некоторая комбинация следующих вещей. (1) Бо́льшая поддержка третьими лицами. Типа того, что JS есть в браузерах и де-факто единственная альтернатива скриптам в браузере, а PHP был(/есть?) часто единственный поддерживаемый серверный язык у хостеров, не дающих пользователю сразу виртуальный сервер, где бы он себе сам ставил что хочет. (2) Просто старый код, который проще поддерживать, плача и колясь, чем заменить этот кактус чем-то более приятным. (3) Наверняка ещё что-то забыл. • В результатах опросов и сборов статистики SE подобные языки входят в категорию «dreaded».И хотя я сам сторонних более жёстких систем, но сильно раздражает необходимость для функции из пяти строк ещё несколькими десятками (а то и сотнями) описывать типизацию и преобразования типов (ну утрирую немного).
Кажется, весьма сильно.
Не могу представить частых случаев, где описание типа (если только компилятор или хороший тон его точно требуют) было бы (в токенах ли, символах) больше кода раза хотя бы в три, кроме случаев специализации какой-нибудь чересчур общей функции. Если хотите, приведите пример (наверно, в ЛС), интересно.
По мере развития технологий мне кажется система типов ослабляется и сложность уходит/переносится в runtime, благо доступные скорость и память это часто позволяют.
Ой сильно не уверен. Ни в том, что ослабляется, ни в том, что в рантайм нужно переносить проверки, которые возможны статически. Статическая проверка лучше локализует ошибки в коде, а в рантайме труднее уследить, где могла быть настоящая причина (пример: проверка определённой инициализации переменной vs. исключение, если переменной ничего к моменту использования не присвоили) (я знаю, что обычно приходится сочетать первое со вторым, потому что трудно сделать статическую проверку совсем уж умной, но лучше так — и с обязательной пометкой переменной как
late, притом
тогда и только тогда, когда статическая проверка не срабатывает — чем вообще никак). Или можно статически проверять дизъюнктность альтернатив в
switch (это позволяет их переставлять или, например, запретить бессмысленный в таком случае блок
else/
default; кроме того, при расширении числа альтернатив (допустим, это тип-перечисление) свитчи сломаются во всех тех местах, где их надо после этого по логике обновить). Я практически полностью уверен, что пользу статических проверок нельзя переоценить — и как раз половина этих проверок опирается на информацию, связанную с типами.
Потому если строить прогнозы, то скорее в сторону дальнейшего приближения типизации к естественной/произвольной.
Это не обязательно несовместимо со строгостью и статичностью.
Кстати, контракты кода я тоже поддерживаю, просто это информация на грани типов. А когда кстати есть хороший солвер — а они развиваются сейчас весьма — вообще ой-ой…
А здесь речь скорее о всей индустрии разработки новых программ, где программисты уже не единственное самое важное звено.
А, ну если говорить об этом, так это ведь уже очень давно, и программисты не вымерли. И не должны — равновесие-то динамическое, а разделение труда тоже самое обычное человеческое, и не должен сферический программист быть лицом программы, разрабатываемой десятком и более человек. Ну, иногда люди выступают во множестве ролей несмотря на разделение непосредственно вокруг (а не потому, что команда состоит из этого единственного человека), но это тоже не новость.