Конференция "KOL" » SOL (Соль) = Simple Objects Language
 
  • Vladimir Kladov © (24.12.07 20:43) [100]
    А которых (ответов) нету, я буду дописывать. Краткое описание должно превратиться в полную (но не водянистую) спецификацию, в конечном итоге.

    Вот ведь странно: сделаешь, чтобы := было, будут Сишники ругать, сделаешь чтобы = - паскалисты. И так, и так чтобы было сделаешь - все недовольны. Форма != (<>) содержанию. Это разные вещи.
  • homm © (24.12.07 20:45) [101]
    > http://kolmck.net/sf/SOL%20vs%20others.htm

    Понравился параметр «наличие каких-либо средств в языке» :) Это что? :)
  • Vladimir Kladov © (24.12.07 20:52) [102]
    Там же заголовок у таблицы есть Распараллеливание потоков вычислений (процессов)
  • alex (25.12.07 14:36) [103]
    Может стоит сначала познакомиться с другими языками программирования? Те, что представлены в таблице - это малая толика существующих (и успешно применяющихся), а, кроме того, почти все являются близкими родственниками.

    D, Scheme, Lisp, Ocaml, Haskell - хотя бы с ними ознакомиться надо.
  • Vladimir Kladov © (25.12.07 15:36) [104]
    С D ознакомился до того как начал: мертворождённый недоСи. Прочие являются функциональными языками программирования и императивному не имеют практически никакого отношения. Сорри.

    Теперь о баранах. Вот такая мысль насчёт циклов.

    1) Переменную можно менять в цикле. Но синтаксис должен быть особый. 2 варианта:
    i LOOP = выражение;
    CONTINUE i LOOP = выражение;

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

    2) Переменная имеет после выхода из цикла то значение, которое должна иметь. Но использовать её вне цикла можно только 2 способами:
    - в выражениях, на чтение,
    - для организации следующего цикла (или внутри следующего цикла).

    Всё: проблема неверного использования, которой все запрещатели так боялись исключена.

    Я обновил таблицу. Поправил там, кое-чего дописал. Если у кого-то есть глубокий опыт возни с Явой или С#, просьба подсказать, что вместо ? ставить напротив (про Аду и PL/1 я уж сам как-нибудь).
  • alex (25.12.07 18:16) [105]
    Вообще-то D - это скорее облагороженный С++, ну да ладно. О вкусах не спорят.
    Scheme, Lisp - не являются чистыми функциональными языками. На них можно писать и в императивном, и в функциональном стиле. При этом они (по крайней мере, Схема) хорошо соответствуют принципу простоты.
    А почему императивность, кстати? В значительной мере случаев функциональный подход дает более простые и наглядные решения.
    И, наконец, эти (и многие другие) языки интересны своими особенностями, независящими от парадигмы. В Хаскеле, к примеру, нет никаких шаблонов, есть статическая типизация и тем не менее нет никакой необходимости делать несколько реализаций одного алгоритма для данных разных типов.
  • Vladimir Kladov © (25.12.07 19:07) [106]
    Это не та простота, которая мне нужна. Я, например, не перевариваю много скобок. После двух вложенных скобок у меня уже глаза разбегаются. Но дело не в скобках. Мне это просто непонятно. Я сдал экзамен по Лиспу лет 15 назад на 4, и уже через месяц забыл всё. И он мне до сих пор не понадобился. Значит, не нужен.

    Хотел бы я посмотреть на редактор html, наприсанный на lisp'е. Нет такого? Точно не нужен. Потому и императивность. Иди туда, потом сюда. Если здесь камень, поверни назад, повтори всё сначала. Это то, что я понимаю. И не надо мне никаких Лиспов. Пусть на ФЯ пишут те, кому это надо. По мне, так это вообще write-only код. (Читабельность - нулевая).

    Я в курсе, что идеи, заложенные в Хаскел (теория категорий) настолько сложны, что нужно специальное мат. образование, чтобы понять. Проверять не решаюсь, хотя математик по образованию. Бэйсик - вот идеал простоты, а не Лисп. Поймёт любой, напишет каждый второй инженер.

    ---------------------
    Так, я обновил большой текст (насчёт обработки исключений, и про циклы). Средние обновлю завтра уже.
  • Vladimir Kladov © (25.12.07 20:41) [107]
    И, кстати, я же уже придумал функцию FUNCTION. Значит, всегда можно написать функцию-компилятор с любого языка, хоть С, хоть хаскел, и просто вставлять в код. Самое что ни на есть тесное взаимодействие, вплоть до компиляции во время компиляции самого исходного текста. (А текст на нужном языке вставляется многострочной строковой константой).

    --------------
    Ещё раз поправил Что-то много в большом тексте осталось устаревших конструкций и описаний, по объявлениям функций прошёлся на этот раз.
  • GMax (25.12.07 21:36) [108]
    а мне непонятна прелесть объявления переменных присвоением.

    в одном месте написал myvar = 10, в другом mivar = 11. ошибся типа. и потом столетиями ошибку ищем.  или я не так понял ?

    да и "Оператор присваивания в выражении" не настолько уж великое зло, как кажется.
    почему ж лишать "if (i=somefunc()) ?"

    в пнях еще кажется для этого даже спец-опкоды ввели, настолько удобно.
  • homm © (25.12.07 21:39) [109]
    > [108] GMax   (25.12.07 21:36)
    > в пнях еще кажется для этого даже спец-опкоды ввели, настолько
    > удобно.

    Ага, ввели и никому не сказали :)
  • Vladimir Kladov © (26.12.07 16:05) [110]
    myvar = 10, в другом mivar = 11
    такие вещи решаются просто. Даже если вы используете нотепад вместо редактора, который должен предлагать подсказки. Если после второго присваивания вы так и будете использовать mivar, то ошибки и нет. А если нигде больше не она не упоминается, компилятор предупреждает, что mivar присвоена, и не используется. А если вы употребили неверное имя в выражении а не в левой части присваивания, то это уже не предупреждение, а ошибка: переменная не инициализирована.

    По мне, делать где-то там наверху (да даже и в том же блоке) кучу деклараций - бессмысленно. Когда вы читаете текст, туда-сюда не набегаешься. И никто не запрещает переменные "объявлять". Пишете в начале все присваивания начальных значений - вот вам блок объявлений.
  • Vladimir Kladov © (26.12.07 16:10) [111]
    Да, обновил про unsafe-маркер, и средние описания. Теперь там про циклы тоже есть.

    Думаю, что компиляцию надо делать в простой код на С. Одна беда: поддержки исключений в нём как-то не очень чтобы наблюдается. Надо что-то замутить эдакое, чтобы результат был более-менее платформенно-независимый. Идеи есть (кроме использовать C++)?
  • vpbar © (26.12.07 17:29) [112]
    >>Vladimir Kladov ©   (26.12.07 16:10) [111]
    Java :) или Forth.
    А вообще поддержка исключений есть в Windows (Linux и прочее вроде тоже) и аппаратно должна поддерживаться. А обернуть это можно хоть на асемблере.
  • Vladimir Kladov © (26.12.07 18:20) [113]
    Компиляторы С есть для всех платформ и даже не платформ (FPGA). JIT-код из простого C-кода сделать проще, чем наоборот. Потому что внутри Ява недалеко ушла от Форта. Стековая машина в принципе не подходит для представления кода на не-стековых машинах (хотя обратное верно). Потому и С.

    Я знаю, что поддерживается аппаратно. На PC. Но PC - не единственная платформа. Меня не интересует получить код только для PC и заточить компилятор для одной платформы. Пожтому ассемблер даже не рассматривается.
  • vpbar © (26.12.07 19:45) [114]
    >>Vladimir Kladov ©   (26.12.07 18:20) [113]
    Вот и я о том, что лучше С зверя нет. В данном случае, в качестве промежуточного языка.  А поддержку исключения и в С вроде можно сделать вон в асме http://www.wasm.ru/article.php?article=Win32SEHPietrek1 делают же.
  • Vladimir Kladov © (26.12.07 20:09) [115]
    да при чём тут асм вообще, ПЦ в частности и Win32 тем более? Надо же генрировать платформенно-независимый C-код на выходе. Как работать с SEH на асме, я давно знаю.
  • vpbar © (26.12.07 20:39) [116]
    >>Vladimir Kladov ©   (26.12.07 20:09) [115]
    Владимир, я это "Компиляторы С есть для всех платформ" тоже  знаю  "Но PC - не единственная платформа" и это тоже.
    Если можно было бы генерировать платформенно-независимый С-код, то зачем всякие Java. Писали бы на С, если он такой кросплатформеный. (Хотя можно, конечно #ifdef и вперед).  
    Да и реализовывать исключения , имхо, придется для конкретных платформ.

    Вообщем, прошу прощения, что лезу. В дальнейшем буду только читать.
  • GMax (26.12.07 23:42) [117]
    homm ©   (25.12.07 21:39) [109]
    >> [108] GMax   (25.12.07 21:36)
    >> в пнях еще кажется для этого даже спец-опкоды ввели, настолько
    >> удобно.
    >Ага, ввели и никому не сказали :)
    RTFM :-)  kol.pas USE_CMOV
    правда введен все же с P6, поэтому Кладов не рекомендует... вплоть до неподержки в будущем языке ;-)
  • GMax (26.12.07 23:46) [118]
    >Vladimir Kladov ©   (26.12.07 16:05) [110]
    >>myvar = 10, в другом mivar = 11
    >такие вещи решаются просто. Даже если вы используете нотепад вместо >редактора, который должен предлагать подсказки. Если после второго >присваивания вы так и будете использовать mivar, то ошибки и нет.

    а если ошибка случилась два раза ? например через copy/paste ? или еще каким способом ? в длинных текстах вполне легко такое случайно сделать.

    короче, это к неоспоримым достоинствам нельзя отнести мне кажется
  • D[u]fa (27.12.07 09:08) [119]
    в висуал бэйсике есть подобное, но это можно отключить директивой, которая указывает, что нужно все переменные строго объявлять
 
Конференция "KOL" » SOL (Соль) = Simple Objects Language
Есть новые Нет новых   [134431   +15][b:0.001][p:0.001]