да, давно. Помню, рисовал поточечно планеты на паскале в году так 95 на том еще медленном железе. Мгновенно так работало… Видимо что-то изменилось? ))
В любом случае — предварительная оптимизация — это зло. Я не имею ничего против решения со сдвигом в данном случае, т.к. оно может упростить код и дело не в оптимизации.
В задании не было ничего о плавности движения фигур. Цикл из миллиона проходит быстро.
Даже решение, которое с клетками (без сдвига), где все клетки пересчитывается, легко оптимизируется, не меняя структуры кода. Например, в изолированном участке кода, где цикл по клеткам, меняем цикл, который уже не бегает по всему полю, а бегает только по сохраненным в какой-то структуре клеткам. Очевидно, что при перерисовке в следующий раз будут меняться только клетки справа. Их можно сохранить.
И еще можно оптимизировать. Но это будет потом.
Да и сдвигать тоже можно всю картинку. Если так будет код проще. Заранее же думать об оптимизации вредно.
А напрашиваться должно после замеров и неудовлетворительной работы.
Всё, что напрашивается «до» — и есть предварительная оптимизация.
А вообще, не удивляет Вас самих желание здесь оптимизировать? Какие большие M и N Вы представляете? Вроде ж не программы не для ламповых калькуляторов.
Задача искусственного интеллекта точно такова же — предположить, что изменилось, по ограниченному набору выявленных признаков сходства/различия.
Только вопрос, как?
Здесь не нужна математическая точность. Люди тоже ошибаются, путая близнецов и не узнавая одного и того же человека.
Для машины, пока не будет критериев близости, одинаково различны два близнеца, и Мерлин Монро с Морганом Фрименом. Они просто различны. Вот, был бы фокус, который мог бы сказать, что эти двое совсем чуть чуть отличаются — можно было бы классифицировать.
Есть набор относительных признаков, инвариантных к направлению, расстоянию и положению предметов в пространстве.
Это уже не ИИ. Это вы уже зашиваете как вы определяете близость. Например, можно по количеству признаков совпавших ко всем, так как будто они имеют одинаковое значение. Но тогда, чтобы зрительные образы уметь как-то сравнивать, появляется:
Если правильно выделить фазовое пространство, классификатор его правильно классифицирует.
Вот это «если правильно выделить». Для этого «правильно» придется писать руками почти весь зрительный интеллект, а представленному алгоритму только указать пальцем на ответ остается.
Т.е. ваш алгоритм сам по себе не сможет быть классификатором зрительных образов. Ему придется помогать и бОльшую часть задачи решить руками (проекции, сведение к единому размеру и т.д.). Мало того, он с количеством признаков будет тоже как-то так плоховато разбираться, придется ему еще чем-то помочь.
Не думаю, что должно. У каждой строки кода должна быть какая-то необходимость.
Это не алгоритмический трюк. Никто не мешает создать класс клетки и привести код в порядок: разделить отображение от модели, модель будет представляться либо классом «доской», либо клеткой. Каждая клетка будет иметь метод — соседи, опрашивать их и находить цвет. Хотя это тоже может стать оверинженирингом. Но я пишу в том смысле, что представление задачи не заставляет писать не в ООП-стиле. Классы не обязаны моделировать наши представления о мире, если эти представления выходят за рамки задачи.
Но что это такое? Кроме того, что причина не опережает следствие, сказать просто так об этом ничего нельзя.
Вы считаете, что вероятность появления символа на первом уровне зависит от предыдущих символов независимо. Второе, из описания, я так понял, вы полагаетесь на шаг. Это слишком сильные допущения. Интуиция подсказывает, что зависимости могут быть сложнее. Например, распознавание образов, где есть подобие, а не четкое соответствие размерам, такой интеллект вряд ли чему-то научится.
С пониманием текста должно быть где-то то же самое. Т.к. смысл написанного — это не текст, а те же нечеткие представления (нетекстовые). Для какой-то классификации/кластеризации текстов может быть подойдет. Марковские цепи иногда используют.
Исходя из задачи, скорее всего будет лишним код с инкапсуляцией волны. Потому как цвет клетки при следующей итерации перерисовки однозначно определяется цветами клеток вокруг. Для такой поставленной задачи экземпляры волн не нужны. Ни хранить их, ни знать количество.
Но если кто-то удумает перерисовывать не все клетки, то объекты волн могут помочь.
Самое интересное — как определять близость, т.е. схожесть объектов. Зашить изначально — тогда обычная задача машинного обучения, которая будет решать только определенные задачи.
Тут, есть некоторое «лукавство», как я понял:
Представление основано на повторяемости признаков.
И каким образом можно сказать, что признак повторился? Как можно сказать, что этот новый признак — квадрат — появился снова? Если он похож на те другие квадраты, то мы уже знаем, что он похож, т.е. уже имеем представления о схожести этих объектов и поэтому уже нет смысла выводить представление. Близость — это та субъективная штука, которая непонятно как самопроизвольно в мозгу и появляется.
В мире нет вообще одинаковых объектов. Если вас спросят, различаются ли два объекта, можете смело всегда говорить «да». Они различаются, как минимум, координатами. А вот, если спрашивают «насколько отличаются», вот здесь и сложность. Точные науки занимаются как раз измерениями — числами, говорящими «насколько отличаются». Уникальность снежинок — это для гуманитариев. Т.е. на единственно идентичности интеллект не построишь.
В цифровом мире два объекта могут быть идентичными. Вы думаете, что сможет такой интеллект на идентично повторяющихся признаках делать сложные выводы?
А где здесь, собственно, ИИ? Описание возможности кластеризации в виде дерева. Не новое.
Возможности — потому что не указано, как определяется близость между признаками и т.д. выше по дереву. Как у такого интеллекта родится представление о квадратном и круглом объекте?
К сожалению, такие «крутейшие кодеры» являются крутейшими только в своем воображении и в обществе таких же недалеких кодеров.
Математика однозначно мозг развивает. А те, крутейшие кодеры, не могут решить элементарные задачи (закодить), как только они хоть немного отличаются от быдлозадачи.
К сожалению, среди программистов уже появилась целая идеология невежества. Некоторые их утверждения:
«Книги читают только дураки, нам хватает гугла/обзоров/статей» (очень глубокие знания оттуда получают)
«Математика нам не нужна» (программирования — прикладная математика. А математика не нужна тому, кто ее не знает, потому как ему никто в здравом уме и не поручит сложные задачи)
и т.д.
В сумме, потерь энергии не будет, если не учитывать «электромагнитное излучение» от «незначительно тормозиться» и «незначительно разгоняться». Когда машут магнитом, свет не появляется. Это надо неплохо им трясти.
Чтобы представить процесс потерь, можно подумать вот про это:Клетка Фарадея. Сделать электромагнитную защиту, чтобы эти волны не уходили в пространство. Тогда, они будут поглощаться материалом, в нем будут появляться индукционные токи. Так потери здесь будут ровно такие, насколько будет от токов нагреваться материал.
А магнитные поля друг на друга не действуют. И не трутся. Принцип суперпозиции называется. Они даже не разные, это всё одно поле, которое для удобства раскладывается на составляющие.
путаете. Нечему там тереться. Поле не входит в другое поле. Кроме отталкивания или притяжения тел, поля друг на друга никак не влияют.
Электромагнитное излучение может появиться при движении магнита. Даже если он один и ни в какое другое поле не входит. Допустим, и на капсуле постоянный магнит и на стенках. Тот, что на стенках, никак не влияет на получаемое (вдруг) излучение движущейся капсулы.
Мало того, чтобы появилось электрическое поле из магнитного, капсула должна не просто двигаться, а двигаться с непостоянной скоростью (чтобы производная появилась). С ускорением, либо колебаться в пути. При этом, повторюсь, для этого процесса не имеет значения магнитное поле от постоянных магнитов, которые на стенках в трубе. Никакого трения там нет.
Я очень сомневаюсь, что этот эффект будет таким сильным и будет заметно отбирать энергию. Потом, его можно уменьшать.
Как это, магнитные поля трутся?
Если там будут электромагниты, то будет энергия тратиться на нагревание проводников. Также энергия может тратиться при движении, если будет создаваться изменяемое магнитное поле — на электромагнитное излучение. Я не в курсе, какое там устройство. Если висеть будет на постоянных магнитах и минимизируется излучение, никакая энергия теряться не будет. Энергия, потраченная на разгон, возвращается при торможении. Горизонтальное перемещение энергии не потребляет (перемещение, а не путь). Если конечная точка выше, то энергия тратится только на преодоление разницы высот. Но т.к. транспорт движется по кругу (на концах маршрута не будет транспорт накапливаться), то энергия возвращается.
Я физик по первому образованию. Обязывает…
Потом, это школьная программа. Видимо многие забыли. Теплообмен бывает трех видов: теплопроводность, конвекция, тепловое излучение.
А вообще, идея вакуумной трубы мне нравится. При всех составляющих, такой вид транспорта видится гораздо более безопасным, чем автомобиль, гораздо быстрее и гораздо экономнее. Теоретически в вакууме на магнитных подвесках энергия на перемещение равна нулю. Практически — энергия тратится на поддержание вакуума, на магниты. В общем, потери можно как-то уменьшать, приближаться к пределу.
Остается еще теплообмен излучением. Про абсолютный ноль — чушь, конечно. Если вакуум более менее чистый, то за бортом температура стенок трубы. Скорость теплообмена низкая
То же самое. С удовольствием прошел Lode Runner на эмуляторе. А еще был Клад.
Не верится, что в школе когда-то даже интерпретатор части РАЯ, черепашью графику, написал ) Даже слов таких, как «интерпретатор» тогда не знал.
У нас в школе был «стендовый». Клавиатура (это и весь комп) размером с полтора метра на пол. Никто на стену не вешал, лежал на столе.
А управленческое решение управляет чем, психологией?
Нет, вопрос шел именно про технические моменты. Скажем, покупка системы для технических нужд, без технической оценки — что покупают и зачем.
Правильный выбор или решение должно базироваться на трех составляющих: наличие интеллекта, наличие информации, наличие умений для обработки информации такого рода. А у нас в том то и дело, управленческий аппарат только и изучает психологию, мистику, гипноз, НЛП, астрологию.
Оценивать затраты ресурсов, возможные доходы — это хорошо, но если выполняется параллельно, а не вместо знающих проблему людей.
Мы чаще всего решаем технические задачи. Информация для выбора решений исходит из разработки.
В общем, как кажется, тех, которых я знаю (с десяток) — это некоторая обида по поводу зарплат, эгоцентризм. Аутсорс часто влияет, т.к. там заказчики часто платят за голову программиста.
Известно, что «работяге» меньше платят, т.к. он увлечен кодированием и:
1) реже меняет работу, значит реже повышают зп;
2) у него меньше шансов идти по карьерной лестнице, т.к. золотую курицу никто резать не будет. Сталкивался пару раз, как в менеджеры проектов выдвигали самых тупых программистов, т.к. толку от их кодирования было мало.
Вообще, возможно, это исходит действительно из нашего менталитета, менталитета бандитского, 90-х годов. Когда люди думают, что «решают вопросы» не те, которые имеют компетентность, а правильные люди, в бане, с девочками и водкой. Что работают «инженеры» узкого профиля, а решателям вопросов не надо даже знать что-то, не надо иметь представление о проблеме.
Это я описываю крайний психологический случай. Но мне это говорили даже прямым текстом. Вроде, технические специалисты в технических вопросах не должны участвовать в принятии решений. Они только реализовывают.
Этот стереотип так или иначе распространился среди всех. Даже если программист не думает такими категориями, я крайне мало видел людей, которые вообще думают о своей эффективности. Дошло до того, что даже в программировании большинство бредит некой «правильностью» построения архитектур, правильным процессом, который почему-то должен быть долгим, забрать кучу денег у заказчика, но он правильный и всё. Без вариантов и без денежных критериев. Тут на хабре периодически проскакивают статьи, какие мы стали толковые и умные, знаем уже как надо архитектурить, но заказчик нам не дает, всё хочет быстрее и дешевле. Странно, что он должен еще хотеть.
Я встречал довольно много таких программистов. В смысле: программист думает, что ему должны, просто так должны, за вымышленную квалификацию. Он совершенно не думает о деньгах, которые он приносит. Он думает, что просто за то, что он якобы знает, он может сидеть ровно, ничего не делать и зп ему ДОЛЖНЫ выше по рынку. При этом знания его, зачастую, вымышленные им самим.
Как-то проследил, почему это происходит. Происходит, если человек работал в аутсорсинговых компаниях. Средняя общая некомпетентность влияет также на прием на работу. Разработчикам кажется, что распределение зарплат несправедливое. И заметили, что тот, кто на собеседовании больше покажет свое эго, больше наглости, тот выбивает больше зп, а компетентность — дело пятое. У них складывается впечатление, что компания на них зарабатывает миллионы (утрирую), а им, даже при больших зп, платит копейки.
В итоге странное смещение. Когда разработчик даже в разы менее эффективнее (5-10 раз), в разы пишет больше багов, или даже вообще почти ничего не делает — он все равно ощущает себя правильным и ценным работником, не менее ценным, чем эффективный разработчик. Компания ему просто так должна, она и так у него деньги своровала. Если компания этого не понимает — есть другие.
Да, где-то и у меня такие эмоции.
Языки программирования — это всего-лишь языки и никому ничего не должны. Для каких-то задач отлично подходит запись системы уравнений, для других дифуры, для третьих С#. Язык еще один придумать не проблема. Проблема на нем писать. ООП простое, поэтому сравнительно легко писать. Какой-то динамический язык с динамическим наследованием и перенаследованием — только звучит необычно, а писать на нем будет жесть наверное.
В общем, дело не в языках, а в человеческом мышлении. Человек думает кучей разных моделей, каким-то непонятным образом. При передаче информации пользуется тоже многими вещами, начиная от рисунков, формул, заканчивая «клеем» — естественным языком. Который очень нечеткий. Программирование — это такой перевод его представления в языки программирования. Т.к. естественные языки и другие языки представления отличаются от языков программирования — будут ошибки.
Видимо, идеальный язык — это идеальный ИИ, который умеет и на естественном поговорить, и понять языки формул и вообще, давать наводящие вопросы, уточняя задание. Т.е. не язык, а интеллект, близкий к человеческому (хотя бы на уровне интерфейса с человеком), который может понять максимально близко, что человек хочет. Правда, когда такой ИИ будет, непонятно, зачем нужен человек. Оно и само будет не хуже принимать решения. И вероятность ошибки при передаче информации «человек-машина» всегда есть. А без человека не будет.
В любом случае — предварительная оптимизация — это зло. Я не имею ничего против решения со сдвигом в данном случае, т.к. оно может упростить код и дело не в оптимизации.
Даже решение, которое с клетками (без сдвига), где все клетки пересчитывается, легко оптимизируется, не меняя структуры кода. Например, в изолированном участке кода, где цикл по клеткам, меняем цикл, который уже не бегает по всему полю, а бегает только по сохраненным в какой-то структуре клеткам. Очевидно, что при перерисовке в следующий раз будут меняться только клетки справа. Их можно сохранить.
И еще можно оптимизировать. Но это будет потом.
Да и сдвигать тоже можно всю картинку. Если так будет код проще. Заранее же думать об оптимизации вредно.
Всё, что напрашивается «до» — и есть предварительная оптимизация.
А вообще, не удивляет Вас самих желание здесь оптимизировать? Какие большие M и N Вы представляете? Вроде ж не программы не для ламповых калькуляторов.
Только вопрос, как?
Для машины, пока не будет критериев близости, одинаково различны два близнеца, и Мерлин Монро с Морганом Фрименом. Они просто различны. Вот, был бы фокус, который мог бы сказать, что эти двое совсем чуть чуть отличаются — можно было бы классифицировать.
Это уже не ИИ. Это вы уже зашиваете как вы определяете близость. Например, можно по количеству признаков совпавших ко всем, так как будто они имеют одинаковое значение. Но тогда, чтобы зрительные образы уметь как-то сравнивать, появляется:
Вот это «если правильно выделить». Для этого «правильно» придется писать руками почти весь зрительный интеллект, а представленному алгоритму только указать пальцем на ответ остается.
Т.е. ваш алгоритм сам по себе не сможет быть классификатором зрительных образов. Ему придется помогать и бОльшую часть задачи решить руками (проекции, сведение к единому размеру и т.д.). Мало того, он с количеством признаков будет тоже как-то так плоховато разбираться, придется ему еще чем-то помочь.
Это не алгоритмический трюк. Никто не мешает создать класс клетки и привести код в порядок: разделить отображение от модели, модель будет представляться либо классом «доской», либо клеткой. Каждая клетка будет иметь метод — соседи, опрашивать их и находить цвет. Хотя это тоже может стать оверинженирингом. Но я пишу в том смысле, что представление задачи не заставляет писать не в ООП-стиле. Классы не обязаны моделировать наши представления о мире, если эти представления выходят за рамки задачи.
Но что это такое? Кроме того, что причина не опережает следствие, сказать просто так об этом ничего нельзя.
Вы считаете, что вероятность появления символа на первом уровне зависит от предыдущих символов независимо. Второе, из описания, я так понял, вы полагаетесь на шаг. Это слишком сильные допущения. Интуиция подсказывает, что зависимости могут быть сложнее. Например, распознавание образов, где есть подобие, а не четкое соответствие размерам, такой интеллект вряд ли чему-то научится.
С пониманием текста должно быть где-то то же самое. Т.к. смысл написанного — это не текст, а те же нечеткие представления (нетекстовые). Для какой-то классификации/кластеризации текстов может быть подойдет. Марковские цепи иногда используют.
Исходя из задачи, скорее всего будет лишним код с инкапсуляцией волны. Потому как цвет клетки при следующей итерации перерисовки однозначно определяется цветами клеток вокруг. Для такой поставленной задачи экземпляры волн не нужны. Ни хранить их, ни знать количество.
Но если кто-то удумает перерисовывать не все клетки, то объекты волн могут помочь.
Самое интересное — как определять близость, т.е. схожесть объектов. Зашить изначально — тогда обычная задача машинного обучения, которая будет решать только определенные задачи.
Тут, есть некоторое «лукавство», как я понял:
И каким образом можно сказать, что признак повторился? Как можно сказать, что этот новый признак — квадрат — появился снова? Если он похож на те другие квадраты, то мы уже знаем, что он похож, т.е. уже имеем представления о схожести этих объектов и поэтому уже нет смысла выводить представление. Близость — это та субъективная штука, которая непонятно как самопроизвольно в мозгу и появляется.
В мире нет вообще одинаковых объектов. Если вас спросят, различаются ли два объекта, можете смело всегда говорить «да». Они различаются, как минимум, координатами. А вот, если спрашивают «насколько отличаются», вот здесь и сложность. Точные науки занимаются как раз измерениями — числами, говорящими «насколько отличаются». Уникальность снежинок — это для гуманитариев. Т.е. на единственно идентичности интеллект не построишь.
В цифровом мире два объекта могут быть идентичными. Вы думаете, что сможет такой интеллект на идентично повторяющихся признаках делать сложные выводы?
Возможности — потому что не указано, как определяется близость между признаками и т.д. выше по дереву. Как у такого интеллекта родится представление о квадратном и круглом объекте?
Математика однозначно мозг развивает. А те, крутейшие кодеры, не могут решить элементарные задачи (закодить), как только они хоть немного отличаются от быдлозадачи.
К сожалению, среди программистов уже появилась целая идеология невежества. Некоторые их утверждения:
«Книги читают только дураки, нам хватает гугла/обзоров/статей» (очень глубокие знания оттуда получают)
«Математика нам не нужна» (программирования — прикладная математика. А математика не нужна тому, кто ее не знает, потому как ему никто в здравом уме и не поручит сложные задачи)
и т.д.
Чтобы представить процесс потерь, можно подумать вот про это:Клетка Фарадея. Сделать электромагнитную защиту, чтобы эти волны не уходили в пространство. Тогда, они будут поглощаться материалом, в нем будут появляться индукционные токи. Так потери здесь будут ровно такие, насколько будет от токов нагреваться материал.
А магнитные поля друг на друга не действуют. И не трутся. Принцип суперпозиции называется. Они даже не разные, это всё одно поле, которое для удобства раскладывается на составляющие.
Электромагнитное излучение может появиться при движении магнита. Даже если он один и ни в какое другое поле не входит. Допустим, и на капсуле постоянный магнит и на стенках. Тот, что на стенках, никак не влияет на получаемое (вдруг) излучение движущейся капсулы.
Мало того, чтобы появилось электрическое поле из магнитного, капсула должна не просто двигаться, а двигаться с непостоянной скоростью (чтобы производная появилась). С ускорением, либо колебаться в пути. При этом, повторюсь, для этого процесса не имеет значения магнитное поле от постоянных магнитов, которые на стенках в трубе. Никакого трения там нет.
Я очень сомневаюсь, что этот эффект будет таким сильным и будет заметно отбирать энергию. Потом, его можно уменьшать.
Как это, магнитные поля трутся?
Если там будут электромагниты, то будет энергия тратиться на нагревание проводников. Также энергия может тратиться при движении, если будет создаваться изменяемое магнитное поле — на электромагнитное излучение. Я не в курсе, какое там устройство. Если висеть будет на постоянных магнитах и минимизируется излучение, никакая энергия теряться не будет. Энергия, потраченная на разгон, возвращается при торможении. Горизонтальное перемещение энергии не потребляет (перемещение, а не путь). Если конечная точка выше, то энергия тратится только на преодоление разницы высот. Но т.к. транспорт движется по кругу (на концах маршрута не будет транспорт накапливаться), то энергия возвращается.
Потом, это школьная программа. Видимо многие забыли. Теплообмен бывает трех видов: теплопроводность, конвекция, тепловое излучение.
А вообще, идея вакуумной трубы мне нравится. При всех составляющих, такой вид транспорта видится гораздо более безопасным, чем автомобиль, гораздо быстрее и гораздо экономнее. Теоретически в вакууме на магнитных подвесках энергия на перемещение равна нулю. Практически — энергия тратится на поддержание вакуума, на магниты. В общем, потери можно как-то уменьшать, приближаться к пределу.
Не верится, что в школе когда-то даже интерпретатор части РАЯ, черепашью графику, написал ) Даже слов таких, как «интерпретатор» тогда не знал.
У нас в школе был «стендовый». Клавиатура (это и весь комп) размером с полтора метра на пол. Никто на стену не вешал, лежал на столе.
Нет, вопрос шел именно про технические моменты. Скажем, покупка системы для технических нужд, без технической оценки — что покупают и зачем.
Правильный выбор или решение должно базироваться на трех составляющих: наличие интеллекта, наличие информации, наличие умений для обработки информации такого рода. А у нас в том то и дело, управленческий аппарат только и изучает психологию, мистику, гипноз, НЛП, астрологию.
Оценивать затраты ресурсов, возможные доходы — это хорошо, но если выполняется параллельно, а не вместо знающих проблему людей.
Мы чаще всего решаем технические задачи. Информация для выбора решений исходит из разработки.
Известно, что «работяге» меньше платят, т.к. он увлечен кодированием и:
1) реже меняет работу, значит реже повышают зп;
2) у него меньше шансов идти по карьерной лестнице, т.к. золотую курицу никто резать не будет. Сталкивался пару раз, как в менеджеры проектов выдвигали самых тупых программистов, т.к. толку от их кодирования было мало.
Вообще, возможно, это исходит действительно из нашего менталитета, менталитета бандитского, 90-х годов. Когда люди думают, что «решают вопросы» не те, которые имеют компетентность, а правильные люди, в бане, с девочками и водкой. Что работают «инженеры» узкого профиля, а решателям вопросов не надо даже знать что-то, не надо иметь представление о проблеме.
Это я описываю крайний психологический случай. Но мне это говорили даже прямым текстом. Вроде, технические специалисты в технических вопросах не должны участвовать в принятии решений. Они только реализовывают.
Этот стереотип так или иначе распространился среди всех. Даже если программист не думает такими категориями, я крайне мало видел людей, которые вообще думают о своей эффективности. Дошло до того, что даже в программировании большинство бредит некой «правильностью» построения архитектур, правильным процессом, который почему-то должен быть долгим, забрать кучу денег у заказчика, но он правильный и всё. Без вариантов и без денежных критериев. Тут на хабре периодически проскакивают статьи, какие мы стали толковые и умные, знаем уже как надо архитектурить, но заказчик нам не дает, всё хочет быстрее и дешевле. Странно, что он должен еще хотеть.
Как-то проследил, почему это происходит. Происходит, если человек работал в аутсорсинговых компаниях. Средняя общая некомпетентность влияет также на прием на работу. Разработчикам кажется, что распределение зарплат несправедливое. И заметили, что тот, кто на собеседовании больше покажет свое эго, больше наглости, тот выбивает больше зп, а компетентность — дело пятое. У них складывается впечатление, что компания на них зарабатывает миллионы (утрирую), а им, даже при больших зп, платит копейки.
В итоге странное смещение. Когда разработчик даже в разы менее эффективнее (5-10 раз), в разы пишет больше багов, или даже вообще почти ничего не делает — он все равно ощущает себя правильным и ценным работником, не менее ценным, чем эффективный разработчик. Компания ему просто так должна, она и так у него деньги своровала. Если компания этого не понимает — есть другие.
Языки программирования — это всего-лишь языки и никому ничего не должны. Для каких-то задач отлично подходит запись системы уравнений, для других дифуры, для третьих С#. Язык еще один придумать не проблема. Проблема на нем писать. ООП простое, поэтому сравнительно легко писать. Какой-то динамический язык с динамическим наследованием и перенаследованием — только звучит необычно, а писать на нем будет жесть наверное.
В общем, дело не в языках, а в человеческом мышлении. Человек думает кучей разных моделей, каким-то непонятным образом. При передаче информации пользуется тоже многими вещами, начиная от рисунков, формул, заканчивая «клеем» — естественным языком. Который очень нечеткий. Программирование — это такой перевод его представления в языки программирования. Т.к. естественные языки и другие языки представления отличаются от языков программирования — будут ошибки.
Видимо, идеальный язык — это идеальный ИИ, который умеет и на естественном поговорить, и понять языки формул и вообще, давать наводящие вопросы, уточняя задание. Т.е. не язык, а интеллект, близкий к человеческому (хотя бы на уровне интерфейса с человеком), который может понять максимально близко, что человек хочет. Правда, когда такой ИИ будет, непонятно, зачем нужен человек. Оно и само будет не хуже принимать решения. И вероятность ошибки при передаче информации «человек-машина» всегда есть. А без человека не будет.
Так что радуемся, что есть пока у нас работа )