Реификация естественного языка
От: ArhAngelVezel Россия  
Дата: 14.03.12 04:13
Оценка:
Существуют ли средства/метаязыки/методологии, которые основывались на реификации естественного языка? Т.е. я говорю, что: "Функция суммирования массива должна возврщать сумму всех элементов массива". Потом при помощи этого средства описываю, что:
  1. "функция суммирования массива" это
    function sum(int[] array)

  2. "должна возвращать" это
    return result

  3. "всех элементов массива" это
    for (int i=0; i<array.length; i++) el=array[i]

  4. "сумма", в данном контексте, это
    int result=0; .... result += el

Потом выставляю позиции. А средство хранит взаимозначность, и выдает либо постановку задачи на естественном языке, либо код программы.
Что я изобретаю?
Re: Реификация естественного языка
От: мыщъх США http://nezumi-lab.org
Дата: 14.03.12 04:24
Оценка: +1
Здравствуйте, ArhAngelVezel, Вы писали:

AAV>Существуют ли средства/метаязыки/методологии, которые основывались на реификации естественного языка?

естественные языки слишком неоднозначны. инстументальные средства для работы с ними есть. применяются главным образом к документации. типа чувак пишет "сегмент данных А, сегмент данных Б", а понятие "сегмент" не определяет. думаешь -- это что ли сегмент в терминах 86? так уже давно плоская память на дворе, какие тут еще сегменты, ах, он математик, и у него сегмент это "блок" или "порция" или "чанк", короче "кусок данных". а что можно делать с куском? читаешь документацию дальше и вкуриваешь, что сегменты данных можно только складывать в одну большую кучу. у сегмента есть уникальный идекс, определяющий порядок складывания, а вот насчет перекрытия сегментов ничего не сказано -- могут они перекрываться или нет. и только в сноске мелким шрифтом примечание, что перекрываться сегменты очень даже могут, ибо индекс это не просто уникальный id, это смещение. дальше выясняем в чем у нас смещение. думали в байтах, оказалось, что в символах. не угадали. и чтобы таких косяков не было, специальные средства помогают выявить баги документации. но автоматизировать написание программ -- это слишком.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Реификация естественного языка
От: lve-2010 Россия  
Дата: 14.03.12 07:49
Оценка:
Здравствуйте, ArhAngelVezel,
Если вас интересует вопрос "можно ли автоматизировать процесс получения компьютерной программы непосредственно
по запросу на естественном языке?", то в 1980 году в МЭСИ был завершен (1976-1980) проект "Латорица 2МВО",
в рамках которого был реализован пилотный вариант такой системы!
Re: Реификация естественного языка
От: Chrome  
Дата: 14.03.12 08:37
Оценка:
Стоит ли овчинка выделки?
Вы попробуйте на естественном языке полностью сформулировать все нюансы хотя бы простейшей функции суммирования элементов массива(типы принимаемых аргументов, понятие суммы элементов, максимальное число элементов, что делать при переполнении) и увидите, что такое описание может занять страницу мелким шрифтом.
И зачем такое надо?
Re: Реификация естественного языка
От: cvetkov  
Дата: 14.03.12 09:54
Оценка: 2 (1)
это не literate programming случайно?
Re: Реификация естественного языка
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.03.12 10:41
Оценка: 4 (1) -1
AAV>Что я изобретаю?

это переизобретение дсл-ей (Предметно-ориентированных языков программирования), для случая, когда дсл строится поверх ЕЯ
Re[2]: Реификация естественного языка
От: ArhAngelVezel Россия  
Дата: 14.03.12 14:54
Оценка:
Здравствуйте, DarkGray, Вы писали:

AAV>>Что я изобретаю?


DG>это переизобретение дсл-ей (Предметно-ориентированных языков программирования), для случая, когда дсл строится поверх ЕЯ

