Adept (14.12.2016 19:59, просмотров: 399) ответил Скрипач на Готов спорить. Языки должны быть проблемно-ориентированными. И максимально высокоуровневыми.
Развивая эту мысль (с которой я отчасти согласен), соглашусь во многом и с Евгением, Но , тем не менее выскажу отдельно стоящее своё мнение :)) А именно: 1) Должна быть единая IDE с проблемно-ориентируемой конфигурацией. Язык нужен не си--какой-то там или ещё какая "джава", а действительно высокоуровневый язык , приближенный к естественному по семантике. Должны быть достаточно простые правила написания лингвистических примитивов и построения из них алгоритмических конструкций. В идеале, конечно - мощная система ИИ, строящая по описательной модели, основанной на естественном языке, алгоритмические конструкции.
2) одновременно с этим среда должна содержать аппаратно-ориентированные (под каждую архитектуру целевого процессора) библиотеки базовых функций транслятора. Это некое ядро (часть ядра), ответственная за трансляцию алгоритма в машинный код целевого процессора.
3) среда должна содержать так же "объектно-ориентированные" модели построения алгоритма, в зависимости от конечной задачи. Некая база знаний и шаблонов для решения целевых задач, к примеру, построение кода может (и должно быть) быть различным для разных областей применения (финансы, статистика, управление, точные вычисления, высоконадёжные системы, промавтоматика, милитари/аероспейс и т.п.) - вариантов - множество.
От этого в значительной степени будеть зависеть и качество кода и набор используемых и требуемых ресурсов.
4) в зависимости от поставленной задачи (п.1-3) среда должна уметь анализировать (прогнозировать) требуемые ресурсы, и предлагать подходящую целевую аппаратную платформу, или предлагать менять разные опции (и делать это в т.ч. автоматически), пытаясь впихнуть целевой код в предоставленные ей для этого камень.
5) IDE должна уметь транслировать в свой формат (или импортировать в проект) код сторонних функций и бибиотек (естественно с какими-то ограничениями). Что при наличии мощного ядра ИИ (см.п.1) представвляется вполне возможным
что мы имеем при таком подходе?
- единый язык для программирования (описания) задачи, близкий по синтаксису/семантике естественному.
- поддержка любых аппаратных платформ (через разрабатываемые и поддерживаемые производителями "железа" расширения компонентов ядра IDE (см.п.2)
- пополняемую и расширяемую базу проблеммно и объектно-ориентированных алгоритмов и правил (оптимизация целевого кода под задачу)
- использование широкого спектра наработанного ПО (см.п.5) (не без проблем, вероятно, но, тем не менее...)
- для особо ретроградов система в принципе конфигурируется/превращается в любой знакомый и известный ЯВУ (или близко к тому)
- для крупного проекта легче, вероятно, организовать взаимодействие с модулями, причём написанными для любых архитектур. Целевой код вообще может содержать машинный код для разных аппаратных платформ, скомпилированный в рамках одного проекта, например разными разработчиками (особенно для сложной с т.зр. аппаратуры, системы, с несколькими разными процессорами)
под такую парадигму и выделенной машины не жалко, и даже нескольких, и даже отдельного облачного сервиса с баснословными вычислительными мощностями.
с т.зр. коммерческой привлекательности - вообще "золотое дно", особенно с облачными сервисами, ну и всем хватит "пирога", начиная от программистов, и кончая производителями процессоров.
с т.зр эмбеддеров - оченбь привлекательно вообще отвязаться от аппаратуры (за небольшими исключениями, когда нужно как-то на начальном этапе сконфигурировать проект)
из минусов:
- недоступность на данный момент самого главного - волшебной кнопки мощного ядра ИИ
- возможная трудоёмкость отдладки из-за многовариантных путей решения разных задач, и нетривиальности поиска и устранения причин.
- предполагаю значительные тркдности при перекомпиляции под другие аппаратные платформы (особенно для сложных проектов) и именно ввиду слабой формалимзации языка, но то дело опыта и умения :)
ну как-то так, утопически на первый взгляд, но по сути - инновационно. А все эти С++, С#, C--,C$, C%, C& и т.п. - "переливание из пустого в порожнее" и никакого прорыва :))
P.S. ой чего-то "Остапа понесло...". Санитары уже выехали?? :))
...делать нужно так, как нужно. А как ненужно - делать не нужно (С) Винни-Пух :)