четверг, 5 мая 2011 г.

[prog.flame] Программирование не должно отличаться от естественного языка

Выдерну цитату отсюда:

Естественным образом в идеале программирование не должно отличаться от естественного языка.

Что интересно – по отношению к программированию данное высказывание воспринимается, почему-то, нормально. Но если на место “программирования” поставить “математику”? Ведь сразу фраза станет маразматичной, даже для непосвященных.

Полагаю, программирование еще слишком молодо, отсюда и возможность говорить подобные вещи. Лет через 100-150, наверное, отношение будет совсем другим.

17 комментариев:

bsivko комментирует...

Это противоречие может быть разрешено с другой стороны - когда естественный язык станет математическим.

eao197 комментирует...

Это будет когда человечество все-таки проиграет SkyNet-у :)

Arseni Buinitsky комментирует...

Можно спорить и спорить. Математика - абстрактная наука, не оперирующая осязаемыми вещами. У математики свой мир, и свой язык.

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

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

ShaggyOwl комментирует...

Язык бухгалтеров не должен отличаться от естественного языка.
Язык физиков не должен отличаться от естественного языка.
Язык философов не должен отличаться от естественного языка.
Язык программистов не должен отличаться от естественного языка.

Понятно, что утопия. И в программировании, возможно, ещё бОльшая утопия, чем в других предметных областях. Потому что на сложность программирования накладывается сложность предметной области.

Конечно, если вставить оригинальные авторские "в идеале программирование не должно отличаться...", то акцент высказывания несколько смещается.

eao197 комментирует...

@jazzcat:

>Программирование же - по сути задание последовательности действий, строго прикладная область.

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

>В общем, нельзя сравнивать математику и программирование - это сравнение леденца и трамвайной ручки.

Я не столько сравниваю, сколько провожу доказательство по аналогии, т.е. демагогирую :)))

eao197 комментирует...

@ShaggyOwl

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

Arseni Buinitsky комментирует...

@Евгений Охотников:

Да, но. Математика сама по себе - инструмент для других, как также абстрактных, так и строго прикладных областей, и по определению её "интерфейс" должен быть формализован и максимально обобщён. Математика оперирует сущностями, в реальном мире не существующими, и их нужно как-то называть.

Программирование же, в свою очередь, оперирует информацией, вполне конкретными отображениями реальных вещей. И ЯП тут - вынужденное зло, созданное для преодоления принципиальных различий в деятельности человеческого мозга и компьютера.

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

ShaggyOwl комментирует...

@eao197

Видимо имеет место мячта о программисте лежащем на диване и надиктовывающем языком решение задачи компьютеру :)

eao197 комментирует...

@jazzcat:

>Математика сама по себе - инструмент для других, как также абстрактных, так и строго прикладных областей

Имхо, программирование уже довольно давно находится в похожем состоянии.

>Это прекрасно, если каждая домохозяйка сможет на естественном языке описать бизнес-процессы, происходящие у неё на кухне, и этим самым запрограммировать себе несколько универсальных роботов-помощников

Это фантастика :) Прежде всего потому, что редкая домохозяйка сможет точно сказать, что именно ей нужно.

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

Не могу понять, откуда следует этот вывод :(

eao197 комментирует...

@ShaggyOwl:

>Видимо имеет место мячта о программисте лежащем на диване и надиктовывающем языком решение задачи компьютеру :)

Наверное даже не решение, а постановку, чтобы компьютер сам решение нашел :))

jazzer комментирует...

я бы добавил "от естественного языка данной предметной области", в такой формулировке я согласен.
Потому что описывать формулы, регэкспы или парсеры "естественным" языком - это извращения, так как есть удобные "неестественные" языки для этих приложений: (в данном случае - математика, регэкспы и БНФ/ПЕГ соответственно).
Т.е. DSL.
Вот в идеале язык должен поддерживать создание DSL, тогда и программа будет читаться легко любым спецом в данной области.

eao197 комментирует...

@jazzer:

После работы на Ruby я с некоторым опасением отношусь к идее активной поддержки DSL-естроения языками общего назначения. Поскольку когда DSL пишется для какой-то одной задачки (вот как у меня в mxx_ru или, скажем, для генерации парсеров, как в bison или Coco/R), то все нормально. Но вот если потребуется в одной большой задаче сочетать сразу несколько DSL-ей для более мелких задач... Что в этом случае получится я пока плохо себе представляю. Но, подозреваю, будет не просто.

имя комментирует...

естественный язык принципиально неточен и должен быть таким; в то же время в нем возможно есть есть способы сокращения речи, которые надо портировать в языки программирования

и напоследок копипаста из винера для желающих программировать на естественном языке :-)

_________________________

Старый, удалившийся на покой английский рабочий сидит за столом с женой и другом, вернувшимся из Индии британским сержантом. Сержант показывает хозяевам талисман в виде высушенной, сморщенной обезьяньей лапы. Один индийский святой человек, хотевший доказать, как безумно искушать судьбу, наделил эту лапу способностью исполнить три желания каждого из трех человек. Солдат говорит, что не знает первых двух желаний первого владельца, но последнее было – смерть. Сам он, объявляет сержант друзьям, второй владелец, по не будет рассказывать о своих страшных переживаниях. Он бросает лапу в огонь, однако его друг спасает лапу и хочет испытать ее силу. Его первое желание – получить 200 фунтов стерлингов. Вскоре раздается стук в дверь, и в комнату входит служащий фирмы, где работает его сын. Отец узнает, что сын убит машиной, но фирма, хотя и отклоняет от себя всякую ответственность, желает предложить отцу вознаграждение в 200 фунтов. Убитый горем, отец называет свое второе желание – чтобы сын вернулся, и когда опять раздается стук в дверь и она открывается, появляется нечто, представляющее собой – об этом много не говорится – призрак сына. Последнее желание – чтобы призрак удалился прочь

имя комментирует...

> Но вот если потребуется в одной большой задаче сочетать сразу несколько DSL-ей для более мелких задач... Что в этом случае получится я пока плохо себе представляю.

очевидно, нужна какая-то консистентность этих DSL-ей (почему и плох (или недоделан) MPS-овский подход расширяемости синаксиса в любой точке)

З.Ы. хотя не скажу, что я это хорошо представляю :-)

имя комментирует...

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

с другой стороны, возможно он все же много не видит

eao197 комментирует...

@имя:

История классная, спасибо. Откуда это?

имя комментирует...

гуглится мгновенно

Винер Н.
Кибернетика, или управление и связь в животном и машине, 1961 год

(там есть и ссылка на автора рассказа)

я это читал в детстве (лет 12), думаю щас можно прочесть еще раз -- там много как наивного, так и интересного

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

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

недавно российские ученые установили, что муравьи могут давать название тем точкам, где часто находится еда (т.е объясняют местонахождение еды намного быстрее, если она недалеко от этих точек); еще они умеют считать порядка до 50 (хотя время передачи сообщения пропорциональна величине числа, так что это может и не счет называется)

причем у муравьев, в отличие от птиц, мозга нет -- есть только надглоточное нервное сплетение, гы-гы