Естественный Язык программирования …, что хотели бы Вы видеть?

Создайте уникальный одноразовый ключ для отправки с помощью формы.

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

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

7
задан 6 revs, 3 users 100% 25 August 2009 в 11:14
поделиться

9 ответов

Если вы хотите, чтобы в вашем дизайне было что-то, что дошло до крайности в направлении «естественности», Грэм Нельсон сделал несколько действительно потрясающих новая работа по предметно-ориентированному языку программирования, основанному на естественном языке. Система называется Inform 7 и, на мой взгляд, хорошо окупит анализ.

Одна проблема с Inform 7 заключается в том, что презентация полностью ориентирована на непрограммистов. Нелегко даже узнать синтаксис! Но результаты меня очень впечатлили, и я считаю, что есть несколько новых связывающих конструкций, которые предлагают действительно новые идеи - это не просто старые вещи в очень привлекательной упаковке. Стоит проверить!

13
ответ дан 6 December 2019 в 06:25
поделиться

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

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

На самом деле это проблема не технологии, а скорее природы естественного и искусственного языков .

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

2
ответ дан 6 December 2019 в 06:25
поделиться

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

7
ответ дан 6 December 2019 в 06:25
поделиться

это предложение неверно

Мне нравятся математика и программирование, потому что они достаточно абсолютны.

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

Я полагаю, что перевод естественного языка в конкретную семантику намного сложнее, чем извлечение неопределенного значения из предложения через НЛП. За исключением предложений вроде:

call method on sigkill then quit program

Что в значительной степени похоже на SQL по своей структуре.

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

1
ответ дан 6 December 2019 в 06:25
поделиться
1
ответ дан 6 December 2019 в 06:25
поделиться

Из того, что я недавно видел, можно конструировать наиболее «естественные» языки программирования для конкретных областей. Когда вы переходите к обычным языкам программирования, вещи должны становиться более общими, и в результате они читаются менее естественно. Я считаю, что CSS - довольно естественный способ программирования, поэтому непрограммисты могут подобрать его и довольно хорошо применить. Я думаю, вам будет сложно сделать язык общего пользования более естественным для чтения, чем какой-нибудь хорошо составленный код Ruby, который я видел. С другой стороны, если вы имеете дело с определенной областью, вы можете делать удивительные вещи, когда вам нужно использовать только ограниченный словарный запас.

0
ответ дан 6 December 2019 в 06:25
поделиться

Ваше утверждение:

A Dog is a mammal.  
It may Bark and Run.  
To Run it uses its feet to move forward. 
It does Lay.

Звучит не как настоящий естественный язык, а как форма управляемого языка .

Двумя примерами, которые имеют машинно-понятную семантику, являются Attempto Controlled English , который отображается на концептуальные графы , и Gellish , который используется в качестве языка моделирования данных. 126] ​​Я не могу придумать прямой перевод ваших утверждений о «Собаке», поскольку первое утверждение, кажется, говорит о подтипе млекопитающих, которыми являются собаки, но затем вы начинаете говорить об одном экземпляре; вам нужно быть немного более строгим, чтобы использовать существующие контролируемые языки, например.

Every dog is a mammal.
Every dog may bark, or run.
To run is a forward movement.
Every dog uses its feet to run.
Every dog does lay.

(хотя время от времени это теряет какое-либо представление о кладке)


Что означает «использование»?

Что «использует» подразумеваете в своем примере?

И я описывал методы экземпляра объекта «Собака». Я никогда не говорил ничего вроде «Пятно - это собака. Спот начинает бежать ».

"Собака" - это объект, или вы имели в виду класс всех собак? Вы, кажется, имеете в виду всех собак, и большинство контролируемых языков требует этого различия. «Собака - это млекопитающее» vs «Собака в саду». В книгах по nlp это называется «проблемой слона».

Для меня это создаст экземпляр и прикажет ему запустить.

Я не знаю, как бы я описал статический метод для собаки.

В естественном языке нет такой вещи, как «статический метод», так почему вы ожидаете, что сможете описать такую ​​вещь в что-то полученное из естественного языка?

Вы можете определить отношение, которое имеет область видимости "

1
ответ дан 6 December 2019 в 06:25
поделиться

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

Например, это была бы совершенно правильная (хотя и короткая) программа в Inform7:

The Building Lobby is a room.  "You are standing in the lobby of a building."
There is a supporter called desk here.  "A large reception desk is to your right."  
There is a device called lamp on the desk which is switched off.  
There is a container called trash can on the floor next to the desk. 
There is a thing called crumpled paper in the trash can.
3
ответ дан 6 December 2019 в 06:25
поделиться

Взгляните на функцию Rebol Parsing. Он может определять DSL на основе правила. Ты мог бы легко оправдать ваши ожидания с минимальным кодом

0
ответ дан 6 December 2019 в 06:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: