Просмотр полной версии : Скрестить ZX и ПЦ
Oleg N. Cher
17.12.2014, 03:42
Скрестить ZX и ПЦ
Обращаюсь к вам как опытный скрещиватель ZX и ПЦ с многолетним стажем. ;-) ZX-асм, ПЦ-асм - это всё очень мило. Даже соглашусь, что это бриллиант. Но этого недостаточно. Любому бриллианту приличествует изящная оправа. И вы согласитесь, что способ упаковать эффективные кодовые процедуры в структурно-модульную (или ООП) оправу - это хорошее дело, главное чтобы эффективность была на высоте.
Преимуществ у привнесения структурного уровеня (а ведь он всё равно будет, хотя бы даже записанный в тетрадке), наглядно показывающего алгоритм, - более чем достаточно. Особенно хорошо если это будет синтаксически проверяемый и компилируемый код, а не записки на манжетах. Т.е. грубая схема:
если асм_zx, то ld a,b
если асм_pc, то mov al,bl
если яву, то a := bТретья строка - это наш выход на современные реалии бытия. Тут была масса претензий к качеству кода, выдаваемому SDCC. Но, господа, SDCC вовсе не отбирает у вас хлеб лоулевел кодера. Он только подставляет плечо. А кодировать вручную вы можете и в ZXDev. Та даже код на ЯВУ даёт очень много лазеек для его ручной оптимизации. Помните REPEAT UNTIL (http://zx-pk.ru/showthread.php?p=761847#post761847)? Это всего лишь соптимизированный FOR. До оптимизации этот код занимал у меня 560 байт. После оптимизации - 500 (львиная доля из них - быстрая процедура рисования окружности), и это не предел. Я уверен, что если вывести переменную radius из процедуры на уровень модуля, она перестанет быть локальной, и код уже будет другой, и пооптимальнее. Да, наглядности это коду не добавит, но для оптимизации такое сделать можно. Можно скрестить все эти PAPER, INK, BRIGHT и FLASH в одну процедуру COLOR. И так далее.
Структурно-модульный уровень - логика кода на ЯВУ + библиотеки на асме (или на ЯВУ - там, где это уместно). Я скажу очень важную вещь, сосредоточьтесь. Как, по-вашему, что нужно сделать чтобы этот код (http://zx-pk.ru/showthread.php?p=761847#post761847) заработал на другой платформе?
Всё просто. Есть два способа. Первый: переписать код под API (программные интерфейсы) другой платформы (а обычно - и на другой язык). Второй: эмулировать операторы ZX-Basic и Laser Basic на этой платформе, со структурой экрана и памяти (чтобы POKE работал). Какой способ вам нравится больше? Мне - ни один из них в чистом виде. Нет. Здесь нужна декомпозиция. Нужно проделать очень серьёзную работу по пересмотру абстракций, положенных в основу алгоритмов. Чем заменить PAPER и INK? Завести коды цветов как у экрана Спектрума или как-то иначе сделать? Это трудная работа, но если выйти на новый уровень абстракций, спроектировать новый интерфейс логики работы с экраном, клавиатурой, звуком, то мы получим уже нечто третье, а не два вышеперечисленных способа в чистом виде. Попробуем усложнить задачу ещё круче. Пусть выработанные нами интерфейсы будут реализованы в едином стиле для разных платформ, для начала пускай хотя бы для двух. Чувствуете какая здесь кроется мощь?
Ещё язык программирования. Неплохо конечно использовать привычный язык, но он вряд ли будет одинаково хорош для Android и для ZX. Проект XDev ставит перед собой ещё более серьёзную задачу: пусть у нас будет средство, позволяющее развернуть нашу игру и на ZX - она будет выглядеть поскромнее; и на Android - хотя бы и управление отличается, сенсор вместо клавы с джойстиком. Но логика работы над вашим проектом остаётся, открытая, доступная для дальнейшей модификации. С долей презрения к не появившимся ещё гаджетам и платформам. ;-)
Вы видели декомпилированный Exolon? Его нужно переписать в этом же духе, иначе через несколько лет у кого-то снова может появиться очень интересная головоломка "узнать как это устроено?". Я не хочу ломать кайф кому-то, но сколько же можно топтаться на одном месте. Видите как резво сменяются парки платформ? Или вы глубоко в эмуле ZX/любимой IDE C# и вам на всё пофиг? ;) Но мне-то нет. И моим единомышленникам.
Проблемы "скрещивания" кроются в том, что не всегда правильно расставляются акценты при разработке. Берутся не всегда адекватные абстракции. Игнорируется модульность. Вот, например, я бы поставил высокий удельный вес понятию спрайт (картинка на экране), при этом цветность, выравнивание по сеточке из атрибутов - уже понятия меньшего удельного веса. Язык - ещё меньше веса. Платформа - ещё меньше веса. Тогда получится программа, выводящая спрайт. А во что она превратится после нажатия на Compile - это уже второстепенно. У нас же сейчас всё иначе. Главные скрипки и трубы - платформы, процессоры и языки. А наши скромные приложения - они имеют насколько ничтожный вес, что быстро устаревают и становятся никому не нужными. У нас всё с ног на голову. Вместо того чтобы всем миром прийти к единой нотации - каждый городит свой идеальный язык. Вместо стандартизации единого апи (пусть даже этот апи будет разной мощности; и как матрёшка, совместимый сверху-вниз - для разворачивания на платформах разной мощности) - опять чёртова куча платформ, и не видно этому конца-краю. Кто-то с этим мирится и делает ZXTune для десятка платформ. Ну что ж, очень круто, молодец. А что остальным делать? ;-) У кого барьеры овладения технологий. Кто, начав с ZX-Basic, пошёл по пути QuickBasic, потом PureBasic, потом VisualBasic, потом BlitzBasic/Monkey-X. И невдомёк ему, что его мучают демоны названия языка. Это не бейсик, это много бейсиков. ;-) А В XDev язык построен по принципу матрёшек апи, как я сказал выше, чтобы разворачивать его на платформах различной мощности. Но это единый язык или в лучшем случае очень близкие диалекты, но не целый парк языков, похожих друг на друга разве что общим названем. Об этом можно долго говорить.
Примерами кода подкреплю позже, если не возражаете.
Примерами кода подкреплю позже, если не возражаете.
Давай-давай!
Не возражаем!
(с) Афоня (ну почти)
А вообще мне порой кажется что тебе, старина приплачивают за продвижение этого XDev :)
(только не рефлексируй, без обид, я почти шучу :) )
Oleg N. Cher
17.12.2014, 12:58
А вообще мне порой кажется что тебе, старина приплачивают за продвижение этого XDev :)Просто инструмент хороший. Универсального применения. Но недооценённый. Но я вам покажу кузькину мать, т.е. как из него верёвки вьются. Да, жаль только, что кавычки выкусить препроцессором, похоже, нельзя. Поэтому придётся перекодировать команды асма в циферки ручками, и пока не знаю как сделать лучше этого:
MODULE TestAsm;
IMPORT Asm;
(* Set graph mode 320x200, 4 colors (CGA, EGA, VGA & SVGA) *)
PROCEDURE SetGraxMode* ;
BEGIN
Asm.Byte5(
0B8H, 4, 0, (* MOV AX, 0004H *)
0CDH, 10H (* INT 10H *)
);
END SetGraxMode;
(* Set text mode 80x25 *)
PROCEDURE SetTextMode* ;
BEGIN
Asm.Byte5(
0B8H, 3, 0, (* MOV AX, 0003H *)
0CDH, 10H (* INT 10H *)
);
END SetTextMode;
BEGIN (*$MAIN*)
SetGraxMode;
SetTextMode;
END TestAsm.Eщё про миграцию языков скажу. Как я заметил, многие люди, пользуясь своей любовью к бейсику (http://zx-pk.ru/showthread.php?p=761904#post761904) (похвально, и мне это счастье знакомо, только вот ZXDev будет покруче, чем MCoder2; притом практически во всём; что же изменилось, что тогда было счастье, а теперь его нет? ;-) ), иногда доходят от ZX-Basic даже до Monkey-X. Но парк бейсиков обширен и разномастен, допустим, если выстроить иерархию бейсик-языков, будет:
ZXBasic/Laser/MegaBasic -> GWbasic/QuickBasic/TurboBasic -> VisualBasic -> FreeBasic/PureBasic -> Blitz/Monkey-X
Можно такую же иерархию выстроить для Си:
Hisoft C -> Turbo C/Quick C -> Borland C++/Visual C++ -> GCC -> Objective C ?
Или Паскаля:
Hisoft Pascal -> Turbo Pascal -> Delphi -> FreePascal
Они не просто переносят одни и те же возможности из одной инкарнации в другую. Языки изменяются. Причём бейсики - больше всего. Также они усложняются, обростая деталями как снежным комом, но оставляя прикреплённость к платформе. Хотя, пожалуй, у FreePascal и GCC с этим всё хорошо, их устаревшесть и проблемы лежат в той плоскости, что подкапываются под саму их основу - их начинают заменять скриптовыми языками и виртуальными платформами, чётко отделяя мух от котлет - "опасный" натив от "безопасного управляемого кода" (ага! а в Обероне всё это есть с самого начала!), т.е. им как бы уже и нету места, в любом случае, удельный вес этих "старых" языков снижается (GCC на плаву во многом благодаря Linux'у; ObjC/LLVM - благодаря MacOS и "яблочным" технологиям). Оберон-языки особняком, но там удалось выстроить такую парадигму, что, выпуская новые диалекты с новыми возможностями, можно медленно мигрировать, уходя от устаревших опасных и ненужных возможностей. Парадигма "старых" Паскаля и Си не смогла избавиться ни от "опасного" кода, ни от рудиментов. Всё из тех же соображений совместимости.
Также заметим миграцию платформ. Со спека (8080 или CP/M) на дос, это если не считать Amiga, потом UNIX, виндоус и, наконец, уже мультиплатформа, но без гаджетов, потом - уже гаджеты и прочее, но старые платформы утеряны. XDev оставляет нам их, если уж нам так нужно. Но XDev построен на том же принципе, что и Monkey-X с его mojo (http://habrahabr.ru/post/159377). При всех недостатках - не нужно знать десяток языков и два десятка апи. Для инди-разработчика самый рай. Разве неинтересное направление? Уже всяко интереснее, чем просто на асме кодить ИМХО.
Поэтому придётся перекодировать команды асма в циферки ручками, и пока не знаю как сделать лучше этого:
А макросы там нельзя разве?
Kakos_nonos
17.12.2014, 14:07
А есть книга про программирование на обероне для ZX-а? Или большая статья, чтоб человек, совсем не знающий оберона мог разобраться и начать кодить?
Такие кучи текста ниачем пожалуй токо Blackcat на форуме писал да и то было это давно и неправда. О чем тут разговор?
Основная ж проблема в том что 99% алгоритмов разработанны для некой виртуальной машины с неограниченным адресным пространством а зачастую еще и стек тоже бесконечной глубины подразумевается.
В ПЕЦЕ режимов памяти - DOS16, FLAT32, FLAT64 и все они намного жирнее чем спекки-48 или страничные спекки-128/256/512/1024/2048/4096. Без переделки алгоритмов на использование мелких (до 16кб) структур данных вообще НИКАК. Так что это нетривиальная ручная работа, научиться которой можно только на примере уже выполненных конкретных примеров.
Я как-то взял сорцы digger-a (там на С + графика на ASM под DOS16 com-file, 1 segment кода, модель tiny) и пытался компильнуть БЕЗ ГРАФИКИ используя sdcc, не помню чего я забросил это дело, но по-моему потому что в 16кб кода и данных там не влазил какой-то довольно сложный по логике кусок, который надо было разбивать а разбираться в его работе желания небыло.
Вот бы какой-то крутой программер разбил бы эти сорцы на куски и показал бы как можно из исходника под DOS16 сделать исходник для ZX-a :)
Oleg N. Cher
18.12.2014, 00:59
bigral, это не "ниачём", это ты на другой частоте вибрируешь и с этими идеями в резонанс не входишь. Что ты там за чепуху хотел прокрутить с Дигером - я не знаю, и чем там крутому программеру заниматься - яйца выеденного не стоит. Я на этой частоте не вибрирую. ;-) Я вообще нигде не предлагал переписывать бинари с винды под ZX или исходники DOS16 под ZX. Это к Destr'у. Всё от извращённых желаний скрестить нескрещиваемое, например, родить "Java для ZX". Или "идеальную ОС для Спека с памятью в 16 кб " ;-) Но подобные вопросы здешний народ очень волнуют. Впрочем, Destr хочет разработать графический движок для Спека, и наверное способом Трамплина можно действовать.
Нельзя да и не нужно добиваться бинарной совместимости DOS16 и ZX. Ни абсолютной, ни относительной. Эта светлая мысль разлетается от простейших вещей, например, таких как сегменты. Действовать надо иначе и с другой стороны. И если ты пробьёшься сквозь мои рассуждения и увидишь в них соль, поймёшь что конкретно я предлагаю - то очень обрадуешься. Почему другие довольствуются ограниченными и устаревшими средствами разработки - такими как ZXBasic, Трамплин или MCoder2 - я не знаю, наверное дело привычки. Как мозги у человека устроены - такое средство ему и нравится.
Но я бы с удовольствием послушал каким ты видишь средство разработки, позволяющее скрестить ZX и Android. А то ты такой суровый чел, что говоришь только "ачёмта чиста канкретном пацаны". ;-) Да, и надеюсь, что это будет не эмулятор FUSE. Вот Java на ZX - это да, конкретная и чоткая идея, заслуживающая уважения и обсуждения. Сдержанных оваций и молчаливого одобрения. А вот то что я предлагаю - это чухня, да...
А есть книга про программирование на обероне для ZX-а? Или большая статья, чтоб человек, совсем не знающий оберона мог разобраться и начать кодить?Есть форум, куда можно прийти, почитать, прочувствовать. Ссылка в подписи. Я могу для удобства сшить эти форумные сообщения в PDF'ку, но это конечно будет ненастоящая книга. Писать настоящую - не планирую. Хотя не стоит огорчаться, вряд ли она бы у меня получилась. Тут лучшая книга - работа с готовыми примерами. Несколько маленьких игр я на Оберон портировал. Можно начать с их изучения и модификации.
Я понимаю зияющую брешь в документации по ZXDev, однако я очень надеялся что вы поможете мне написать её. Хотя бы FAQ для начала.
---------- Post added at 23:59 ---------- Previous post was at 23:31 ----------
Как повысить удельный вес алгоритма, который для нас, допустим, значимее, чем используемая для его разворачивания платформа? Очевидно, что вавилонское столпотворение языков программирования - неизбежная данность, поэтому нам нужна единая нотация, которая избавит нас от необходимости изучать нынешние и текущие языковые ухищрения. Нужно сделать ставку на что-то одно, потому что ставку на что-то делать всё равно приходится. Но это одно должно быть достойным того, чтобы на него ставить. Нам услужливо пододвигают C#/Java, и мы постепенно становимся рабами даже не этих языков, а этих платформ. Попытка развёрнутой объективной дискуссии на эту тему с явистами и шарпаками абсолютно бессмысленна - задавят массой. Ну да, они это недостатком не считают. Но заметим в уме необходимость синтеза проверенной временем процедурной парадигмы с новыми платформами.
Monkey-X - пример такой единой нотации. Он вырос из Бейсик-мира, и ушки его торчат оттуда. Мне лично очень приятно, что он не получил сишного влияния. А для кого-то это недостаток. Ну ещё бы, Си ведь круче тучи. Как и асм. Да, круче, но на своём месте - в системном программировании. Но значимость Си в последнее время снижается. Для веб-программирования Си используется очень мало. Для разработки под гаджеты - мало. В XDev языки Си и асм - каждый на своём месте. Как колёса для телеги. Там, где в этом есть смысл, они юзаются. XDev по задумке своей - квинтэссенция лучшего из Бейсик-мира, Паскаль-мира и Си-мира. Позвольте я опишу вам своё видение этого. Из Си-мира XDev берёт высокую кроссплатформенность результатов, возможность использовать в качестве кодогенераторов готовые оптимизирующие компиляторы, возможность подключить к своим разработкам код и готовые библиотеки на Си, низкоуровневые системные фишки. Из Паскаль-мира XDev взял строгость, наглядность внешнего вида кода, удобство чтения и модификации, модульность. Т.е. мы синтезировали удачный вид Паскаль-кода и эффективную сборку его сишными компиляторами. Обратите внимание, что все три линии (Бейсик, Си, Паскаль) начинали скромненько, но в итоге пришли к кроссплатформенности и мультитаргетности (GCC, FreePascal, PureBasic/Monkey-X). Самым интересным для меня является Monkey-X. Благодаря своему подходу Monkey-X в случае если вы сделаете на него ставку даёт вам возможность с единого исходника делать игры для целой кучи платформ, а с помощью его единой нотации избавляет от необходимости изучать ActionScript, Java, C, C++, Objective C. Т.е. Monkey-X не запрещает вам знать эти языки, да и ограничений у него более чем достаточно. Но зато подход верный. Я бы в итоге предпочёл вместо массы языков программирования иметь нотацию номер один с возможностью варьировать её синтаксис (Бейсик, Паскаль или Си) и семантический набор (процедуры или методы; или то и другое; и т.д.). Нам нужно выйти из концепции языков программирования вообще. Над подобными вещами уже задумывались. Например, профессор Андрей Петрович Ершов с его «Лексиконом». Погуглите, если интересно.
Вместо того чтобы всем миром прийти к единой нотации - каждый городит свой идеальный язык.
А ничего, что единая (сиречь универсальная) нотация- это и есть "идеальный" язык в твоей терминологии?
И вообще, вылези, наконец, из пещеры. Есть языки для написания игр, где твой пресловутый спрайт будет во главе угла.
Возвращаясь к первоначальной постановке вопроса- нет ничего хорошего универсального. Не надо себя обманывать и рассуждать с позиции эгоцентризма ("если язык не подходит мне, значит он не универсальный, если подходит, значит универсальный и подойдет всем").
Vitamin, как жёстко ты браза...
---------- Post added at 10:29 ---------- Previous post was at 10:29 ----------
Не убивай в человеке светлое-хорошее, что-ли...
Vitamin, как жёстко ты браза...
Не убивай в человеке светлое-хорошее, что-ли...
В чем жесткость-то? В озвучивании прописных истин?
В чем жесткость-то? В озвучивании прописных истин?
Ладно, проехали.
Как знаеш...
(не мне гуров-мастеров учить :) )
Ладно, проехали.
Как знаеш...
(не мне гуров-мастеров учить )
facepalm.jpg
Ну тогда разжую:
1) есть цель- облегчить разработку ПО на спеке
2) есть ресурсы- один Oleg N. Cher, один Destr и еще несколько неофитов
3) если такими малыми ресурсами попытаться решить такую глобальную задачу, то на выходе получится чуть меньше, чем нихрена и развязанный пупок впридачу, не говоря уже о полной демотивации и обиде на мир
4) выход видится один- сузить цель, например, до "облегчить разработку ИГР на спеке". Сужение очевидное, весьма перспективное и интересное. И, как заметно из постов, Oleg N. Cher весьма тяготеет к этому направлению.
5) концентрация сил даст бОльший результат, а в перспективе- повышение интереса и приток новых пользователей-ресурсов
6) PROFIT!!!!
НО!!! Не нужно подменивать понятия и представлять критерием универсальности поддержку спрайтов из коробки или еще какие-то узкоприменимые плюшки. Упомянутый Monkey-X - прекрасный пример заточенного под определенные нужды языка. Он не универсален, у него своя ниша (о чем не было ни слова в целом абзаце).
За все нужно платить. На одной чаше весов - C/asm/C++/etc. За их быстроту, универсальность и гибкость платят сложностью кода. На другой чаше - специализированные языки. Их эффективность для некоторых задач обеспечивается ценой сужения этого самого круга.
И задача- выбрать инструмент сообразно задаче. Иначе будет как в поговорке про взявшего молоток...
Да брось.
Говорю-же, кое-с-чем не согласен, но ругатся рылом не вышел.
Ну на том и оставим.
Жизнь всё расставит на свои места.
Говорю-же, кое-с-чем не согласен, но ругатся рылом не вышел.
Ну и не надо ругаться. Если с чем-то не согласен- скажи.
Да не мой тред, и не мне тебя учить, а всё превращается потихоньку в перебранку (сперва осторожный обмен мнениями, попозже настаивание на своём, ну и как апофеоз - просто неприкрытая агрессия)
К тому-же: можно было-бы пройти все этапы, но только если есть достойная (того) цель.
А я, например тут ничего не пытаюсь, я просто на вид поставил что мол пусть тот Олег распинается, ну если в радость человеку - зачем его так резко осаживать?
В результате - сам стал офтопером и (не дай боже!) троллем.
В общем Витамин, ты гуд человек, сорри если чем обидел.
Ничерта подобного и в мыслях не имел.
denpopov
18.12.2014, 11:56
но в итоге пришли к кроссплатформенности и мультитаргетности (GCC, FreePascal, PureBasic/Monkey-X).
Какой бред. Покажите мне purebasic, который выдаст на ходу бинарник не под венду, а в идеале сырок.
А я, например тут ничего не пытаюсь, я просто на вид поставил что мол пусть тот Олег распинается, ну если в радость человеку - зачем его так резко осаживать?
Твою мысль вроде понял. Извиняюсь за возможно излишнюю резкость.
Просто от постов Олега у меня возникает мысль "эту бы энергию да в мирное русло":) И будет очень обидно, если эта энергия иссякнет, распылившись.
Какой бред. Покажите мне purebasic, который выдаст на ходу бинарник не под венду, а в идеале сырок.
Вот сейчас вообще вопрос не в тему, но я всё-ж интересуюсь: denpopov, а ты не Клон случаем?
Если да, то напиши плз в личку, есть о чём поговорить.
Если нет - то сорри, обознался (уж больно похож)
---------- Post added at 12:09 ---------- Previous post was at 12:08 ----------
Твою мысль вроде понял. Извиняюсь за возможно излишнюю резкость.
Просто от постов Олега у меня возникает мысль "эту бы энергию да в мирное русло" И будет очень обидно, если эта энергия иссякнет, распылившись.
Без обид, браза, ты молодец, спасибо что ты есть.
---------- Post added at 12:10 ---------- Previous post was at 12:09 ----------
Ничто не пропадает просто так, ну и энергия того олега тоже не исключение:)
портируйте кто-нить на Спекк BlitzBasic, чтоли?! или научите его генерить Спекокод.
BlitzBasic
А что за зверь-то?
Дай глянуть, что-ли...
(только по честному - с сырцами, ехе`ми и мануал!)
Destr, http://ru.wikipedia.org/wiki/Blitz_BASIC
Destr, http://ru.wikipedia.org/wiki/Blitz_BASIC
А, черт...
По ходу неполучится...
---------- Post added at 12:27 ---------- Previous post was at 12:27 ----------
Спасибо за ссыль, конечно!
---------- Post added at 12:31 ---------- Previous post was at 12:27 ----------
Самое злое - это "коммерческий" и "игровой"
Игровой даже хуже - тут где-то написали среду разработки и ну давай все шлёпать игры.
И столько лажи, что волосы дыбом!
(хотя кто-то тут на форуму сказал, мол, нам и какашки в радость, лишь бы спек)
Как-то так...
---------- Post added at 12:33 ---------- Previous post was at 12:31 ----------
Чем-то пованивает и от диззиаге, там тоже так увлеклись что уже тру от фэйл не отличают.
Риндекс правда пытается рулить, Титус тоже бъётся как скотина, а всем пох, обидно братцы!
Destr,
Самое злое - это "коммерческий" и "игровой"
если BlitzBasic (Blitz3D), то уж ене коммерческий. Его отцепили, теперь он как опенсорс стал. где-то даже исходники были...
нашёл:
https://github.com/blitz-research/blitz3d
denpopov
18.12.2014, 12:48
хоспаде. БлитцБейсик с Амиги портировали вроде, не?
нашёл:
https://github.com/blitz-research/blitz3d
__________________
А, гады, всё на буржуйском.
Интересно что быстрей?
1. Переведут на русский
2. Я выучу английский.
3. Просто умру и дальше сами.
Риторический вопрос...
denpopov
18.12.2014, 12:49
Если да, то напиши плз в личку, есть о чём поговорить.
нам не о чем говорить с человеком, который не следит за базаром и выбрал панибратско-падонческий стиль речи.
нам не о чем говорить с человеком, который не следит за базаром и выбрал панибратско-падонческий стиль речи.
О как!
Ну ладно, почти всё понял.
А кому это "нам"?
(Вам?)
А чем тебе дружественный настрой не угодил?
Или во враги сперва всех записывать, а уж потом поглядеть как случится?
---------- Post added at 12:58 ---------- Previous post was at 12:56 ----------
Говнарей всегда хватает.
Если тебе в прикол таким быть - пожалуйста.
(только модеры за это банхамером по котелку стучат. и правильно делают. угомонись уже)
Oleg N. Cher
18.12.2014, 14:20
6) PROFIT!!!!Вцелом правильно сказано. Но хосспади во шо вы мне тут тему превратили :mad: Господа. Если вы не понимаете (или не видите смысла) зачем переписывать игру в духе XDev, обращаю ваше внимание что уже много постов посвятил вопросу "зачем?" и собирался перейти к вопросу "как?". bigral называет всё это пустопорожней болтовнёй "ниачём", и если вы солидарны, значит смысл моих идей прошёл мимо вас. Скрещивайте тогда ZX и ПЦ как-то иначе. Или не скрещивайте, дело ваше.
Monkey-X - прекрасный пример заточенного под определенные нужды языка. Он не универсален, у него своя ниша (о чем не было ни слова в целом абзаце).То, что он заточен под определённую нишу, никак не характеризует его как не универсальный. Просто эта ниша - более проработанное направление. В Monkey X часть кода закрыта, но другая открыта - бери и дорабатывай. Если смотришь на это как соавтор, а не как потребитель языка. Зажрались все, подавай готовенькое. А делать кто будет? Автор подаёт, но за бабки. И повышает с каждым годом ту самую пресловутую универсальность, если следите. Кроме того, я не советовал всё бросить и уйти на Monkey X - хвалил больше сам подход генерации кода из одного языка во многие. Упрощающий жизнь разработчику. А ты, Vitamin, ни одним словом не упомянул про тот бульон, ту густую кашу, которая сварилась из плюсов и жавы, и в которой плавают отнюдь не только ананасы. Ты предлагаешь всем её расхлёбывать, хотя кому-то она протечёт до пят и в глотку не полезет. Я же предлагаю сварить другую кашу, не такую густую. И с другим ароматом. Это работа, да.
А макросы там нельзя разве?Да вот с наскоку не получается. В SDCC можно юзать конструкцию __asm__("asm_str"), а в Turbo C есть только asm asm_str без всяких кавычек. Особо продвинутой поддержки асма в Ofront'е нет, как-то обходились; обероновская Asm.Code - это обычная процедура со строковым параметром, которую препроцессор превращает в нечто, но не умеет откусывать кавычки. Впрочем, если кто-то очень попросит - сделаем более продвинутую поддержку. Пока же оставлю как есть.
bigral, я готов поковырять с тобой Дигера. Но всё будет зависеть от твоей мотивации - насколько тебе интересна эта игра и чего ты в итоге хочешь получить. Если просто собрать для Спека досовый код, с правками, без экрана, услышать критику качества этого кода и похвальбу экий ты ловкий парень потому что увлёкся интересной штукой, ;-) то мне это, право, не очень интересно.
Если просто хочешь портировать эту игру для Спека (и всё), тогда тебе асм в руки. Но если ты хочешь посмотреть как будет выглядеть Дигер в обёртке XDev - добро пожаловать в клуб. У нас будет много работы. Может быть, на годы. Не пугает? Зато всем нашим последователям идти по этому пути будет уже сильно легче. Подобно тому как для Monkey X разработчику нужно знать язык и платформу чтобы сделать их поддержку, и знать хорошо, но юзерам уже всё это знать необязательно, достаточно самого языка Monkey и интерфейсов его библиотек (типа mojo).
Если согласен, учти, что это будет твой проект, и делать его будешь в основном ты, себе я отвожу только скромную роль консультанта. Просто у меня своих незаконченных портов игр четыре штуки и ещё две в планах, и прежде чем начинать что-то новое - нужно закончить начатое. К тому же я чувствую ответственность перед Reobne, который вложил свой труд в Dark Woods. Так что всё зависит от твоих целей. Я готов дарить самое ценное, что у меня есть - время моей жизни. Но - интересным людям и интересным проектам.
Адресую моё предложение также всем любителям скрещивать ZX и ПЦ, любителям портировать игры. В людях я ценю энтузиазм, стремление узнавать новое, аккуратность, порядочность, обязательность, безкорыстие. Не уважаю поверхностность суждений, низменность, следование стадным инстинктам.
Что я предлагаю? Взять игру (для Спека, ПЦ, ДОС'а, неважно), которая способна увлечь ваш ум своим внутренним устроением на много дней, да и переписать её в духе XDev. На использовании Оберона я не настаиваю, можно ограничиться асмом с Си. Можно даже параллельный порт на Monkey X сделать, и в этом случае вероятен профит в виде продаж на Google PlayMarket. Заодно посмотрим чего Monkey X нам натаргетит для Андроида. И что нужно подогнать в XDev чтобы он был лучше Обезьянки. А там, глядишь, из нашего общения ещё что-то интересное получится. Так что милости прошу.
А ты, Vitamin, ни одним словом не упомянул про тот бульон, ту густую кашу, которая сварилась из плюсов и жавы, и в которой плавают отнюдь не только ананасы.
Вообще-то упомянул. В контексте бОльшей универсальности, но повышенной сложности.
Ты предлагаешь всем её расхлёбывать, хотя кому-то она протечёт до пят и в глотку не полезет, потому что ты сам её хлебал и хлебаешь на всё хлебало.
Пруф или звездабол.
Oleg N. Cher
18.12.2014, 22:07
Вообще-то упомянул. В контексте бОльшей универсальности, но повышенной сложности.БОльшей универсальности? А это смотря в чём. Мне припомнить о таких недостатках дотнетов, которые вообще не подлежат устранению?
Но если Monkey X или XDev можно дорабатывать, причём очень скромными силами, то на .NET и суда .NET. Не хочу идти в скрытые рабы мелкомягких. Ну не нравится мне такое мирное русло. Я не отказываюсь от достоинств Java (исключительно потому что у меня есть планшет с Android), но как язык она такая уродливая, что не хочется даже трогать. И в перчаточках, коими может стать другой язык, в неё транслируемый. Я при нужде смогу добавить поддержку трансляции в Java и в байт-код .NET'а даже легче, чем тебе кажется. А что будет делать шарпак с тем, что его шарп только для одной платформы, заточенный исключительно неуниверсально - только под одну всего цель - рубить с юзеров бабло.
Мне тут говорили, что здешнему народу не нравится как я продвигаю Оберон и XDev. Но мои-то центры удовольствия никто не спешит стимулировать? С чего мне стимулировать центры удовольствия тех, кто говорит со мной только о недостатках Оберона и XDev? Я просто вынужден говорить с лоулеверами о недостатках асма, с сишниками о недостатках Си, а с шарпаками - о недостатках шарпа. Логично? Потому что у каждого из этих средств есть недостатки, в том числе и в плане универсальности. Только к ним привыкли и не жужжат.
---------- Post added at 21:07 ---------- Previous post was at 21:02 ----------
Подход трансляции одного языка в другой - универсален. Насколько универсальность передастся от одного языка к другому - это зависит от семантики обоих языков. Monkey X можно назвать узкозаточенным, но я упоминал о его недостатках и том, что там ещё есть над чем поработать. Как-то ты проглядел и придрался не в тему.
Oleg N. Cher, я еще 3 года назад понял что ты маниакальный фанат оберона, и что вообще для тебя сравнение языков программирования это "вечная интересная тема" на которую можно до бесконца "переливать из пустого в порожнее". У меня немного другое хобби а именно PDP-11 железо и софт. Так что нам увы не попути.
А digger-a я хотел компильнуть просто для проверки пригодности SDCC для speccy (в качестве инструмента портирования того огромного количества исходников на С которые есть сейчас в сети). Результат печальный так как даже такой самый короткий исходник который на ПЕЦЕ вкладывается в COM-файл и модель памяти DOS16-tiny не влез в память синклера. Это естественно ставит новую задачу - распил существующих сорцов на куски занимающие на спекки максимум 16кб кода и 16кб данных... но помоему я пошел по кругу как ты обычно, так что закругляюсь.
Oleg N. Cher, я еще 3 года назад понял что ты маниакальный фанат оберона,
Что показательно - на форуме оберона кучкуются и фанаты "дракона" во главе с Паронджановым . Цирк шапито ... :biggrin:
На счет SDCC - не взлетел ни на пЫк ни на STM8 , и ИМХО не взлетит.
А вот Oleg N. Cher если действительно есть желание облегчить участь кодописательства под ZX , лучше взглянуть на сие http://www.wudsn.com/
И сляпать по образу и подобию...
denpopov
19.12.2014, 15:26
dosikus, пора осилить ACTION! на Атари:) ичсх, там фидорастам нет места для красноречия и понтов:)
между делом, WUDSN не для сектантов девелоперов.
dosikus, пора осилить ACTION! на Атари:)
Не, меня прет от асма 6502.
Ностальгирую по 80ым с мануалами и под музыку с Ретро ФМ. :biggrin:
А ты ACTION! в эмуле терзаешь?
denpopov
19.12.2014, 16:12
А ты ACTION! в эмуле терзаешь?
иногда, хотя мне нравится способ разработки.
Ностальгирую по 80ым с мануалами и под музыку с Ретро ФМ.
нуууууууууууу. это несерьезно.
Andrew771
19.12.2014, 17:21
Выкладываю свою текущую версию кросс-Паскаля на PC для ZX, а то уже пару людей попросило в личке.
Запуск - project1.exe, после запуска выбрать файл в формате PRG, в котором программа на Паскале. После компиляции образуется файл с ассемблером ASM, можно компилировать и запускать в эмуляторе. Если при компиляции будут ошибки, то отобразятся в файле error.prg.
Паскалевские примеры имеются в файлах PRG.
Оптимизации асмовского кода пока нет, но будет. Уже знаю, как делать.
На данный момент поддерживает:
++++++++++++++++++++++
Типы
----
byte
word
string[N]
Массивы для типов byte и word - одномерные и двумерные, для string - только одномерные:
ArrayByte [...]
ArrayWord [...]
ArrayString [...]
Стандартные операторы
---------------------
:=
Write
Writeln
Read
Readln
If ... then ... else ...
For ... to ... do
While ... do
Repeat ... until
Операторы экрана
----------------
Вывод текста шрифтом 4*8 пикселей, кириллица поддерживается
ClrScr - очистка экрана и установка в нем текущих цветов
GotoXY(Col,Row) - установка курсора в позицию экрана Col,Row (Col=0..63, Row=0..23)
Pause(N) - пауза N/50 секунды
Border(N) - бордюр цветом N
Color(N) - цвет текста и фона (N = байт атрибутов на Спектруме)
Window(Col,Row,Width,Heigth) - очистка окна знакомест и установка в нем текущих цветов
Процедуры
---------
Процедуры без параметров и локальных переменных
Выражения
---------
Целочисленные вычисления в диапазоне 0..65535
Приоритет операций учитывается
Для типа string только операция конкатенации +
Для типов byte и word:
+
-
*
div
mod
(
)
=
>
>=
<
<=
<>
Планируется:
+++++++++
Опции
-----
Текст с атрибутами
Окна с атрибутами
Спрайты с атрибутами
Спрайты карты с атрибутами
Проверка границ экрана при выводе спрайтов
Проверка максимальной длины строк
Данные
------
map
- width_map
- height_map
- size_cell_map
- value_elements_map
- sprites_map
- array_map[NN,NN]
sprite
- value_tile_sprite
- x_sprite
- y_sprite
- attr_sprite
- data_sprite
Типы
----
byte
word
char
string[SS]
array[NN,NN] of byte
array[NN,NN] of word
array[NN] of string[SS]
Стандартные операторы
---------------------
:=
Write
Writeln
Read
Readln
If ... then ... else ...
For ... to (downto) ... do
While ... do
Repeat ... until
Case ... of
Delay
Randomize
Процедуры
---------
Процедуры без параметров и локальных переменных
Функции
-------
Readkey
Random(max)
Экран
-----
ClrScr
GotoXY(x_tile,y_tile)
TextColor(attr)
TextBackGround(attr)
Border(color)
Color(attr)
ScrToVirt
VirtToScr
Окна
----
WindowSet(x_tile,y_tile,width_tile,height_tile)
WindowClear
WindowScrollUp
WindowScrollDown
WindowScrollLeft
WindowScrollRight
WindowThaw
Get(x_tile,y_tile,width_tile,heigth_tile)
Put(x_tile,y_tile)
Звук
----
Beep(note,time)
SoundEffect(n_loop,time,frequency)
Спрайты
-------
PutSprite(name_sprite,x_tile,y_tile)
PutSpriteMirrorX(name_sprite,x_tile,y_tile)
PutSpriteMirrorY(name_sprite,x_tile,y_tile)
PutSpriteMirrorXY(name_sprite,x_tile,y_tile)
Карта
-----
MapPut(x_map,y_map,width_map,height_map)
MapSearchElement(ID_element,x_map,y_map,distance_m ap)
MapArrayToMap(name_array_byte)
Выражения
---------
+
-
*
div
mod
(
)
=
>
>=
<
<=
<>
and
or
xor
not
denpopov
19.12.2014, 17:28
Выкладываю свою текущую версию кросс-Паскаля на PC для ZX,
сразу так не делается. внутри архива ворох непонятно чего - .asm, .prg и еще чегойто(
из прочтения доки хотелось бы по возможности реализацию множеств и типов.
Andrew771
19.12.2014, 17:33
сразу так не делается. внутри архива ворох непонятно чего - .asm, .prg и еще чегойто(
из прочтения доки хотелось бы по возможности реализацию множеств и типов.
Скинул текучку. По сути, для работы нужно всего два файла - project1.exe и libasm.lib. Ну и исходник на Паскале свой создать в файле prg.
Множеств пока не планирую. Записи тоже. :( Массивами пока обходимся.
denpopov
19.12.2014, 17:48
Ну и исходник на Паскале свой создать в файле prg.
сразу бы получить исходник з80 нужен.
Andrew771
19.12.2014, 21:53
сразу бы получить исходник з80 нужен.
ничё не понял, где запятую ставить? Ты имел в виду - сразу получить trd? :)
Примерчики prg имеются в выложенном архиве. Вся суета ради того, чтобы писать свои проги на привычном Паскале, а компилить в асм z80.
Oleg N. Cher
21.12.2014, 08:37
Andrew771, у тебя же есть тема здесь по твоему паскалю. Или ты решил все темы им загадить?
denpopov
21.12.2014, 08:47
Andrew771, не боись! нет дороги Оберону!
Oleg N. Cher
21.12.2014, 09:00
bigral, всё ясно. Я - "маниакальный фанат", а у тебя просто "есть хобби". Хотя дело в силе горения. Вот так и любим - себя очень, а других почуть-чуть.
Не вижу смысла компилить ПЦ-игры с помощью SDCC, их для этого надо не скомпилить, а как минимум переписать заново.
И вот шобы избегать этой работы в будущем - я и затеял прожект XDev.
если действительно есть желание облегчить участь кодописательства под ZX , лучше взглянуть на сие http://www.wudsn.com/
И сляпать по образу и подобию...Сляпать шо? Не увидел ничего особенного, очередная IDE для асма. И шо?
Цель - другая. Не "Оберон для ZX", а "ZX для Оберона. В ряду других". Ну кто виноват что ZX такая маломощная хрень?
denpopov
21.12.2014, 09:48
Вот так и любим - себя очень, а других почуть-чуть.
ыыыы, в мемориз:)
Andrew771
22.12.2014, 09:32
Andrew771, у тебя же есть тема здесь по твоему паскалю. Или ты решил все темы им загадить?
Тема называется "Скрестить ZX и ПЦ". Так что, как я понимаю, можно про все способы скрещивания писать.
Цель - другая. Не "Оберон для ZX", а "ZX для Оберона. В ряду других". Ну кто виноват что ZX такая маломощная хрень?
Гы гы, шо называется дотрепался... получается zx который крутит прогу для юзера "маломощная хрень" (подразумевается НЕГОДНЫЙ ХЛАМ), а некий оберон (подразумевается мега таблетка от всех болезней) который всего-то должен был эту прогу предоставить может токо предоставить ее для "ряда других" !!! :)))
Это то что я и писал ранее, новая волна языков и алгоритмов предназначенна для мега зверей с бесконечным адресным пространством и стеком.
Oleg N. Cher
22.12.2014, 22:29
Andrew771, но твой паскаль - это "язык-инвалид только для спека". Твоя же цитата. Где здесь скрещивание, и чего с чем? И потом, подумал бы про удобство для тех, кто следит за новостями в твоей ветке, а это тему не читает за отсутствием интереса. Хотя наверное таких нет.
bigral, я лично считаю твоё хобби очень специфическим. А своё - широких взглядов. И вот почему. Я интересуюсь PDP-11 и даже собираюсь сделать его поддержку в XDev, если будет на то интерес и поддержка, если кто-то мне поможет разобраться в тонкостях этой платформы (например, Vslav смог бы). И заметь, это будет лучший способ разрабатывать софт для PDP-11 вместо всяких недо-Си и недо-Паскалей/фаст на борту. Если конечно твои узкоспецифические интересы учитывают разработку нового софта, а не только юзанье старого.
Оберон уже долго живёт на свете. Я верю в то, что его жизнь будет более долгой, чем у Спека, Си и даже дотнета. Некий язык в нише Эсперанто для между-платформ. Я заметил, что у многих юзеров барьер в овладении новыми технологиями. Не минул этого и я. После двух десятков языков новые в глотку лезут не больно охотно. Так что для многих здешних кодеров "крютых" демок даже освоить Андроид (не говоря уже про PDP-11) - это абсолютно непреодолимый барьер, который они не смогут перешагнуть никогда. Я же предлагаю простой способ войти в новую платформу. Кроме того, на Обероне надо обучать программированию. Чтобы юзеры вместо варения в специфике каких-то средств умели системно и алгоритмически мыслить. Прогресс программиста в Оберон-парадигме позволит ему не меняя язык и игнорируя особенности платформ повышать свой уровень владения алгоритмикой до небывалых высот. Здесь можно говорить о пользе для страны, общества, и так далее. А что мне вы предлагаете взамен? Городить очередную IDE для Z80-асма, чтобы потешить маленьку кучку юзеров, пишущих друг другу гифты? Я всю свою Спектрум-деятельность искал как избавиться от асма (или хотя бы уменьшить его долю). Моя первая игра наполовину на бейсике. Вторая, лучше бы вам её и не увидеть, - на Laser'е. Третья уже на COLOSS'е. Проект XDev подытожывает весь мой программерский опыт, не оставляя ничего за бортом. Кто же виноват, что вы так мелко плаваете в своих узкоспецифических интересах, пиша демки, о которых уже подрастающее поколение не будет ничего знать, не потому что это нельзя запустить в эмулях, а потому что они не знают что такое эмуль. Вместо того чтобы помочь сделать, например, поддержку Андроида в XDev. И ты бы - гик PDP-11 - смог бы писать для него также просто как на басике. А то ведь Java и C++ с C# не освоишь никогда.
Те игры на Си, которые ты примерялся компилить для Спека, - не в том виде, чтобы переносить их. И никто ведь не мешает на Си писать более правильно и переносимо. Но это почему-то мало кто делает. Z80-асм - тоже плохое представление для дальнейшей работы над игрой на других платформах. Я подобрался наощупь к тому какое представление должно быть для дальнейшей жизни игры, её развития и прочих доработок на других (возможно, ещё не существующих) платформах. Моё решение неидеально, но вы же вообще ничего не предлагаете на эту тему, просто высказываете недовольство с кислой миной на роже лица. Вобщем, раз вопрос "зачем?" не понят, то нет смысла переходить и к вопросу "как?". Сидите дальше, пишите демки.
Моё решение неидеально, но вы же вообще ничего не предлагаете на эту тему, просто высказываете недовольство с кислой миной на роже лица. Вобщем, раз вопрос "зачем?" не понят, то нет смысла переходить и к вопросу "как?". Сидите дальше, пишите демки.
Ну опять 100500 раз о крутости оберона и отсутствии "конкурентов", тебе уже в 5-ти темах сказали, что никто не против твоего оберона и тем более твоего хобби. Как до тебя не дойдет, что программисту В ОБЩЕМ ТО ПОФИГ КАКОЙ ЯЗЫК программирования прийдется применить, главное чтобы он был эфективным инструментом (идеал - минимальное количество строчек исходника на входе и весь требуемый безглючный фукционал с достаточным быстродействием в результирующей программе минимальной длинны на выходе). Тебе уже 100500 раз говорили выкати хотябы компилер оберона под Z80 который бы генерил ASM исходник тогда и будет смысл для кого-то (кроме тебя) хотябы обсуждать оберон.
А так... кому это надо? Решаешь проблему как бы не учить пачку языков программирования - ну так ЗАБУДЬ, у программистов нет такой проблемы, ровно как и у рыбаков нет проблемы с тем чтоб попробовать новый способ ловли рыбы...
На PDP11 например, самый "толковый" транслятор это MACRO11 ну и C если речь вести о UNIX-ах и BSD. Другие языки тоже как бы есть и МНОГО, но пока складывается впечатление что все они какие-то нишевые и не особо распостраненные. Оберон на PDP11 ну ну... давай, токо опять же в MACRO11 сходу давай. Кодогенерация через С никак не катит, потому как С и так навороченный ему никакой оберон ненужен (к стати тебе и об этом уже 100500 раз писалось)
Alex Rider
23.12.2014, 14:40
Решаешь проблему как бы не учить пачку языков программирования - ну так ЗАБУДЬ, у программистов нет такой проблемы
+1 :)
Язык выучить элементарно. Сложно выучить библиотеки. Не скажу за Оберон, но на C есть стандартные либы, которые (если толково реализованы для платформы) позволяют C быть кросс-платформенным. Насколько я помню свои ощущения от XDev, тамошним либам Оберона до такого еще далеко.
Oleg N. Cher
25.12.2014, 15:09
Тебе уже 100500 раз говорили выкати хотябы компилер оберона под Z80 который бы генерил ASM исходник тогда и будет смысл для кого-то (кроме тебя) хотябы обсуждать оберон.А откуда у тебя сведения что XDev не может порождать из Оберона ASM исходник? Получил их от тех, кто 100500 раз давал мне советы, но которые так и не поняли что такое и как работает XDev?
Мне часто доводится встречаться с выражением "100500". Списываю это на неосознанное подражание. В среде обезьян, кстати, тоже очень даже имеет место.
С и так навороченный ему никакой оберон ненужен (к стати тебе и об этом уже 100500 раз писалось)Ты наверно просто не понимаешь как сложно писать на Си безглючно. Си как доступная барышня. Иметь с ней дело можно, но слишком большой риск что-то подхватить. Но некоторых это всё равно не смущает. Ну и ладно.
Язык Си продолжает наябывать меня даже с учётом того, что я стараюсь пользоваться им по минимуму. Вскрыл тут по ходу дела баг не баг, фичу не фичу (http://lists.nongnu.org/archive/html/tinycc-devel/2014-12/msg00020.html), связанную с тем, что если забыть описать #include <math.h>, то тригонометрические функции выводят неверный результат. Зарепортил. Мне популярно объяснили, что это "не баг, а фича". Оказывается если прототип не описан, то типы аргументов и результата считаются int. Тут я хренею и вспоминаю Фортран и Алгол-68. Си полон таких "фич", это минное поле. К слову. Было употреблено слово "безглючный". Тока давайте без "у меня всё работает, руки выпрямь". Я достаточно долго имел дело с Си чтобы его так воспринимать.
Си - это опасная гремучая штука, чистый яд. Я тут намедни Destr'у показывал строку while(a=b) и спрашивал: что делает? Конечно же он не угадал. Но это фигня, хуже то, что сишники породили много мифов, например, что микроконтроллеры можно программировать только на асме и Си. И тут уж хошь не хошь а осваивай. Глупости всё это. Не вас "крютых" жалко, а тех, кто читает и верит.
Поэтому я и говорил, что сишная парадигма не подлежит исправлению таких серьёзных недостатков. Они в ней укоренились уже навсегда. И Си будет под ними погребён, так или иначе.
Так что я могу иметь дело с Си, но в ежовых рукавицах Оберона. XDev порождает сишный код из строго типизированного Оберон-кода, поэтому такой код получается стабильным. За много лет юзанья такого тандема я имел возможность в этом убедиться.
Alex Rider, работая на XDev можно использовать готовые сишные либы. Нужно только несложный биндинг сделать. Я несколько уже сделал.
Но это фигня, хуже то, что сишники породили много мифов, например, что микроконтроллеры можно программировать только на асме и Си. И тут уж хошь не хошь а осваивай. Глупости всё это. Не вас "крютых" жалко, а тех, кто читает и верит.
Ну программить можно на чем угодно , если времени вагон и мозг не жалко то и на обероне .
Но в чем сакральный смысл делать все через ж ?
Есть заточенные под сие (МК) IDE и компиляторы , есть масса наработанных либ и примеров . Переход с унылых 8ми биток на ARM при правильном освоении матчасти совершенно безболезнен.
А на обероне есть только Oleg N. Cher с амбициями донкихота ...
На счет WUDSN - что то кроме асма на zx взлетело????
Oleg N. Cher
25.12.2014, 16:07
Ну программить можно на чем угодно , если времени вагон и мозг не жалко то и на обероне .Нет. Если времени вагон и мозг не жалко то на асме.
Но в чем сакральный смысл делать все через ж ?Вот и я думаю - в чём? В чём сакральный смысл воздвигать вокруг никчёмной сишной нотации культ и чморить потом новичков, самоутверждаясь. Ага, вот и он - сакральный смысл.
А на обероне есть только Oleg N. Cher с амбициями донкихота ...А, вот что тебя задевает. Кстати, прийти попинать инакомыслящего - тоже неосознаное подражательство. Типа "я такой же как вы, не бейте меня". А мне чхать. Я уже упоминал как никчёмная поделка бейсик превратилась в Monkey X, как скромный Паскаль стал FreePascal. Это эволюция. Вы можете считать их разработчиков кем угодно, но только не тупнями. К этому же набору идей пришёл и я - только на базе Оберона. И у XDev есть несколько преимуществ. Академичность (проектировали не спеша, а не кулхацкеры рубили впопыхах капусту). Поддержка ретро-платформ. Компактный и безопасный язык. Так что не писателям гифтов и 512-байтных демок, склонным к стадным реакциям, учить меня пониманию реалий софтостроя.
На счет WUDSN - что то кроме асма на zx взлетело????И не взлетит. Процесс разработки на асме усовершенствованию не подлежит. Какую бы волшебную IDE при этом ни юзали.
Вот и я думаю - в чём? В чём сакральный смысл воздвигать вокруг никчёмной сишной нотации культ и чморить потом новичков, самоутверждаясь. Ага, вот и он - сакральный смысл.
Ага, все вертится всего лишь вокруг чье-то неприязни к Си ...
Что то мне подсказывает, что сие аналогично боязни проприетарщины у линуксоидов. Вероятно заразное...
И не взлетит. Процесс разработки на асме усовершенствованию не подлежит. Какую бы волшебную IDE при этом не юзали.
Дык речь разве шла о допиливании компилятора , именно IDE и именно "волшебная".
Разве удобство разработки есть что-то запретное ?
Когда все настроено и все под рукой из кАробки?
---------- Post added at 16:21 ---------- Previous post was at 16:14 ----------
А на обероне есть только Oleg N. Cher с амбициями донкихота ...
Вероятно может показаться попыткой оскорбить - но я вкладывал совершенно иной смысл .
Что то действительно стоящее, в плане DIY, сваялось на обероне ?
Только ради бога не надо унылых сказок а'ля Паронджанов - на драконе писана система управления "Бураном"...
denpopov
25.12.2014, 16:27
На счет WUDSN - что то кроме асма на zx взлетело????
Кажется JAC! свои плагины юзает, но не zx
Oleg N. Cher
25.12.2014, 16:35
Переход с унылых 8ми биток на ARM при правильном освоении матчасти совершенно безболезнен.Только что я скачал "LiveUSB" антивируса Dr.Web, разработчики которого позиционируют себя как сверхнадёжную компанию с многолетним опытом работы на этом рынке. Смотрите прицепленную картинку. Такую ошибку при записи на флешку выдала свежая сборка от 23.12.2014. Более старая сборка от 16.10.2014, которая у меня случайно завалялась, спокойно записалась и работает.
Dr.Web написан на языке Си. Думаешь у его разработчиков плохо с освоением матчасти? Да куда уж им до тебя. Конечно. Но знаешь, пожалуй, ты прав. У них плохо. Иначе бы не использовали опасных языков со слабой типизацией и с кучей хакерских "фич". Я даже не о тех областях, где это критично. Банальный софт тоже должен работать предсказуемо. Тем более антивирус. И что нам даёт "мэйнстрим"? Например, линукс, написанный с помощью этой же технологии. И это вовсе не нетипично. В софте, написанном на Си, полно ошибок. А с учётом того, что его ещё и торопятся выпускать, ситуация вообще выглядит плачевно. Как предлагаете исправлять? Может посоветуем им хорошую IDE для асма?
Oleg N. Cher
25.12.2014, 16:37
Что то действительно стоящее, в плане DIY, сваялось на обероне ?Я точно не в курсе, но может быть все ждут пусть кто-то первый. И наверное все бухтят как это плохо и мало библиотек, но ничего в этом направлении никто не делает.
Alex Rider
25.12.2014, 16:47
работая на XDev можно использовать готовые сишные либы.
Можно. Я говорил о том, для C многие полезные либы стандартизованы и портированы на поддерживаемые платформы. А есть ли такой стандарт для Оберона? Если нет, то получается, что для каждой новой платформы нужно заново изучать либы, что сложнее, чем выучить синтаксис языка.
Си - это опасная гремучая штука, чистый яд.
Плата за широчайшие возможности, реализуемые компактным кодом. Но я, кстати, сам стараюсь избегать C - либо ассемблер, либо что-то более запрещающее стрелять себе в ногу.
Академичность (проектировали не спеша, а не кулхацкеры рубили впопыхах капусту). Поддержка ретро-платформ. Компактный и безопасный язык.
Академичность - не знаю зачем надо разработчику. Компактность - лишние ограничения и сложные конструкции для простых вещей (упрощение компилятора сейчас не актуально). Поддержка ретро-платформ - это фича не языка, а имеющихся компиляторов. Вариант C#/Java -> C -> Z80 assembler никто не отменял, или получается, до появления XDev Оберон ZX Spectrum как бы "не поддерживал"?
---------- Post added at 16:47 ---------- Previous post was at 16:42 ----------
Dr.Web написан на языке Си.
Иначе бы не использовали опасных языков со слабой типизацией и с кучей хакерских "фич".
Э... А Оберон совсем не позволяет что ли использовать неинициализированные данные? И да, у антивируса есть еще одна особенность, ради которой стоит использовать C/C++. Называется эффективность и оптимизация. По моим данным, самый эффективный компилятор для x86-64 предлагает Intel, и этот компилятор... Ну не с Оберона ни разу. C/C++ позволяют делать такую оптимизацию, которых в компактных и академических языках добиться сложно и/или невозможно.
denpopov
25.12.2014, 16:59
Только что я скачал "LiveUSB" антивируса Dr.Web, разработчики которого позиционируют себя как сверхнадёжную компанию с многолетним опытом работы на этом рынке. Смотрите прицепленную картинку.
Бугога, ПК захвачен Обероном вирьем?
Oleg N. Cher
26.12.2014, 08:18
Бугога, ПК захвачен Обероном вирьем?Как написано в Ведах: "кто чужому горю радуется - тот горе к себе призывает". Справедливо. Впрочем, бугога не мне, а моим клиентам, любящим "клубничку". Которым я налаживаю компы.
Я говорил о том, для C многие полезные либы стандартизованы и портированы на поддерживаемые платформы.Очень много людей варится в этом, вот и много работы сделано.
А есть ли такой стандарт для Оберона? Если нет, то получается, что для каждой новой платформы нужно заново изучать либы, что сложнее, чем выучить синтаксис языка.Есть и стандарты, есть и рекомендации, но они, пожалуй, слабоваты. Библиотеки - это как раз то, чем я занимаюсь. Причём базовая библиотека XDev - мультитаргетная (совместимость снизу вверх).
Влиять на стандарты Оберона я не могу. Сам понимаешь.
Плата за широчайшие возможности, реализуемые компактным кодом. Но я, кстати, сам стараюсь избегать C - либо ассемблер, либо что-то более запрещающее стрелять себе в ногу.Одно дело - разрабатывать на Си непереносимую маленькую игру под одну платформу. Другое - переносимую. Третье - огромную систему. Чем больше и сложнее проект - тем меньше смысла делать его на Си. Но вот то самое "более запрещающее стрелять себе в ногу" - это обычно уже виртуальная платформа. Оберон же, давая все возможности для разработки безопасного кода, оставляет нам возможность получить нативный машинный код. Что вообще в этой нише есть - "безопасность + мультитаргетность + натив"?
Академичность - не знаю зачем надо разработчику.Академичност может разработчику и не нужна, но тщательное проектирование вместо хацкерских заплат на заплате (чем, собственно, является парадигма Си) - весьма не помешало бы.
Вариант C#/Java -> C -> Z80 assembler никто не отменял, или получается, до появления XDev Оберон ZX Spectrum как бы "не поддерживал"?Для Оберона мало компиляторов. И в основном они под Оберон-системы. Так что XDev это прорыв не только в ретрокодинге, это уникальная штучка и для Оберон-мира, своеобразный сплав Оберон-простоты с "мэйнстрим"-сложностью. Гибридный конечно.
Э... А Оберон совсем не позволяет что ли использовать неинициализированные данные?В Обероне указатели не могут указывать куда попало. Они либо куда нужно, либо NIL. Ну и сообщения об ошибках выглядят не как попытка отправить отчёт к какой-то матери, а вполне внятное сообщение. Удобство отлова ошибок в разных Оберон-окружениях различно, в среде BlackBox, например, при возникновении критической ошибки всплывёт окно, где будет сказано в каком модуле в какой процедуре и в каком именно месте возникла ошибка. С возможностью одним кликом открыть исходник в этом месте. У XDev средства отлова поскромнее, это связано с особенностями устройства ядра.
И да, у антивируса есть еще одна особенность, ради которой стоит использовать C/C++. Называется эффективность и оптимизация. По моим данным, самый эффективный компилятор для x86-64 предлагает Intel, и этот компилятор... Ну не с Оберона ни разу.Да, но в парадигме XDev я могу спокойно его прикрутить и использовать. Туда уже прикручены SDCC, DJGPP, TCC, GCC. Ну и MINGW я пробовал.
C/C++ позволяют делать такую оптимизацию, которых в компактных и академических языках добиться сложно и/или невозможно.Не поверишь, но иногда простая алгоритмическая перекомпоновка даёт больший выигрыш, чем продвинутая машинная оптимизация, которой, впрочем, у XDev никак не отобрать (средствами компиляторов Си).
Мифы, снова мифы. Авторы XDS (продвинутого оптимизирующего компилятора Модулы-2/Оберона-2) утверждают, что со строго типизированного языка можно получить гораздо более оптимальный машинный код, чем со слабо типизированного. Это логично, не так ли? Или разжевать?
Oleg N. Cher, а причем здесь проблемы винды, установленной у тебя , вероятные вири или проблемы железа . И СИ ?
Совершенно не уверен что разработчики DR web пишут на голом Си.
И давайте не будем все время вилять на ББ , совершенно другие критерии и проблемы.
Эмбедд намного ближе к zx .
Не буду лезть в дебри и страшилки озвученные Oleg N. Cher.
Если все таки асм и подобие WUDSN с его плюшками эклипсины в плане редактирования и навигации, полный цикл от написания до дебага, редактор знакогенератора и картинок.
Плюсом идут не один а несколько компилей .
Так чем же сей вариант плох?
denpopov
26.12.2014, 08:46
Так чем же сей вариант плох?
по мне так безразлично, есть разные тулзы.
---------- Post added at 08:46 ---------- Previous post was at 08:45 ----------
Которым я налаживаю компы.
налаживаешь на просмотр пр0на ? оО
Oleg N. Cher
26.12.2014, 09:02
Oleg N. Cher, а причем здесь проблемы винды, установленной у тебя , вероятные вири или проблемы железа . И СИ ?Винда и железо ни при чём, пробовал на двух компах с разными версиями, даже разной разрядности. Вирей уж тем более нет. О Си я бы предпочёл говорить с теми, кто на нём делал довольно серьёзные проекты, а не с теми кто обожает его чисто теоретически.
Совершенно не уверен что разработчики DR web пишут на голом Си.Ну на плюсах. Какая разница?
Не буду лезть в дебри и страшилки озвученные Oleg N. Cher.
Если все таки асм и подобие WUDSN с его плюшками эклипсины в плане редактирования и навигации, полный цикл от написания до дебага, редактор знакогенератора и картинок.
Плюсом идут не один а несколько компилей .
Так чем же сей вариант плох?Для гифтеров и демокодеров (вымирающая категория) - может и ничем не плох. Для тех, кто хочет программить просто и для разных платформ (см. тему) - очень даже не подойдёт.
Я ведь не позиционирую Оберон для написания ZX-демок. Я не пишу демки. Даже смотреть их не очень люблю. Но хорошую игру для Спека можно написать и на интерпретаторе бейсика - доказано Славой Медноноговым. Вот такие простые средства для разработки подобных игрушек меня и интересуют. И притом средства, позволяющие упростить перенос игрушек с ретро, чтобы дать им новую жизнь.
То, что демокодеры будут свысока презирать подобные задачи - мне ясно, нужно же им себя за что-то уважать. Ну так и нет проблем. Я трачу время на разговоры с данными особями просто чтобы дать спектрумистам почувствовать вкус чего-то другого, не асма и не Си. Притом без отрыва от любимого ZX.
---------- Post added at 08:02 ---------- Previous post was at 08:00 ----------
налаживаешь на просмотр пр0на ? оОНу так а шо делать, люди занимаются на компах кто чем умеет (и хочет).
А это все можно только на обероне? Или все таки это только твоя блажь?
И кстати что значит твое "довольно серьёзные проекты" , что ты считаешь серьезным проектом ? Бухгалтерские свистопрделки на ББ ?
Я же вроде нормальным языком просил не мешать в кучу, коддинг на ББ и ZX.
В эмбедде например, стаж кодинга на ББ мало чем поможет.
Здесь нужны знание и умение работы как с кодом и документацией так и с железом.
denpopov
26.12.2014, 09:31
Ну так а шо делать, люди занимаются на компах кто чем умеет (и хочет).
напиши антивирус Бабушкина на Обероне:)
Oleg N. Cher
26.12.2014, 10:04
А это все можно только на обероне? Или все таки это только твоя блажь?Оберон - зрелый выбор опытного разработчика, который хлебнул всякого. А тебе можно на чём угодно, на что у тебя фантазии хватит. А на что не хватит - то моя блажь.
У тебя мышление очень своеобразное. Ты уверовал в непогрешимость Си и готов приводить тысячи причин глючности моего железа, виндов и чего угодно, но DrWeb LiveUSB, написанный на Си, непогрешимая штука. Хотя я его на нескольких флешках тестил. Ты сам скачай потесть. На своих виндах и на своём неглючном железе. И не забудь помолиться богам Си. А я буду своим, Оберонским.
И кстати что значит твое "довольно серьёзные проекты" , что ты считаешь серьезным проектом ?Компилятор или ОС, например. ББ сам по себе - тоже серьёзный проект, чудо проектирования, хотя тебе не понять. Все глюки, которые я ловил на нём, некритичного характера. И исправляются очень легко.
Кодинг на Обероне для ZX и для ББ - похож, вдруг ты не в курсе.
denpopov
26.12.2014, 10:17
Значит pridolbus, так и запишем.
велкам на #z80, вместе поковеркаем ники и поржом:)
Ну так знакомый результат - аргументы закончились , переходим на личности/личные предпочтения и прихватываем ведро с помоями и вентилятор .
Аргументированный ответ - чем же оберон лучше Си , мы так и не услышим .
Со своей стороны скажу - ваяю на Си, пусть и не профессионально но к этому стремлюсь. Именно на Си без всяких плюсов, кстати это две большие разницы (для общего развития обожателям оберона)
Имею с этого не только доход но и удовольствие .
Ну и развлекаюсь с асмом на zx и Atari.
Внимание вопрос - на кой нужен мне оберон, кроме как поиграться с экзотикой ?
Oleg N. Cher, твоя же цель привлечь людей а таких как я большинство .
Или здесь обычный холливар с единственной задачей- обосрать Си и его сторонников и выпятить свое ЧСВ ?
Oleg N. Cher
26.12.2014, 11:11
Ну может и зайду. На руснете?
dosikus, у тебя на лбу написано "мне асма и Си с головой", ну и расслабься, никто не отбирает у тебя любимую игрушку. Хотя мы уже, кажется, договорились до того, что разные асмы скрещиванию не подлежат, а игры, написанные на Си, слишком в не слишком подходящем виде для их эффективного портирования, особенно простой перекомпиляцией.
Когда зрелый программист (с 1995-го, а вернее даже раньше), сделавший кучу разных проектов на куче разных языков, рассуждает о недостатках Си и асма, то вовсе не для того чтобы его запинали насмерть писатели демок и хелловорлдов. Я сделал уже 100500 постов о том, почему предпочитаю Оберон. И что? Это читают по диагонали и называют разговорами "ниачём". Ну не воспринимаете - не воспринимайте. Будет моя блажь. Только где всё-таки средства в нише "безопасность + эффективность + натив"? Нету их?
P.S. Если будешь тестить Dr.Web LiveUSB, то тесть сейчас, пока не зафиксили. ;)
---------- Post added at 10:11 ---------- Previous post was at 10:07 ----------
Аргументированный ответ - чем же оберон лучше Си , мы так и не услышимМой ответ на это похож на человека-невидимку, который кричит всем "я есть", но его никто не видит. Хотя он человек, с голосом, даже врезать может.
Именно на Си без всяких плюсов, кстати это две большие разницы (для общего развития обожателям оберона)О, обожатели Оберона знают C++ не хуже тебя, а то и лучше. Ровно также как и кучу других в т.ч. и модных языков. Не веришь - убедись.
твоя же цель привлечь людей а таких как я большинство ...Ой, я уже никого не хочу привлекать. Вы у меня во где. Может даже с форума скоро свалю.
denpopov
26.12.2014, 11:19
Может даже с форума скоро свалю.
Начнешь копипастить на пристанище кодера и засирать мозги ?
P.S. Если будешь тестить Dr.Web LiveUSB, то тесть сейчас, пока не зафиксили. ;)[COLOR="Silver"]
Мне оно без надобности , имею ZM-VE200 ...
Oleg N. Cher
26.12.2014, 11:33
dosikus, а вообще интересная позиция "ты меня привлекай, а я буду отбиваться ногами, и ни за что ты меня не привлекёшь". Для мазохистов от IT - самото.
Я мог бы попробовать аргументированно поговорить с опытным и зрелым программистом (именно с программистом, а не с кодером; кодер - не всегда программист) о достоинствах Оберона. Они лежат в другой плоскости, чем сишные. Сишные достоинства - есть теперь и идут на убыль. Кто думает о том, что придёт на смену Си, кто мыслит категориями будущего - тот вряд ли будет доволен если Си повально заменят Java/C#. Несмотря на их достоинства.
Я уже сказал о недостатках Си как парадигмы. Эти недостатки не подлежат исправлению. Их вообще нельзя исправить. Но жить с ними тоже нельзя. По мере разработки проектов на Си (или плюсах, которые недалеко от него ушли в плане отсутствия модульности или повышенной опасности при работе с указателями - а я имел ввиду эти аспекты) ты в этом убедишься.
Но вы же не мыслите категориями "на чём будут программировать через 50 лет", вам нужно писать сегодня. И тут выбор действительно невелик. Но альтернативы искать нужно. И больше всего проблем когда начинаешь делиться с "нас таких большинство" результатами своего поиска.
Ну так что? На чём будут программировать? Вероятно, платформы будут мощными. Вероятно, будет совместимость с Java/C#. Может даже с С/С++/Objective C - просто дань горам готового кода. Что делаю я. Задел на будущее. Мне не нравятся все эти языки. Но работать и стыковатся с кодом, написанным на них, как-то нужно. Поэтому я беру Оберон, который я могу транслировать в Java и Си. Соединяю с кодом на Java и Си, который рассматриваю как временную меру пока не будут готовы библиотеки на Обероне. Можно сделать предположение, что через 50 лет будет поддержка энцатой версии SDL и SQLite. Я беру и делаю биндинги. Мой путь - это путь безболезненного выхода из не нравящихся мне языков и технологий, вместо этого - ставка на простой и логичный язык, здравую нотацию, в чём-то неустоявшуюся, но это не всегда и недостаток, есть где порезвиться. Если бы вы начинали не на ZX-бейсике, а на Обероне, то сейчас бы плевались на Си и Java вместе со мной, а то и лучше меня.
---------- Post added at 10:33 ---------- Previous post was at 10:29 ----------
Мне оно без надобности , имею ZM-VE200 ...А ты потесть чисто шобы меня доконать до живого мяса. ;) А то так и будешь думать, что у меня железо глючное. Хотя я на него ни разу не жалуюсь, хорошее железо.
denpopov
26.12.2014, 11:41
Можно сделать предположение, что через 50 лет будет поддержка энцатой версии SDL и SQLite.
бугога, предполагай ищо:)
Alex Rider
26.12.2014, 11:51
Очень много людей варится в этом, вот и много работы сделано.
Есть и стандарты, есть и рекомендации, но они, пожалуй, слабоваты.
И это не отменяет того факта, что разработку для новой платформы лучше (быстрее, легде, дешевле) начинать на языке, имеющем стандартный набор либ.
Оберон же, давая все возможности для разработки безопасного кода, оставляет нам возможность получить нативный машинный код. Что вообще в этой нише есть - "безопасность + мультитаргетность + натив"?
Я все еще не понимаю как Оберон спасает от ошибок работы с указателями, индексаторами, утечками, перетирками памяти - типичными ошибками любой нативной разработки. И, да, вроде, мы договорились, что мультитаргетность - это не атрибут языка.
Ну и сообщения об ошибках выглядят не как попытка отправить отчёт к какой-то матери, а вполне внятное сообщение. Удобство отлова ошибок в разных Оберон-окружениях различно, в среде BlackBox, например, при возникновении критической ошибки всплывёт окно, где будет сказано в каком модуле в какой процедуре и в каком именно месте возникла ошибка. С возможностью одним кликом открыть исходник в этом месте.
Олег, ну мы же понимаем, что твое сообщение "Память не может быть 'read'" к языкам отношения не имеет - это аппаратное прерывание на платформе x86, которое ОСью транслировано в исключение, которое не обработал код (ибо нежданный Access Violation обрабатывать бессмысленно)? Все эти средства отлова ошибок хороши когда ты дебажишь свой код, пользователю они не дадут ничего. Олсо при отладке кода в современных нативных IDE тебе тоже про все это расскажут. Мало того, эта инфа есть и в отправляемом дампе, только пользователю с нее ни жарко, ни холодно.
Не поверишь, но иногда простая алгоритмическая перекомпоновка даёт больший выигрыш, чем продвинутая машинная оптимизация,
Я не к этому. Я про оптимизацию говорли в контексте того, что чем больше можно выстрелить себе в ногу, тем более оптимальный [только в случае необходимости суровой ручной оптимизации] код можно написать. Опять же, чем гибче и богаче язык, тем более простыми, короткими и понятными конструкциями можно описать на нем алгоритм. Ну и у оптимизатора больше возможностей.
Oleg N. Cher
26.12.2014, 12:14
И это не отменяет того факта, что разработку для новой платформы лучше (быстрее, легде, дешевле) начинать на языке, имеющем стандартный набор либ.Быстрее - не значит правильнее. Но ты вот таким заявлениям зарезал инициативы по языкострою-новоделу всем, кроме крупных фирм с богатым капиталом. Вот таким образом, прямо или косвенно, большой капитал влияет на производство софта. И языкострой тоже. Тебе может и приходится на этом работать, но душа не лежит. У меня такой "роман" с Си, Java, C#.
Я все еще не понимаю как Оберон спасает от ошибок работы с указателями, индексаторами, утечками, перетирками памяти - типичными ошибками любой нативной разработки. И, да, вроде, мы договорились, что мультитаргетность - это не атрибут языка.Ещё какой атрибут. Если C# только под одну платформу, то хоть казачка танцуй, а так оно и есть. И ничего ты тут не изменишь. Правда, тебя будут ещё долго водить за нос словом "кроссплатформенность", делая эмуляторы одной платформы - дотнета - разной мощности для разных платформ.
Схема "натив" = "опасная работа с памятью" неверна, просто типична. Указатели на динамические типы в Обероне могут указывать только на эти типы. Есть строгая охрана типов. Обязательная проверка индексов массивов (что в XDev я, впрочем, обхожу системным конфигуратором проекта). Утечки могут иметь место при неосвобождении ресурсов, но работа с памятью автоматизирована, со сборкой мусора. Несмотря на натив. Ухвачены самые важные тенденции безопасности, к которым ты, возможно, привык в шарпе и жаве, но без потери натива.
Алекс, мне тут намекнули что я должен за всеми бегать и всем всё рассказывать, а меня в ответ должны пинать ногами. Возьми чего-то по Оберону и почитай. Ну не могу я тебе весь многолетний опыт работы на Обероне выдать в трёх абзацах, а ещё и шобы все поняли - это вообще нонсенс.
Олег, ну мы же понимаем, что твое сообщение "Память не может быть 'read'" к языкам отношения не имеетИмеет, потому что прога, написанная на опасном языке, залезла не в свою память, а могла бы этого и не делать. И тогда не обязательно было бы городить аппаратную виртуализацию и прочие вещи такого рода.
Опять же, чем гибче и богаче язык, тем более простыми, короткими и понятными конструкциями можно описать на нем алгоритм. Ну и у оптимизатора больше возможностей.Чем больше и тяжелее поезд - тем тяжелее ему и поехать, и остановиться. В случае языка так оно и есть - тем тяжелее остановиться Си и тем труднее Оберону поехать. А достоинства и недостатки - вторичны в данном контексте, это понимать нужно.
Alex Rider
26.12.2014, 15:27
Быстрее - не значит правильнее. Но ты вот таким заявлениям зарезал инициативы по языкострою-новоделу всем, кроме крупных фирм с богатым капиталом. Вот таким образом, прямо или косвенно, большой капитал влияет на производство софта. И языкострой тоже.
"Невидимая рука рынка", ничего личного. Рынок выбирает то, что дешевле. На всякий случай, крупные фирмы с богатым капиталом борятся с пиратством "сквозь пальцы" чтобы не терять последователей. Но в целом принцип верен - пользуют то, что удобно.
Ещё какой атрибут. Если C# только под одну платформу, то хоть казачка танцуй, а так оно и есть.
"Под одну палтформу" реализация C# от Microsoft. Язык не может быть платформенно-зависимым в принципе. Так же "невидимая рука рынка" реутомимо указывает, что мощная поддержка C# на куче платформ не нужна. А для Java нужна. И для C/C++ была нужна. Кросс-платформенность в узком смысле подразумевает возможность скомпилить что-то под хотя бы две платформы, в широком смысле - наличие многих проектов под многие платформы. Но, повторюсь - язык - это синтаксис плюс несколько встроенных команд и технологий (сборка мусора, например), и к платформе это все не привязано. Скорее, к кругу решаемых задач.
Указатели на динамические типы в Обероне могут указывать только на эти типы. Есть строгая охрана типов.
Это не спасает от использования "мертвых" указателей и перетирок (собственно, виртуальные машины тоже не спасают от мертвых указателей, только что Access Violation не генерируют). Собственно, код .NET, скомпиленный ngen'ом, тоже нативный, но получает те же сервисы по охране массивов, типов и сборку мусора. Кстати, Оберон-программа на рантайме отслеживает "мертвые" указатели и безопасность преобразования типов?
Алекс, мне тут намекнули что я должен за всеми бегать и всем всё рассказывать, а меня в ответ должны пинать ногами. Возьми чего-то по Оберону и почитай. Ну не могу я тебе весь многолетний опыт работы на Обероне выдать в трёх абзацах, а ещё и шобы все поняли - это вообще нонсенс.
Такова судьба пророков :) Я не ставлю себе целью пинаться ногами (сорри, если ингода оно так получается), я веду любопытную для меня мирную дискуссию, придерживаясь, впрочем, разных с тобой взглядов. Ты хочешь популяризовать идею Оберона, активно сравниваешь его с существующими языками, я пользуюсь этим для расширения кругозора, выяснения многих интересных фактов про программирование вообще и один из языков в частности. И здорово, что мне во-первых не приходится лазить в Инете в поисках собеседника, да еще и готового спорить, а не просто послать, а, во-вторых, эта информация лежит на любимом моем форуме, что мотивирует меня именно на дискуссии по Оберону.
Имеет, потому что прога, написанная на опасном языке, залезла не в свою память, а могла бы этого и не делать.
Могла бы. Ценой "оберега" от всего и вся на рантайме с потерей производительности. И то, все же признаю - от "мертвых" указателей на рантайме средства еще не изобрели, просто безопасные языки показывают более приветливое сообщение, чем системное исключение на прерывание бедного процессора, который знать не знает чей код и модуль он исполняет с такой ошибкой.
Чем больше и тяжелее поезд - тем тяжелее ему и поехать, и остановиться.
Ага. И тем более полезного груза он везет, коли уж поездная тема пошла. И все же писать на языке с богатым синтаксисом приятнее. Осознанием строгости и академичности не заменишь разочарование от небогатых возможностей и тяжелых констркуций.
Oleg N. Cher
27.12.2014, 08:31
язык - это синтаксис плюс несколько встроенных команд и технологий (сборка мусора, например), и к платформе это все не привязано. Скорее, к кругу решаемых задач.Если язык реализован на одной платформе и для одной платформы, если поощряет работу исключительно в стиле этой платформы (апи) - все будут писать на нём только под эту платформу. Да этим пользовался ms с первого дня своего шествия.
Это не спасает от использования "мертвых" указателей и перетирокЧто такое "перетирки"?
Видишь, в Обероне чтобы освободить область памяти - нужно чтобы на неё не осталось указателей, поэтому освобождение сводится к присвоению им NIL. Ты называешь такие обнулённые указатели мёртвыми? Или же имеются ввиду неосвобождённые зацикленные структуры, которые сами на себя ссылаются?
Кстати, Оберон-программа на рантайме отслеживает "мертвые" указатели и безопасность преобразования типов?Если "мёртвые" - это "зацикленные, указывающие друг на друга", то есть сборщики мусора простые с подсчётом ссылок, эти не отслеживают. Есть более умные, с тегами и отслеживанием от корня. Эти способны корректно освободить и зацикленные структуры.
Безопасность преобразования типов - тоже смотря что ты под этим понимаешь. Кастить тип в другой можно системно: SYSTEM.VAL(новый_тип, что_кастим). Либо же удлинять/укорачивать short := SHORT(long); long := LONG(short), уже несистемно. Переполнение в некоторых реализациях тоже можно отслеживать. Кастить указатель в другой указатель прямо нельзя. Можно "приводить" его к указателю на потомка, и через охранник типа.
Ты хочешь популяризовать идею Оберона, активно сравниваешь его с существующими языками, я пользуюсь этим для расширения кругозора, выяснения многих интересных фактов про программирование вообще и один из языков в частности.Мне так и не ответили что за язык есть в нише "безопасность + натив + эффективность". Этот вопрос аккуратно не замечают, наверно он неудобный. Ну ладно, я сам отвечу. Это языки Ада, Модула-3, Оберон, Компонентный Паскаль (какие ещё я упустил?). Причём последние два - для моих задач и целей видятся в гораздо более привлекательном свете. При всех их недостатках - это хорошая база для своего собственного языкостроя.
Могла бы. Ценой "оберега" от всего и вся на рантайме с потерей производительности.Ценой минимизации опасной работы с указателями. Кстати, накладные расходы от проверок в рантайме составляют меньшие цифры, чем они же на сборку мусора.
И все же писать на языке с богатым синтаксисом приятнее. Осознанием строгости и академичности не заменишь разочарование от небогатых возможностей и тяжелых констркуций.Зачем тяжёлых, просто изящных. И всё же я хотел бы что-то потяжеловеснее на базе Оберона. Но увы, его просто некому делать, все ещё в Си не наигрались. ;)
P.S.
dosikus, я извиняюсь за изголения с ником, но всё же тяжко с тобой говорить, ведь твоя аргументация "Си это наше всё, а Оберон - твоя блажь, всё нужно делать на Си потому что см. пункт первый" и твой посыл "все твои аргументы против Си я не слышу и не хочу слышать. Это у тебя железо глючное и руки кривые. Все аргументы за Оберон я просто не замечаю и не хочу их читать. Ну и где, наконец, твои аргументы о преимуществе Оберона над Си, которые уже 100500 раз у тебя просили?"
Если хочется аргументов, хороших, веских, не в этом форумном формате, найди в инете книгу Сергея Свердлова "Языки программирования и методы трансляции". Там очень вдумчиво ретроспективно рассмотрена история развития языков программирования от Фортрана и до Оберона. Но заметь, твоё образование только в твоих руках. Если с чем-то не согласишься - я не собираюсь бегать за тобой и что-то тебе доказывать, у меня нет на это времени. Скажу только, что Сергей - прекрасный программист, автор компилятора JOB (Оберон-2 в байт-код JVM) (http://www.uni-vologda.ac.ru/JOB/rus/), человек безусловно намного более опытный в вопросах программирования и языков, чем три здешних демомейкера, освоивших Бейсик или Си и полтора ассемблера.
marinovsoft
27.12.2014, 09:04
А есть надежда, что в ближайшее время появится кросс-компилятор (для современных ПК) с Оберона (Оберона-2, Модулы, Модулы-2, паскаля и т.д.) для i8080 ?
А то vinxru забросил свой проект компилятора си.
но всё же тяжко с тобой говорить, ведь твоя аргументация ...
Ну естественно тяжко, ты же меня напрочь не слышишь , да и куда мне простому смертному до вас небожителей.
Ну да ладно попытаюсь еще раз :
1) Как и писал ранее я не профессионал ,
моя деятельность -фриланс (в свободное от основной работы время )
разработка девайсов малой автоматики на МК.
2) Кодинг для ББ -это не мое, но наляпать несложное интерфейсное приложение для выше-озвученного могу .
3)Ну и плюс хобби - баловство на асме на ZX и Atari .
Ну и далее - дабы не поднимать у тебя ажиотаж, отбрось holly-war и фало-измерительные составляющие и просто ответь:
Что мне даст оберон для пункта 1 и сколько времени займет переход ,
( учитывая что во время перехода мой доход умножится на 0) ?
Кто еще кодит для МК на обероне или же я останусь в гордом одиночестве, ожидая пока кто-то так же прозреет.
Oleg N. Cher
27.12.2014, 10:32
А есть надежда, что в ближайшее время появится кросс-компилятор (для современных ПК) с Оберона (Оберона-2, Модулы, Модулы-2, паскаля и т.д.) для i8080 ?Хороший вопрос. Вероятно, такой надежды нет, нужно садиться и делать самому.
А есть в природе компилятор Модулы-2 или Си (в i8080) для CP/M?
Ну естественно тяжко, ты же меня напрочь не слышишьА мне сдаётся, что это ты меня не слышишь. Но это неудивительно, мы на разных частотах работаем.
1) Как и писал ранее я не профессионал ,
моя деятельность -фриланс (в свободное от основной работы время )
разработка девайсов малой автоматики на МК.Для CORTEX'ов/ARM есть парочка компиляторов Оберона-07. Для МК можно разрабатывать и на XDev, только нужно сделать новую подсистему. Это несложно, было бы понимание идеологии XDev и преимуществ Оберона.
2) Кодинг для ББ -это не мое, но наляпать несложное интерфейсное приложение для выше-озвученного могу .
3)Ну и плюс хобби - баловство на асме на ZX и Atari .Я могу под всё это разрабатывать на Обероне. А вот быстрое зарабатывание денег - с этим у Оберона плоховато, впрочем, как теперь и у Atari/ZX.
Претензии не ко мне, допустим, в музее висит картина и она красива. А тут приходишь ты и спрашиваешь как с её помощью поиметь деньжат. Ну ясно же, что люди говорят на разных языках. Закруглимся.
Что мне даст оберон для пункта 1 и сколько времени займет переход ,
( учитывая что во время перехода мой доход умножится на 0) ?Нет, наверное Оберон тебе ничего не даст.
Кто еще кодит для МК на обероне или же я останусь в гордом одиночестве, ожидая пока кто-то так же прозреет.Иван Денисов кодит, Александр Ширяев. Для CORTEX'ов. Больше таких не знаю, Обероном мало кто занимается.
---------- Post added at 09:29 ---------- Previous post was at 08:30 ----------
marinovsoft,
что-то мне подсказывает что никто не придёт делать на энтузиазме хороший компилятор для i8080. Но предлагаю другое. Подтяни единомышленников по i8080. Может MaratBest подтянется. Здесь я бы предложил на выбор два пути, причём оба не предусматривают никаких сверхсложностей.
1. Путь более простой, но менее правильный. Найдите самый лучший компилятор Си для i8080 на CP/M, который только есть. Научитесь его запускать в эмуляторе CP/M поверх винды (http://zx.oberon2.ru/forum/viewtopic.php?f=88&t=217#p1327) (или линукса). Приделайте к текстовый редактор, запилите библиотек. Можете присмотреться к ZXDev, с помощью неё можно транслировать из Оберона в Си и получить вцелом конфетку. Однако путь тупиковый - можно упереться в какой-то недостаток выбранного компилятора Си и всё пойдёт насмарку. Исправить недостаток в компиляторе без исходников, развивать его - слишком сложно.
2. Это пусть посложнее путь, но правильнее. И есть возможность на внутренней мотивации сделать пользу для огромного числа любителей i8080 во всём мире. Освойте контроль версий (например, Git) - обязательно. Преодолейте барьер и изучите исходники SDCC, особенно как там устроен генератор кода для Z80. Это почти то же, что и 8080, и у вас наверняка уже есть идеи какими аналогами кода заменять команды Z80, которых в 8080 нет. Например, передачу параметров без индексных регистров и т.п. Что-то в этом направлении уже предложил vinxru, и это тоже пойдёт в работу. Компилируйте код, смотрите что получается и заменяйте в кодогенераторе команды Z80 на их аналоги в i8080. SDCC - компилятор оптимизирующий, поэтому он не так прост. Но ничего сверхсложного для грамотного программиста там нет.
Ещё я бы посоветовал не вариться с этим в собственном соку, а выйти на связь с командой разработчиков SDCC и предложить им добавить новый бэк-энд для SDCC - для процессора i8080, который был в своё время популярен в мире. Важно то, что этот процессор знают в мире, поэтому у них не будет причин отказаться, особенно если качество вашей работы будет на высоте.
Вот ещё мысли по поводу создания компилятора для Z80, но всё ровно в той же мере относится и к i8080:
Создание кросскомпилятора языка Оберон для Z80 (http://zx.oberon2.ru/forum/viewtopic.php?f=10&t=29)
---------- Post added at 09:32 ---------- Previous post was at 09:29 ----------
Да, а ещё можно выпросить у vinxru исходники его Си и допиливать своими силами. Но это так себе вариант. Просто SDCC гораздо проработаннее.
marinovsoft
27.12.2014, 10:49
vinxru говорил, что удалил исходники компилятора. И если он снова возьмется за компилятор, то это будет другой, новый компилятор си.
liberation
27.12.2014, 13:17
vinxru говорил, что удалил исходники компилятора. И если он снова возьмется за компилятор, то это будет другой, новый компилятор си.
Новая версия компилятора почти готова, но требует обработки напильником и прочим подручным инструментом. Ждем-с.
p.s.
Исходники старой утрачены, но сам компилер уцелел и работает, даже выложен на гите.
Andrew771
27.12.2014, 17:33
А есть надежда, что в ближайшее время появится кросс-компилятор (для современных ПК) с Оберона (Оберона-2, Модулы, Модулы-2, паскаля и т.д.) для i8080 ?
А то vinxru забросил свой проект компилятора си.
я пишу усеченный Паскаль, в первую очередь для игр, тут текущая версия (http://zx-pk.ru/showpost.php?p=763201&postcount=36).
Andrew771, Не хочешь поднять темы:
Построение компилятора (http://zx-pk.ru/showthread.php?t=22226&page=4)
Pascal (http://zx-pk.ru/showthread.php?t=15945&page=3)
?
Там-бы текущая версия смотрелась.
---------- Post added at 23:55 ---------- Previous post was at 23:53 ----------
Или вообще новую тему сделать.
Andrew771
27.12.2014, 20:43
Reobne, новая тема нужна. Но пока повременю, нужно хотя бы первую полноценную версию выпустить, чтобы поддерживала все заявленные операторы. Больше до нее ничего выкладывать не буду.
marinovsoft
28.12.2014, 16:42
я пишу усеченный Паскаль, в первую очередь для игр, тут текущая версия (http://zx-pk.ru/showpost.php?p=763201&postcount=36).
Он для i8080 или все-таки для z80 ?
Kakos_nonos
28.12.2014, 19:08
Есть хороший язык программирования - Степлер (http://kabardcomp.narod.ru/st2.pdf). Есть его версия для i8080. Есть для дос. Сейчас пишется для Windows и Linux.
Andrew771
28.12.2014, 19:51
Он для i8080 или все-таки для z80 ?
z80
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot