Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Автоматическое создание искусственных языков 
:(
    Опции темы
Lois
Дата 3.3.2014, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 19.5.2013

Репутация: нет
Всего: нет



Пришла в голову вот такая идея. Оказалось, что есть много разных любителей создания искусственных языков, которые применяются для разных нужд, хотя есть люди, которые это делают просто так из интереса. Например для некоторых фильмов, таких как Аватар придумывались такие языки. Есть даже инопланетные искусственные языки. Я подумал, что можно создать программу, которая бы продуцировала подобные языки. Меня наиболее заинтересовала проблема производства подобным образом языков программирования. Хотелось бы узнать ваше мнение. От чего здесь можно танцевать?
PM MAIL   Вверх
Pavia
Дата 3.3.2014, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Такие проекты уже есть. Поищи генетические алгоритмы для создания компилятора. 
PM MAIL   Вверх
Lois
Дата 3.3.2014, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 19.5.2013

Репутация: нет
Всего: нет



Цитата(Pavia @  3.3.2014,  18:01 Найти цитируемый пост)
Такие проекты уже есть. Поищи генетические алгоритмы для создания компилятора.  


действительно, похоже есть что-то из этой серии, но как мне показалось не совсем близко... . В любом случае полезно.

PM MAIL   Вверх
Lipetsk
  Дата 4.3.2014, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: 2
Всего: 5



Цитата(Pavia @ 3.3.2014,  18:01)
Такие проекты уже есть. Поищи генетические алгоритмы для создания компилятора.

что-то ничего не нашел
PM   Вверх
Lois
Дата 5.3.2014, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 19.5.2013

Репутация: нет
Всего: нет



Цитата(Lipetsk @  4.3.2014,  14:49 Найти цитируемый пост)
что-то ничего не нашел 


http://www.kit-e.ru/assets/files/pdf/2005_01_138.pdf
Только похоже генетические алгоритмы здесь ни при чём.
PM MAIL   Вверх
Lipetsk
Дата 5.3.2014, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: 2
Всего: 5



Lois, спасибо
но, действительно, это про другое

Это сообщение отредактировал(а) Lipetsk - 5.3.2014, 13:26
PM   Вверх
Mirkes
Дата 5.3.2014, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Вообще-то это абсолютно детерминированная разработка компилятора по формальному описанию языка.
Генетические алгоритмы никакого отношения к языкам программирования не имеют. Это просто специально сконструированная процедура случайного поиска.
Генетическое программирование ближе к делу, но скорее всего тоже не то.

За свою профессиональную карьеру реализовал несколько десятков простых языков. Но каждый язык создавался под конкретную задачу. Программа генерирующая язык программирования наверное возможна. Может даже удастся построить для нее компилятор или интерпретатор. Но вот вопрос, как объяснить программе какую задачу должен решать язык?

Насчет генерации псевдо-естественных языков как в фильмах пятый элемент и аватар, то нет особой проблемы. Поскольку мы не связаны никакими ограничениями нужно просто задать словарь нового языка и собрать из фонем, воспроизводимых человеческим горлом звуковое представление этих слов. Дальше остается только выучить этот набор слов.

Кстати, при задании звучания слов можно использовать генератор случайных чисел, так любимый автором темы smile


--------------------
Mirkes
PM MAIL   Вверх
Lois
Дата 6.3.2014, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 19.5.2013

Репутация: нет
Всего: нет



Цитата(Mirkes @  5.3.2014,  21:57 Найти цитируемый пост)
Поскольку мы не связаны никакими ограничениями нужно просто задать словарь нового языка и собрать из фонем, воспроизводимых человеческим горлом звуковое представление этих слов.


некоторые ограничения наверное всё же есть- язык должен иметь определённую культуру или должен быть сделан в одном и том же стиле. Иначе это будет такая мешанина.... .

Цитата(Mirkes @  5.3.2014,  21:57 Найти цитируемый пост)
За свою профессиональную карьеру реализовал несколько десятков простых языков. Но каждый язык создавался под конкретную задачу.


а можете рассказать поподробнее, я не в курсе зачем нужно создавать языки отдельные для конкретной задачи. Почему нельзя воспользоваться уже созданными языками?
PM MAIL   Вверх
Mirkes
Дата 7.3.2014, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Цитата(Lois @  6.3.2014,  21:10 Найти цитируемый пост)
а можете рассказать поподробнее, я не в курсе зачем нужно создавать языки отдельные для конкретной задачи. Почему нельзя воспользоваться уже созданными языками? 

Довольно часто возникают ситуации когда необходимо обеспечить достаточно большую гибкость программы, причем предусмотреть заранее, что именно потребуется в ходе работы невозможно. Тогда создается язык описания подзадачи и интерпретатор с этого языка. Такой подход позволяет гибко обрабатывать различные ситуации, поскольку интерпретатор пишется на отдельные "команды", а вот что с помощью этих команд можно наворотить, зависит только от пользователя.

Прошу прощения, забыл про вторую часть вопроса - почему нельзя воспользоваться готовыми языками. Большинство готовых языков очень мощные, а вот интерпретатор писать все равно мне. Так что проще изменить язык. Написать один раз тоже не получается, поскольку мои интерпретаторы не существуют отдельно, а только внутри готовой программы и оптимизированы под конкретные нужды.
Где-то так.

Это сообщение отредактировал(а) Mirkes - 7.3.2014, 00:39


--------------------
Mirkes
PM MAIL   Вверх
Lois
Дата 7.3.2014, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 19.5.2013

Репутация: нет
Всего: нет



Цитата(Mirkes @  7.3.2014,  00:37 Найти цитируемый пост)
 Большинство готовых языков очень мощные, а вот интерпретатор писать все равно мне


а можно сделать так, чтобы если программа с ошибкой, то её не вышибает в среде программирования, а это становится частью кода? То есть написать такой интерпретатор, который заточен именно под это?

PM MAIL   Вверх
Mirkes
Дата 7.3.2014, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Цитата(Lois @  7.3.2014,  03:02 Найти цитируемый пост)
а можно сделать так, чтобы если программа с ошибкой, то её не вышибает в среде программирования, а это становится частью кода? То есть написать такой интерпретатор, который заточен именно под это?

Честно говоря не понял. Если речь идет о том, что при возникновении ошибки программа бы не разваливалась, а продолжала работать, то так ведут себя большинство приличных программ. Что означает "становится частью кода"?

Вообще говоря все программы делятся на три категории, по типу "идеальных" машин. Точнее говоря есть три модели вычислений и соответствующие программы:
1. Машина потока команд - все определяется последовательностью заданных команд. Программы не интерактивны.
2. Машина потока данных - все определяется поступающими данными. В этом случае поступление некорректных данных можно рассматривать как часть "кода"
3. Машина потока событий - наиболее распространенный в последние несколько десятилетий вариант. 

Теперь о типах ошибок. Их по большому счету бывает два:
1. Физическая ошибка - несуществующая команда процессору, отказ переферийного устройства, возникновение ошибки при выполнении команды (например деление на 0.
2. Логическая ошибка данные неприемлемы для обработки данной реализацией конкретного алгоритма.

В последнее время во многих языках программирования физические ошибки обрабатываются системой или базовой подсистемой языка, на котором написана программа и поступают в программу уже в виде логических ошибок (исключений и т.д.)

Что может означать "сделать отказ файловой системы частью кода" я, честно говоря, не понимаю. Грамотный программист обработает отказ и пойдет дальше. Например сообщит пользователю, что у него нет места на диске и продолжит работу.

Конечно, я помню времена, когда программист мог непосредственно поправить машинный код в памяти компьютера. В большинстве случаев такой стиль программирования приводил к сбою работы не только "корректируемой" программы, но и системы в целом. Хотя это был как раз тот случай когда данные становились частью кода.

Так что, прошу прощения за длинный ответ, но суть предложения мне не понятна.


--------------------
Mirkes
PM MAIL   Вверх
Lois
Дата 7.3.2014, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 19.5.2013

Репутация: нет
Всего: нет



Цитата(Mirkes @  7.3.2014,  13:27 Найти цитируемый пост)
Честно говоря не понял. Если речь идет о том, что при возникновении ошибки программа бы не разваливалась, а продолжала работать, то так ведут себя большинство приличных программ.


не знаю, я сталкиваюсь с другим. Если я в визуал студии открою код на c# и он будет с ошибкой, скажем неверно написана команда, то ничего работать не будет, мне студия сразу выдаст сообщение об ошибке.
Я имел ввиду в данном случае вот такую ошибку- скажем написано такое сочетание команд, которое работать не сможет. В данном случае сразу же остановится работа программы и будет выдано сообщение об ошибке. А мне надо, чтобы программа сама нашла такое сочетание команд, которое будет работать.

PM MAIL   Вверх
Mirkes
Дата 7.3.2014, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Цитата(Lois @  7.3.2014,  18:57 Найти цитируемый пост)
Я имел ввиду в данном случае вот такую ошибку- скажем написано такое сочетание команд, которое работать не сможет. В данном случае сразу же остановится работа программы и будет выдано сообщение об ошибке. А мне надо, чтобы программа сама нашла такое сочетание команд, которое будет работать.


Ну такое то исправление сделать не сложно - заменяем команды, вызвавшие ошибку на nop (no operation) и всего делов. Правда есть одна тонкость - в Вашем посте содержится лукавство, которое, с точки зрения исполнителя, которому предстоит реализовать Ваш заказ, является наглой ложью. Вы пишете "мне надо, чтобы программа сама нашла такое сочетание команд, которое будет работать". Это ложь, поскольку Вам надо такое сочетание команд, которое будет работать правильно не только в смысле отсутствия ошибок исполнения, но ЕЩЕ И ДЕЛАТЬ ТО, ЧТО ВАМ НУЖНО ПОЛУЧИТЬ! А вот со второй частью проблема, поскольку Вы же не сказали, что Вам надо! И единственный нормальный и  простой способ в Visual Studio сказать что Вам надо, это написать программу без ошибок smile Ну либо надо пользоваться более крутыми метаязыками, которые позволяют нарисовав блок-схему или иное визуальное представление алгоритма получить готовую работающую программу. Я такими не пользовался, но читал, что они существуют.


--------------------
Mirkes
PM MAIL   Вверх
Lois
Дата 8.3.2014, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 19.5.2013

Репутация: нет
Всего: нет



Цитата(Mirkes @  7.3.2014,  19:35 Найти цитируемый пост)
Правда есть одна тонкость - в Вашем посте содержится лукавство, которое, с точки зрения исполнителя, которому предстоит реализовать Ваш заказ, является наглой ложью. Вы пишете "мне надо, чтобы программа сама нашла такое сочетание команд, которое будет работать". Это ложь, поскольку Вам надо такое сочетание команд, которое будет работать правильно не только в смысле отсутствия ошибок исполнения, но ЕЩЕ И ДЕЛАТЬ ТО, ЧТО ВАМ НУЖНО ПОЛУЧИТЬ! 


я совершенно не понял в чём моя ложь... . Вы же не знаете что должны делать программа. Я пока не знаю целиком проблемы, но на данном этапе меня волнует только, чтобы программа не останавливалась, когда возникает ошибка.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0666 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.