Удивительно, но так медленно сами программисты создают программы, которые автоматизируют труд программиста. И, приступил я к написанию кода со свойствами искусственного интелекта. Пусть программа накапливает знания и приемы программирования. Научим робота делать рутинную работу! Что значит выполнять рутинную работу человека программиста? Очевидно, чтобы автоматизировать рутинную работу программиста необходимо выполнить полную ревизию этапов программирования. И начать эту процедуру ревизии необходимо с эволюции языков программирования, инструментальных программ для ускорения программирования. Задача объемная, требующая просмотреть и систематизировать огромный объем информации, зарождение и смерть идей, перечислить концепции и полученный практический результат. Перечислим некоторые перспективные задачи робота-программиста: 1. Робот-программист будет помогать писать программы начинающим программистам, которые имеют начальные сведения о среде и языке программирования. 2. Робот-программист предложит способы систематизации огромного количества библиотек (база данных алгоритмов), чтобы исключить для программиста повторное написание кода программы, например, рутинные алгоритмы сортировок, вывода простой графики, вычисления математический функций и т.д. 3. Робот-программист будет строить диалог и общаться с пользователем на естественном человеческом языке с целью информирования человека о ходе выполняемых процедур. В неопределенных ситуациях, когда требуется знания и опыт программиста-эксперта, запустить процесс приобретения знаний. 4. Робот-программист будет накапливать статистическую информацию, работая с исходными кодами программ на разнообразных языках программирования. 5. Робот-программист будет осуществлять трансляцию текстов программ с одного языка программирования на другой. 6. Робот-программист выполнит кодогенерацию текста программы для целевого языка программирования из базы данных алгоритмов, грамматики языка (алфавита, ключевых слов, синтаксиса и семантики и специфики предметной области). 7. Робот-программист будет генерировать код программы (тесты) с целью автоматической проверки созданных программ на этапе п. 6. 8. Робот-программист непрерывно накопливает положительный опыт экспертов-программистов в базе знаний, специфики предметной области информационных систем (торговля, бухгалтерский учет, оперативное управление производством и т. п.). Девиз простой: "Мы отдыхаем - компьютер работает!" Кто согласиться быть внимательным собеседником, советчиком и консультантом на пути реализации этого нового проекта? Вопросы «гуру-программистам на ассемблере: 1.Какие этапы программиста на ассемблеры необходимо автоматизировать? 2.Кто подскажет ссылки на подробное описание грамматики ассемблера FASM? Необходимо описание в формате БНФ (ноpмальная формы Бэкуса-Наура задания гpамматики) или РБНФ (расширенная ноpмальная формы Бэкуса-Наура задания гpамматики), чтобы для занесения алфавита, синтаксиса, семантики и правил в базу знаний робота-программиста.
vladfind а как робот - программист, узнает, что от него хочет программист? Или он будет генерировать случайный набор инструкций (или функций из библиотек)?
vladfind я полностью согласен с NoName. А vladfind поймет невозможность этого, когда начнет реализовывать это все. Я не исключаю,что если за это дело возьмется весь Редмонд, то тогда шансы на 90% выполнения проекта велики. А даже десятку программистов это не под силу
Вот некоторые важные ссылки на ресурсы по вопросу технологии программирования: 1. Андреев А. Ю. Современные языки программирования – результаты эволюции.- Журнал "Мир ПК".- № 3.- 2001 год // http://home.perm.ru/~strannik/st_txt_prog_01.html Цитата: "Текст посвящен результатам эволюции современных языков программирования, перспективам их объединения в единый "метаязык" на основе общей семантической базы, реформе системы стандартизации языков программирования, будущему современных компилирующих систем. В качестве примеров использованы тексты на Си, Яве, Модуле и Паскале." 2. Андреев А. Ю. Сравнение языков программирования Си++, Паскаль и Ада (Си, Модула-2, Оберон-2 и Ява).- Журнал "Программист".- № 2.- 2002 год // http://home.perm.ru/~strannik/st_txt_prog_02.html Цитата: В тексте проведено сравнение языков программирования Си, Модула-2, Ада-95 и Паскаль (а так же Си++, Оберон-2 и Ява) по следующим группам свойств: набор операторов, механизм процедур, конструктор типов, механизмы раздельной компиляции, ООП, процессы и исключительные ситуации, другое. Произведена оценка мощности каждого языка программирования и сделан прогноз развития языков программирования в будущем. 3. Аленкин А., В. Зубков. Как автоматизировать процесс программирования.- Журнал "Мир ПК".- № 8, 2002 год // Издательство "Открытые системы" (www.osp.ru) Постоянный адрес статьи: http://www.osp.ru/pcworld/2002/08/126.htm Цитата: В статье рассмотрены принципы функционирования IPGS (Intellectual Program Generation System) — отечественной интеллектуальной системы автоматизированного программирования, качественно отличающейся от большинства аналогов. Так что движение в сторону технологии и автоматизации продолжается. Ещё пару десятилетий и будет нам, программистам радость - интелектуальные системы проектирования и написания программных средств. А зачем так долго ждать? Что нам стоит дом построить!?
Это и есть предмет поиска и исследований. Посторить формальную математическую модель, предложить процедуру, методику накопления, сохранения и использования знаний программиста-кодировщика.
Это и есть предмет поиска и исследований. Посторить формальную математическую модель, предложить процедуру, методику накопления, сохранения и использования знаний программиста-кодировщика.
Это и есть предмет поиска и исследований. Посторить формальную математическую модель, предложить процедуру, методику накопления, сохранения и использования знаний программиста-кодировщика.
NoName Я бы не сказал, что не возможно. Возможно все. Извеняюсь за такое высказывание. Просто не хачу писать огромных трактатов. Сделать трудно. Нужно обучить многому. Сама программа основанна на нескольких базавых понятиях.Вот только их еще вывести нужно. Но встает вопрос, как заставит прогу обробатывать все это множество знаний да еще с приемлимой скоростью. Я считаю что такую идею надо начинать с написания языка программирование. Который затем развивать. Хотя можно пойти по другому взять за основу программы говорилки (напамять Элиза-болтушка). Добавить в нее возможность делать логические заключения. И накопить базу знаний. Правдо отдельным блоком нужно будет реализовать математический аппорат.
Проводил собственное расследование. Мой компьютер, например в момент написания этого сообщения, загружен лишь на ~ 5%. Наши компьютеры простаивают... Так что можно и подождать день-два. Пусть перебирает вариаты и ищет положительное решение задачи. У меня другая идея. Попытаться переработать и обобщить огромный фонд исходных кодов программ, которые доступны в интернете. Объясню, почему первым "подопытным" кандидатом стал FASM. <ul type=disc> Открытый исходный код</ul> <ul type=disc> Лицензия GPL</ul> <ul type=disc> Документация</ul> <ul type=disc> Примеры программ</ul> <ul type=disc> На FASM написана ось Menuet OS( 32,64 разр.)</ul> <ul type=disc> Ассемблер ближе всего к кодам процессора </ul> Можно, в перспективе, исользуя мета-описание языка базы знаний оформить какую-нибудь грамматику языка программирования и выполнить компиляцию в объектную программу. Например, у меня есть идея переработать исходный код компилятора "Странник" на Modula (~20 000 строк) исключить из него встроенный скромный ассемблер и объеденить с FASM. А почему бы и нет?
Pavia Сначала нужно сделать свой язык программирования, потом можно написать по типу Элизы-болтушки что-то, а потом можно и целый мат. аппарат для решения задач написать =))) Да, все так просто, что ваще... =))) я предлагаю реструктивный вариант: пусть автор этого проекта когда будет писать прогу будет писать о проблемах с которыми он столкнулся. Я уверен, будет интересно... Я когда-то тоже был такой падаван, который верит в святые мечты... и думал, что написать интеллектуальный поисковик переполнений буфера можно, хотя бы в течении трех месяцев. Оказалось, что одному человеку это можно сделать только в течении нескольких лет.Т.к. необходимо будет прочитать хотя бы все материалы конференции AADEBUG. А их там как раз года на три чтения. vladfind удачи!
Предлагаю посмотреть ещё один ресурс. Математики конечно там много и с первой попытки трудно прочувствовать материал. Главное - решение и алгоритм по созданию универсального инструмента для построения компиляторов давно создан. 1. Технологический комплекс (ТК) SYNTAX.-[электронный ресурс].- http://www.math.spbu.ru/user/mbk/SYNTAX/Syntax.html Цитата: "Технологический комплекс (ТК) SYNTAX является интегрированной инструментальной системой, предназначенной для проектирования, разработки, реализации и тестирования средств синтаксически управляемой обработки данных. SYNTAX-технология использует кусочно-регулярную аппроксимацию КС-языков. Трансляции специфицируются при помощи RBNF-грамматик и реализуются посредством контекстно чувствительных сплайновых языковых процессоров. Технология применяется для решения синтаксических проблем и поддерживает объектно-синтаксическую парадигму программирования, которая выражается метафорической формулой: программа = объекты + грамматика. Эта формула подчеркивает своеобразность архитектуры SYNTAX-программ: спецификация данных и средств их обработки (объектов) отделена от описания управляющей структуры программы (в форме некоторой RBNF-грамматики).Типичные приложения разрабатываемых программных средств включают такие области применения как лексический и синтаксический анализ языков программирования, интерпретаторы и компиляторы, конверторы, синтаксические редакторы, любые другие средства, предназначенные для автоматического восприятия языков с нетривиальной синтаксической структурой."
vladfind Что под этим подразумевается? Что ты хочешь получить и каким оброзом. YoungBastard По моим расчетом лет 5 на написание. Что бы понять, что все не верно. И еще год на переписывание.
Хочется ускорить производство программ. Кстати, роботёнок-программист "Ванюша" родился год назад. В программном коде оформлены некорые идеи. Подробнее смотри ресурс: http://www.robot-ivan.narod.ru На языке 1С:Предприятие 7.7 удалось создать лабораторный прототип базы знаний, который автоматически генерирует программный код для экспорта и импорта схемы справочников и данных. Шустрая получилась обработка! Прирост производительности программиста-кодера увеличился на несколько порядков!! Теперь начинающий кодер на макроязыке 1С:Предприятие мгноменно получит положительный результат: добротный модуль программного кода для экспорта-импорта данных справочников.
Вопрос: а зачем? Вам мало программистов-роботов, которые не в состоянии написать нестандартный алгоритм, а уж придумать его - это вообще для них предел совершенства? Таки я вам скажу, что универ, в котором я имею глупость учиться, готовит таких роботов сотнями. А какой код они пишут - это вообще заглядение. Так и охота стулом стукнуть. Вы когда-нибудь видели робота-художника? А ведь профессии очень схожие (если кто сомневается, сомневайтесь дальше, это имхо).
Качественное образование, именно массовое, всегда отстаёт от скоротечной жизни. Можно брать необходимые знания и навыки самообразованием и активным поиском действительно важных и передовых направлений в области технологии программирования. Мне удалось находится в золотом времени революции продвижения микроЭВМ в нашей стране, учась в одном из Леннградских институтов. Нам не читали развернутые лекции по изготовления PK-86, ZX-Spectrum, программному обеспечению. А писали программы мы курсовые на перфокартах к большим ЭВМ ЕС-1049. Однако учебный процесс позволил получить базовые знания: математика, моделирование, синтез новых технических и гибритных (человеко-машинных)систем. Всё это сейчас даже очень пригодились. Нестандарный алгоритм пусть продумывает человек. На то у него и вычислитель в голове, которому несколько миллионов лет эволюции. А вот когда контур алгоритма будет готов, тогда пускай робот-программист переработает и сгенерирует код программы со свойствами "надежная и качественная программа". Первое чему мне хочется научить робота-программиста "Ванюша" это приведение исходных текстов на языке ASM в соответствии с соглашением о кодировании, например, так как для C#: http://xprogramming.com.ua/codeconvcsharp.php Кто поделится ссылкой на документ 'Соглашение о кодировании для языка ASSEMBLY' ?
Соглашение о кодирование на языке ассемблер (проект) I. СПЕЦИФИКАЦИЯ МОДУЛЯ <ol type=1> <li> Блок заголовка размещается в начале программы <li> Название блока заготовка - дать минимальную информацию о программе <li> Блок заголовка делится на части: <ul type=disc> <li> Описатель - дать минимальную информацию (имя программного модуля, номер версии, фамилию автора, дату последнейредакции) <li> Информация о всех аппаратных вводах и выводах <li> Описание обращения к модулю <li> Примечание. Что модуль делает </ul> </ol> а) Пример краткого описания спецификации модуля: ;******** СПЕЦИФИКАЦИЯ МОДУЛЯ ********* ;* ;* Имя: ;* Версия: ;* Дата последнего редактирования: ;* ;* Автор: ;*-------------------------------------- ;* ;* Функция: Вывод на дисплей ошибок ;* ;* Входы: НЕТ ;* Выходы: ПОРТ 84Н Управления дисплеем ;* ;* Внешние подпрограммы: HEXASC, ERRCHK ;* ;* Глобальные подпрограммы: COMERR ;* ;* Механизм запуска: Вызывается любой программой ;* ;* Примечания: Код ошибки передается в регистрах ВС, необходима иницилизация с помощью вызова COMINI ;* ;**************************************** II. ИСТОРИЯ МОДУЛЯ <ol type=1> <li>Кратко описаны все изменения в программный модуль <li>Содержит дату изменения <li>Номер версии изменения <li>Автор, который внес изменения </ol> б) Пример история модуля: ;************* ИСТОРИЯ МОДУЛЯ ************ ;* ;* Дата Версия Описания изменений ;*------------------------------------------ ;* 06.12.2005 0.01 Версия соглашения ;* о кодировании ;* ;******************************************* Есть предложения?
vladfind Историю предлогаю вести таким оброзом. ============================= Дата версия ============================= [знак] [автор] описание [знак] [автор] описание Легенда: [+] - добавление [-] - удаление [=] - изменение [!] - не исправленные ошибки предупреждения [?] - исправления внесенные не доконца Насчет описания модуля. Дублирование то зачем? Все равно в коде прописывать. Да и ошибки в примере. Коментарии возли каждой строчки кода и все будет понятно. Так ты мне и не ответил „ меня другая идея. Попытаться переработать и обобщить огромный фонд исходных кодов программ, которые доступны в Интернете. “ Что под этим подразумевается? Что ты хочешь получить и каким оброзом?
Предлагаю расширить описание: [знак][автор][e-mail][web-site] Описание Обработка eximsp.ert' версия 0.05 на языке 1С имеет внутри реестр программистов-кодеров. Это необходимо в знак уважения и признательности, а также для связи с автором программистом. [знак] <ul type=disc> <li>[+] - удачно, согласен <li>[-] - удачно, согласен <li>[!] - удачно, согласен <li>[?] - нормально <li>[=] -> [~] Так лучше. Тильда - перемены. </ul> Рассмотрим библиотеку математических функций. Использовать многократно и быстро в собственных разработках не составляет проблемы. Сегодня просмотрел ресурс http://www.koders.com огромный фонд исходных программ! Однако систематизация и поисковая система разочаровала. Предположим мне хочется получить примеры на ASM использования Win API. "Код на ASM. Открыть Win окна из Win API" Поиск на сайте должен выдать список примеров (желательно с картинками), чтобы глазками пробежаться по описанию и выбрать прототип фрагмента кода. Этого нет даже в первом приближении... Как хотелось бы организовать диалог с роботом-программистом? Пример диалога кодогенерации: <ul type=disc> > Здравствуй пользователь! < - Что вы хотите? - Код программы. - Какой язык? - Ассемблер. - Какой диалект языка( [1]-MASM,[2]-FASM )? - 2. - Введите мнемокод: - ОТКРЫТЬ ОКНО ШИРИНА 100 ВЫСОТА 50 СООБЩЕНИЕ "Привет! Я робот-программист 'Ванюша'" ЗАГОЛОВОК_ОКНА "Win32 : Assembler. Example - 'HelloRobot.asm'". Учусь программировать на ассемблере.' БИБЛИОТЕКА 'WinAPI'. => Код программы на языке программирования FASM: ;-------------------------------- ; File name: 'RobSamp01.asm' ; OS: Windows 98 ; Assembler: FASM 1.64 ; ; Project: 'Robot-apps 'Ivan' ; ; Date create: 15.11.2005 22:03:00 ; ; =============================== ; Copyrite Vasilev Vladimir 2005 ; ------------------------------- ; Mailto:</a> vladprog@tgma.ru ; Site: [url=http://www.wasm.ru/forum/http://www.robot-ivan.narod.ru " target="_new]www.robot-ivan.narod.ru ; =============================== ; ; Example of simplified Win32 programming using complex macro features ; include 'win32ax.inc' .code start: invoke MessageBox,HWND_DESKTOP,"Привет! Я робот-программист 'Ванюша'. Учусь программировать на ассемблере.","Win32 : Assembler. Example - 'HelloRobot.asm'",MB_OK invoke ExitProcess,0 .end start </ul> Кстати,почему из этого кода программы нельзя получить объектный код? База знаний - она и в Африке база знаний. Это похоже на библиотеку подпрограмм, только свойства и поведение существенно будут расширены. В ней к каждому фрагменту отлаженного и работоспособного кода будут прикреплены предусловия, условия, описания, критические условия, т.е. конкретные правила использования фрагмента кода для целевой аппратной и программной среды. Можно написать множество вариантов фрагмента кода на ассемблере "Открыть окно", будем всё это записывать в базу знаний, систематизировать. Ещё желательно, чтобы этим в режиме автомата занимался программный агент. Воинам Дзен... Что такой красивый код программы, по вашему мнению?
Кстати, почему из этого кода программы нельзя получить объектный код? Все компилируется. Разве что только путь до инклюда проверить и прописать верный. Красивый код программы. Это код, в котором ни чего нельзя изменить или добавить. И все понятно. Все написано с использованием стиля оформления. Смотри соответствии с соглашением о кодировании.