На днях просмотрел "Самоопределение в контексте глобальных вызовов" Переслегина. Он конечно сильно разочаровывает в последние 5 лет. Но любопытные идеи в видео есть. Как программер я отметил ряд проколов, например оказывается "компьютеры" уже проходят тест тьюринга и прочий желтый снег. Но удивило другое — Переслегин (а с ними вероятно прочая академическая братия) до сих пор ждут "программирование на естественном языке" как некоторое качественное изменение в IT.
Если честно совсем не могу понять какие задачи "программирование на естественном языке" может решить, т.к. имхо большинство программеров умудряются паршиво программировать и на формальных языках.
Или это банальная боязьнь "академической братии" перед изучение синтаксиса? И они надеяться — вот когда с компьютером можно будет поговорить на "человеческом языке" вот тогда мы эгегей сколько всего хорошего напрограммируем!
Re: Естественные языки программирования, шевелятся?
IQ>Если честно совсем не могу понять какие задачи "программирование на естественном языке" может решить, т.к. имхо большинство программеров умудряются паршиво программировать и на формальных языках. IQ>Или это банальная боязьнь "академической братии" перед изучение синтаксиса? И они надеяться — вот когда с компьютером можно будет поговорить на "человеческом языке" вот тогда мы эгегей сколько всего хорошего напрограммируем!
Дело не в синтаксисе. Принципиальное различие между ЯП и естественным языком состоит в том, что текст на ЯП имеет точное значение и однозначно интерпретируется. Если при компиляции возникает неопределенность например, один и тот же идентификатор может быть разрешён в два объекта), и компилятор не имеет явных правил её разрешения, то будет ошибка. Текст на естественном языке имеет неопределённость, которую мы разрешаем на основе контекста и личного опыта, применяя для этого свой интеллект. Результат у этого процесса недетерминирован, поэтому часто разные люди понимают один и тот же текст по-разному.
Работа программиста в своей сути и состоит в том, чтобы перевести нечёткую постановку задачи на естественном язык в однозначное описание решения на формальном.
Re[2]: Естественные языки программирования, шевелятся?
Здравствуйте, 0x7be, Вы писали:
0>Здравствуйте, IQuerist, Вы писали:
IQ>>Если честно совсем не могу понять какие задачи "программирование на естественном языке" может решить, т.к. имхо большинство программеров умудряются паршиво программировать и на формальных языках. IQ>>Или это банальная боязьнь "академической братии" перед изучение синтаксиса? И они надеяться — вот когда с компьютером можно будет поговорить на "человеческом языке" вот тогда мы эгегей сколько всего хорошего напрограммируем! 0>Дело не в синтаксисе. Принципиальное различие между ЯП и естественным языком состоит в том, что текст на ЯП имеет точное значение и однозначно интерпретируется. Если при компиляции возникает неопределенность например, один и тот же идентификатор может быть разрешён в два объекта), и компилятор не имеет явных правил её разрешения, то будет ошибка. Текст на естественном языке имеет неопределённость, которую мы разрешаем на основе контекста и личного опыта, применяя для этого свой интеллект. Результат у этого процесса недетерминирован, поэтому часто разные люди понимают один и тот же текст по-разному. 0>Работа программиста в своей сути и состоит в том, чтобы перевести нечёткую постановку задачи на естественном язык в однозначное описание решения на формальном.
Это-то понятно, более того, если раньше "запрограммировать" часто означало решить какую-то задачу численными методами, то сегодня "запрограммировать" имхо уже означает создание конвенционной системы/приложения, что имхо само по себе уже по большому счету не является "программной" задачей и вероятно с IOT этот тренд качественно усилиться... Где тут место для "программирования на естественном языке"?
PS имхо мы видим совсем другой тренд — интуитивность интерфейсов, которая дает возможность неподготовленным пользователям использовать довольно сложные системы. Но это имхо идет в полном разрезе с "программированием на естественном языке".
Re[3]: Естественные языки программирования, шевелятся?
Здравствуйте, IQuerist, Вы писали:
IQ>Это-то понятно, более того, если раньше "запрограммировать" часто означало решить какую-то задачу численными методами, то сегодня "запрограммировать" имхо уже означает создание конвенционной системы/приложения, что имхо само по себе уже по большому счету не является "программной" задачей и вероятно с IOT этот тренд качественно усилиться... Где тут место для "программирования на естественном языке"?
А фиг его знает. Автоматическое программирование по требованиям, сформулированным на естественном языке?
IQ>PS имхо мы видим совсем другой тренд — интуитивность интерфейсов, которая дает возможность неподготовленным пользователям использовать довольно сложные системы. Но это имхо идет в полном разрезе с "программированием на естественном языке".
Не знаю. Взять, например, Siri. Когда ей посылается запрос на естественном языке — это разве не программирование её на конкретное действие?
С другой стороны, язык, понимаемый Siri — это лишь некоторое ограниченное подмножество естественного языка, и контекст в котором он интерпретируется тоже предельно узок.
Получается такой DSL
Re[4]: Естественные языки программирования, шевелятся?
Здравствуйте, 0x7be, Вы писали:
0>Здравствуйте, IQuerist, Вы писали:
IQ>>Это-то понятно, более того, если раньше "запрограммировать" часто означало решить какую-то задачу численными методами, то сегодня "запрограммировать" имхо уже означает создание конвенционной системы/приложения, что имхо само по себе уже по большому счету не является "программной" задачей и вероятно с IOT этот тренд качественно усилиться... Где тут место для "программирования на естественном языке"? 0>А фиг его знает. Автоматическое программирование по требованиям, сформулированным на естественном языке?
мы то с вами понимаем процесс разработки целиком, и какую часть в этом процессе занимает активность "формализация требований"?
IQ>>PS имхо мы видим совсем другой тренд — интуитивность интерфейсов, которая дает возможность неподготовленным пользователям использовать довольно сложные системы. Но это имхо идет в полном разрезе с "программированием на естественном языке". 0>Не знаю. Взять, например, Siri. Когда ей посылается запрос на естественном языке — это разве не программирование её на конкретное действие?
0>С другой стороны, язык, понимаемый Siri — это лишь некоторое ограниченное подмножество естественного языка, и контекст в котором он интерпретируется тоже предельно узок. 0>Получается такой DSL
Имхо нет... На мой взгляд это просто часть интерфейса, ведь нового поведения не появляется.
Re[5]: Естественные языки программирования, шевелятся?
Здравствуйте, IQuerist, Вы писали:
0>>А фиг его знает. Автоматическое программирование по требованиям, сформулированным на естественном языке? IQ> мы то с вами понимаем процесс разработки целиком, и какую часть в этом процессе занимает активность "формализация требований"?
ИМХО, всю. Формализация заканчивается кодом — единственным формальным описанием системы. Требования, пусть даже очень подробные, записанные на естественном языке, всё равно имеют неопределённость.
IQ>Имхо нет... На мой взгляд это просто часть интерфейса, ведь нового поведения не появляется.
Окей, давайте пофантазируем ещё. Курс SICP определяет язык программирования как совокупность трёх компонент:
1. Примитивов
2. Средств комбинации.
3. Средств абстракции.
Сири позволяет исполнять некоторые примитивы. Если вдруг появится возможность комбинировать несколько операций в один сценарий и абстрагировать его за некоторой новой фразой, причем делать это тоже голосом, получится ЯП? По моему мнению — да. Будет ли это естественный язык — ХЗ, скорее — нет
Re[6]: Естественные языки программирования, шевелятся?
Здравствуйте, 0x7be, Вы писали:
0>Здравствуйте, IQuerist, Вы писали:
0>>>А фиг его знает. Автоматическое программирование по требованиям, сформулированным на естественном языке? IQ>> мы то с вами понимаем процесс разработки целиком, и какую часть в этом процессе занимает активность "формализация требований"? 0>ИМХО, всю. Формализация заканчивается кодом — единственным формальным описанием системы. Требования, пусть даже очень подробные, записанные на естественном языке, всё равно имеют неопределённость.
В современных проектах кодом заканчивается очень и очень большая группа активностей
IQ>>Имхо нет... На мой взгляд это просто часть интерфейса, ведь нового поведения не появляется. 0>Окей, давайте пофантазируем ещё. Курс SICP определяет язык программирования как совокупность трёх компонент: 0>1. Примитивов 0>2. Средств комбинации. 0>3. Средств абстракции.
0>Сири позволяет исполнять некоторые примитивы. Если вдруг появится возможность комбинировать несколько операций в один сценарий и абстрагировать его за некоторой новой фразой, причем делать это тоже голосом, получится ЯП? По моему мнению — да. Будет ли это естественный язык — ХЗ, скорее — нет
Чего бы программер не изобретал, в итоге получается ЯП
Re[3]: Естественные языки программирования, шевелятся?
Здравствуйте, IQuerist, Вы писали:
IQ>PS имхо мы видим совсем другой тренд — интуитивность интерфейсов, которая дает возможность неподготовленным пользователям использовать довольно сложные системы. Но это имхо идет в полном разрезе с "программированием на естественном языке".
Домохозяйки скоро будут программировать на естественном языке. Но можно ли будет считать это программированием? С нашей проф точки зрения — скорее нет, с бытовой — наверно — да.
Re[4]: Естественные языки программирования, шевелятся?
Здравствуйте, утпутуук, Вы писали:
У>Здравствуйте, IQuerist, Вы писали:
IQ>>PS имхо мы видим совсем другой тренд — интуитивность интерфейсов, которая дает возможность неподготовленным пользователям использовать довольно сложные системы. Но это имхо идет в полном разрезе с "программированием на естественном языке".
У>Домохозяйки скоро будут программировать на естественном языке. Но можно ли будет считать это программированием? С нашей проф точки зрения — скорее нет, с бытовой — наверно — да.
Вопрос имхо довольно принципиальный... они будут заниматься "разработкой" или использовать возможности продвинутых интерфейсов?
Эдак вы и верстальщиков в программисты запишите
Re: Естественные языки программирования, шевелятся?
Занятный факт. В японском языке практически отсутсвует применение слова "нет". И вообще, повелительного наклонения. Когда-то оно было, но только между хозяином и рабом. В результате нельзя сказать в баре, дайте мне сакэ. Необходимо говорить что-то типа "сакэ иметь мне желательно". Зачастую митинги программистов проводятся на английском языке, даже если участвуют только японцы. А уж программировать на японском — невозможно.
Re: Естественные языки программирования, шевелятся?
Думаю, "программирование на естественном языке" легче всего реализовать в форме формализующего диалога с компьютером.
То есть, человек будет пытаться сформулировать требования к программе как может, а компьютер будет задавать уточняющие вопросы, пытаясь устранить все неоднозначности, до тех пор, пока однозначность очередного требования не будет достигнута.
Скорее всего, вместо кода программы будет выступать формальное описание требований, могущее быть однозначно отображенным в текстовое описание на естественном языке (его подмножестве, если точнее).
Очередной этап программирования — внесение очередного требования — будет считаться завершенным, когда компьютер зачитает формальное описание этого требования и на его вопросы "Всё ли верно? Уточнений нет?" человек ответит соответственно "Да" и "Нет".
В какой-то мере и сейчас, когда программист пытается скормить компилятору некорректный код (не до конца формализованные требования), то между программистом и компилятором происходит некий "диалог" (состоящий из сообщений об ошибках и попыток исправить код), заканчивающийся полной формализацией. Осталось перевести этот диалог на естественный язык.
Как побочный эффект, по ходу работы программист будет естественным образом осваивать особенности формального языка описания требований и будет пытаться говорить с компьютером сразу на нем, не используя неуместные в конкретном случае фигуры естественного языка. Так он сможет вводить/надиктовывать требования с меньшим числом ошибок, сокращая стадию формализующего диалога.
Каша в голове — пища для ума (с)
Re[2]: Естественные языки программирования, шевелятся?
Здравствуйте, L_G, Вы писали:
L_G>То есть, человек будет пытаться сформулировать требования к программе как может, а компьютер будет задавать уточняющие вопросы, пытаясь устранить все неоднозначности, до тех пор, пока однозначность очередного требования не будет достигнута.
А откуда известно, что она вообще может быть достигнута? Тут люди не могут заставить заказчиков нормально сформулировать требования, а ты про машину.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: Естественные языки программирования, шевелятся?
Здравствуйте, Ops, Вы писали:
Ops>А откуда известно, что она вообще может быть достигнута? Тут люди не могут заставить заказчиков нормально сформулировать требования, а ты про машину.
Может. Необходимо только добавить "умолчания".
Например, "напиши мне ПриветМир" — выведет "Привет Мир" белыми буквами на чёрном фоне в углу экрана. Если пользователю не понравится, то он начнёт добавлять уточнения.
Вселенная бесконечна как вширь, так и вглубь.
Re[4]: Естественные языки программирования, шевелятся?
Здравствуйте, Real 3L0, Вы писали:
R3>Может. Необходимо только добавить "умолчания". R3>Например, "напиши мне ПриветМир" — выведет "Привет Мир" белыми буквами на чёрном фоне в углу экрана. Если пользователю не понравится, то он начнёт добавлять уточнения.
Это все хорошо для примитивных задач. А как насчет "создай мне программу документооборота для моей фирмы"?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[5]: Естественные языки программирования, шевелятся?
Ops>Это все хорошо для примитивных задач. А как насчет "создай мне программу документооборота для моей фирмы"?
Зачем? "Зарегистрируй документ", "Найди документ", "Передай Иванову для ознакомления". Документооборот без мышки и клавиатуры становится просто великолепен.
Жизнь не обязана доставлять удовольствие. Достаточно отсутствия страданий.
Re[5]: Естественные языки программирования, шевелятся?
Здравствуйте, s_aa, Вы писали:
_>Зачем? "Зарегистрируй документ", "Найди документ", "Передай Иванову для ознакомления". Документооборот без мышки и клавиатуры становится просто великолепен.
Сначала нужно эти операции как-то объяснить машине, что сводится к созданию системы документооборота.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[6]: Естественные языки программирования, шевелятся?
Здравствуйте, IQuerist, Вы писали:
IQ>Если честно совсем не могу понять какие задачи "программирование на естественном языке" может решить, т.к. имхо большинство программеров умудряются паршиво программировать и на формальных языках.
Извините, просто не могу удержаться:
Re[3]: Естественные языки программирования, шевелятся?
Ops>А откуда известно, что она вообще может быть достигнута? Тут люди не могут заставить заказчиков нормально сформулировать требования, а ты про машину.
Дык по аналогии с обычным программированием — с ним же как-то чего-то достигают.
Процесс программирования на естественном языке вовсе не обязательно будет менее долгим и мучительным, он просто позволит снизить требования к квалификации программиста (но не бизнес-аналитика — собственно программировать будет теперь аналитик!)
Людям в общении с заказчиком не хватает либо времени, либо терпения, дотошности и понимания, что формализация еще не достигла 100% — у компьютера со всем этим проблем нет. Позволит ли новая технология экономить человекочасы (убирая программиста, но нагружая аналитика дополнително) — вопрос, естественно, кардинальный. По крайней мере, на времени общения аналитика с программистом, в т.ч. через написание/чтение документации (а это часы двух человек!) экономия явная.
Каша в голове — пища для ума (с)
Re[8]: Естественные языки программирования, шевелятся?
Здравствуйте, Real 3L0, Вы писали:
R3>Здравствуйте, Ops, Вы писали:
Ops>>Даже если фирма — Газпром?
R3>Лукойла и Росатома достаточно?
Т.е. программирование на естественном языке сводится к решению о внедрении SAP или чего-то похожего
В таком случае концептуальную модель такого "естественного языка программирования" можно свести к одной синтаксической единице — "внедряй!" . Сразу вспоминается древний ролик
Здравствуйте, IQuerist, Вы писали:
IQ>Т.е. программирование на естественном языке сводится к решению о внедрении SAP или чего-то похожего
Перечитай мой пример выше.
Ещё добавлю, что кроме "по умолчанию", система должна уметь делать выводы. Например, если в системе один принтер, то глупо спрашивать у пользователя, на какой принтер отправлять печатать.
Вселенная бесконечна как вширь, так и вглубь.
Re[10]: Естественные языки программирования, шевелятся?
Здравствуйте, Real 3L0, Вы писали:
R3>Здравствуйте, IQuerist, Вы писали:
IQ>>Т.е. программирование на естественном языке сводится к решению о внедрении SAP или чего-то похожего
R3>Перечитай мой пример выше.
R3>Ещё добавлю, что кроме "по умолчанию", система должна уметь делать выводы.
Не "системное" это дело делать выводы. Система должна предлагать решения человеку, а не страдать кибершизафренией.
R3>Например, если в системе один принтер, то глупо спрашивать у пользователя, на какой принтер отправлять печатать.
Действительно глупо, вероятность того, что этот принтер находится в другом офисе за 1000 км, пренебрежительно мала
Re[11]: Естественные языки программирования, шевелятся?
Здравствуйте, IQuerist, Вы писали:
IQ>Не "системное" это дело делать выводы. Система должна предлагать решения человеку, а не страдать кибершизафренией.
Либо ты страшно далёк от современных технологий, либо "тупо тупишь".
В том, о чём я написал, "выводы" и "решения" можно понимать синонимами.
Намёк в данном случае — RDF, OWL.
IQ>Действительно глупо, вероятность того, что этот принтер находится в другом офисе за 1000 км, пренебрежительно мала
Читай ещё раз про выводы.
Намёк в данном случае — GPS.
Вселенная бесконечна как вширь, так и вглубь.
Re[12]: Естественные языки программирования, шевелятся?
Здравствуйте, Real 3L0, Вы писали:
R3>Здравствуйте, IQuerist, Вы писали:
IQ>>Не "системное" это дело делать выводы. Система должна предлагать решения человеку, а не страдать кибершизафренией.
R3>Либо ты страшно далёк от современных технологий, либо "тупо тупишь". R3>В том, о чём я написал, "выводы" и "решения" можно понимать синонимами.
Я так понимаю дает о себе знать существенная разница в опыте "Решение", предполагает "ответственность в отличии от "выводов".
IQ>>Действительно глупо, вероятность того, что этот принтер находится в другом офисе за 1000 км, пренебрежительно мала
R3>Читай ещё раз про выводы. R3>Намёк в данном случае — GPS.
Нда... вам еще столько предстоит узнать об этом мире
Здравствуйте, IQuerist, Вы писали:
IQ>Я так понимаю дает о себе знать существенная разница в опыте "Решение", предполагает "ответственность в отличии от "выводов".
Это всё игра словами. Заплати мне — я сделаю. Но надо очень много времени и, следовательно, денег. Потому что тема новая и программист из меня херовый.
IQ>Нда... вам еще столько предстоит узнать об этом мире
Да, стандартная функциональность любого программиста — лишь бы отмазаться и не делать.
Вселенная бесконечна как вширь, так и вглубь.
Re: Естественные языки программирования, шевелятся?
Здравствуйте, IQuerist, Вы писали:
IQ>Добрый день
... IQ>Если честно совсем не могу понять какие задачи "программирование на естественном языке" может решить, т.к. имхо большинство программеров умудряются паршиво программировать и на формальных языках.
...
Уже давно биороботов программируют на естестенных языках. Садик, Школа, институт, масмедия, работа... книжка
Как пример "программы на естественном языке"
Посмотри какие программы наши депутаты программируют — этож просто ......... А вот какие задачи решают можно догадываться.
Здравствуйте, Слава, Вы писали:
С>Здравствуйте, IQuerist, Вы писали:
IQ>>Если честно совсем не могу понять какие задачи "программирование на естественном языке" может решить, т.к. имхо большинство программеров умудряются паршиво программировать и на формальных языках.
С>Извините, просто не могу удержаться: С>Image: slide_10.jpg
Кстати отличный пример того, как мечтатели хотят решать задачи не имея понятия об их сути.
Re[4]: Естественные языки программирования, шевелятся?
Здравствуйте, L_G, Вы писали:
Ops>>А откуда известно, что она вообще может быть достигнута? Тут люди не могут заставить заказчиков нормально сформулировать требования, а ты про машину.
L_G>Дык по аналогии с обычным программированием — с ним же как-то чего-то достигают.
Читайте Мифический человеко-месяц Брукса.
L_G>Процесс программирования на естественном языке вовсе не обязательно будет менее долгим и мучительным, он просто позволит снизить требования к квалификации программиста (но не бизнес-аналитика — собственно программировать будет теперь аналитик!)
Нда... по вашему квалификация программиста это владение синтаксисом ЯП?
L_G>Людям в общении с заказчиком не хватает либо времени, либо терпения, дотошности и понимания, что формализация еще не достигла 100% — у компьютера со всем этим проблем нет.
Вы забыли о главной проблеме — о заказчике. О его времени, терпении, дотошности и понимании. Не понимаю чем тут может помочь компьютер.
>>>Позволит ли новая технология экономить человекочасы (убирая программиста, но нагружая аналитика дополнително) — вопрос, естественно, кардинальный. По крайней мере, на времени общения аналитика с программистом, в т.ч. через написание/чтение документации (а это часы двух человек!) экономия явная.
Вот так и вижу, как аналитики возятся со структурой баз данных, с получением данных, с динамикой форм, синхронизацией, отладкой, деплоем и т.д. и т.п. Вы похоже совсем не в курсе того чем занимаются программеры