Является ли функциональное программирование следующим шагом на пути к программированию на естественном языке?[закрыто]

StackOverflow https://stackoverflow.com/questions/285848

  •  08-07-2019
  •  | 
  •  

Вопрос

Это мой самый первый вопрос, поэтому я немного нервничаю из-за него, потому что не уверен, достаточно ли хорошо передаю смысл.Как бы то ни было, поехали....

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

Машинный язык, коды операций /мнемоника, процедуры / функции, структуры, классы (ООП) и т.д.всегда помогал, в свое время, планировать, структурировать и кодировать программы более естественным, понятным и ремонтопригодным способом.

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

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

Итак, приближает ли FP программирование к программированию на естественном языке или это скорее препятствие, и мейнстрим ООП быстрее приведет нас к программированию на естественном языке?

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

Это было полезно?

Решение

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

Другие советы

Лично я пришел к выводу, что программирование на естественном языке несколько крэк.

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

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

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

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

Взять хотя бы Perl, все критикуют его за линейный шум, но когда вы знаете много языков программирования, как только вы преодолеете начальные препятствия «OMG LINE NOISE», в этом есть определенная степень интуитивности, благодаря которой вы можете создавать вещи. Вы никогда не читали, а потом видите, что это волшебным образом работает так, как вы ожидали.

И ИМХО, специфичные для предметной области языки превосходят разговорные для решения целевых задач.

"Итак, приближает ли FP программирование к программированию на естественном языке или это скорее препятствие, и мейнстрим ООП быстрее приведет нас к программированию на естественном языке?"

Ни то, ни другое.Оба работают по одному и тому же принципу: вы должны быть конкретны в отношении того, что вы хотите, чтобы компьютер делал.Там должно быть НЕТ места для неопределенности, и ни одна из парадигм не имеет что угодно это связано с естественными языками.Они решают совершенно другую проблему:Это управление и структурирование сложного кода и больших кодовых баз.

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

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

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

Я не думаю, что функциональное программирование ближе к программированию на естественном языке, чем ОО-программирование. Функциональное программирование имеет очень глагол-ориентированный синтаксис. Когда вы программируете на Лиспе или Схеме, вы тратите много времени на размышления о функциях и о том, какие действия вы хотите предпринять с вашими данными. В ОО-программировании вы проводите большую часть своего времени, размышляя об объектах, поэтому кажется, что он очень ориентирован на существительное. Однако в Smalltalk, C ++ и Java у вас также есть методы, которые позволяют применять глаголы ко всем существительным (так сказать).

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

Только к вашему сведению, Inform 7 , вероятно, самый близкий добрался до программирования на естественном языке. Это язык для очень специфической области: написание интерактивной художественной литературы, программного обеспечения, которое началось с «приключенческих игр».

Текущий всплеск интереса к функциональному программированию, в первую очередь благодаря замечательным новым функциям C # 3.0, заключается в том, чтобы включить параллелизм и означает переход к многоядерным вычислениям. ИМХО, я не думаю, что мы можем считать это следующим шагом к «программированию на естественном языке»

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

Функциональные языки найдут свое место в "высокопараллельной обработке". пространство.

Как вы думаете, субъективные вопросы приведут этот порядок для "Windows Internals 5th Element" добавили в базу и отправили на мой адрес? Если это так, программирование на естественном языке будет очень близко к функциональному программированию, поскольку я задал свой вопрос в несколько функциональной форме. Если нет, то программирование на естественном языке не доставит мой заказ, не так ли? Функциональное программирование может работать, потому что оно по-прежнему не имеет ничего общего с естественными языками.

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

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

"Все языки программирования приближаются к LISP".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top