Конференция "KOL" » SOL (Соль) = Simple Objects Language
 
  • vpbar © (23.12.07 17:53) [80]
    >>homm ©   (23.12.07 17:48) [79]
    Прочитайте. Весьма любопытно.

    > Vladimir Kladov ©   (23.12.07 17:41) [76]
    > > Не надо шаблонов? Может и не надо.
    >

    Это вы с кем беседуете?
  • homm © (23.12.07 18:46) [81]
    Переменная, объявленная на вышележащем уровне (в функции), не может переопределяться на более глубоком уровне (это и невозможно: оператор присваивания просто присваивает переменной другое значение).



    Ох, Владимир, сколько же с этим мороки будет. Тяжело  понять почему все летит к чертям, и обидно потом, когда оказывается что за тысячу строк ранее переменная с таким же именем, как локальная обявлена глобальной и ее значение нельзя изменяить.
  • homm © (23.12.07 18:56) [82]
    > [81] homm ©   (23.12.07 18:46)

    Прошу прощения. Впредь постараюсь воздержатся от коментариев, пока не прочту хотябы пару экранов :)
  • vpbar © (23.12.07 19:07) [83]

    Это девочка Маша. Маша урониля мячик.  Маша сходи туда -
     сюда.


    О чем это я... Предлагаю все -таки подумать о том, чтобы переменные объявлялись. Это вполне просто и естественно. В человеческой речи обычно выделяется первое упоминание об обьекте. Так почему бы и Соль не сделать так.
    К тому же homm ©   (23.12.07 18:46) [81] прав. Какие в Соль  есть методы сказать что это новая переменная с тем же именем, а не присваивание старой.
    Допустим у нас есть переменная XXX = 10.
    Ниже мы хотим новую переменную, причем почему-то приходим к такому же имени (ну бедная фантазия, например, при сходном назначении переменных)
    XXX=100.
    И все. Компилятор посчитает что это присваивание. Тип совпадает - ошибок нет. Но мы будем полагать что у нас другая переменная. А про ту XXX которая выше ма забудем, до той поры пока не заотлаживаемся до сыта. Или ради простоты нужно заставить программиста помнить все переменные.
  • Vladimir Kladov © (23.12.07 20:00) [84]
    Допустим у нас есть переменная XXX = 10.
    Ниже мы хотим новую переменную, причем почему-то приходим к такому же имени (ну бедная фантазия, например, при сходном
    назначении переменных)
    XXX=100.
    И все. Компилятор посчитает что это присваивание.

    И чем жта ситуация отличается от случая, когда переменная XXX объявлена выше? И там, и там - присваивание.

    Кстати, я же не запрещаю объявлять. Пожулуйста, берите и объявляйте:
    X;


    Чем не объявление? Но объявить другую переменную X во вложенном блоке таким же способом уже нельзя, компилятор заругается.
  • Vladimir Kladov © (23.12.07 20:03) [85]
    А, кстати, выложил версию. Всё, что добавил, касается забытого и чуть не утраченного про инициализацию всех переменных, особенно указателей, так же перенёс в краткое описание про явное напоминание о присваивании LOOP- и SOLE-указателю (тоже ведь забыл), и решил "упростить" конструкцию присваивания значения указателю на массив:
    P = M[ 6 TO 10];

    Долго раздумывал. Конструкция какая-то не такая. Но ничего, зато удобно. Выглядит и правда проще.
  • ANTPro © (23.12.07 20:52) [86]
    > [85] Vladimir Kladov ©   (23.12.07 20:03)
    > P = M[ 6 TO 10];

    Basic? Почему не P=M[6..10]; ?
  • vpbar © (23.12.07 20:56) [87]
    >>Vladimir Kladov ©   (23.12.07 20:00) [84]
    Хм. то есть запрещено перекрывать определения. В принципе тоже вариант встречается. Со своими +-
    ЗЫ. просто любопытно. Вы знаете Xerion и nemerle?
  • homm © (23.12.07 21:00) [88]
    > [86] ANTPro ©   (23.12.07 20:52)
    > > P = M[ 6 TO 10];
    >
    > Basic? Почему не P=M[6..10]; ?

    Смотри внимательнее, это не объявление, это операция присвоения указателю P участка массива M с элементами от 6 до 10.
  • vpbar © (23.12.07 21:00) [89]
    >>ANTPro ©   (23.12.07 20:52) [86]
    А какая разница. Просто по желанию создателя диапазано в Соль описываются имено так. a TO b
  • ANTPro © (23.12.07 21:41) [90]
    > [88] homm ©   (23.12.07 21:00)

    Я вижу.

    > [89] vpbar ©   (23.12.07 21:00)

    Как в бейсике. Ну или похоже.

    Я пока еще не читал осоль может, что-то не правильно понял. Но не стоит стили нескольких языков смешивать.
  • homm © (23.12.07 22:27) [91]
    http://kolmck.net/sf/Geometry_vs_Cosmology.htm

    Владимир, спасибо большое за материал. Описание соли (соля?) я так и не дочитал, но наткнулся на эту статью. Равномерность расширения правда застявляет задуматься, правда не опровергая на прямую БВ. От строк о вечности и равномерном развитии вселенной и правду на душе спокойнее стало :)
  • Vladimir Kladov © (24.12.07 15:31) [92]
    Кому не нравится TO, можно писать to. Можно ещё и эквивалент придумать. Только не '..' - сильно смахивает на опечатку при попытке написать число с ПТ. Я бы взял ->, но очень не хочется (догадаётесь сами, почему).

    А что меня за отсутствие типа Boolean не ругает никто? Я для чего проект языка выставил на обозрение - чтобы не получилось как у Вирта, всё сам придумал, ни с кем не посоветовался, а потом в языке остаются перлы типа with, большего приоритета and/or, чем <, > и всякое такое. Я, кстати, думал, как же ввести boolean не вводя его в язык. Вот придумал, кажется: запрет на приведение типов с меньшим диапазонам к большему, и диапазонов с разным шагом, неявно, без преобразующей функции. Ещё подумаю над этим, но, кажется, этого должно хватить. Преобразуюзую можно на шаблонах сделать, как бы общую для всех (точнее, набор: обрезающие, выставляющие при выходе за диапазон ноль, со специальным параметром по умолчанию, генерирующие исключение, ... ).

    Кому тяжело большой текст читать, можно средний. Только его внимательно надо читать, там воды-то уже как бы и нет вовсе, каждая запятая значимая.
  • homm © (24.12.07 15:35) [93]
    Мне вот не нравится бесконечное множество типов.
    Вернет ли истину сравнение типов, один из которы  от 5 до 10, а второй не определе (т.е. число по умолчанию)
  • vpbar © (24.12.07 19:19) [94]

    > 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...

  • vpbar © (24.12.07 19:38) [95]
    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. Так есть приведение типов или нет?
  • vpbar © (24.12.07 19:44) [96]

    >  Вот придумал, кажется: запрет на приведение типов с меньшим
    > диапазонам к большему,

    Еще.
    Т.е. так нельзя
    Y=0.4;
    X=1;
    ...
    Y=X;
    Оригинально. Обычно наоборот. Если больший диапазон приводится к меньшему- то явно. Дабы понимать что может быть потеря точности (в SOL - ислючение).
  • homm © (24.12.07 20:24) [97]
    > [95] vpbar ©   (24.12.07 19:38)
    > Допускается присваивать  динамическому массиву массив статический
    > (но не наоборот).
    > А почему бы не присваивать статический массив динамическому?

    Чукча либо не писатель, либо не читатель :)
  • vpbar © (24.12.07 20:35) [98]

    > homm ©   (24.12.07 20:24) [97]

    Да. Точно. Прошу прощения. Не о том прочитал. :( Просто язык необычен, что такие очевидные весчи не воспринимаются.
  • Vladimir Kladov © (24.12.07 20:40) [99]
    Есть проверка. Кстати из того, что X=0.4 и Y=1 еще не следует, что Y диапазон меньше (т.е. что оно целое). Тем более, если компилятор видит дальше Y=X, то он прекрасно понимает, что 0.4 так же является допустимым значением для Y, т.е. оно уже дробное. Он должен учесть все присваивания, если нет объявления явного диапазона.

    Выложил 15 версию и заодно начало сравнительной таблицы (разумеется, все критерии подобраны специально так, чтобы представить SOL в самом выгодном свете, по сравнению со всеми языками. Моё мнение в принципе не может быть объективным:) ): http://kolmck.net/sf/SOL%20vs%20others.htm

    Надо было написать продолжение следует. Ну, и так понятно, в общем.

    Дописал в версии 15 про тип "булев". Нет такого типа, есть более строгое правило: запрет на неявное присваивание большего диапазона к меньшему (но чуть чуть сложнее, так что в итоге и булев к вещественному неявно не привести).

    Ну мало ли что там в С. В С много вещей, с которых не стоит брать пример. Просто не надо так делать, и всё. Правительство Канады это прекрасно понимает. И я понимаю.

    Кстати, ответы на большинство вопросов есть в кратком но не самом кратком описании.
 
Конференция "KOL" » SOL (Соль) = Simple Objects Language
Есть новые Нет новых   [134431   +15][b:0.001][p:0.001]