Здравствуйте, Mikola, Вы писали:
M>Народ, нужен алгоритм и/или описание нейронной сети, которая ищет логические ошибки в коде программы (язык-любой) M>Помогите plz. кто чем может M>
Если найдешь такое, то не забудь поделиться.
Eсть у меня нечто, но делиться не буду.
Самому не хватает
Впрочем тут ты сможешь найти то,
что тебе возможно поможет.
В целом задача очень сложна.
Я бы сказал, что в общем случае она просто неподъемна.
Re: Нейронная сеть
От:
Аноним
Дата:
18.11.03 06:27
Оценка:
Здравствуйте, Mikola, Вы писали:
M>Народ, нужен алгоритм и/или описание нейронной сети, которая ищет логические ошибки в коде программы (язык-любой) M>Помогите plz. кто чем может M>
Есть теорема, указывающая на принципиальную невозможность создания системы, проверяющей логическую верность программы по её тексту...И здесь — нате
Здравствуйте, Mikola, Вы писали:
M>Народ, нужен алгоритм и/или описание нейронной сети, которая ищет логические ошибки в коде программы (язык-любой) M>Помогите plz. кто чем может M>
Не, ну нифига себе!!!!
Сделай ему кандидатскую диссертацию в виде легкого упражнения на досуге!!!
У меня студенты несколько дипломов написали по поводу поиска логических ошибок в программе, и конца теме не видно, а уважаемый Мыкола на халяву хочеть!!!!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
L> Не, ну нифига себе!!!! L> Сделай ему кандидатскую диссертацию в виде легкого упражнения на L> досуге!!! У меня студенты несколько дипломов написали по поводу поиска L> логических ошибок в программе, и конца теме не видно, а уважаемый Мыкола L> на халяву хочеть!!!!
Ну, для C++ ему можно помочь вот таким батничком:
@echo off
cl /c /Tp test.cpp >nul 2>nul
if %errorlevel% == 0 goto ok
echo This program is malformed.
goto end
:ok
echo This program is well-formed.
:end
-- Всего хорошего!
-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com
Posted via RSDN NNTP Server 1.8 beta
It's kind of fun to do the impossible (Walt Disney)
Здравствуйте, alexandrov_alex, Вы писали:
_>Здравствуйте, LaptevVV, Вы писали:
L>> Не, ну нифига себе!!!! L>> Сделай ему кандидатскую диссертацию в виде легкого упражнения на L>> досуге!!! У меня студенты несколько дипломов написали по поводу поиска L>> логических ошибок в программе, и конца теме не видно, а уважаемый Мыкола L>> на халяву хочеть!!!!
_>Ну, для C++ ему можно помочь вот таким батничком:
_>
_>@echo off
_>cl /c /Tp test.cpp >nul 2>nul
_>if %errorlevel% == 0 goto ok
_>echo This program is malformed.
_>goto end
_>:ok
_>echo This program is well-formed.
_>:end
_>
_>-- Всего хорошего! _>-- Alex Alexandrov, e-mail: alex_alexandrov@fromru.com
Ну если под логическими ошибками понимать синтаксические ошибки,
то да, это поможет
В целом, искать логические ошибки без формальных спецификаций — дело бесполезное.
Здравствуйте, Mikola, Вы писали:
M>Народ, нужен алгоритм и/или описание нейронной сети, которая ищет логические ошибки в коде программы (язык-любой) M>Помогите plz. кто чем может M>
Логические ошибки найти по тексту программы нельзя в принципе. Так как для этого нужно знать предназначение программы, которое в тексте не описано. Есть даже теорема, которая это доказывает.
А вот попробовать найти некторорые синтаксические ошибки — вполне легко. Простейший случай — поиск пропущеных фигурных скобок в программах на C/C++. Вот тут нейронная сеть действительно может помочь. Однако для того, что бы её применить текст программы требуется предварительно преобразовать к опеделённому виду, на котором и может работать сеть.
В общем — уточни, что именно хотелось бы получить.
А то тут уже некоторые уже дисеры на халяву пишут...
С Уважением, Андрей
Re[2]: Нейронная сеть
От:
Аноним
Дата:
18.11.03 11:10
Оценка:
Здравствуйте, AndreyFedotov, Вы писали:
AF>Здравствуйте, Mikola, Вы писали:
M>>Народ, нужен алгоритм и/или описание нейронной сети, которая ищет логические ошибки в коде программы (язык-любой) M>>Помогите plz. кто чем может M>>
AF> Логические ошибки найти по тексту программы нельзя в принципе. Так как для этого нужно знать предназначение программы, которое в тексте не описано. Есть даже теорема, которая это доказывает. AF> А вот попробовать найти некторорые синтаксические ошибки — вполне легко. Простейший случай — поиск пропущеных фигурных скобок в программах на C/C++. Вот тут нейронная сеть действительно может помочь. Однако для того, что бы её применить текст программы требуется предварительно преобразовать к опеделённому виду, на котором и может работать сеть.
Зачем нейронная сеть здесь нужна ? Здесь обычный синтаксический парсер рулит
P.S. Тыкают нейронными сетями, где только можно — только великию идею самоорганизирующихся алгоритмов похабят
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, AndreyFedotov, Вы писали:
AF>>Здравствуйте, Mikola, Вы писали:
M>>>Народ, нужен алгоритм и/или описание нейронной сети, которая ищет логические ошибки в коде программы (язык-любой) M>>>Помогите plz. кто чем может M>>>
AF>> Логические ошибки найти по тексту программы нельзя в принципе. Так как для этого нужно знать предназначение программы, которое в тексте не описано. Есть даже теорема, которая это доказывает. AF>> А вот попробовать найти некторорые синтаксические ошибки — вполне легко. Простейший случай — поиск пропущеных фигурных скобок в программах на C/C++. Вот тут нейронная сеть действительно может помочь. Однако для того, что бы её применить текст программы требуется предварительно преобразовать к опеделённому виду, на котором и может работать сеть.
А>Зачем нейронная сеть здесь нужна ? Здесь обычный синтаксический парсер рулит А>P.S. Тыкают нейронными сетями, где только можно — только великию идею самоорганизирующихся алгоритмов похабят
В принципе парсера для поиска ошибок достаточно. Однако когда возникает многовариантность, то сделать хороший алгоритм поиска — где именно должна была стоять } или ; довольно сложно.
Здравствуйте, Mikola, Вы писали:
M>Народ, нужен алгоритм и/или описание нейронной сети, которая ищет логические ошибки в коде программы (язык-любой) M>Помогите plz. кто чем может M>
А Mikola молчит чего-то
Давай, Колись поконкретней, чего надо-то?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Нейронная сеть
От:
Аноним
Дата:
18.11.03 11:44
Оценка:
А>>Зачем нейронная сеть здесь нужна ? Здесь обычный синтаксический парсер рулит А>>P.S. Тыкают нейронными сетями, где только можно — только великию идею самоорганизирующихся алгоритмов похабят
AF>В принципе парсера для поиска ошибок достаточно. Однако когда возникает многовариантность, то сделать хороший алгоритм поиска — где именно должна была стоять } или ; довольно сложно.
Забавно...Это ж какая такая многовариантность ? Какие сложности могут бытьпри написании синтаксического анализатора по конечному автомату разбора грамматики С++ ? Только что автомат будет побольше,чем у прочих языков, из-за бОльшей сложности синтаксиса С++ А конкретно в вашем случае — что будет стоять } или ; — ИМХО проблема явно надуманная — при нисходящем рекурсивном синтаксическом разборе выяснить, что за лексема должна стоять — не проблема.
А>>>Зачем нейронная сеть здесь нужна ? Здесь обычный синтаксический парсер рулит А>>>P.S. Тыкают нейронными сетями, где только можно — только великию идею самоорганизирующихся алгоритмов похабят
AF>>В принципе парсера для поиска ошибок достаточно. Однако когда возникает многовариантность, то сделать хороший алгоритм поиска — где именно должна была стоять } или ; довольно сложно.
А>Забавно...Это ж какая такая многовариантность ? Какие сложности могут бытьпри написании синтаксического анализатора по конечному автомату разбора грамматики С++ ? Только что автомат будет побольше,чем у прочих языков, из-за бОльшей сложности синтаксиса С++ А конкретно в вашем случае — что будет стоять } или ; — ИМХО проблема явно надуманная — при нисходящем рекурсивном синтаксическом разборе выяснить, что за лексема должна стоять — не проблема.
Возможно. Особенно если быть уверенным в том, что при нарушении синтаксиса всегда возможен "настоящий синтаксический разбор"...
Вспомним классику:
Казнить нельзя помиловать.
И где тут должна была стоять запятая?
Вы уверены, что возможно однозначно пределить место ошибки?
А>>>Зачем нейронная сеть здесь нужна ? Здесь обычный синтаксический парсер рулит А>>>P.S. Тыкают нейронными сетями, где только можно — только великию идею самоорганизирующихся алгоритмов похабят
AF>>В принципе парсера для поиска ошибок достаточно. Однако когда возникает многовариантность, то сделать хороший алгоритм поиска — где именно должна была стоять } или ; довольно сложно.
А>Забавно...Это ж какая такая многовариантность ? Какие сложности могут бытьпри написании синтаксического анализатора по конечному автомату разбора грамматики С++ ? Только что автомат будет побольше,чем у прочих языков, из-за бОльшей сложности синтаксиса С++ А конкретно в вашем случае — что будет стоять } или ; — ИМХО проблема явно надуманная — при нисходящем рекурсивном синтаксическом разборе выяснить, что за лексема должна стоять — не проблема.
Легко указать сам факт того, что есть ошибка.
Понять в чем ошибка — тут уже синтаксического анализа будет недостаточно.
Re[6]: Нейронная сеть
От:
Аноним
Дата:
18.11.03 12:26
Оценка:
Здравствуйте, AndreyFedotov, Вы писали:
AF>Здравствуйте, Аноним, Вы писали:
А>>>>Зачем нейронная сеть здесь нужна ? Здесь обычный синтаксический парсер рулит А>>>>P.S. Тыкают нейронными сетями, где только можно — только великию идею самоорганизирующихся алгоритмов похабят
AF>>>В принципе парсера для поиска ошибок достаточно. Однако когда возникает многовариантность, то сделать хороший алгоритм поиска — где именно должна была стоять } или ; довольно сложно.
А>>Забавно...Это ж какая такая многовариантность ? Какие сложности могут бытьпри написании синтаксического анализатора по конечному автомату разбора грамматики С++ ? Только что автомат будет побольше,чем у прочих языков, из-за бОльшей сложности синтаксиса С++ А конкретно в вашем случае — что будет стоять } или ; — ИМХО проблема явно надуманная — при нисходящем рекурсивном синтаксическом разборе выяснить, что за лексема должна стоять — не проблема.
AF>Возможно. Особенно если быть уверенным в том, что при нарушении синтаксиса всегда возможен "настоящий синтаксический разбор"... AF>Вспомним классику: AF>Казнить нельзя помиловать. AF>И где тут должна была стоять запятая?
Это уже вопросы логики, нежели синтаксиса. AF>Вы уверены, что возможно однозначно пределить место ошибки?
В данном случае — нет. Но это в данном случае
AF>С Уважением, Андрей
Re[6]: Нейронная сеть
От:
Аноним
Дата:
18.11.03 12:29
Оценка:
Здравствуйте, bkat, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
B>Легко указать сам факт того, что есть ошибка. B>Понять в чем ошибка — тут уже синтаксического анализа будет недостаточно.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, AndreyFedotov, Вы писали:
AF>>Здравствуйте, Аноним, Вы писали:
А>>>>>Зачем нейронная сеть здесь нужна ? Здесь обычный синтаксический парсер рулит А>>>>>P.S. Тыкают нейронными сетями, где только можно — только великию идею самоорганизирующихся алгоритмов похабят
AF>>>>В принципе парсера для поиска ошибок достаточно. Однако когда возникает многовариантность, то сделать хороший алгоритм поиска — где именно должна была стоять } или ; довольно сложно.
А>>>Забавно...Это ж какая такая многовариантность ? Какие сложности могут бытьпри написании синтаксического анализатора по конечному автомату разбора грамматики С++ ? Только что автомат будет побольше,чем у прочих языков, из-за бОльшей сложности синтаксиса С++ А конкретно в вашем случае — что будет стоять } или ; — ИМХО проблема явно надуманная — при нисходящем рекурсивном синтаксическом разборе выяснить, что за лексема должна стоять — не проблема.
AF>>Возможно. Особенно если быть уверенным в том, что при нарушении синтаксиса всегда возможен "настоящий синтаксический разбор"... AF>>Вспомним классику: AF>>Казнить нельзя помиловать. AF>>И где тут должна была стоять запятая? А>Это уже вопросы логики, нежели синтаксиса.
Да, безусловно. Но ошибка то синтаксическая. Запятая в любом случае ДОЛЖНА быть. Вот способ её постановки дело другое.
AF>>Вы уверены, что возможно однозначно пределить место ошибки?
А>В данном случае — нет. Но это в данном случае
А каков будет процент подобных случаев в анализе реальных программ и реальных ошибок?
В случае когда ситуация не однозначна, желательно иметь возможность видеть — различные варианты того, где может быть ошибка и вероятности того, что ошибка именно там.
Вот с этой то задачей нейронные сети помогают справляться довольно хорошо.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, bkat, Вы писали:
B>>Здравствуйте, Аноним, Вы писали:
B>>Легко указать сам факт того, что есть ошибка. B>>Понять в чем ошибка — тут уже синтаксического анализа будет недостаточно.
А>Так понимание — это прерогатива разума .
да это так, но я лично от компилятора ожидаю внятных сообщений об ошибках
Re: Нейронная сеть
От:
Аноним
Дата:
18.11.03 13:41
Оценка:
Народ, мне не нужен Полынй Алогритм + Прога + Тесты.
Это просто мне наш Профессор задал в качестве РГЗ Вот такой вот он
Я у его аспирантов спрашивал как делать (они ведут предмет) — они тоже ответили, что если сделаешь — иди защищай докторскую.
Мне хотя-бы в общих чертах как это выглядит — ну схемку какую-нить — а там уж сдадим
Помогите plz, нигде не могу найти даже самого общего по теме.
Здравствуйте, Аноним, Вы писали:
А>Народ, мне не нужен Полынй Алогритм + Прога + Тесты. А>Это просто мне наш Профессор задал в качестве РГЗ Вот такой вот он А>Я у его аспирантов спрашивал как делать (они ведут предмет) — они тоже ответили, что если сделаешь — иди защищай докторскую. А>Мне хотя-бы в общих чертах как это выглядит — ну схемку какую-нить — а там уж сдадим А>Помогите plz, нигде не могу найти даже самого общего по теме.
Экспертные системы — один из вариантов создания таких систем.
Заполняешь базу правил (знаний), компилируешь текст программы
в некоторое реляционное представление и осуществляешь логических вывод
с использованием базы правил.
Чем лучше база знаний, тем больше ошибок можно пытаться находить.
Здравствуйте, Аноним, Вы писали:
А>Народ, мне не нужен Полынй Алогритм + Прога + Тесты. А>Это просто мне наш Профессор задал в качестве РГЗ Вот такой вот он А>Я у его аспирантов спрашивал как делать (они ведут предмет) — они тоже ответили, что если сделаешь — иди защищай докторскую. А>Мне хотя-бы в общих чертах как это выглядит — ну схемку какую-нить — а там уж сдадим А>Помогите plz, нигде не могу найти даже самого общего по теме.
Не знаю, что имел в виду ваш проффесор, но можно попробовать следующее:
— предсказание N + 1 -го символа по N преведущим
— распознавание определённых шаблонов (например поиск блока по набору признаков, включая как синтаксические "{" и "}", так и смысловые, такие как форматирование текста)
— выделение схожих идентификаторов (перемнных и имён функций)
— предсказание типа N + 1 -го элемента (опрератор/идентификатор/новая функция) по преведущим N элементам