Код может выглядеть как естественный язык, но на самом деле это обычный компьютерный код с разными ключевыми словами. В вашем примере I want
, вероятно, является синонимом new
. Это не значит, что вы можете использовать естественный язык напрямую и вместо этого сказать make me a window
(и если бы вы могли, все стало бы еще ужаснее ...).
Давайте внимательно рассмотрим ваш код и языковые последствия:
i want window and the window title is Hello World.
i want
означает new
, and
обозначает начало списка аргументов. the <type_name> <member_name> is
устанавливает переменную экземпляра member_name
для создаваемого объекта. Обратите внимание, что вы должны написать type_name
дважды.
i want button and button caption is Close.
and button name is btn1.
.
заканчивает утверждение. Однако вы можете 'цепочкой' вызывать методы объекта, начиная следующую инструкцию с and
. Кроме того, как вы ссылаетесь на переменную с именем Close
вместо строки "Close"
? Черт, у нас даже есть эта проблема на обычном английском: какая разница между «Скажи свое имя» и «Скажи« свое имя »»? *
btn1 mouse click. instructions are
you close window
end of instructions
mouse click
- идентификатор, содержащий пробел, должен быть mouseClick
. instructions are
определяет лямбду (см. Путаницу с ключевым словом is
против are
, вызывающую проблемы?). you close window
звонки window.close()
. end of instructions
это конец лямбды. Все они длиннее, чем должны быть.
Помните все это? И это только мои предположения о синтаксисе, которые могут быть совершенно неверными. Все еще кажется простым? Если это так, попробуйте написать большую программу, не нарушая ни одного из этих правил, И дополнительных правил, которые вам понадобятся для определения таких вещей, как условная логика, циклы, классы, обобщения, наследование или что еще вам нужно. Все, что вы делаете, это меняете символы в обычных языках программирования на эквиваленты «естественного языка», которые труднее запомнить, излишне многословны и более неоднозначны.
<ч />
Попробуйте этот перевод:
var myWindow = new Window( title="Hello World" );
myWindow.addButton( new Button( caption="Close", name="btn1" ) );
btn1.onMouseClick = function() {
myWindow.close();
}
Посмотрите, как каждая строка соответствует своему аналогу в предыдущем примере, но указывает намерение более прямо? Естественный язык может быть хорош для исполнения людьми, но его очень сложно использовать для точных спецификаций.
Чем больше вы будете стараться, чтобы английский говорил легко и ясно, эти идеи будут выглядеть как языки программирования, которые у нас уже есть. Короче говоря, языки программирования настолько близки к естественному, насколько это возможно, без потери ясности и простоты. : D