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