![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SOL (Соль) = Simple Objects Language
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, который я предложил как черновой, мне самому трашно не нравится. В общем, голову ещё есть над чем поломать.
homm (2007-12-24 15:35:00) [61]Мне вот не нравится бесконечное множество типов.
Вернет ли истину сравнение типов, один из которы от 5 до 10, а второй не определе (т.е. число по умолчанию)
Vladimir Kladov (2007-12-24 15:31:00) [62]Кому не нравится TO, можно писать to. Можно ещё и эквивалент придумать. Только не '..' - сильно смахивает на опечатку при попытке написать число с ПТ. Я бы взял ->, но очень не хочется (догадаётесь сами, почему).
А что меня за отсутствие типа Boolean не ругает никто? Я для чего проект языка выставил на обозрение - чтобы не получилось как у Вирта, всё сам придумал, ни с кем не посоветовался, а потом в языке остаются перлы типа with, большего приоритета and/or, чем <, > и всякое такое. Я, кстати, думал, как же ввести boolean не вводя его в язык. Вот придумал, кажется: запрет на приведение типов с меньшим диапазонам к большему, и диапазонов с разным шагом, неявно, без преобразующей функции. Ещё подумаю над этим, но, кажется, этого должно хватить. Преобразуюзую можно на шаблонах сделать, как бы общую для всех (точнее, набор: обрезающие, выставляющие при выходе за диапазон ноль, со специальным параметром по умолчанию, генерирующие исключение, ... ).
Кому тяжело большой текст читать, можно средний. Только его внимательно надо читать, там воды-то уже как бы и нет вовсе, каждая запятая значимая.
homm (2007-12-23 22:27:00) [63]http://kolmck.net/sf/Geometry_vs_Cosmology.htm
Владимир, спасибо большое за материал. Описание соли (соля?) я так и не дочитал, но наткнулся на эту статью. Равномерность расширения правда застявляет задуматься, правда не опровергая на прямую БВ. От строк о вечности и равномерном развитии вселенной и правду на душе спокойнее стало :)
ANTPro (2007-12-23 21:41:00) [64]> [88] homm © (23.12.07 21:00)
Я вижу.
> [89] vpbar © (23.12.07 21:00)
Как в бейсике. Ну или похоже.
Я пока еще не читал осоль может, что-то не правильно понял. Но не стоит стили нескольких языков смешивать.
homm (2007-12-23 21:00:00) [65]> [86] ANTPro © (23.12.07 20:52)
> > P = M[ 6 TO 10];
>
> Basic? Почему не P=M[6..10]; ?
Смотри внимательнее, это не объявление, это операция присвоения указателю P участка массива M с элементами от 6 до 10.
vpbar (2007-12-23 21:00:00) [66]>>ANTPro © (23.12.07 20:52) [86]
А какая разница. Просто по желанию создателя диапазано в Соль описываются имено так. a TO b
vpbar (2007-12-23 20:56:00) [67]>>Vladimir Kladov © (23.12.07 20:00) [84]
Хм. то есть запрещено перекрывать определения. В принципе тоже вариант встречается. Со своими +-
ЗЫ. просто любопытно. Вы знаете Xerion и nemerle?
ANTPro (2007-12-23 20:52:00) [68]> [85] Vladimir Kladov © (23.12.07 20:03)
> P = M[ 6 TO 10];
Basic? Почему не P=M[6..10]; ?
Vladimir Kladov (2007-12-23 20:03:00) [69]А, кстати, выложил версию. Всё, что добавил, касается забытого и чуть не утраченного про инициализацию всех переменных, особенно указателей, так же перенёс в краткое описание про явное напоминание о присваивании LOOP- и SOLE-указателю (тоже ведь забыл), и решил "упростить" конструкцию присваивания значения указателю на массив:
P = M[ 6 TO 10];
Долго раздумывал. Конструкция какая-то не такая. Но ничего, зато удобно. Выглядит и правда проще.
Vladimir Kladov (2007-12-23 20:00:00) [70]Допустим у нас есть переменная XXX = 10.
Ниже мы хотим новую переменную, причем почему-то приходим к такому же имени (ну бедная фантазия, например, при сходном
назначении переменных)
XXX=100.
И все. Компилятор посчитает что это присваивание.
И чем жта ситуация отличается от случая, когда переменная XXX объявлена выше? И там, и там - присваивание.
Кстати, я же не запрещаю объявлять. Пожулуйста, берите и объявляйте:
X;
Чем не объявление? Но объявить другуюпеременную X во вложенном блоке таким же способом уже нельзя, компилятор заругается.
vpbar (2007-12-23 19:07:00) [71]
Это девочка Маша. Маша урониля мячик. Маша сходи туда -
сюда.
О чем это я... Предлагаю все -таки подумать о том, чтобы переменные объявлялись. Это вполне просто и естественно. В человеческой речи обычно выделяется первое упоминание об обьекте. Так почему бы и Соль не сделать так.
К тому же homm © (23.12.07 18:46) [81] прав. Какие в Соль есть методы сказать что это новая переменная с тем же именем, а не присваивание старой.
Допустим у нас есть переменная XXX = 10.
Ниже мы хотим новую переменную, причем почему-то приходим к такому же имени (ну бедная фантазия, например, при сходном назначении переменных)
XXX=100.
И все. Компилятор посчитает что это присваивание. Тип совпадает - ошибок нет. Но мы будем полагать что у нас другая переменная. А про ту XXX которая выше ма забудем, до той поры пока не заотлаживаемся до сыта. Или ради простоты нужно заставить программиста помнить все переменные.
homm (2007-12-23 18:56:00) [72]> [81] homm © (23.12.07 18:46)
Прошу прощения. Впредь постараюсь воздержатся от коментариев, пока не прочту хотябы пару экранов :)
homm (2007-12-23 18:46:00) [73]
Переменная, объявленная на вышележащем уровне (в функции), не может переопределяться на более глубоком уровне (это и невозможно: оператор присваивания просто присваивает переменной другое значение).
Ох, Владимир, сколько же с этим мороки будет. Тяжело понять почему все летит к чертям, и обидно потом, когда оказывается что за тысячу строк ранее переменная с таким же именем, как локальная обявлена глобальной и ее значение нельзя изменяить.
vpbar (2007-12-23 17:53:00) [74]>>homm © (23.12.07 17:48) [79]
Прочитайте. Весьма любопытно.
> Vladimir Kladov © (23.12.07 17:41) [76]
> > Не надо шаблонов? Может и не надо.
>
Это вы с кем беседуете?
vpbar (2007-12-23 17:48:00) [75]>>Vladimir Kladov © (23.12.07 17:27) [74]
> Где было обсуждение?
Гдето в "прочее", но давно (месяца два назад). И щас не могу найти. Видно в архив ушло.
> Сделать можно
Дык я знаю.
homm © (23.12.07 17:35) [75]
А ничего. Ибо sizeof нет в Соль
homm (2007-12-23 17:48:00) [76]> [77] Vladimir Kladov © (23.12.07 17:46)
> Что такое sizeof, зачем он вообще нужен и с чем его едят
> в языке, в котором размером данных занимается компилятор
> и самый нижний уровень программирования?
Хороший ответ :) Наверное все же застявлю себя седня прочесть описание :)
Vladimir Kladov (2007-12-23 17:46:00) [77]Вот поменьше бы опций :)
Опции всё-таки бывают нужны. Как-то же надо задавать компилятору, что мы от него хотим: быстроту или компактность, дефрагментацию или нет, и вообще для какой платформы и в каком виде результат выдавать?
А что вернет sizeof(p) во втором варианте?
Что такое sizeof, зачем он вообще нужен и с чем его едят в языке, в котором размером данных занимается компилятор и самый нижний уровень программирования?
Vladimir Kladov (2007-12-23 17:41:00) [78]> При этих условиях const, in, var и out - совершенно ненужный
> семантический мусор для параметров.
Может быть, может быть. Просто мне больше нравится сказать компилятору что данный out парамеот должен обязятельно быть
изменен в функции.
Ну и скажите, описывая параметр как указатель. Если не изменяется, всегда передавайте по значению. Результат будет тот же: компилятор использует указатель для агрегатов. Проблемы?
При сборщике мусора пользовательский деструктор не нужен для освобождения памяти. Свой деструктор может понадобиться только для освобождения инкапсулированных ресурсов Всё у меня написано. Я разве собираюсь с кем-либо спорить? Я собираюсь это реализовывать. Мое мнение простое: системы с обобщённой сборкой мусора не годятся для рил-тайм систем. И чем больше данных может лежать в куче, и чем более интенсивно она используется, тем меньше годятся. Поэтому и искал способ, как быть если нужна сборка мусора, но без сборщика.
Не надо шаблонов? Может и не надо. Copy-paste тоже метод, хотя вместе с умножением кода умножаются и ошибки. Причём не линейно, а гораздо быстрее.
Функциональные языки меня не интересуют. Привычка. А может, склад ума такой. И неэффективные они, кроме некоторых очень узких классов задач вроде моделирования ИИ. Я их не собираюсь отменять, пусть живут. Мне императив нужен, прямой как палка.
homm (2007-12-23 17:35:00) [79]> [74] Vladimir Kladov © (23.12.07 17:27)
> Впрочем, можно и оба варианта реализовать, и просто переключаться
> в опциях.
Вот поменьше бы опций :)
А что вернет sizeof(p) во втором варианте?
vpbar (2007-12-23 17:27:00) [80]Прошу прощения. Тыкнул не туда. Продолжаем.
> Ну нету в Delphi шаблонов, и не надо
Надо. Мне, по крайней мере. Но тут у вас, вроде ничего революционного. В том же nemerle и haskel-е похожий подход.