-
>>homm © (23.12.07 17:48) [79] Прочитайте. Весьма любопытно.
> Vladimir Kladov © (23.12.07 17:41) [76] > > Не надо шаблонов? Может и не надо. > Это вы с кем беседуете?
-
Переменная, объявленная на вышележащем уровне (в функции), не может переопределяться на более глубоком уровне (это и невозможно: оператор присваивания просто присваивает переменной другое значение). Ох, Владимир, сколько же с этим мороки будет. Тяжело понять почему все летит к чертям, и обидно потом, когда оказывается что за тысячу строк ранее переменная с таким же именем, как локальная обявлена глобальной и ее значение нельзя изменяить.
-
> [81] homm © (23.12.07 18:46)
Прошу прощения. Впредь постараюсь воздержатся от коментариев, пока не прочту хотябы пару экранов :)
-
Это девочка Маша. Маша урониля мячик. Маша сходи туда - сюда.
О чем это я... Предлагаю все -таки подумать о том, чтобы переменные объявлялись. Это вполне просто и естественно. В человеческой речи обычно выделяется первое упоминание об обьекте. Так почему бы и Соль не сделать так. К тому же homm © (23.12.07 18:46) [81] прав. Какие в Соль есть методы сказать что это новая переменная с тем же именем, а не присваивание старой. Допустим у нас есть переменная XXX = 10. Ниже мы хотим новую переменную, причем почему-то приходим к такому же имени (ну бедная фантазия, например, при сходном назначении переменных) XXX=100. И все. Компилятор посчитает что это присваивание. Тип совпадает - ошибок нет. Но мы будем полагать что у нас другая переменная. А про ту XXX которая выше ма забудем, до той поры пока не заотлаживаемся до сыта. Или ради простоты нужно заставить программиста помнить все переменные.
-
Допустим у нас есть переменная XXX = 10. Ниже мы хотим новую переменную, причем почему-то приходим к такому же имени (ну бедная фантазия, например, при сходном назначении переменных) XXX=100. И все. Компилятор посчитает что это присваивание.И чем жта ситуация отличается от случая, когда переменная XXX объявлена выше? И там, и там - присваивание. Кстати, я же не запрещаю объявлять. Пожулуйста, берите и объявляйте: X; Чем не объявление? Но объявить другую переменную X во вложенном блоке таким же способом уже нельзя, компилятор заругается.
-
А, кстати, выложил версию. Всё, что добавил, касается забытого и чуть не утраченного про инициализацию всех переменных, особенно указателей, так же перенёс в краткое описание про явное напоминание о присваивании LOOP- и SOLE-указателю (тоже ведь забыл), и решил "упростить" конструкцию присваивания значения указателю на массив: P = M[ 6 TO 10];
Долго раздумывал. Конструкция какая-то не такая. Но ничего, зато удобно. Выглядит и правда проще.
-
> [85] Vladimir Kladov © (23.12.07 20:03) > P = M[ 6 TO 10];
Basic? Почему не P=M[6..10]; ?
-
>>Vladimir Kladov © (23.12.07 20:00) [84] Хм. то есть запрещено перекрывать определения. В принципе тоже вариант встречается. Со своими +- ЗЫ. просто любопытно. Вы знаете Xerion и nemerle?
-
> [86] ANTPro © (23.12.07 20:52) > > P = M[ 6 TO 10]; > > Basic? Почему не P=M[6..10]; ?
Смотри внимательнее, это не объявление, это операция присвоения указателю P участка массива M с элементами от 6 до 10.
-
>>ANTPro © (23.12.07 20:52) [86] А какая разница. Просто по желанию создателя диапазано в Соль описываются имено так. a TO b
-
> [88] homm © (23.12.07 21:00)
Я вижу.
> [89] vpbar © (23.12.07 21:00)
Как в бейсике. Ну или похоже.
Я пока еще не читал осоль может, что-то не правильно понял. Но не стоит стили нескольких языков смешивать.
-
http://kolmck.net/sf/Geometry_vs_Cosmology.htmВладимир, спасибо большое за материал. Описание соли (соля?) я так и не дочитал, но наткнулся на эту статью. Равномерность расширения правда застявляет задуматься, правда не опровергая на прямую БВ. От строк о вечности и равномерном развитии вселенной и правду на душе спокойнее стало :)
-
Кому не нравится TO, можно писать to. Можно ещё и эквивалент придумать. Только не '..' - сильно смахивает на опечатку при попытке написать число с ПТ. Я бы взял ->, но очень не хочется (догадаётесь сами, почему).
А что меня за отсутствие типа Boolean не ругает никто? Я для чего проект языка выставил на обозрение - чтобы не получилось как у Вирта, всё сам придумал, ни с кем не посоветовался, а потом в языке остаются перлы типа with, большего приоритета and/or, чем <, > и всякое такое. Я, кстати, думал, как же ввести boolean не вводя его в язык. Вот придумал, кажется: запрет на приведение типов с меньшим диапазонам к большему, и диапазонов с разным шагом, неявно, без преобразующей функции. Ещё подумаю над этим, но, кажется, этого должно хватить. Преобразуюзую можно на шаблонах сделать, как бы общую для всех (точнее, набор: обрезающие, выставляющие при выходе за диапазон ноль, со специальным параметром по умолчанию, генерирующие исключение, ... ).
Кому тяжело большой текст читать, можно средний. Только его внимательно надо читать, там воды-то уже как бы и нет вовсе, каждая запятая значимая.
-
Мне вот не нравится бесконечное множество типов. Вернет ли истину сравнение типов, один из которы от 5 до 10, а второй не определе (т.е. число по умолчанию)
-
> Vladimir Kladov © (24.12.07 15:31) [92]
> Я для чего проект языка выставил на обозрение
Да кто же Вас знает. > А что меня за отсутствие типа Boolean не ругает никто
А чего ругать, в С его вот тоже нет. И ничего. А у вас вообще типов всего ничего числа да указатели, так что отсутствие boolean вполне в тему. Хотя тут вопрос.
x=2;
y=2.5;
IF (x>y)==(x/y) THEN ... - такое работать будет? Или нужно задавать операцию (функцию) '-' для этих типов. А такое?
a=0;
b=1;
c=0;
IF a*b+c THEN...
-
IF a*b+c THEN. судя по этому "Арифметические с целыми числами не являются циклическими." работать не должно (или невсегда будет). Хотя было бы интересно, можно было бы упростить и исключить AND и OR
Если Вы все же выложили описание языка для критики, то продолжу. Цитатах текст их SOL=IdealSpade4Programmer вчерашней версии.
Переменная-массив так же может быть присвоена переменной- массиву подходящей размерности.
Спроверкой совместимости типов элеметов, разумеется? А как с приведением типов. Есть ли механизм описанния явного приведения типа для элементов массива . Вы конечно говорите что "8. Приведение типа. Никогда и ни при каких обстоятельствах. Раз уже все атомарные типы данных эквивалентны, и по сути, являются числами с плавающей точкой, то и приведение типа не требуется." но в Vladimir Kladov © (24.12.07 15:31) [92] заново придумаваете запрет на приведение и упоминаете о какой то "преобразующей функции". В этом контексте под приведением понимать преобразующую функци. Т.е. TYPE Bit = 0 TO 1; TYPE Bits = [10]Bit; TYPE Arr = [10]Integer; B:String; A:Arr; .... A=B // так вроде нельзя. Запрет на приведение типов к большему диапазону Цикл делать? Допускается присваивать динамическому массиву массив статический (но не наоборот).
А почему бы не присваивать статический массив динамическому? Или придется явно копировать. Опять цикл.
PS. Так есть приведение типов или нет?
-
> Вот придумал, кажется: запрет на приведение типов с меньшим > диапазонам к большему,
Еще. Т.е. так нельзя Y=0.4; X=1; ... Y=X; Оригинально. Обычно наоборот. Если больший диапазон приводится к меньшему- то явно. Дабы понимать что может быть потеря точности (в SOL - ислючение).
-
> [95] vpbar © (24.12.07 19:38) > Допускается присваивать динамическому массиву массив статический > (но не наоборот). > А почему бы не присваивать статический массив динамическому?
Чукча либо не писатель, либо не читатель :)
-
> homm © (24.12.07 20:24) [97]
Да. Точно. Прошу прощения. Не о том прочитал. :( Просто язык необычен, что такие очевидные весчи не воспринимаются.
-
Есть проверка. Кстати из того, что X=0.4 и Y=1 еще не следует, что Y диапазон меньше (т.е. что оно целое). Тем более, если компилятор видит дальше Y=X, то он прекрасно понимает, что 0.4 так же является допустимым значением для Y, т.е. оно уже дробное. Он должен учесть все присваивания, если нет объявления явного диапазона. Выложил 15 версию и заодно начало сравнительной таблицы (разумеется, все критерии подобраны специально так, чтобы представить SOL в самом выгодном свете, по сравнению со всеми языками. Моё мнение в принципе не может быть объективным:) ): http://kolmck.net/sf/SOL%20vs%20others.htmНадо было написать продолжение следует. Ну, и так понятно, в общем. Дописал в версии 15 про тип "булев". Нет такого типа, есть более строгое правило: запрет на неявное присваивание большего диапазона к меньшему (но чуть чуть сложнее, так что в итоге и булев к вещественному неявно не привести). Ну мало ли что там в С. В С много вещей, с которых не стоит брать пример. Просто не надо так делать, и всё. Правительство Канады это прекрасно понимает. И я понимаю. Кстати, ответы на большинство вопросов есть в кратком но не самом кратком описании.
|