Если вы имеете в виду непоследовательность в применении правил с множеством причудливых крайних случаев и острых углов, которые могут нанести вред учащемуся, то очень мало языков программирования, более похожих на английский, чем C ++.
VB.NET (хотя ваш пример AppleScript превосходит VB.NET), SQL или COBOL (источник этого стиля). Lolcode похож на язык, но я рад, что английский на него не похож.
VB.NET
If MsgBox("The process will be started", MsgBoxStyle.OkCancel, "Title") = DialogResult.OK Then
'ok was clicked
Else
'cancel was clicked
End If
COBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
RECORD CONTAINS 55 CHARACTERS
DISPLAY 'Hello, world'.
STOP RUN.
SQL
SELECT *
FROM Book
WHERE price > 100.00
ORDER BY title;
Lolcode
ON CATURDAY
IM IN YR BED
I IZ SLEEPIN!!10
VISIBLE "Z!"
KTHX
KTHXBYE
Как насчет языка программирования Шекспира? Вот часть источника "hello world" из википедии :
Act I: Hamlet's insults and flattery.
Scene I: The insulting of Romeo.
[Enter Hamlet and Romeo]
Hamlet:
You lying stupid fatherless big smelly half-witted coward! You are as
stupid as the difference between a handsome rich brave hero and thyself!
Speak your mind!
You are as brave as the sum of your fat little stuffed misused dusty
old rotten codpiece and a beautiful fair warm peaceful sunny summer's
day. You are as healthy as the difference between the sum of the
sweetest reddest rose and my father and yourself! Speak your mind!
You are as cowardly as the sum of yourself and the difference
between a big mighty proud kingdom and a horse. Speak your mind.
Speak your mind!
[Exit Romeo]
Похоже, что подсветка кода здесь не работает. : /
Рискуя оказаться в ярости, я утверждаю, что подобие естественного языка - плохая цель для языков программирования. В частности, цель высказывания на естественном языке - повлиять на мир так, чтобы другие люди захотели поцеловать вас, а не ударить кулаком; это сильно отличается от цели высказывания на языке программирования, которое предназначено как недвусмысленное утверждение в четко определенной области, которую компьютер или другой человек может оценить. Может быть, лучше спросить: на каком языке программирования сложнее всего случайно выстрелить себе в ногу?
... что, конечно, совсем не то, о чем вы спрашивали.
Слышали ли вы о Supernova. Это естественный язык программирования. Даже вы можете создать окно в Supernova, просто сказав Я хочу окно и заголовок окна будет hello.
Может быть, Common Lisp? Макросы в Лиспе позволяют определять абстракции как "новые слова". Это настолько близко к псевдокоду или английскому языку, насколько вы хотите получить (потому что при описании программы в наших мыслях или обсуждениях мы используем много абстракций от механики конкретного языка).
Интересным примером являются анафорические макросы, которые Пол Грэм описывает в своей книге "О Лиспе". Анафорический макрос - это макрос, который связывает некоторое выражение с символом "оно" внутри его тела, так что мы можем легко ссылаться на него:
(aif (get-data) (do-something it))
В этой строке get-data - это функция, которая либо возвращает некоторый объект, либо nil. Если она возвращает данные, то они привязываются к переменной "it", которая обрабатывается функцией "do-something". Если возвращаемые данные равны nil, то условие не выполняется и пункт не выполняется.
Есть много других примеров анафорических макросов, таких как for loop, которые связывают переменную цикла, и так далее. Фактически, вы даже можете иметь макросы, которые генерируют анафорические макросы для вас.
COBOL всегда считался «естественным языком». Вот выдержка со страницы 99 бутылок пива :
move spaces to buffer bb1
move 1 to j
divide i by 10 giving k remainder l
string bb8(k + 1) delimited space into bb1 pointer j
if j > 1
then move bb7(l + 1) to bb1(j + 1:)
else move bb7(i + 1) to bb1
end-if
Конечно, «естественный язык» не всегда (часто?) Является достоинством среди языков программирования, где точность является приоритетом дня (и естественный язык почти всегда неоднозначен - добавление точности, требуемой языками программирования, только делает его многословным).
Ответ Шекспира напомнил мне Inform 7 , серьезный язык программирования для написания интерактивной художественной литературы. Вероятно, это язык, наиболее близкий к английскому из существующих и обладающий четко определенной семантикой.
Вот пример из Википедии:
"Hello Deductible" by "I.F. Author"
The story headline is "An Interactive Example".
The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.
The insurance salesman is a man in the Living Room. "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.
A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase." Understand "case" as the briefcase.
The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.
Instead of listening to the insurance salesman for the first time:
say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you.";
move the insurance paperwork to the player.
В этом примере используется обширная библиотека объектов, доступная пользователю. Но сам язык на самом деле является полным по Тьюрингу, и вы можете определять объекты с любым поведением в нем.
Ненавижу подключать свои собственные вещи (ну, не совсем), но 7Basic имеет довольно английский синтаксис:
BEGIN FUNCTION (variable AS INTEGER) AS STRING
PRINT "Hello!"
RETURN "return value!"
END FUNCTION