DSL имеет чуть другой принцип, точнее абсолютно противоположный.
При DSL я сначала пишу язык для определенного круга типовых задач, а потом на этом языке пишу программу.
Тут же я сначала пишу программу на естественном языке типовых задач, потом выделяю язык для преобразования.
Re[2]: Реификация естественного языка
От: ArhAngelVezel Россия  
Дата: 14.03.12 14:57
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>это не literate programming случайно?

Тоже нет. literate programming содержит в себе программу. Тут же исходник-описание не содержит в себе машинную программу. А программа появляется после того, как применяются определенные правила преобразования ЕЯ.
Re[3]: Реификация естественного языка
От: cvetkov  
Дата: 14.03.12 15:44
Оценка:
тогда не взлетит.
естественные языки неоднозначные.
Re[4]: Реификация естественного языка
От: Иван Дубров США  
Дата: 14.03.12 16:12
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>тогда не взлетит.

C>естественные языки неоднозначные.

Да-да, конечно.
Re[3]: Реификация естественного языка
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.03.12 16:21
Оценка: 4 (1)
AAV>Тут же я сначала пишу программу на естественном языке типовых задач, потом выделяю язык для преобразования.

это типичный подход программирования сверху вниз, сначала вводятся нечеткие общие абстракции, которые декомпизируются далее до конкретного воплощения.
только ты вместо, например, UML предлагаешь использовать ЕЯ
Re: Реификация естественного языка
От: Vaako Украина  
Дата: 14.03.12 19:37
Оценка: 1 (1)
Здравствуйте, ArhAngelVezel, Вы писали:

Удалено избыточное цитирование.

AAV>Что я изобретаю?


Херню. Почемуто бытует мнение, что естественный язык можно интерпретировать/компилировать в компьютерную программу. Но почему так должно быть? Вот DSL которые вроде приближаются к ЕЯ, получаются узко специализированными, а ЕЯ наоборот — универсален до невозможности. Потом, почему процедура перевода ЕЯ в ЯВУ (язык программирования высокого уровня) должна быть алгоритмизируемой? Ведь есть целый класс неалгоритмизируемыз процедур, например К-системы, т.е. отсутствие общей процедуры требует каждый раз вручную ссвязывать любую фразу на ЕЯ с конкретной конструкцией ЯВУ. Это значит что у вас просто накапливается набор пар конструкция на ЕЯ с конструкцией на ЯВУ и чем больше тем меньше ситемы вы во всем этом находите. Потом возникает неоднозначность, одно и то же на ЕЯ требует принципиально разных конструкций ЯВУ — "должна возвращать — это значит возвращать долги, а не какой то там return!". Вот отсюда начинается сужение предметной области дабы избежать двусмысленности и мы от ЕЯ потихоньку мигрируем к DSL. НУ потом, ЕЯ используется не столько для описания программы, сколько для рассуждений о программе, а значит искать соответствие ЕЯ <-> ЯВУ это вообще говоря немного не в тему. По моим наблюдениям ЕЯ представляет программу скорее в виде образов а не описаний. Тут корявые картинки лучше подходят чем ЕЯ рассуждения. Так что вы не ЯВУ подгоняете под ЕЯ, а наоборот — ЕЯ пытаетесь подогнать под ЯВУ забывая что для этой цели в мозгу у нас целая куча нейронов с зашибись каким количеством связей над этим работает, а вы хотите все свести до простого управляемого (читайте алгоритмизированного) взаимно или даже одностороне однозначного соответствия.

