Ещё добавлю. Хорошо заниматься мультиплатформенностью на платформе, которая тянет .NET, JVM и DOSBox, с запущенной внутри Windows 95. А я целенаправленно решаю более трудную задачу - специально взял такие специфические платформы, которые требуют очень особого подхода при разработке, такие как Java micro edition, DOS с CGA-графикой, Спектрум и MSX. На них эмулятор Windows не запустишь, а значит подход к разработке должен быть нетривиальным. И конечно у моего решения есть недостатки. Но совсем не те, которые вы с denpopov'ым даже не трудитесь вербализовать. Вы эти проблемы мультиплатформенности полностью игнорируете и никаких решений вообще не предлагаете, ибо сильно зациклены на проце Z80 и наиболее качественном для него ручном кодировании. Ну занимайтесь. Или коробки спичечные коллекционируйте, это ваше дело. Но почему столько бешенства и слюны в мою сторону?
И XDev - не просто мощная среда. Это уникальная среда, вообще не имеющая аналогов, ибо объединяющая (или пытающаяся объединить) такие таргеты, которые никто до неё не пробовал объединить. А старинные они или нет - это неважно, в том смысле что если таргеты такие разномастные, то туда можно припилить вообще что угодно. И это так.
Так что наезды в стиле "мне эта нинада" меня никак не колышут. А за наезды в стиле "никому это нинада" буду тыкать носом в г-но, и, считаю, заслуженно. Потому что каждый вправе не только коллекционировать спичечные коробки, но и рассказывать об этом другим. И пусть, раз вам не нравится обсуждать в этой ветке вопросы ZXDev, её целью будет именно это тыкание, раз уж нет другой, более достойной цели.
Тут
---------- Post added at 20:13 ---------- Previous post was at 20:11 ----------
Конечно, неправильное использование инструментов- зло.
Проблема в том, что сторонний наблюдатель (оценивающий это самое везде где ни попадя) не всегда обладает полнотой информации и, соответственно, не может оценить нужность или не нужность агрегации, наследования или шаблонного программирования.
Другое дело, если сам автор внятно объяснить не может зачем он это сделал.
- Прогресс разработки игры Dark Woods
- Библиотека Wham: двухголосная музыка с шумовыми эффектами на бипер
- Буферизованный опрос клавиатуры
- Опрос управления от клавиатуры и джойстиков (QAOPSpace, Sinclair 1, 2 и Kempston Joystick)
- ZXDev + кириллица
- На ZXDev как на ZX-Basic + NewSupercode: игра «Звёздная война»
- Теоретическое обоснование подсистемы XDev/Pdp11Dev
- Реструктуризация подсистем WinDev и ZXDev
- Как подключить ресурсы (спрайты, шрифты, музыку). Константные массивы
Вот пример кода, к которому будет трудно придраться даже самому искушённому кодеру. Проделана конечно чёртова работа, но, раз сделанная, остаётся таковой. Это пример, неважно что маленький, того, как я представляю себе кодогенерацию ZXDev с ЯВУ, доступную кодеру на ZX-бейсике, даже не знающему Си и асма. Если сделать на это ставку и начать развивать, наполнять кодовую базу, то это будет неизмеримо круче, чем есть сейчас. Мне несколько обидно, что кто-то вместо того чтобы развивать это направление, упивается процессом кодинга на асме, который не претерпел особых изменений с 1985 года. И которому развиваться дальше в общем-то некуда.
Код:MODULE Durak; (** non-portable *) IMPORT B := Basic; (* ========================================================================== *) PROCEDURE Main; (* Prepare title, init game data. *) VAR radius: INTEGER; BEGIN (*$MAIN*) B.Init; (* Prepare screen & title, set up colors, write "WAIT...": *) (* ------------------------------------------------------- *) B.OVER(B.Off); B.FLASH(B.Off); B.INVERSE(B.Off); B.BRIGHT(B.Off); B.PAPER(B.Black); B.INK(B.LightGray); B.BORDER(B.Black); B.CLS; B.AT(21, 3); B.PRSTR("WAIT..."); (* Draw invisible circles & prepare drawing logotype "M": *) (* ------------------------------------------------------ *) B.INVERSE(B.Off); B.INK(B.Blue); radius := 8; REPEAT B.CIRCLE(121, 85, radius); INC(radius, 8) UNTIL radius = 72; B.POKE(23112, B.Blue); (* Fix attrib for accuracy. *) B.Quit; END Main; END Durak.P.S. Да знаю что всё равно придерётесь, ну и фиг с вами. ;-)Код:; --------------------------------- ; Function Durak_Main ; --------------------------------- _Durak_Main: ;Durak.c:16: Basic_Init(); DI RES 4, 1(IY) ;Durak.c:17: Basic_OVER(0); ld c,#0 call _Basic_OVER_ROM_fastcall ;Durak.c:18: Basic_FLASH(0); ld c,#0 call _Basic_FLASH_fastcall ;Durak.c:19: Basic_INVERSE(0); ld c,#0 call _Basic_INVERSE_ROM_fastcall ;Durak.c:20: Basic_BRIGHT(0); ld c,#0 call _Basic_BRIGHT_fastcall ;Durak.c:21: Basic_PAPER(0); ld c,#0 call _Basic_PAPER_fastcall ;Durak.c:22: Basic_INK(7); ld c,#7 call _Basic_INK_fastcall ;Durak.c:23: Basic_BORDER(0); xor a call 0x229B ;Durak.c:24: Basic_CLS(); call _Basic_CLS_ZX ;Durak.c:25: Basic_AT(21, 3); call _Basic_AT_ROM_fastcall .db 21,3 ;Durak.c:26: Basic_PRSTR((CHAR*)"WAIT...", (LONGINT)8); call _Basic_PRSTR_C_ROM_fastcall .ascii "WAIT..." .db 0x00 ;Durak.c:27: Basic_INVERSE(0); ld c,#0 call _Basic_INVERSE_ROM_fastcall ;Durak.c:28: Basic_INK(1); ld c,#1 call _Basic_INK_fastcall ;Durak.c:30: do { ld de,#0x0008 00104$: ;Durak.c:31: Basic_CIRCLE(121, 85, radius); push de push de ld hl,#0x5579 push hl call _Basic_CIRCLE_DI pop af pop af pop de ;Durak.c:32: radius += 8; ld hl,#0x0008 add hl,de ex de,hl ;Durak.c:33: } while (!(radius == 72)); ld a,e sub a,#0x48 jr NZ,00104$ or a,d jr NZ,00104$ ;Durak.c:34: Basic_POKE(23112, 1); ld hl,#0x5A48 ld (hl),#0x01 ;Durak.c:35: Basic_Quit(); LD HL, #0x2758 EXX LD IY, #0x5C3A EI ret
P.P.S. Видели исходники Exolon'a? Не переписать ли Exolon на Oberon? ;-)
Последний раз редактировалось Oleg N. Cher; 16.12.2014 в 06:16.
1. Кодер ZX-basic-а не знает что такое "PROCEDURE","VAR","Main","INTEGER","BEGIN ","END","REPEAT","UNTIL","IMPORT","MODULE"
И что такое точка в выражениях вида "B.Init"
Поэтому надо честно говорить, что придется пролистать книжку про введение в оберон или объект паскаль, либо придётся задавать определённое количество "глупых" вопросов на форумах.
Если он знает Си, то число глупых вопросов сократится на 40%.
Если знает Паскаль или Дельфи, то на 80%, а об остальном можно будет догадаться самому. Но и догадываться это тоже интеллектуальный труд.
2. Неизвестно, есть ещё куда развиваться кодингу на асме (как науке) или нет. Возможно есть пути, которые не видны. Но я почти уверен, что понимание асма конкретным человеком, полезно развивать.
3. REPEAT UNTIL лучше не писать в одну строчку, тогда знающему Си будет проще догадаться, что эти слова - части одной структуры цикла.
Код:REPEAT B.CIRCLE(121, 85, radius); INC(radius, 8) UNTIL radius = 72;
---------- Post added at 11:39 ---------- Previous post was at 11:35 ----------
4. И как ZX-basic-кодеру догадаться, что верхний "код" это то исходник на обероне, а нижний "код" это что получается на асме после компиляции. Блоки кодов лучше подписывать.
Мне сложно представить кодера на ZX-бейсике, который никогда не видел Hisoft Pascal'я или структурных версий бейсика типа BetaBasic и MegaBasic. И потом, кодер - он ведь кодер, а не блондинка.
А почему тебя это так напрягает?
Мне самому пришлось очень вдумчиво изучать низкоуровневый кодинг, а после него - не менее вдумчиво компонентный подход в Дельфи. Хотя теперь я не считаю это сложным. Но полезным считаю. Что предлагаю я? Изучить сбалансированный и компактный модульный язык, квинтэссенцию программных абстракций, уточнённых временем. Углубить знания в области написания батников (принцип пригодится для продвинутого использования любой ОС), присмотреться к Си. Многие здесь на форуме слышали что Си это круто, имеют смутное представление о Си и C++, но верят. И они же слышали, что Оберон это отстой. И тоже верят. А когда начинаешь говорить про достоинства Оберон-парадигмы - не верят.
То есть присутствует желание чтобы и ничего не читать, и ничего не узнавать, и чтобы жизнь была лёгкой и приятной, а всё само делалось, да? Но панацею я и не предлагаю. Абсолютно любая технология требует времени на её освоение. Нужно и книги читать, и на форумах глупые вопросы писать. А как же иначе. А Оберон не такой уж большой язык, он гораздо компактнее Си. И освоить его проще.
Я соглашаюсь. Но не менее важно уметь мыслить модульными категориями и абстракциями. Я читаю форум и понимаю, что у многих здешних лоу-левел кодеров отсутствуют знания о "большом" программировании, о том как устроена и работает большая программная система, как её поддерживать и дорабатывать. Очень многие не догадываются про системы контроля версий и их преимущества. Расти личностно программисту всегда есть куда. Почему они считают что асм важнее всего этого?
Опять отсылаю к HisoftPascal, Beta- и MegaBasic.
Ты обрати внимание, что многие zx-бейсик-кодеры вырастают до программирования в большом на всё тех же бейсико-подобных языках, имеющих все атрибуты структурных языков. При этом у них барьер в освоении Паскаля и Си, которые в общем-то отличаются только синтаксисом.
Я думаю, кодеры догадаются. Не блондинки.
Последний раз редактировалось Oleg N. Cher; 16.12.2014 в 08:26.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)