User Tag List

Страница 8 из 18 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя
Показано с 71 по 80 из 173

Тема: Разработка программ и игр для ZX Spectrum на языках Оберон-семейства

  1. #71

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Если возник вопрос – зачем программировать на Обероне для Спека, если можно на Си?
    Действительно. Да и на Си не зачем. Потому что язык должен быть эфективным. Я вот в первом своем посте в этой ветке запамятовал сказать, что не только язык, но и среда разработки должна быть эффективной. Для Спека пишут на всяких Бэйсиках и ассемблерах по причине того, что это отлаживать хоть как-то можно. Вроде как, Форт еще позволяет отлаживаться хоть как-то. А на Си и Паскале не пишут, а балуются. Потому что вот ну никак вот не получается отладить по шагам написанный код, посмотреть значения переменных на рантайме, глянуть, что нарисовалось на экране, что несерьезно в больших проектах. А связку Оберон - Си - ассемблер вообще не понятно как отлаживать на целевой платформе.

  2. #72

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,709
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    я вижу что с языками вы слабо знакомы, особенно с языком си.
    Очень весело слышать это, в особенности от Вас, уважаемый.

    Хорошо. Ладно. Допустим даже, что Ваш макрос “помог”. Мы влезли в оба заголовочных "модуля", Офронта и винды, и вставили туда наше рулезное дополнение. Ибо одним "модулем" тут правка, видимо, ограничиться не может. Если может, блесните умом.

    Но ещё и представим себе довольно вероятную возможность, что тип BOOLEAN внутри SYSTEM.h у нас является типом signed char, а тип BOOLEAN внутри windows.h – типом usnigned int.

    Итак. Внутри windows.h мы имеем нечто такое:
    Код:
    #ifndef __BOOL
    typedef unsigned int BOOLEAN;
    #define __BOOL
    #endif
    Внутри SYSTEM.h же мы имеем нечто такое:
    Код:
    #ifndef __BOOL
    typedef signed char BOOLEAN;
    #define __BOOL
    #endif
    Наш весёлый "модуль" SYSTEM.c, думая, что тип BOOLEAN является однобайтовым, хотя его подленько уже могли подменить инклюдом windows.h перед инклюдом SYSTEM.h (а Си-прога, которая так сделает, может строиться Офронтом автоматически) на четырёхбайтовый, начинает юзать его во всю его однобайтовую душу. И – понесла нелёгкая, перекорёжив разрядность типов.

    А наша весёлая программа могла бы конечно учесть, что BOOLEAN в таком разе – штука непростая, и надо выкурить много бамбуку, чтобы получить хоть какую-то осмысленную пользу от его использования, а ещё оно сильно вообще зависит от порядка инклюдирования "модулей" SYSTEM.h и windows.h, что ещё полбеды, а основная беда начнётся когда "модулям", берущим тип из SYSTEМ.h и windows.h, неявно подпихнут другой тип, их это должно здорово взбодрить.

    Хорошо если программа сразу вылетит, а если не заметишь, и вылеты с порчей памяти и загадочным залезанием в чужие области и желанием выслать отчёт к какой-то матери регулярно будут у заказчика через месяц после сдачи?

    Я как раз – об ощутимой помощи от использования Оберон-технологий в как можно более скорейшем выявлении такого рода узких мест. И чтобы влияние как закрытой реализации, так и открытой интерфейсной части одного модуля на другой сводилось к минимуму.
    Последний раз редактировалось Oleg N. Cher; 09.03.2012 в 21:09.

  3. #73

    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    1,131
    Спасибо Благодарностей отдано 
    55
    Спасибо Благодарностей получено 
    257
    Поблагодарили
    195 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    насчет препроцессоров, уже прошли те времена когда препроцессор надо было иметь именно встроенном в языке, можно просто взять и заюзать внешний, например мой http://code.google.com/p/java-comment-preprocessor/

  4. #74

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Реальный пример из реальной жизни. У меня в проекте Дурак есть тип BOOLEAN, внутри SYSTEM.h, не то что мне так захотелось, так по задумке создателей Офронта назван стандартный тип. Теперь мне понадобилось при портировании под Win32/GCC подключить другой стандартный "модуль" windows.h, в нём тоже есть тип BOOLEAN.
    А это вообще народная программерская забава такая - намешать в одном коде исходников несовместимых от разных комплектов библиотек, и объявить язык убогим за то, что он это позволил.
    Последний раз редактировалось Alex Rider; 09.03.2012 в 21:19.

  5. #75

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,709
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Действительно. Да и на Си не зачем. Потому что язык должен быть эфективным. Я вот в первом своем посте в этой ветке запамятовал сказать, что не только язык, но и среда разработки должна быть эффективной. Для Спека пишут на всяких Бэйсиках и ассемблерах по причине того, что это отлаживать хоть как-то можно. Вроде как, Форт еще позволяет отлаживаться хоть как-то. А на Си и Паскале не пишут, а балуются. Потому что вот ну никак вот не получается отладить по шагам написанный код, посмотреть значения переменных на рантайме, глянуть, что нарисовалось на экране, что несерьезно в больших проектах. А связку Оберон - Си - ассемблер вообще не понятно как отлаживать на целевой платформе.
    Вопрос действительно очень интересный и не имеющий одного простого решения. С одной, впрочем, стороны поймём, что масштаб Оберон-проектов для ZX пока что ограничен 48кб памяти, поэтому говорить о реально больших проектах не приходится. С другой – взгляды Оберон-сообщества на отладку Вам вряд ли понравится.

    Я использую для отладки ASSERT'ы, и debug-вставки с отладочной распечаткой.

    Код:
    MODULE Sets; (* portable *)
    
    CONST
      Debug* = TRUE;
    
    END Sets.
    Код:
    MODULE Grx; (* portable *)
    IMPORT Sets, Debug;
    ...
    
    PROCEDURE PutSprite* (x, y: SpriteCoords; spr: Sprite);
    BEGIN
      IF Sets.Debug THEN (* Это прямой аналог ifdef'а, однако если Debug = FALSE, то никакого лишнего кода в прогу не вставится *)
        CASE x OF 0..MaxX: CASE y OF 0..MaxY: ELSE Debug.Stop("Bad sprite coords!") END END;
      END;
      ...
    END PutSprite;
    
    END Grx.
    Для профилирования использую эмулятор Fuse. В качестве пошагового отладчика – эмулятор Владимира Кладова EmuZWin. Так и баги в кодогенераторе SDCC искал, так и свои проги дебажил. С третьей стороны, если создать Оберон-обвязку в стиле ZX, то появляется интересная возможность отлаживать кроссплатформенные Оберон-модули, подходящие и для ZX, внутри хост-Оберон-среды типа A2 или BlackBox. Это возможно. Надо разрабатывать инструментарий.

    Я также не против иметь готовый пошаговый отладчик Оберон-программ чисто для Z80. Осталось его написать.

    А ещё Вы удивитесь и не поверите, но на самом деле потребность в отладке в Оберон-программах не такая большая, значительно меньше, чем на Си. Помогает и охрана типов, и автоматическое управление памятью. Но это не про связку Ofront/SDCC.

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    А это вообще народная программерская забава такая - намешать в одном коде исходников несовместимых от разных комплектов библиотек, и объявить язык убогим за то, что он это позволил.
    Угу, а кто их объявил несовместимыми друг с другом? Это же "модули"!

    Цитата Сообщение от Raydac Посмотреть сообщение
    насчет препроцессоров, уже прошли те времена когда препроцессор надо было иметь именно встроенном в языке, можно просто взять и заюзать внешний, например мой http://code.google.com/p/java-comment-preprocessor/
    Именно!
    Вот. Игорю тоже пришлось.

    Raider, Raydac, можете поспособствовать регистрации на данном форуме ещё одного оберонщика и спектрумиста? Ибо он пробовал зарегистрироваться, но регистрация отключена администрацией. Типа намёк: не любят здесь неофитов. А я припёрся весь такой красивый.
    Последний раз редактировалось Oleg N. Cher; 14.03.2012 в 22:47.

  6. #76

    Регистрация
    19.01.2005
    Адрес
    Санкт-Петербург
    Сообщений
    11,551
    Спасибо Благодарностей отдано 
    205
    Спасибо Благодарностей получено 
    188
    Поблагодарили
    83 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Ибо он пробовал зарегистрироваться, но регистрация отключена администрацией. Типа намёк: не любят здесь неофитов.
    prisekar - Регистрация: 07.03.2012

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

  8. #77

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Угу, а кто их объявил несовместимыми друг с другом?
    Здравый смысл. Использование модулей из разных библиотек черевато неприятностями. Ты встретил такую неприятность.

  9. #78

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,681
    Спасибо Благодарностей отдано 
    2,709
    Спасибо Благодарностей получено 
    170
    Поблагодарили
    130 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Здравый смысл. Использование модулей из разных библиотек черевато неприятностями.
    Сказано сильно. А в Оберонах модули и библиотеки – это одно и то же.
    Цитата Сообщение от Sayman Посмотреть сообщение
    не имею желания с вами спорить. верьте во что желаете и считаете нужным. учите доки, читайте. я уже прошол через приведённые вами костыли и у меня это не вызывает проблем.
    Sayman, мы с Вами говорим не только о разных языках, но и на разных языках. Я Вам про узкие места Си и про саму ущербность принятых там идеологических решений, с примерами, а Вы вроде даже не поняли примера. Начали мне тыкать костыль – эмулятор модульности ”#ifndef ___VARY_BAD #define ___VARY_BAD , надеясь меня этим удивить. Вы полагаете, что я не видел эдакого построения? Да нет же, и видел, и пользую. Даже выкладывал где-то тут SYSTEM.h, в котором применяется онная хрень. Однако Вы даже не предложили нормального способа решить обозначенную мною проблему, а просто послали меня учить матчасть. А я Вам – про идеологию, в которой таких проблем быть в принципе не может. В целях повышения образованности, как говаривал почтальон Печкин.

    ---------- Post added at 21:39 ---------- Previous post was at 21:30 ----------

    Цитата Сообщение от newart Посмотреть сообщение
    prisekar - Регистрация: 07.03.2012
    Я только что попробовал, и правда отключена.
    CityAceE, агов! И где он бегает...

  10. #79

    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    И где он бегает...
    на другой стороне Земли во Владике, в будущем на девять часов , так что учитывайте разность времени, когда стучитесь
    Последний раз редактировалось Black_Cat; 09.03.2012 в 23:47.

  11. #80

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Сказано сильно. А в Оберонах модули и библиотеки – это одно и то же.
    Круто. Вот в Delphi можно сказать, что есть модуль Forms.pas библиотеки VCL. В Visual C++ есть библиотеки ATL, MFC с модулями внутри. А в Обероне не принято группировать модули (библиотеки?) по принципу разработки для совместного использования что ли? Каждый кусок кода в отдельном файле, разработанный кем-либо - он сам по себе, и все вместе попарно они всегда совместимы?

Страница 8 из 18 ПерваяПервая ... 456789101112 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Разработка ZXOOM
    от Andrew771 в разделе Игры
    Ответов: 666
    Последнее: 16.08.2011, 17:22
  2. Разработка ZXOOM
    от Andrew771 в разделе Графика
    Ответов: 666
    Последнее: 16.08.2011, 17:22
  3. Разработка БК-0101-10
    от CodeMaster в разделе БК-0010/0011
    Ответов: 61
    Последнее: 21.04.2011, 21:13
  4. Подскажите пожалуйста, На каких языках пишутся игры.
    от sevol в разделе Программирование
    Ответов: 168
    Последнее: 14.01.2011, 15:42

Ваши права

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