Так что я вам уже сказал что вы на самом деле делаете
Не обижайтесь, но надоедает читать посты от людей вроде думающих, а на самом деле верующих в какието странные суеверия и шаблоны о ЕЯ. ВЫ что как математик безоговорочно верите что все неформальное это не более чем кастрированное математическое описание? И дело тем самым сводится к добавлении какой-то ерунды к неформальному описанию на ЕЯ чтобы достигнуть строгости и формализма и применить всю мощь теории компиляторов? Откуда такие пробелы в образовании? ООП вас окончательно заставило мыслить объектами! А Фрейд говорил что мы думаем совсем не в терминах объектов и не объектами а чем то совершенно другим Короче — не получится ничего хорошего, практичного, полезного и умного. А вы уверены что у программиста в мозгах есть естественное разделение приведенного вами примера точно на такие три части что вы привели? Человек мыслит преимущественно образами — то есть неделимым целым. Это все математики виноввты со своей формальной логикой — приучили нас что любое рассуждение состоит из кучи мелких отдельных конструкций

Аж плакать хочется. Математика не есть ЕЯ. ЕЯ не есть алгоритмизируемые , формализуемые, однозначные и строгие конструкции.
Re[4]: Реификация естественного языка
От: ArhAngelVezel Россия  
Дата: 15.03.12 05:02
Оценка:
Здравствуйте, DarkGray, Вы писали:


AAV>>Тут же я сначала пишу программу на естественном языке типовых задач, потом выделяю язык для преобразования.


DG>это типичный подход программирования сверху вниз, сначала вводятся нечеткие общие абстракции, которые декомпизируются далее до конкретного воплощения.


Ну не совсем. Тут не придумываются общие абстракции. Тут изначально описывается программа на естественном языке, а потом, лучшим компилятором всех времен, мозгом человека, преобразуется в программу. Это подобно как программист, по постановке, пишет код, только тут постановку пишет сам программист своими словами, и постановка является частью исходного кода. Аля comment drive development

DG>только ты вместо, например, UML предлагаешь использовать ЕЯ

Кстати, UML вполне корректное сравнение, спасибо.
Re[2]: Реификация естественного языка
От: ArhAngelVezel Россия  
Дата: 15.03.12 07:46
Оценка:
Здравствуйте, Vaako, Вы писали:


V>Херню. Почемуто бытует мнение, что естественный язык можно интерпретировать/компилировать в компьютерную программу.


Вы допускаете, что можно написать программу по постановкам? Так почему вы не допускаете, что можно соотнести часть кода с частью постановки?


V>Потом, почему процедура перевода ЕЯ в ЯВУ (язык программирования высокого уровня) должна быть алгоритмизируемой?


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


V>отсутствие общей процедуры требует каждый раз вручную ссвязывать любую фразу на ЕЯ с конкретной конструкцией ЯВУ.


Да


V>Это значит что у вас просто накапливается набор пар конструкция на ЕЯ с конструкцией на ЯВУ и чем больше тем меньше ситемы вы во всем этом находите. Потом возникает неоднозначность, одно и то же на ЕЯ требует принципиально разных конструкций ЯВУ — "должна возвращать — это значит возвращать долги, а не какой то там return!".


Именно. В данном случае я не пытаюсь выделить общие конструкции языка. Я привязываю код к постановке.


V>Аж плакать хочется. Математика не есть ЕЯ. ЕЯ не есть алгоритмизируемые , формализуемые, однозначные и строгие конструкции.


Но можно определенными правилами формализовать конкретно эту конструкцию ЕЯ в конкретно данном случае, с ВУЯВУ.



ЗЫ Перечитал свой первый пост. Реально я там очень поверхностно написал... Подумаю как формализовать...
Re: Реификация естественного языка
От: lost_guadelenn  
Дата: 15.03.12 10:49
Оценка:
Здравствуйте, ArhAngelVezel.

Огурец?
Re[2]: Реификация естественного языка
От: ArhAngelVezel Россия  
Дата: 15.03.12 11:07
Оценка:
Здравствуйте, lost_guadelenn, Вы писали:

_>Здравствуйте, ArhAngelVezel.


_>Огурец?


Это BDD. Скажем так Cucumber послужил толчком для мыслей по этому поводу. Но это всё таки Unit тестирование, а не разработка.
Re: Реификация естественного языка
От: maxkar  
Дата: 16.03.12 10:04
Оценка:
Здравствуйте, ArhAngelVezel, Вы писали:

