Большинство языков позволяют «tweek» в определенных частях синтаксиса (C++, C#) и/или семантике, которую вы будете использовать в своем коде (Katahdin, lua). Но я не слышал о языке, который может просто полностью определить, как будет выглядеть ваш код. Итак, не существует ли уже существующего языка, который имеет такие возможности, чтобы переопределить все синтаксис & определить семантику?Есть ли язык программирования с семантикой, близким к английскому?
Пример того, что я хочу сделать, это в основном из C# код ниже:
foreach(Fruit fruit in Fruits)
{
if(fruit is Apple)
{
fruit.Price = fruit.Price/2;
}
}
Я хочу сделать иметь возможность писать код выше в моем совершенном языке, как это:
Check if any fruits are Macintosh apples and discount the price by 50%.
Преимущества, которые приходят мне на ум с точки зрения кодера на этом «мнимом» языке:
- Это очень ясно, at is going on (self descriptive) - это простой английский, ведь даже ребенок поймет мою программу
- Скрывает все сложности, которые мне приходится писать на C#. Но почему я должен заботиться, чтобы узнать, что если заявления, арифметические операторы и т.д., так как там уже реализованы
Недостатков, которые я вижу на кодировщик, который будет поддерживать эту программу, являются:
- Может быть, вы бы выражайте эту программу иначе, чем я, поэтому вы не можете получить всю информацию , которую я выразил в своем предложении.
- Программы могут быть довольно многословными и сложными для отладки, но если возможно, даже приблизить этот тип синтаксиса выше, возможно, больше людей начать программирование прямо? Думаю, это было бы потрясающе. Я могу пойти на работу и просто написать сочинение, чтобы нарисовать квадрат на WinForm, как это:
Create a form called MyGreetingForm. Draw a square with in the middle of MyGreetingFormwith a side of 100 points. In the middle of the square write "Hello! Click here to continue" in Arial font.
В приведенной выше коде анализатор должен в принципе догадывается, что я хочу использовать неназванные квадратный из в предыдущем предложении было бы трудно написать такой интеллектуальный парсер, я думаю, но все так просто, что я хочу делать.
If the user clicks on square in the middle of MyGreetingForm show MyMainForm.
В приведенном выше коде «в основном» компилятор должен: 1) создать обработчик событий 2) проверить, есть ли квадрат в середине формы, и если есть - 3) скрыть форму и показать другую форму.
Это очень сложно сделать, но это не выглядит невозможным. IMO для меня хотя бы приближенно (я могу лично создать парсер для выполнения 3 шагов выше np &, это в основном то же самое, что и делать, когда вы добавляете даже в C# a.MyEvent=+handler;
, поэтому я не вижу здесь проблемы), поэтому я думаю, может быть, кто-то уже сделал что-то подобное? Или существует какое-то практическое бремя сложности для создания такого языка программирования «эссе», который я не вижу? Я имею в виду, что может быть хуже, если парсер не так хорош?- программа зависнет, так что вы должны повторно слово это :)
Я знаю много людей, которые говорят в LOLspeak –
Там есть было много попыток «семантических языков», и только 2 вещи были последовательными: 1.) они выглядели как беспорядок, и 2.) они никогда не были действительно семантическими. –
По-моему, ваш «идеальный язык» не совсем понятен. Я прочитал первый пример: «Если есть фрукты, яблоки Macintosh, а затем скидка на общую цену на 50%», а не «для каждого фрукта, который является яблоком Macintosh, скидка его цены на 50%». С другой стороны, код C# совершенно ясен. –