Является ли функциональное программирование следующим шагом на пути к программированию на естественном языке?[закрыто]
-
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".