![]() |
|
|
![]()
|
|
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
Пришла в голову вот такая идея. Оказалось, что есть много разных любителей создания искусственных языков, которые применяются для разных нужд, хотя есть люди, которые это делают просто так из интереса. Например для некоторых фильмов, таких как Аватар придумывались такие языки. Есть даже инопланетные искусственные языки. Я подумал, что можно создать программу, которая бы продуцировала подобные языки. Меня наиболее заинтересовала проблема производства подобным образом языков программирования. Хотелось бы узнать ваше мнение. От чего здесь можно танцевать?
|
|||
|
||||
| Pavia |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Такие проекты уже есть. Поищи генетические алгоритмы для создания компилятора.
|
|||
|
||||
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
||||
|
||||
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: 2 Всего: 5 |
что-то ничего не нашел |
|||
|
||||
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
http://www.kit-e.ru/assets/files/pdf/2005_01_138.pdf Только похоже генетические алгоритмы здесь ни при чём. |
|||
|
||||
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: 2 Всего: 5 |
Lois, спасибо
но, действительно, это про другое Это сообщение отредактировал(а) Lipetsk - 5.3.2014, 13:26 |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Вообще-то это абсолютно детерминированная разработка компилятора по формальному описанию языка.
Генетические алгоритмы никакого отношения к языкам программирования не имеют. Это просто специально сконструированная процедура случайного поиска. Генетическое программирование ближе к делу, но скорее всего тоже не то. За свою профессиональную карьеру реализовал несколько десятков простых языков. Но каждый язык создавался под конкретную задачу. Программа генерирующая язык программирования наверное возможна. Может даже удастся построить для нее компилятор или интерпретатор. Но вот вопрос, как объяснить программе какую задачу должен решать язык? Насчет генерации псевдо-естественных языков как в фильмах пятый элемент и аватар, то нет особой проблемы. Поскольку мы не связаны никакими ограничениями нужно просто задать словарь нового языка и собрать из фонем, воспроизводимых человеческим горлом звуковое представление этих слов. Дальше остается только выучить этот набор слов. Кстати, при задании звучания слов можно использовать генератор случайных чисел, так любимый автором темы -------------------- Mirkes |
|||
|
||||
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
некоторые ограничения наверное всё же есть- язык должен иметь определённую культуру или должен быть сделан в одном и том же стиле. Иначе это будет такая мешанина.... .
а можете рассказать поподробнее, я не в курсе зачем нужно создавать языки отдельные для конкретной задачи. Почему нельзя воспользоваться уже созданными языками? |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Довольно часто возникают ситуации когда необходимо обеспечить достаточно большую гибкость программы, причем предусмотреть заранее, что именно потребуется в ходе работы невозможно. Тогда создается язык описания подзадачи и интерпретатор с этого языка. Такой подход позволяет гибко обрабатывать различные ситуации, поскольку интерпретатор пишется на отдельные "команды", а вот что с помощью этих команд можно наворотить, зависит только от пользователя. Прошу прощения, забыл про вторую часть вопроса - почему нельзя воспользоваться готовыми языками. Большинство готовых языков очень мощные, а вот интерпретатор писать все равно мне. Так что проще изменить язык. Написать один раз тоже не получается, поскольку мои интерпретаторы не существуют отдельно, а только внутри готовой программы и оптимизированы под конкретные нужды. Где-то так. Это сообщение отредактировал(а) Mirkes - 7.3.2014, 00:39 -------------------- Mirkes |
|||
|
||||
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
а можно сделать так, чтобы если программа с ошибкой, то её не вышибает в среде программирования, а это становится частью кода? То есть написать такой интерпретатор, который заточен именно под это? |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Честно говоря не понял. Если речь идет о том, что при возникновении ошибки программа бы не разваливалась, а продолжала работать, то так ведут себя большинство приличных программ. Что означает "становится частью кода"? Вообще говоря все программы делятся на три категории, по типу "идеальных" машин. Точнее говоря есть три модели вычислений и соответствующие программы: 1. Машина потока команд - все определяется последовательностью заданных команд. Программы не интерактивны. 2. Машина потока данных - все определяется поступающими данными. В этом случае поступление некорректных данных можно рассматривать как часть "кода" 3. Машина потока событий - наиболее распространенный в последние несколько десятилетий вариант. Теперь о типах ошибок. Их по большому счету бывает два: 1. Физическая ошибка - несуществующая команда процессору, отказ переферийного устройства, возникновение ошибки при выполнении команды (например деление на 0. 2. Логическая ошибка данные неприемлемы для обработки данной реализацией конкретного алгоритма. В последнее время во многих языках программирования физические ошибки обрабатываются системой или базовой подсистемой языка, на котором написана программа и поступают в программу уже в виде логических ошибок (исключений и т.д.) Что может означать "сделать отказ файловой системы частью кода" я, честно говоря, не понимаю. Грамотный программист обработает отказ и пойдет дальше. Например сообщит пользователю, что у него нет места на диске и продолжит работу. Конечно, я помню времена, когда программист мог непосредственно поправить машинный код в памяти компьютера. В большинстве случаев такой стиль программирования приводил к сбою работы не только "корректируемой" программы, но и системы в целом. Хотя это был как раз тот случай когда данные становились частью кода. Так что, прошу прощения за длинный ответ, но суть предложения мне не понятна. -------------------- Mirkes |
|||
|
||||
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
не знаю, я сталкиваюсь с другим. Если я в визуал студии открою код на c# и он будет с ошибкой, скажем неверно написана команда, то ничего работать не будет, мне студия сразу выдаст сообщение об ошибке. Я имел ввиду в данном случае вот такую ошибку- скажем написано такое сочетание команд, которое работать не сможет. В данном случае сразу же остановится работа программы и будет выдано сообщение об ошибке. А мне надо, чтобы программа сама нашла такое сочетание команд, которое будет работать. |
|||
|
||||
| Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Ну такое то исправление сделать не сложно - заменяем команды, вызвавшие ошибку на nop (no operation) и всего делов. Правда есть одна тонкость - в Вашем посте содержится лукавство, которое, с точки зрения исполнителя, которому предстоит реализовать Ваш заказ, является наглой ложью. Вы пишете "мне надо, чтобы программа сама нашла такое сочетание команд, которое будет работать". Это ложь, поскольку Вам надо такое сочетание команд, которое будет работать правильно не только в смысле отсутствия ошибок исполнения, но ЕЩЕ И ДЕЛАТЬ ТО, ЧТО ВАМ НУЖНО ПОЛУЧИТЬ! А вот со второй частью проблема, поскольку Вы же не сказали, что Вам надо! И единственный нормальный и простой способ в Visual Studio сказать что Вам надо, это написать программу без ошибок -------------------- Mirkes |
|||
|
||||
| Lois |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 19.5.2013 Репутация: нет Всего: нет |
я совершенно не понял в чём моя ложь... . Вы же не знаете что должны делать программа. Я пока не знаю целиком проблемы, но на данном этапе меня волнует только, чтобы программа не останавливалась, когда возникает ошибка. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |