Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SOL (Соль) = Simple Objects Language


Страницы:   1 2 3 4 5 6 7 8

Vladimir Kladov ©   (2007-12-15 22:08:00) 

http://kolmck.net/sf/SOL=IdealSpade4Programmer.rar

Ну хорошо, пусть будет отдельная ветка.
Сразу ответ D[u]fa на
зачем каждый раз писать do, почему б нельзя объявить массив как arr[... , ..., ...]


Мы же пишем begin, и нормально. Анализ текста значительно упрощается. Дело даже не в компиляторе. Человеку тоже проще, если есть открывающая скобка блока. Есть ведь и эквиваленты, кому само слово DO не нравится (и END).

Массив не надо так объявлять. Я долго думал, почему. Например, во избежание непонимания того, что если есть объявление [3,3,3], то можно обратиться как [i,j] и получить элемент-масив из 3 элементов. Если можно объявлять только [3][3][3], согласитесь, такой проблемы вообще нет. В конце концов, ][ ничем не хуже , ,но видно этот "символ" лучше.

Спрашивайте ещё. Я пока пытаюсь "победить" многозадачность (точнее многонитевость). Изучил адовские рандеву, мониторы модулы-2, активные объекты эктив-оберона - ничего мне не нравится пока. И вообще. Механизм защиты CATCH, который я предложил как черновой, мне самому трашно не нравится. В общем, голову ещё есть над чем поломать.


Vladimir Kladov   (2008-07-07 16:56:00) [1]

Я ещё посмотрел (спустя полгода), и в отличие от предыдущих набросков, изменений практически нет. Единственное, что надо бы выкинуть слово PUBLIC (всё публичное по умолчанию), и оставить HIDDEN, и писать его всё-таки перед каждым объявлением чего-либо скрытого. И вернуться к варианту, когда легальный доступ к скрытому идёт через составное имя HIDDEN. Типа MyObject.HIDDEN.Field1. Немножко меняется IMPORT, всё остальное пока так же. Еще есть смысл для конкатенации строк использовать оператор ',', а не ||. Или как вариант, или всегда. А так - в общем мне самому понравилось. Специально надолго отложить, чтобы самому этот сумбур попытаться воспринять как с листа.

А делать можно именно как компилятор в код на паскале, Си, С# - без особой разницы. Для большей скорости отладки можно делать паскаль-код, и подсовывать его Delphi-компилятору, а для конечной сборки делать выход, к примеру, на Си. Компилятор, который сразу делает маш-код - не самоцель. В общем, это явзык высокого уровня следующего порядка высокости, после Си или Паскаля, можно даже считать его case-средством.


Vladimir Kladov   (2008-07-07 16:48:00) [2]

Сокращать запись - себе дороже. Программу пишут один раз, а исправляют и подправляют, да и читают просто - десятки и сотни раз. Ну и зачем себе сложности устраивать? Посмотрите, как код пишется в C# - все пишется полностью и без никаких with. При этом при наборе текста чаще всего достаточно вообще одну буквц набрать, и наиболее подходящее имя высвечивается туту же, остаётся только enter нажать. Куда уже короче?

Смысл не в самой короткой записи, а в самом надёжном коде (и при том достаточно эффективном - хотя бы за счёт константых функций, т.е. выполнении на этапе компиляции значительной части проверок), я так понимаю. Вот этот фокус со вставкой строк на языках SQL и прочая - ни в каком C# даже близко не лежало. Может, там что другое предлагается, но я пока не нашёл, хотя немножко программировать на нём попробовал.


zldo   (2008-07-07 10:41:00) [3]

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


LongLongTitle = object
 field1,
 field2,
и т.д.

и обращение

with LongLongTitle do
begin
 .field1 = .field2
 .field2 = myvariable
end;

т.е. не создавать оператором "область видимости" для переменных а дать возможность программисту делать сокращенную запись.


Vladimir Kladov   (2008-07-02 15:53:00) [4]

with способен только запутать, но никак не упростить. Кто видел, тот знает.


zldo   (2008-07-02 14:48:00) [5]

У современного поколения программистов отсутствие необходимости объявлять переменные способно вызвать страх уровня фобии.
То есть как я понял оператора with тоже не будет?
Не скажется ли такой подход на читаемости кода для случая если используются сложные вложенные структуры?


lse   (2008-03-21 20:45:00) [6]

Здравствуйте, Владимир.
Как успехи на поприще разработки нового языка программирования ?


DmitrtyAx   (2008-01-19 02:54:00) [7]

Владимир!! Успехов! Очень долго читал, и пока только общие впечатления - настоящая поэма! Правда основание слишком широкое - мультиплатформенность при всех заявленых опциях... Огромное количество библиотек для разных процессоров, отладка на виртуальной машине(ах)... Библиотеки под разные ОС... По сравнению с этим KOL - это совсем небольшой проект.
Вместе с тем, очень надеюсь, что появится первая реализация, которую можно будет поторогать руками.
Завтра продолжу читать, а то у нас тут уже семь утра...


Vladimir Kladov   (2008-01-17 21:22:00) [8]

Обновил. Добавилась параметризация модуля. Одной числовой константой всего, но лчно мне хватит.


Vladimir Kladov   (2008-01-16 16:39:00) [9]

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


misha_shar   (2008-01-16 16:05:00) [10]

Выброси константные функции и всего то делов. В простом языке это не надо. Надо будет заведу переменную и вычислю.


speller   (2008-01-14 13:54:00) [11]

И хотя я уже к Дельфям не прикасаюсь чаще раза в пол года, стараюсь иногда заглядывать сюда по старой памяти. Владимир, я просто восхищен вашим трудолюбием и количеством наработок! Моё уважение. Желаю успехов в ваших начинаниях! )


Vladimir Kladov   (2008-01-13 17:59:00) [12]

Сложно потому только что я лично не писал до сих пор полных компиляторов с полных ЯВУ, в основном ассемблерами баловался (правда, один раз в молодости месяца за 3 получился рабочий компилятор с подмножества С в П-код, но это можно объяснить только невероятной наглостью: я же не знал что это так сложно). А так, в принципе, ничего сверх-сложного. Вполне сравнимо с Паскалем и наверняка проще С++. Пока пишу синтаксический анализатор. Даже 4 нотации не так сложны, как можно было бы подумать. Сейчас впереди вижу одну больую сложность: надо как-то реализовывать вычисление константных функций на этапе компиляции, т.е. фактически как бы компилировать код, вызывать его на выполнение, и результат использовать всё ещё в компиляторе. Получается, что эта часть компилятора - сама платформо-зависимая (код ведь должен быть выполнимым на той же платформе где запущен сам компилятор). Для полной платформо-независимости можно сделать свой П-код, специально для этого этапа, и эмулятор П-машины. Это если что.


D[u]fa   (2008-01-13 10:42:00) [13]

так много полезностей (судя по таблице), мне кажется сложно все это будет реализовать...

зы. имхо конечно


Vladimir Kladov   (2008-01-11 22:25:00) [14]

Не получилось сразу обновить. Сейчас только обновил.


Vladimir Kladov   (2008-01-11 19:42:00) [15]

Я думаю, вы меня поймёте лучше, если 7 лет подряд будете писать толькона С/C++/Java/JScript, потом лет 7 подряд толькона Паскале, а потом снова попробуете что-нибудь написать на С/C++. Становится невозможно не только писать, но и прочитать - проблема. Я же не заставляю учить ВСЕ4 варианта синтаксиса. Наоборот, делается конвертер, и каждый изучает только тот вариант, который ему ближе. Открываете чужой модуль в редакторе, а он автоматически перестроен к вашей любимой нотации.

Я обновляю. Also english version of a comparison SOL vs others available now: http://kolmck.net/sf/SOL_vs_others-EN.htm

Из последних изменений: [+] и другие знаки в квадратных скобках - для операций с массивами, аналогично (+) и т.п. - для переопеределённых операций. Кроме шаблонов функций. Дальше: тип результата :NIL для процедуры, т.е. функция, ничего не возвращающая, описывается явно. Дальше: все перегруженные функции должны иметь номер версии. Не перегруженные тоже могут иметь номер версии.

