Лучше использовать “естественный” язык для написания кода?

Я недавно видел язык программирования, названный сверхновой звездой, и они сказали в веб-странице:

Язык программирования Сверхновой звезды является современным языком сценариев и

Сначала каждый дарит понятию программирования с прямым использованием Описания Художественной литературы

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

и можно написать код как:

i want window and the window title is Hello World.
i want button and button caption is Close.
and button name is btn1.

btn1 mouse click. instructions are
   you close window
end of instructions

мой вопрос не о самом языке, но это, это, нам нужны такие языки, и они сделали написание кода легче или нет?

6
задан JasonMArcher 24 August 2014 в 01:52
поделиться

9 ответов

Код может выглядеть как естественный язык, но на самом деле это обычный компьютерный код с другими ключевыми словами. В вашем примере Я хочу , вероятно, является синонимом new . Это не значит, что вы можете использовать естественный язык напрямую и вместо этого сказать сделать меня окном (и если бы вы могли, все стало бы еще хуже ...).

Давайте внимательно посмотрим на ваш код и его языковые последствия:

i want window and the window title is Hello World. 

я хочу означает новый , и обозначает начало списка аргументов. is устанавливает переменную экземпляра member_name для создаваемого объекта. Обратите внимание, что вы должны написать имя_типа дважды.

i want button and button caption is Close.
and button name is btn1.

. заканчивает заявление. Однако вы можете «связать» вызовы методов объекта, начав следующий оператор с и .Кроме того, как ссылаться на переменную с именем Close вместо строки «Close» ? Черт возьми, у нас даже есть эта проблема на обычном английском языке: какая разница между 'Say your name' и 'Say «your name»'?

btn1 mouse click. instructions are
   you close window
end of instructions

Щелчок мышью - это идентификатор, содержащий пробел, должен быть mouseClick . инструкции определяют лямбда (см. is vs. are путаница ключевых слов, которая еще не вызывает проблем?). вы закрываете окно вызывает window.close () . конец инструкций - это конец лямбды. Все они длиннее, чем должны быть.

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


Попробуйте этот перевод:

var myWindow = new Window( title="Hello World" );
myWindow.addButton( new Button( caption="Close", name="btn1" ) );

btn1.onMouseClick = function() {
    myWindow.close();
}

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

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

19
ответ дан 8 December 2019 в 02:03
поделиться

Поскольку фундаментальная трудность программирования заключается в том, чтобы упорядочить ваши мысли достаточно, чтобы сказать компьютеру, что делать, сделать язык более «естественным» вряд ли сделает его более доступным для непрограммистов; сам язык никогда не был реальной проблемой в первую очередь. Более того, весь этот дополнительный беспорядок естественного языка не помогает программистам (стоит названия) с тем, что они делают, так зачем его добавлять?

Или у нас может быть настоящий язык программирования на естественном языке, в комплекте с «Um», «Er» и «Oh, я действительно не знаю»? :-)

13
ответ дан 8 December 2019 в 02:03
поделиться

Язык программирования, который вы показали нам выше, чрезвычайно многословен (так как кажется даже больше, чем COBOL).

Это сопряжено с несколькими проблемами:

  • Для выполнения простых вещей требуется длинный код.
  • Код растет неподдерживаемым довольно быстро
  • Требуется много времени, чтобы выяснить, что делает код
5
ответ дан 8 December 2019 в 02:03
поделиться

Лучше они или нет - это мнение, но это похоже на мутировавший гибрид COBOL и BASIC, что определенно эпично плохо.

Так что, на мой взгляд, нет. Я думаю, что языки, в которых все еще используются читаемые глаголы / прилагательные / имена, лучше подходят (мои предпочтительные языки - C ++, C #, PHP и т. Д.).

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

3
ответ дан 8 December 2019 в 02:03
поделиться

Я наберусь смелости и выскажу здесь несколько иное мнение.

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

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

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

В заключение:

  • читаемость непрограммистов: отличная.
  • читаемость программиста: без улучшений.
  • кодируемость: нет, просто ... нет.
  • речь о кодируемости: наверное, намного проще.
3
ответ дан 8 December 2019 в 02:03
поделиться
person.eBusiness[text.this.author].like(language.supernova.idea.reverse);
language.English[ambiguous[very]];
person.eBusiness.suggest(create(language.Codetalk));
language.Codetalk.grammar.inspiration=language.programming.grammar;
language.Codetalk[new,better,ambiguous[not]];
if(person.all.use(language.Codetalk)){
    person.all.understand(person.all.communication);
};
question(language.Codetalk.idea[good]);
3
ответ дан 8 December 2019 в 02:03
поделиться

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

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

2
ответ дан 8 December 2019 в 02:03
поделиться

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

1
ответ дан 8 December 2019 в 02:03
поделиться
Другие вопросы по тегам:

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