AAV>Что я изобретаю?

На Pseudocode Programming Process похоже.
Re: Реификация естественного языка
От: DSblizzard Россия  
Дата: 16.03.12 23:49
Оценка:
Здравствуйте, ArhAngelVezel, Вы писали:

AAV>Существуют ли средства/метаязыки/методологии, которые основывались на реификации естественного языка?


Вот заслуживающие внимания статьи и сайты, которые я нашел полтора года назад:
http://www.rsdn.ru/forum/philosophy/3955003.flat.aspx
Автор: DSblizzard
Дата: 12.09.10


Оно?
Программировать сложно. Но не программировать еще сложнее.
Re[3]: Реификация естественного языка
От: Vaako Украина  
Дата: 17.03.12 19:33
Оценка:
Здравствуйте, ArhAngelVezel, Вы писали:

AAV>Вы допускаете, что можно написать программу по постановкам? Так почему вы не допускаете, что можно соотнести часть кода с частью постановки?


Соотнести конечно можно, но есть нюансы. Есть хорошая книга по теме реализации неалгоритмизируемых процедур через продукционные правила с исключениями — В.Е.Кузнецов "Представление в ЭВМ неформальных процедур". Поймите, что как только вы решаете отказаться от процедуры перевода языка в код, то мы можем буквально взять любую программу и "Войну и мир" Толстого сопоставляя каждую строчку программы строке романа, поскольку неалгоритмизируемые процедуры специально для этого предназначены — что-угодно ставить в соответствии чему угодно. Но судя по ответам вы хотите повторно использовать соответствия между естественным языком и кодом, потому вы не ставите цель использовать настоящий разговорный язык, а лишь зауженное подмножество специальных терминов как в DSL.

AAV>Кто сказал, что процедура перевода ЕЯ в ВУЯВУ должна быть алгоритмизируемой? Я сказал, что методология заключается в том, что человек пишет на ЕЯ, а потом сам транслирует в ВУЯВУ, с привязкой к ЕЯ.


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

V>>отсутствие общей процедуры требует каждый раз вручную ссвязывать любую фразу на ЕЯ с конкретной конструкцией ЯВУ.

AAV>Да

Мне кажется что вы не оцениваете объем работы. Лучше использовать для решения вашей задачи что-то вроде DSL с синтаксисом напоминающим естественные фразы, иначе при каждой попытке компиляции/интерпретации вам потребуется переделывать ваш DSL с поддержкой совместимости со всеми предыдущими компиляциями/интерпретациями. Тогда лучше сразу искать подходящую систему искусственного интеллекта поскольку существующие средства разработки просто не потянут сложность задачи. А в DSL у вас будет гораздо меньше работы, но получите псевдо естественный язык.

AAV>Именно. В данном случае я не пытаюсь выделить общие конструкции языка. Я привязываю код к постановке.


Вы таки точно не понимаете проблемы. Как только вы решаете связывание представить неалгоритмизируемой процедурой то все вопросы какие конструкции языка как связывать и какие из них более или менее общие мы не сможем обсуждать. Вы как бы решили не говорить про то, как происходит связывание, потому задача явно не выполнимая, либо вы все таки использовать что-то типа DSL.

AAV>Но можно определенными правилами формализовать конкретно эту конструкцию ЕЯ в конкретно данном случае, с ВУЯВУ.


Специально подобранные термины собранные в строго определенной последовательности , которая, однако, чем то напоминает фразы на естественном языке — да можно конечно. Но тогда признайте, что речь не идет про естественный разговорный язык.

AAV>ЗЫ Перечитал свой первый пост. Реально я там очень поверхностно написал... Подумаю как формализовать...


Ну вот видите, оставлять естественный язык в качестве естественного языка — это самая дорогостоящая ошибка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.