Да, запретил для безблочных вариантов цикла и IF вариант с пустым оператором. С пустым блоком - можно. И язык переименовал: Safe Objective Language. А то на Simple уже немножко не дотягивает. Но пока достаточно простой всё ещё.


Yhrik!   (2008-01-10 21:41:00) [16]


> Просто вы не писали на Фортране

Ну... на Васике писал, на 1с и т.п.
Ладно, переживём отсутствие предупреждений на не объявленные переменные. В крайнем случае, можно lint написать.
Прочитал описание (пока недостаточно внимательно). Очень неплохо. Хотя немного напрягло большое количество вариантов синтаксиса. Трудно для освоения, но это тоже не беда. :)) Да! кстати, это нарушает правило "50.Не путайте привычность с читаемостью" (Ален И. Голуб. С и С++ Правила программирования М:Бином 1996). Думаю лучше основной синтаксис привести в наиболее читаемый вид. В перспективе подготовить рекомендации по оформлению текстов программ.
А в целом достойно.
Желаю Вам Владимир творческих успехов.


Vladimir Kladov   (2008-01-09 15:46:00) [17]

sizeof бывает нужен в языках с адресной арифметикой. В SOL нет адресной арифметики, вообще. Некоторые вещи могут казаться странными. Отсутствие деклации типа данных - это совсем не то же самое, что в JScript, когда переменная принимает тот тип, какой захочется. Это не вариант но формально - что-то вроде него. Казалось бы, могут возникнуть проблемы если одной и той же переменной присваивать и строку, и число. Но - не возникнут. Потому что агрегаты (массивы, структуры) - всё-таки отличаются от простых переменных. И объявлять их (хотя бы размерности массивов или число размернойстей) - придётся. А с числовыми - пусть компилятор выберет лучшее представление. Я вобще думаю для простого варианта компилятора рассмотреть штуки 4 целых форматов (int64, int32, uint8, uint1), и пару-тройку вещественных (flt32, flt64, flt80), и этим обойтись пока. Лучше сделать упор на возможность разрабатывать свои "классы" чисел, чтобы можно было делать программ для нестандартных процессоров (типа 4-битных контроллеров).

Сегодня опять "придумал" фишку. На этот - как однозначно "победить" проблемы возможного недопонимания переопределённых операций над структурными типами и массивами. Надо писать A = A [+] B; И всё - проблема исчезла. Вот почему, например, Вирт не хотел в Обероне переопределять арифметику: он не желал получить проблем с двусмысленностью. Всё, двусмысленности нет. (Разумеется я предусматриваю исключение для функций-шаблонов, в которых параметры не доопределены).

Про 4 нотации читали уже? Я сегодня выкладываю новую версию описания. Хорошо, что написание кода синтаксического разбора ещё не очень далеко продвинулось. Ещё кое-что уточняется, мелочи вроде Ptr1 SOLE = LOOP Ptr2; появляются (точная спецификация вида указателя которому и от которого присваивание идёт).


homm   (2008-01-09 11:42:00) [18]

> [135] D[u]fa   (09.01.08 10:53)
> опять ж как он узнает размер?

кто он? Компилятор? Он возьмет размер достаточный для твоих нужд. Если нужды определить проблематично, то берется тип по умолчанию, в описании это есть.


D[u]fa   (2008-01-09 10:53:00) [19]

собсно и?)

sizeof это константа, которую компилятор и вычисляет(в делфях я имею ввиду)

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


homm   (2008-01-09 00:11:00) [20]

> [131] D[u]fa   (08.01.08 17:39)
> к примеру сделаю я:
>
> i := 0;
> и потом то то типа .....(i, sizeof(i));
>
> и как он поймет что мне надо именно Integer тот что 4 байта?)


> [77] Vladimir Kladov ©   (23.12.07 17:46)
> Что такое sizeof, зачем он вообще нужен и с чем его едят
> в языке, в котором размером данных занимается компилятор
> и самый нижний уровень программирования?


Страницы:   1 2 3 4 5 6 7 8

Наверх

Титульная страница Поиск, карта сайта Написать письмо