Важная информация

User Tag List

Страница 4 из 4 ПерваяПервая 1234
Показано с 31 по 36 из 36

Тема: Создание кросскомпилятора языка Оберон для Z80

  1. #31
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,610
    Спасибо Благодарностей отдано 
    2,182
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Шаблоны, это когда компилятор пишет за тебя обертки над list. Вот у вас в статье приведен код, на Си++ он был бы "list<longint>".
    Оберон-системы – это обычно компонентные среды. Там каждый модуль скомпилирован и находится в своём слоте. Теперь добавьте сюда ифдефы. Вы пересобрали модуль с другой конфигурацией, и всех остальных модулей среды, зависимых от нашего, это тоже коснётся. Поэтому тут как бы нету вообще никакой нужды иметь, например, ифдеф для переключения юникод это или анси. Понимаете почему. Если делается отчуждаемая программа, не часть Оберон-среды, тогда смысла несколько больше, но всё равно немного. Потому что применим родной принцип Оберон-сред – иметь 2 реализации модуля с юникодом и анси, и пользоваться той, которая нужна. Не надо иметь один модуль, который постоянно переконфигурируют ифдефами. Но это простой случай. В случае с шаблонами предлагается примерно то же самое, но только хочется задавать тип как аргумент для реализации. Если это всё до безобразия упростить, то мы выходим на один модуль, который реализует все эти типы (пусть даже через копипасту и замену типа ручками), но лучше если модулей (или реализаций модуля) будет несколько, а выбирается из них именно нужное. Теперь видите сами, что такого способа конструирования шаблонов можно легко избежать. А если вспомнить старый добрый Турбо Паскаль, то в нём ничего такого и не было в принципе, а класс задач решался широчайший.

    Мне Оберон-2 видится как необходимый минимум, на который можно насадить сверху любые надстройки, добавить нужные возможности. И шаблоны, и всё, что понадобится. Но это другая языковая база, свободная от многих недостатков Си, Си++, Си#, Java и даже Ada и Delphi. Хотите на эту тему подискутировать? Пожалуйста. Только вначале перечтите ветку http://zx.pk.ru/showthread.php?t=18336, а то устал каждому одно и то же объяснять. А ещё лучше прочтите ссылки в начале этой ветки форума: http://zx.pk.ru/showthread.php?t=18418, может отпасть много вопросов и сомнений.

    Цитата Сообщение от Robus Посмотреть сообщение
    У меня такой вопрос:

    1. В конце процедуры, например, "add" есть запись "END Add;", поймёт ли он просто "END;" ?
    Нет. И это сделано затем, чтобы было легко различимо, где конец цикла/ифа, а где более глобальный конец процедуры. Меня в Си бесит, что одна и та же скобка } может закрывать всё. Володя Мутель даже придумал в таких случаях её удваивать, но это хак, согласитесь.
    Код:
    void fn (void)
    {{
      if(...)
      {
      }
    }}
    2. Красным выделю вариант. Меня интересует поймёт ли компилятор ?
    Думаю, Вирт и сам понял, что эти BEGIN пора сокращать. В языках Оберон и Модула BEGIN пишется только в начале процедур (и в секции инициализации модуля).
    3. Как компилятор относится к регистру в тексте ? Могу ли я объявить процедуру Большими символами, а вызывать её маленькими ?
    Регистр обязательно важен, как и в Си, и я считаю, что это ценно, потому что в Паскаль-программах часто пишут переменные, типы и процедуры как попало, смешивая регистр безо всякой системы. Оберонщик Саша Ильин выработал полезные соглашения для программирования, которые позволяют понять, константа это или переменная, не заглядывая вверх по тексту программы, ну и ещё некоторые полезные возможности. См. ссылку: http://forum.oberoncore.ru/viewtopic.php?f=29&t=3892

    Цитата Сообщение от bigral Посмотреть сообщение
    Тогда гипертрофируя твою идею все языки программирования должны компилиться с С? Не глупо ли плодить промежуточные уровни? Компилить надо только в ASM.
    А почему не сразу в машинный код? Асм тоже промежуточная стадия. Кстати, bigral, Вирт тоже против промежуточных уровней. См.статью "Хорошие идеи – взгляд из Зазеркалья": http://citforum.ru/programming/digest/wirth/

    Отвечаю на вопрос, зачем там Си. Компилятора Оберона для Z80 нету, а разрабатывать проги для ZX хотелось попробовать, и чтобы кодогенерация была хорошей.

    Придёт время, от SDCC в этой связке можно и избавиться. Но нужно, обязательно нужно: заинтересовать сообщество, совместно наработать библиотеки и достичь концептуальной ясности того, что предстоит реализовать. Поэтому работающий макет через Си – лучше, чем несуществующий Оберон для ZX, действительно.
    Последний раз редактировалось Oleg N. Cher; 25.03.2012 в 13:54.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Нет. И это сделано затем, чтобы было легко различимо, где конец цикла/ифа, а где более глобальный конец процедуры. Меня в Си бесит, что одна и та же скобка } может закрывать всё. Володя Мутель даже придумал в таких случаях её удваивать, но это хак, согласитесь.
    "Проблема" решается соблюдением табуляции и отказом от макаронных функций на несколько экранов.

  4. #33
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А почему не сразу в машинный код? Асм тоже промежуточная стадия.
    Потому что машинный код нечитаем а значит и контроль качества кода провести не легко его невозможно подправить\оптимизировать руками где это нужно будет.

  5. #34
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,610
    Спасибо Благодарностей отдано 
    2,182
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Почему это "контроль качества кода провести не легко"? Дизасм никто не отменял.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    "Проблема" решается соблюдением табуляции и отказом от макаронных функций на несколько экранов.
    Как показала многолетняя практика, табуляция действительно сильно помогает, но всех ею заставить пользоваться не получится. Поэтому часто лучше действительно вшить такую полезную вещь в язык. Оберон часто вынуждает подставить имя там, где другие языки обходятся неявным "self" или "this", что заставляет программиста осмыслить глубже то, что он собирается сказать. Подчёркивает суть. В ветке http://zx.pk.ru/showthread.php?t=18336 опять же обсуждалась технология использования в Си анонимных "фреймов", я показал как в Обероне/Паскале сделать их поименованными, а программу – более наглядной.

    Поэтому END – это анонимное окончание, а END Proc – поименованное, названное или, если хотите, обозначенное. Да, и в Си можно писать
    Код:
    }/*Proc*/
    или
    Код:
    }/*if*/
    но заставить ВСЕХ так писать всё равно не получится.

  6. #35
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Как показала многолетняя практика, табуляция действительно сильно помогает, но всех ею заставить пользоваться не получится.
    Есть такой показатель, как сопровождаемость кода. И человек, пишущий в команде несопровождаемый код, обычно долго в этой команде не проживает. Либо исправляется, либо удаляется. Ибо написать софт- это меньше чем полдела. А вот поддерживать его- это самое трудное.

  7. #36
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,610
    Спасибо Благодарностей отдано 
    2,182
    Спасибо Благодарностей получено 
    140
    Поблагодарили
    106 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Справедливо, я согласен.

Страница 4 из 4 ПерваяПервая 1234

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Создание форума
    от CityAceE в разделе Форум
    Ответов: 43
    Последнее: 10.07.2016, 22:23
  2. Ответов: 172
    Последнее: 10.12.2012, 18:36

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •