Что-то в пылу дискуссии подзабыли, что на Спектруме 3,5 МГц, а не 3,5 ГГц. И всё по возможности надо делать не в рантайме, а в компайл-тайме.
Что-то в пылу дискуссии подзабыли, что на Спектруме 3,5 МГц, а не 3,5 ГГц. И всё по возможности надо делать не в рантайме, а в компайл-тайме.
Ну почему Raider’у хватило скромности притушить свой нимб и прийти спрашивать вопросы, а не выпячивать пиписку? Уже и newart, вместо критики, начинает подумывать об изучении Оберона. Значит моя цель достигнута.
Господа любители Си, особенно те, кто читает ветку с конца. Не надо, подобно Sayman'у, выпячивать грудь и кидаться сгоряча. Он хотел поучить зарвавшегося неофита, а на деле просто продемонстрировал свою некомпетентность. Понятно желание бывалого сишника заступиться за любимый язык. Но Си не поругаем, он просто сравнительно критикуем. Или вы считали его идеальным языком? А тут пришёл пиписькин сын неофит, который удосужился выучить что-то другое, но, кроме этого, не знает нифига языков, и теперь парит моск и всех свысока поучает, ибо ему больше некак самовыразиться? Я думаю, ситуация так выглядит не для всех, что всё-таки радует. Радует реакция Raydac, Valen и Alone.
Однако давайте всё-таки сделаем здесь “ловушку” для сишников. Господа сишники. Я понимаю, вам лень открывать и читать галимые ссылки, которые я даю, но всё-таки вот эту прочтите. Может желание облить меня помоями поутихнет? Негуманно всё-таки брата-спектрумиста так прокатывать. Или мне показать вам длинный список сделанных мною программ на Си? Там будет и графическая среда для смешивания лиц, и программа для сжатия почтового трафика VIPmail http://colossoft.anarxi.st/?go=vipmail, и сетевой многопоточный движок ROSE, и всякого рода системы для бухгалтерий и интернет-биллинга http://colossoft.anarxi.st/index.php?go=stefport. Так это уже то самое натуральное меряние пиписками, которого так не хотел я и, в особенности, Sayman. А как думаете. Си крут. Но бортовое п/о на всяческих вояджерах на Си писать не торопятся. Почему-то. Я упоминал о бортовом п/о для безпилотного вертолёта на Обероне. Это показательно. Упомяну ещё и о системе управления ГЭС на Амазонке, сделанной в среде BlackBox.
http://ru.wikipedia.org/wiki/Компонентный_Паскаль
http://oberoncore.ru/articles/gubanov
Модула-2 в российском космосе
http://www.kronos.ru/about/koltashev
Ну хорошо, хорошо. Я неофит, плохо знаю Си. Но вот есть капустная голова профессорская, привыкшая парить моск. Внимание, статья от Джозефа Темпла, автора транслятора Ofront. Это транслятор с языка Оберон-2 в Си. Это наверно подразумевает, что оный Темпл знает Оберон и знает Си вместе, в отличии от Sayman. И наверное показательно, что он написал такую статью, транслятор, и показательно, что он написал его с Оберона и на Обероне. Си-вариант получился “раскруткой”. Но зато теперь благодаря этой проделанной работе, мы с вами сейчас имеем удовольствие и общаться, и лицезреть нечто вот такое: http://norayr.arnet.am/weblog/?p=668 (ETH Oberon System, оттранслированная Ofront’ом и запущенная на интернет-таблетке Nokia N810).
Итак, господа.
Дж.Темпл. Oberon против C++
http://oberon2005.oberoncore.ru/paper/templ.pdf
И ещё интересненькое.
М.Франц. Java - критическая оценка
http://www.osp.ru/pcworld/1997/08/56.htm
http://oberon2005.oberoncore.ru/paper/obe_java1.pdf
И главное. Тут много об идеологических языковых маразмах. И автор умнейший. Кстати, автор компилятора с Оберона-2 в байт-код Java (JOB, Вологда. Гуглируйте).
С.З.Свердлов. Языки программирования и методы трансляции
http://uni-vologda.ac.ru/~c3c/landt/contents.htm
http://www.piter.com/book.phtml?978546900378
http://oberon2005.oberoncore.ru/book/ss2005a.pdf
http://progbook.ru/technologiya-prog...-i-metody.html
Господа, не забываем читать. Я действительно интересные вещи даю.
В различных Оберонах применяются разные решения данного вопроса. Вообще Оберон-1 – он очень маленький. В него вошёл только тот самый необходимый минимум средств, которого, тем не менее, достаточно для разработки на нём операционной системы (http://www.oberon.ethz.ch/). Оберон-2 – это правильное надмножество Оберона-1, абсолютно совместимое с ним сверху вниз; добавились связанные с типом процедуры (методы), но в целом язык такой же маленький и простой, и ничего особо для группировки модулей в нём не предлагается. Далее из Оберона-1 вырастает Active Oberon (также сохранивший полную совместимость сверху-вниз с Обероном-1), основной фишкой которого есть активные объекты, каждый из которых может исполняться в своём потоке. В Active Oberon System (AOS) схожие по назначению модули можно группировать с помощью дополнительного префикса в имени. Например:
А из Оберона-2 вырастает язык Компонентный Паскаль (с некоторыми оговорками – практически надмножество Оберона-2). Но в него внесены, на мой взгляд, очень важные вещи, нужные для промышленного применения и серьёзного системного программирования. Они не настолько уж критичны и необходимы, но с ними удобнее, например, портировать библиотеку Кладова KOL (с Delphi на Component Pascal). Нет. :smile: ифдефы сюда не вошли. Ну так вот, в системе BlackBox Component Builder (там КП – основной язык разработки) схожие по назначению модули группируются в подсистемы. Например, подсистема Dev – для разработки. Внутри неё модули DevCompiler, DevLinker, DevElfLinker и так далее. Подсистема Form – для построения GUI. Можно сказать, что подсистемы – это и есть "библиотеки", но на деле это просто группы модулей, которые было удобно сгруппировать, ибо их что-то связывает вместе. Модули эти могут импортировать и использовать дружественные модули из своей же подсистемы или же из других, а могут абсолютно не знать ничего друг о друге.Цитата:
Win32.Files, Win32.Console,
Linux.Files, Linux.Console
Золотые слова, jerri.
Но, повторюсь, инструментарий для Оберонов развит очень скромно. Тут есть над чем поработать. И я рад, если просто кого-то заинтересую. Среди спектрумистов много энтузиастов [было раньше]. А Оберон-технологии – это конструктор, а не супермаркет.
Так никто обратного и не говорил, Alone. Я привёл пример с Debug’ом, там лишний код в компайл-тайме отбрасывается. Тут вопрос не в том, что ифдефы это плохо. Вопрос в том, что головы одурели настолько, что ифдеф уже лепится вместо ифа на автомате, а всё, что сверх того, нарушение прав и ущемление свобод.
чисто имхо насчет владения компьютерными языками
лучший компьютерный язык это тот компьютерный язык который лучше всего знаешь, правило "10 лет" никто не отменял (это правило в отношении экспертов согласно которому человек так медленно накапливает знания, решения ирецепты, что может считаться полноценным экспертом только после 10 лет владения какой то технологией), так что спорить "что лучше" смысла нет
в отношении спектрума имхо, если появится целевой кросс-компилятор с языка АДА, Фортран или Рапира с удобным отладчиком и IDE в Z80 то он получит популярность
Ситуация с #ifdef и if понятна - Оберон не включает в бинарь те ветки if, которые при заданных значениях констант никогда не выполнятся. Выкидывать или ветвить по значению некоторой константы определения идентификаторов нельзя.
Ситуация с пересечением имен идентификаторов тоже понятна - вместо неймспейсов используются префиксы модулей, что примерно то же самое, и проблему использования модулей с конфликтами имен не исключает.
В целом, есть такое пожелание. Не хочу сказать за всех жителей форума, но я ленив. В частности, для того, чтобы читать просто тонны текста что в этой ветке, что в безмерном количестве ссылок тут. Чтобы что-то прочувствовать, мне надо простую инструкцию (надеюсь, я не один тут такой):
1. Скачать инструменты отсюда (URL), отсюда (URL), отсюда (URL).
2. Установить это, это и это.
3. Скачать исходики отсюда (URL), отсюда (URL), отсюда (URL)
3. Открыть это в этом, нажать это.
4. Открыть это в этом, нажать это.
5. Полученый trd (scl, txz, tap, udf, td0...) запустить в Спеке.
Вот так было бы круто. Так можно пощупать сразу хоть какой-то результат, почитать код, поменять его и побаловаться, оценить скорость и объем занятой памяти на строку кода. Да и готовый шаблон для создания чего-то своего. Для хобби теория скучна. Кнопки нажимать хочется. Глядишь, и вопросы с критикой из абстрактной плоскости перерастут в практическую.
Тока, если можно - пример чуть посложнее, чем Hello, world. И инструкцию в расчете не на гениев, которые из всех технологий только про Оберон не знают, а для простых смертных, которые для Спеки писали только на asm и Basic. Для всех, то бишь. Вот это дело будет!
Не совсем верно. Вот есть "Дубовые требования" ("Oakwood guidelines" – http://smalllinux.sourceforge.net/oberon/oakwood.htm), которые предлагают реализовать макропроцессор. Выглядит это примерно так:
Небольшой пример. Допустим, вам надо вычислять по формуле x = x * 2. Вы знаете, что на процессоре А быстрее выполняется вариант INC(x,x), а на процессоре Б — x:=ASH(x,1). Идти на компромисс вы не хотите, и иметь два разных файла для одной программы тоже. Выход такой:Код:<* SelectorName+ *> — включить
<* SelectorName- *> — выключить
<* IF условие THEN *>
строки вашей программы
<* ELSIF условие THEN *>
строки вашей программы
<* ELSE *>
строки вашей программы
<* END *>
Подобные требования были реализованы в продукте XDS (http://www.excelsior-usa.com/xds.html) (Бесплатный оптимизирующий компилятор Модулы-2 и Оберона-2 для платформ Windows и Linux. Windows-версия имеет собственную среду разработки).Код:<* IF ProcA THEN *>
INC(x,x);
<* ELSE *>
x:=ASH(x,1);
<* END *>
Никто, наконец, не мешает нам реализовать для Спека диалект Оберона, в котором будут даже алиасы регистров и системные расширения SYSTEM.EI, SYSTEM.DI, SYSTEM.IM2 и так далее. Обероны – это конструктор. А мы ленивы. Потому что Спектрум и творчество это раньше были синонимы. А теперь синонимы это потребительское отношение ко всему, включая экологию, и "делаю то, за что получаю бабки". Целое такое поколение взросло на наших глазах. Поколение скриптописателей. Они уже никогда не будут спектрумистами, не в смысле юзки 8-битной железяки с телевизором, а отношения того не будет. Ни к чему.
Гм, а Вы хотели бы иметь несколько разных модулей ("библиотек"), названных одинаковыми именами и юзать их одномоментно? И называете это неразрешённым конфликтом имён? :frown: Давайте всё-таки делать разницу между конфликтами имён в именах модулей и в идентификаторах внутри этих модулей. Ещё раз повторяю: эта проблема в Оберонах решена блестяще. Ссылки я дал выше.Цитата:
Ситуация с пересечением имен идентификаторов тоже понятна - вместо неймспейсов используются префиксы модулей, что примерно то же самое, и проблему использования модулей с конфликтами имен не исключает.
Примерно такая статья по задумке и готовится на http://zx.oberon2.ru/zx-dev.htm. Но пока что-то нету вдохновения. В форумах флеймить это вам не статьи умные писать. Со временем, что-то сделаю, надо думать.Цитата:
а для простых смертных, которые для Спеки писали только на asm и Basic. Для всех, то бишь. Вот это дело будет!
Сначала программировать на Обероне не нравится. Плюёшься на всё и вся, но вот почему.
Принятые в Оберон-технологиях ограничения специально жёстко регламентируют огульное и повальное использование каких попало средств платформы (что только способствует переносимости целевого продукта) и языка, который обычно построен по принципу супермаркета (от предоставленных средств глаза разбегаются). Изначально исходник Dash был на Си (Turbo C 2.0, DOS) и был вообще так спаян с DOS, что развод представлялся чем-то невозможным. Теперешний исходник Dash на Си, полученный транслятором Ofront с Оберона выглядит намного более наглядно и платформенно-независимо по сравнению с изначальным вариантом, который писал, кстати, вовсе не ламер. А вы видели исходники Moggy или Phantomas Saga – Infinity? Да, они на Си, но попробуйте переписать их для чего-нибудь ещё. Это надо всё делать заново. Разумеется, на Си тоже можно писать иначе, но почему-то не пишут. А цель портирования Dash была в том, чтобы получить на Обероне исходник главного модуля игры отдельно от машинно-зависимых частей. Это хорошо получается на Обероне, в котором средства отделения мух от котлет достаточно выразительны. Причём эффективность данной языковой платформы – достаточна для разворачивания даже на Спеке. Я это увидел, и этого мне хватило чтобы почувствовать значительную мощь Оберонов. Теперь, подумал я, если бы игру Dash изначально разрабатывали на Обероне со следованием принципов, принятых в Оберон-технологиях (это не только язык или часть языка, это соглашения, конвенции, правила хорошего тона и ещё масса всего, что облегчает жизнь), то сейчас мы бы имели скелет программы настолько хорошо абстрагированной от платформы, что заменить платформенно-зависимые модули, тем самым перенося игру на другую платформу, было бы уже гораздо более простая работа, чем отделять мух от котлет в Дураке, Фантомасе или Могги. В последних эта работа не проделана, и практически даже не начата. Подчеркну, что в основном модуле Dash, где всё бегает, не применяются ifdef’ы или что-либо подобное. При следовании принятым концепциям это попросту не нужно. Да, я изобрёл способ делать не очень динамические игры для Спека, используя языковую Оберон-платформу таким образом, чтобы их можно было более легко развернуть на другую аппаратную платформу. Практически любую. Эффективность полученного Оберон-представления алгоритма – высокая. Достаточная для разворачивания на Спеке. Плюс в этом. Не в самом использовании Спека, его роль здесь не более чем лакмусовой бумажки, показателя высокого качества Оберон-технологий. Вот в чём сила Оберонов. Их красота – в минимальном использовании языковых средств для получаемого представления алгоритмов. Но этому умению надо долго учиться, это подразумевает пересмотр и изменение устоявшихся языковых стереотипов и прижившихся привычек, а этот путь не для тех, кто уже и так всё знает о виртуальных методах, обработке исключений и шаблонах, а также о регистровых парах и флагах со стеком. Надо думать, опять же, что многое из того, что я говорю об Обероне справедливо и для Си, но Си не настолько выразителен. Но если бы к Си++ программисту приставить жандарма, который бил бы по рукам за неправильное использование языковых средств, то это был бы почти идеальный вариант, если закрыть глаза на уродский синтаксис и навесное излишне сложное и перегруженное ООП. Но, заметьте, трудность освоения Си++ радует тех, кто к нему сопричастен, льстит самолюбие и даёт им повод, задрав нос, поучать неофитов: “какой-де мощный язык, понимаешь, целых пять лет учил, и до сих пор ещё учу”. Это же касается и синдрома линукса. Линуксоида просто превозносит тот объём ругательств командной строки, которые он постиг прежде чем ЭТО просто перестало раздражать. А чего плеваться, раз все вокруг твердят как это круто. Если сказать одним выражением, убирая все технические и психологические тонкости, то будет “стадо гонят пастухи”. Вот что обидно.
НАЧАЛО светлое весны...
Лесов зеленые МАССИВЫ
Цветут. И липы, И осины,
И ели помыслы ясны.
Себе ПРИСВОИЛ этот май
Права одеть листвою ветки,
И целый месяц в душах МЕТКИ
Он расставляет невзначай...
И пишется легко СТРОКА,
И на этюдник рвутся кисти,
Уходит ЛОЖЬ в обличье ИСТИН,
И говорю я ей: ПОКА!
С.А. Маркин.
Вот честно, мне не нравится программировать на Обероне! Совсем. И не буду пока даже начинать. Потому что не знаю с чего. Вообще не знаю. Просто... Вижу коллосальный объем буков, и руки опускаются.
Почитал недоработанную инструкцию на zx.oberon2.ru - опяты уныло. Опять много буков. Опять складывается впечталение, что язык Оберон создан концептологами для каких-то других -ологов, к которым я себя не отношу. Много философии, мало практики.
Вот скажите, Олег, а правда программировать на Обероне для Спектрума настролько сложно, что нет никакой возможности положить здесь, на форуме, несколько ссылок на инструменты и написать простой пример и краткую инструкцию, после выполнения которой что-то заработает?
Тут Вы сами себе противоречите. С одной стороны Вам не нравится делать то, что Вы никогда не делали, просто представляете себе это по аналогии. С другой, все языки примерно одинаковы, что Вы обозначили на форуме выше, так что с чего бы одному нравиться, другому нет.
При чём тут -ологи, это у меня стиль такой. Я иде-олог. Не мечтаю запрограммировать на Обероне всё на свете. Мечтаю, чтобы это сделали за меня. Я вообще помощников искать пришёл, заинтересованных. Приоткрыть красоты. А не отгавкиваться, браться что-то для кого-то или за кого-то делать.Цитата:
Оберон создан концептологами для каких-то других -ологов, к которым я себя не отношу. Много философии, мало практики.
Я бы не назвал оберонщиков философствующими теоретиками и -ологами. Они помаленьку разрабатывают системы, библиотеки и трансляторы. Микроконтроллеры осваивают, и встраиваемое программирование. Пишут книги и статьи, в которых делятся опытом практических разработок.
Практическую пользу от размещения кода компилятора Coloss и игры на Coloss’е видели? Неа, все их тихонько скачали, положили на полочку и тихо забыли. Даже никто не написал “какая крутая игра и какой крутой компилятор”. А если бы я не дал ссылок, сейчас бы или просили их, или пеняли, что брешу, и что не было разработано никакого Coloss’а и никакой игры. Хотя я льщу себе надеждой, что мои здешние форумные опусы кого-то всё же вдохновят на реальные свершения. Впрочем, ещё ведь наверное много спектрумистов эту ветку не читали.
Как видите, Алекс, это, как минимум, нетривиально. Как показатель – ещё никто, кроме меня, до этого не додумался (программить на Обероне для Спека). Но я ничего сверх меры не изобретал, просто сложил в кучу не-Оберон- и Оберон-технологии, сдобрил Оберон-видением перспективы.Цитата:
Вот скажите, Олег, а правда программировать на Обероне для Спектрума настролько сложно, что нет никакой возможности положить здесь, на форуме, несколько ссылок на инструменты и написать простой пример и краткую инструкцию, после выполнения которой что-то заработает?
Инструкция.
1. Качаем BlackBox Component Builder, любую сборку, устанавливаем.
2. Качаем SDCC, устанавливаем.
3. Делаем несколько машинных процедур на асме Z80 внутри сишных файлов.
4. Скачиваем Ofront, гуглируем-учимся ставить новые подсистемы в BlackBox, ставим Ofront. Делаем пустой модуль-заглушку, чтобы при трансляции Си-программы заменить его на сделанный в пункте 3. Смотрим как Ofront заманглил имена префиксами, делаем также в нашем Си-коде.
5. Делаем программу на Обероне, которая при трансляции Оберона в Си юзает пустые модули в качестве низкоуровневых из пункта 3, транслируем.
6. Компилируем получившиеся сишники в SDCC, SYSTEM.h берём в этой ветке выше.
Проблемы преобразования хекс-интеловского формата, выдаваемого SDCC, в бинарь, а бинаря в TRD/TAP/Z80 здесь уже рассматривались, повторяться не буду.
Короче, ждите статью. Я ведь тоже ленивый. И люблю делать то, что мне нравится, а не то, что меня просят сделать другие ленивые.
так так значит тут не хватает еще пары пунктов
0. учим С
...
7. оцениваем результат выпадаем в осадок - стираем оберон - пользуем С
это я к чему :) я не знаю С настолько чтобы выделенное мной обрело смысл
а учить С чтобы выучить Оберон
есть ли более простой способ с либами и уже настроенной средой?
Вот именно, SpecialistMK87. Наконец-то Вы сами это сказали. Вы о надёжности, а я о бомбах, см. ниже.
Использование конструкций = и == вместе в одном выражении рано или поздно подразумевает, что когда-нить по случайности или по невнимательности их перепутают со всеми вытекающими последствиями.Цитата:
:= почему плохо?
большинство программистов уже привыкло ставить '=' и '=='. И уже неважно 'правильно' это или нет.
if(a=b)...
Вот здесь врыта мина со счётчиком наступаний, которая сработает обязательно. Даже если человек привык к ==
И Си весь "пестрит" такими начинками, об этом хорошо у Свердлова написано.
Резон позволять смешивать в одном выражении сравнение и присваивание заключался в том, чтобы:
a) сократить запись (что было актуально в пору маленьких экранов и неактуально сейчас, потому что сейчас на передний план выступает наглядность, которая подразумевает, что различные конструкции из выражения лучше развести, чтобы по возможности они выглядели конструкциями отдельными);
b) вручную указать тупому компилятору где и как лучше оптимизнуть.
Да, это было актуально в эпоху тупых компиляторов и маленьких экранов, к тому же народ после автокодов и асма был готов принять даже Фортран, не то что Си.
Поэтому я утверждаю аргументированно: конструкция == устарела и, соответственно, является архаичной. Смешивание присваиваний = и сравнений == в одном выражении устарело и является архаичным, а также является ещё и бомбой замедленного действия. И средством опасно ненадёжным. Для тех, кто пришёл из Бейсика, Паскаля, или же просто изучал математику в школе (или в универе) и не успел пройти "идеологической обработки" мэйнстримом. А Специалист о надёжности кода.
В ответ на эти железобетонные аргументы сишники обычно снисходительно отвечают: "а я так привык" "мне так ндравица" "у меня всё получается иди rtfm" или железное "а мне за это плотют", даже не понимая, насколько их надули. Слухи же об архаичности := злостно распускают в сети любители синтаксических извращений.
Занимаясь Оберонами, трудно всем угодить. Отбившаяся от мэйнстрима овца за пророка не канает.
Господам сишникам так осточертели многотомные 800-страничные талмуды, что их трусит паркинсон при виде чего-нить длинее sms'ки?
Я так понимаю, что конкретное – это готовый архив с исходниками, который Вы соберёте, посмотрите, поплюётесь и отложите в дальнюю полку? И придёте потом тут рассказать, что Оберон в связке – это лишнее звено, и ничего, кроме геморроя, он Вам лично не принёс.
Ну а так получается, автор до конца не раскрылся, спрятал за пазухой кусок пирога, которым не спешит делиться, а раз так, то значит остаётся какая-то неудовлетворённость от данной ветки. Что-то невысказанное, недоуложенное в голове. Как раньше был Спектрум. Это вызов, гопспода. Вызов самому себе.
От меня ждут, что я изрыгну и начну раскладывать по блюдцам? А помните те времена, когда в ZLIST изучали хитрые процедуры ПЗУ? Думаете это было проще, чем скачать сейчас SDCC и Ofront и запрограммить Спек на Обероне? Я, между прочим, преследую те цели, что пришёл искать тех, кто сделает за меня пошаговый отладчик Оберона для Z80. Вирт может против пошаговых отладчиков. Я только за.
jerri, Вы правы. Способ с Офронтом подразумевает хорошее знание Си (хотя бы без плюсов). Среды нету, откуда ж ей взяться. Либ нету. Я просто брал те машиннокодовые процедуры, что было надо, и переводил на дикий синтаксис инлайн-асма SDCC.
Нету чего-то в стиле Visual Studio для Оберона под Z80. С подветкой синтаксиса, пошаговым отладчиком и набором библиотек. Ну не ждите вы от меня этого, ей-богу. Даже десятка два примеров готового кода, которых, видимо, добивается Raider, не сделают разработку на Обероне для Спека удобнее.
Так как же рассматривать мотивацию, отчего ветка превратилась в такое нечто? Да всё дело в том, что люди не любят инакомыслящих, вместо этого они кучкуются с единомышленниками и испытывают слабость даже к предрассудкам, если оные льстят их самолюбию.
Со всей ответственностью заявляю господам сишникам, что если они дочитали досюда и все мои посты не вызвали в них никаких перемен мнения об Обероне (не говорю о желании выучить Оберон), то никакого преимущества от использования Оберона перед Си для вас не будет. Ни на Спеке, ни на чём-нибудь ещё. Оставьте забавному старичку-профессору его забавные чудачества делать всё без отладчика, оставьте паршивой овце следовать своей тропой. Будьте великодушны, вы ведь такие многоопытные разработчики, столько всего перевидали на этом свете. А сишника из меня Вы всё равно не сделаете, хотя бы потому, что я уже сишник. Вынужден использовать. Уйдите вы отсюда. Вам неинтересно, не надо самовыражаться прям во всех ветках. А пинать ногами одинокую овечку – это вообще садистская забава.
Господа, предлагаю ввести в ветке модерацию совестью. Сообщения, не касающиеся разработки на Обероне, прямо считать неуважением ко мне, автору темы, и к тем, кто остался читать ветку и писать в неё по теме.
Oleg N. Cher, лично мне не нужно
есть акелпад в котором я пишу. есть для него набор кодеров в том числе и подсветкой синтаксиса. Необходим только лишь знающий человек который этот кодер настроит. Никто не будет писать ИДЕ для оберона на спектруме - оно там просто не нужно. есть множество простых, понятных и очень гибких кроссредств. их всего-лишь надо настроить.Цитата:
чего-то в стиле Visual Studio для Оберона под Z80. С подветкой синтаксиса, пошаговым отладчиком и набором библиотек.
---------- Post added at 14:35 ---------- Previous post was at 14:29 ----------
Oleg N. Cher, поучись как надо заинтересовывать людей. без шума, без негатива, без возмущений и картинных поз. Я java не знаю но то что нарисованно здесь мне понятно и интересно. я могу уже и автору что-нибудь посоветовать и критику обоснованную навести.
А вот я наоборот за Оберон на Спеке! Я вообще-то сам начал разработку компилятора Паскаля для Спека. Раз уж пошла такая пьянка, выкладываю то, что уже имеется. Пока компилятор (запускать файл bat) может отводить нужное место для переменных, кроме записей пока.
Насчет присваивания := и выделения места заранее под переменные полностью согласен с Oleg N. Cher. Как раз компилятору для Спектрума удобнее заранее выделить место под все переменные, описанные в VAR в Паскале или Обероне, а не по ходу, как в Бейсике или С. Т.к. этого места мало, а хочется многого.
Только, я считаю, нужно делать кросс-компилятор с PC напрямую в асм Спектрума (в текстовом виде). Что и начал делать. Использовать только целые типы, символы и строки.
Oleg N. Cher, давай тогда вместе работать. Нужно только выбрать, Оберон или Паскаль.
Компилятор Оберона, кстати, очень хорошо описан в книге "Н.Вирт. Построение компиляторов" http://www.twirpx.com/file/715110/ , я по ней делаю Паскаль.
По поводу космоса: спутники TacSat гоняют Linux. http://www.linuxjournal.com/article/7767
По поводу if(a=b): все нормальные компиляторы выдают ворнинг.
Мне безразлично, как где пишется присваивание, важно чтобы были фичи и не было оверхэда. А в Обероне нет фич и есть оверхэд.
Будете смеяться и не верить, но корявости есть и в C# (отсылаю к книге Свердлова), кроме того, это язык одной корпорации, его успех или неуспех слабо связан с его достоинствами, и тоже дело корпоративное.
Хотите несколько слов о причинах малой популярности Оберонов? Она прямо коррелирует с огромным количеством малокомпетентных людей, которые слабо разбираются в технологиях и готовы за деньги заниматься чем угодно, и, естественно, превозносить своё болотце.
Профессора, который в одиночку или в маленьком коллективе разрабатывает операционные системы, компиляторы и бортовое п/о такие здесь светочи разума называют теоретиком, а собственное скриптописательство для 1С в рамках готовых к употреблению технологий – это непременная глубочайшая практика. Деланье ежедневных заплаток на PHP к веб-сайтам потому что кушать хоца – это высокий кодинг, почти искусство. И при этом никто далеко не против прийти сюда и рассказать, какой-де он крутой разработчик, куда-де до него тупым маразматикам без долбаггера.
И эта точка зрения муссируется в инете и имеет очень широкое хождение. И любителей самоутвердиться и попинать профессора более чем достаточно. Я же призываю не считать Вирта пустофилософствующим дураком без практики, потому что он явно опытнее и умнее скриптососов, от чего последние просто готовы рвать меня на куски. Но я иду на конфликт сознательно, не пытаясь его смягчить, ибо популяризовать идеи, лежащие в основе Оберон-технологий, невозможно на старом материале. Чтобы захотеть попробовать Оберон – нужно не испытывать к нему заочного отвращения. Чего у многих не наблюдается.
Я замечал, чем самоувереннее и безапелляционнее высказывается программист, тем чаще он бывает некомпетентен. И наоборот, программист открытый к познанию нового и оттачивающий своё мастерство ежедневно – как правило личность гибкая.
Никто не хочет понимать как мы работаем БЕЗ препроцессора и БЕЗ пошагового дебаггера? Юзая при этом ДРУГИЕ механизмы, о которых мэйнстримщики не знают и, заметьте, знать не хотят.
Надо думать, я хотел притащить сюда своего друга-оберонщика, чтобы он помог мне пинать ногами оффтоперов и злостных мэйнстримистов. Так вот, он не очень-то сюда и стремился, он сказал, что тутошняя тусовка не доросла до понимания Оберон-технологий. Так что ему тоже никто не мешает самоутверждаться и считать себя крутым. Как и другим. :smile:
О, светочь разума мэйнстримист. Тоже умный человек. Призывает нас экономить время записью:
вместо невменяемого, архаичного и слишком длинного:Код:extern unsigned char a;
extern unsigned int b;
P.S. Java на ZX маразм, как и .NET на ZX.Код:VAR a*:CHAR; b*:INTEGER;
Давайте добавим в Оберон фичи и уберём оверхед.
Alone, ты занимался кроссразработкой, и знаешь, что некоторые накладные расходы на кросс всегда имеют место, как и расходы на кодинг для ZX на чём-то отличающемся от асма. Польза в том, что я придумал как их минимизировать. И мы можем сейчас заняться доводкой технологии до уровня полезных применений, или же зафукаем и забьём, оправдываясь тем, что асм всё равно круче.
Андрей, именно для таких как ты я сподвигся на таки доводку до ума технологии, вот. С помощью Оберон-технологий думаю получить компилятор-линкер-IDE за пару дней. Так что подождите чуток. Для подогрева интересу скриншот:
http://zx.oberon2.ru/zx-dev.htm
А статья, видимо, отменяется. Практикам она ни к чему. :cool_std:
Смысл делать компилер с нуля считаю затеей полезной для саморазвития, но такого матёрого зубра как Alone ты этим не проймёшь. :wink:
Я в детстве тоже много таких компиляторов делал. А выкладывать исходники обязательно надо, не повторяй моих ошибок. Не волнуйся, не присвоят. :smile:
Как будем держать связь? Аська есть?
Аськи у меня нет, только М-агент. Я только в рабочее время доступен, т.к. дома невозможно ничего делать сейчас (семья не дает) :) Так что, можно в этой теме всё писать.
Я свой Паскаль делаю не с нуля, а в Coco/R (спасибо ZEKу за наводку), потом компилирую в TurboPascal. Только файл atg вручную пишу. Выкладываю его, см.файл.
Моё вИдение:
Нужен или Паскаль, или Оберон, подогнанный под возможности Спектрума. Цель его создания, не удивить или переплюнуть кого-либо, а как быстрое средство разработки игр и программ (в первую очередь, игр, т.к. новый софт для Спека всё же лучше писать на Асме). Также как удобное средство разработки для тех, кто не знает или не хочет использовать Ассемблер, но хочет писать продвинутые игры.
Лучше делать кросс-компилятор с PC на Спектрум. На PC очень удобно писать в текстовых файлах и нет ограничений по памяти. Компилировать в Ассемблер в текстовый файл на PC, а не в бинарник. Чтобы пользователь мог выбрать потом любой кросс-ассемблер для Спектрума.
На первом этапе:
-----------------
Используемые типы данных:
byte
word
longint
char
string[n]
sprite - спрайтовый тип, на первом этапе только познакоместный цветной. Формат спрайтов продумать.
Массивы: одномерные и двумерные для всех типов. Размерность только до 256. Для двумерных массивов размерность первого индекса может быть только 4,8,16,32,64,128 или 256, это нужно для быстрого расчета адреса элемента массива (в ассемблере массивы всегда стараются делать с такими размерностями).
Записей нет.
Функции: +, -, *, div, mod, random(x), code, chr, readkey.
Арифметические выражения без скобок.
Операторы:
:=
write
writeln
read
readln
if ... then ... else ...
case ... of
for ... to (downto) ... do
while ... do
repeat ... until
inc
dec
clrscr
gotoxy
Специфические операторы:
colorstyle(ink,paper,bright,flash,over, inverse) - установка стиля
putsprite(?) - вывод спрайта
Процедуры: без параметров и локальных переменных
Шрифт: только 4х8 рус. и англ.
Я думаю, что подойдет любой язык, если будет оптимизатор, который многочисленными перестановками в машинном коде будет получать максимально оптимизированный алгоритм.
Я говорю о такой оптимизации, которая бы даже алгоритмы сортировки заменяла.
Руководство считает, что пока нет времени на справку.
Я что то попытался тут написать:
http://tmaplatform.ru/page/help/similarpascal/0types
http://tmaplatform.ru/page/help/similarpascal/1as
http://tmaplatform.ru/page/help/similarpascal/array
http://tmaplatform.ru/page/help/simi...cal/oledynamic
И еще там SQL-встроенный в ЯП
http://tmaplatform.ru/page/help/sql/local
Оптимизация будет за счет:
- использования в арифметических выражениях умножения и деления на кратные 2 числа (вычленения этих случаев);
- использования кратным 2 размерности массивов, для быстрого расчета адреса;
- вывод спрайта готовой встроенной процедурой;
- специфические алгоритмы: сортировка, поиск и прочее можно тоже сделать отдельными операторами со встроенными процедурами.
- после генерации текста ассемблера будут выисканы и удалены переприсвоения, лишние push/pop и т.д. Подмена алгоритмов конечно же не будет на первом этапе.
---------- Post added at 11:40 ---------- Previous post was at 11:34 ----------
Ага, посмотрел. А можно ли байт-код оттуда как-то приспособить для генерации кода Спектрума?
Мне кажется, что все остальные разработчики компиляторов сделали всё то же самое. И еще не много больше. Поэтому не будет превосходства в скорости.
Если бы я хотел сделать, то что делаете вы, то внимательно изучал код всех спектрумовских демок. И добивался бы, что бы компилятор создавал такой же код.
---------- Post added at 10:44 ---------- Previous post was at 10:42 ----------
Можно. Мой байт код почти не отличается от JVM. Только (я думаю), что не нужно. Стековая виртуальная машина, сборщик мусора и динамические строки похоронят производительность Спекки раз и навсегда.
У господина не было проблем с совместимостью знаковых и беззнаковых char? О, если нет, то Вы явно мало работали на Си. Кроме того, скажите:
Вы сходу сообразите где что к чему относится? b и c – это оба указатели? а d – указатель или указатель на указатель? А e? А f – это char или указатель на char? Я понимаю, Вы напряжёте мозг и таки догадаетесь, но зачем. Если есть более удобная форма записи. А накапливающийся груз от перенапряжения на мозг в больших проектах ощущали?Код:extern int a, char *b, c, *d, char* e, f;
Я здесь присутствующим собираюсь ДОКАЗЫВАТЬ, что их обвинения в моём незнании Си просто смешны. Я вынужден вести такие войны, хотя видит бог как я устаю от таких как Вы на этом и других форумах.
Я предлагаю быть творческими личностями с творческим подходом, и уважать друг друга. А здесь мы обсуждаем не победу Оберонов над мэйнстримом, а всего лишь разработку на Обероне для Спека. А Вы пришли здесь троллить, ничего не сказав по теме, и являетесь для меня и тех, кому нравятся мои посты, просто деструктивным элементом. Успокойтесь, ничто Вашему мэйнстриму не угрожает.
Кстати, Вам будет приятно узнать, что один из архитекторов платформы .NET и Visual Studio – ученик Вирта и оберонщик Клеменс Шиперски (Clemens Szyperski), один из основателей компании Oberon microsystems. Тоже кушать захотел и двигать большие дела.
http://research.microsoft.com/~cszypers/
http://www.inr.ac.ru/~info21/info/ob...crosystems.htm
Вот Вам турбопаскаль. И вот. И ещё вот. Такое делают умные оберонщики, которым надоела искусственно раздутая сложность технологий.Цитата:
она их переросла еще в школе во время изучения Тurbo Pascal 3.
http://sage.com.ua/ru.shtml?e1l9
http://sage.com.ua/ru.shtml?e1l5
http://sage.com.ua/ru.shtml?e1l6
http://sage.com.ua/ru.shtml?e1l3
http://sage.com.ua/ru.shtml?e1l8
Теперь буду рад увидеть в ответ нечто подобное, но что сделали Вы. Для Спека или нет, неважно.
Кстати, первая ссылка это Вольфейнштейн на Обероне. Alone, знаю, ты любишь такие штучки, зацени.
1. Не все нормальные компиляторы выдадут ворнинг. Это нормальная себе конструкция в языке Си, разрешённая. Вот в GCC ворнинги по умолчанию вообще выключены, их надо включать, например, командой -Wall
2. Если даже ворнинг и включен, то реально его просто не заметить в общей куче других ворнингов. А в среднего размера проектах их количество огромно. И исправить ворнинги полностью никто не пытается, хотя бы потому что их добрая половина – в стандартных заголовочных файлах, куда шаловливые ручонки всё же не лезут.
Я понимаю, привыкнуть можно. Вон Аллен Голуб такой талмудище “Как ходить по минному полю Си, почти ничем не рискуя” написал. Советует в целях снижения риска писать вместо:
if(a==2)
if(2==a)
Чтобы, если вдруг опечатался, компилятор уж точно это не прохавал. Ну что ж. Это хорошее чтиво вдобавок к мэйнстрим-средствам разработки. Но в Оберонах нельзя написать:
И это правильно, господа. Так и должно быть. Поэтому байки об архаичности BEGIN и VAR будем считать оправданием своего невежества. Кстати, многие из здешних даже не знают что сделано хорошего в Обероне по сравнению с Паскалем в плане убирания лишних BEGIN. К скобкам очень привыкли, уже от чего-то другого начинает колбасить.Код:WHILE a := b …
Я думаю, что можно. Вариантов масса.
Надо написать все возможные правила замены кода. (Большинство из них можно вычислить автоматом.) И написать функцию, оценивающую время выполнения программы.
Далее, применяем все перестановки и считаем время. Возможно алгоритм будет работать сутки, но в результате мы получим максимально рабочий код.
---
Еще есть вариант, написать функцию оценивающую идентичность алгоритмов. Например:
mov ax, data
loop:
shl ax, 1
jnz loop
(Допустим, это 4-х битный x86)
Выполняем эту программу, только в регистры записываем формулы! В которых переменные - это состояние регистров до выполнения команды.
Выполнена команда MOV
1) ax0=data0; ax1=data1; ax2=data2; ax3=data3;
Выполнена команда SHL
2) ax0=data1; ax1=data2; ax2=data3; ax3=0;
Далее идет разветвление (jnz loop). Если ноль (AX0|AX1|AX2|AX3 = 0), то повторяется второе действие. Иначе (AX0|AX1|AX2|AX3 == 1) первое. Решаем обе ветви и записываем результат: (AX0|AX1|AX2|AX3) & (вариант 1) | (!(AX0|AX1|AX2|AX3)) & (вариант 2)
3.1) Цикл закончился
ax0 = (!(data1|data2|data3|0)) & data1 = !data1 & !data2 & !data3 & data1 = 0
ax1 = (!(data1|data2|data3|0)) & data2 = !data1 & !data2 & !data3 & data2 = 0
ax2 = (!(data1|data2|data3|0)) & data3 = !data1 & !data2 & !data3 & data3 = 0
ax3 = (!(data1|data2|data3|0)) & 0 = 0
3.2) Цикл продолжился
ax0 = ((data1|data2|data3|0)) & data2 = (data1|data2|data3) & data2 = data2
ax1 = ((data1|data2|data3|0)) & data3 = (data1|data2|data3) & data3 = data3
ax2 = ((data1|data2|data3|0)) & 0 = 0
ax3 = ((data1|data2|data3|0)) & 0 = 0
3) Объединяем
ax0 = 0 | data2 = data2;
ax1 = 0 | data3 = data3;
ax2 = 0;
ax3 = 0;
4.1) Закончилась вторая итерация цикла
ax0 = (!(data2|data3|0|0)) & data2 = !data2 & !data3 & data2 = 0
ax1 = (!(data2|data3|0|0)) & data3 = !data2 & !data3 & data3 = 0
ax2 = (!(data2|data3|0|0)) & 0 = 0
ax3 = (!(data2|data3|0|0)) & 0 = 0
4.2) Цикл продолжился
ax0 = (data2|data3|0|0) & data3 = (data2 | data3) & data3 = data3
ax1 = (data2|data3|0|0) & 0 = 0
ax2 = (data2|data3|0|0) & 0 = 0
ax3 = (data2|data3|0|0) & 0 = 0
4) Объединяем
ax0 = 0 | data3 = data3;
ax1 = 0;
ax2 = 0;
ax3 = 0;
5.1) Еще одна итерация.
ax0 = (!(data3|0|0|0)) & 0 = 0
ax1 = (!(data3|0|0|0)) & 0 = 0
ax2 = (!(data3|0|0|0)) & 0 = 0
ax3 = (!(data3|0|0|0)) & 0 = 0
5.2) Цикл закончился
ax0 = (data3|0|0|0) & 0 = 0
ax1 = (data3|0|0|0) & 0 = 0
ax2 = (data3|0|0|0) & 0 = 0
ax3 = (data3|0|0|0) & 0 = 0
6) Следующую итерацию выполнять не надо. Так как условие (AX0|AX1|AX2|AX3) не выполняется. Там точно находятся нули.
Вот мы и получили формулу нашей программы AX0=0; AX1=0; AX2=0; AX3=0. Аналогичная формула будет у команды MOV AX = 0. Можно автоматом заменять.
Это простейший случай. Работу любой программы можно описать формулами c использованием всего трех действий И, ИЛИ, НЕ.
"Регистр до = Регистр после & Регистр после | !Регистр после"
А доказать равенство этих формул можно с помощью ИСЛ ИЛИ
(Формула 1) XOR (Формула 2) = 0
И самое приятное в таком подходе, что можно на выходе получить такие алгоритмы, которые в книгах не написаны. В программе вполне может появится архивация данных. Сама собой.
Единственное неудобство - этот способ очень ресурсоёмкий, поэтому целиком обработать программу не получится. (Не будет архиватора. :( ). Придется обрабатывать небольшие кусочки программ. Ну и GPU и кеширование результатов поможет. Что бы дважды не считать, что последовательность SHL + JNZ всегда дает 0.
В мозгу программиста формируется нейронная сеть, которая парсит эти конструкции без участия интеллекта и внимания. Это как ходьба или печать на клавиатуре. Лично я не задумаюсь, как двигать пальцами и где расположены кнопки. Я думаю о слове.
Лично меня бесят указатели на функцию. Почему void*(*me)(int,int), а не void*(*)(int,int) me. Когда приходится работать с указателем функции на указатель функции, то вообще башню сносит.
вот друг твой да :) умный человек
а ты полностью соответствуешь своим описаниям
ссылка моя указывала на человека доказавшего практически, что java на спектруме возможна, да тупо и медленно, но возможна.
от тебя на просьбу показать "DASH" для спека в исходниках и обьектнике видно только скриншоты нарисованные в пейнте.
как ты можешь популяризировать чтото не показывая преимуществ?
а только разглагольствуя какие вокруг тебя собрались дартаньяны и какой ты тут красивый... виконт дебаржелон.
Я это все к тому говорю, что поставленные цели должен решать не синтаксис языка. Я то же могу приделать синтаксис Оберона к компилятору Си. Быстрее от этого компилятор не станет.
А вот могу приделать к любому компилятору функцию вывода спрайта и оптимизатор. Например к Sinclair Basic. И это даст результат. (Прикрутили уже и даёт.)
Поэтому лучше говорите - я напишу крутую библиотеку вывода спрайтов, крутой оптимизатор и синтаксис Оберона прикручу.
---------- Post added at 12:08 ---------- Previous post was at 12:06 ----------
Все inline и template в хеадерах пишутся.
Да ладно? Да неужели? :)
я считал и считаю что единственный ЯВУ имеющий право жить на спеке это Spectrum Basic все остальное - баловство.
результаты выдаваемые паскалями, явами и прочими хаскеллями мягко говоря скромные.
результаты выдаваемые С чуть получше что и доказывают испанцы
Не, ну всё же какое-то внимание всё равно надо. К тому же чем проще будет эта сеть, тем быстрее и эффективнее будет работать мозг программиста, и тем больше свободных его ресурсов будет доступно для других проблем.
Господа, почему бы не считать виды записи с VAR и без VAR – просто равнозначными альтернативами, и хорошо, что они есть, так разнообразнее. Но не надо самоудволетворяться надругательством над конструкцией VAR. Это синтаксический сахар. А 99% времени всё равно уходит не на набирание на клавиатуре слов VAR и BEGIN, а на пошаговую (или не пошаговую) отладку и поиск багов.
Оберон хорош тем, что программу на нём поймёт любой грамотный инженер. Даже не зная ни одного ЯП. А уж если разберётся...
А ещё он идеален для обучения программированию. Как самый простой мультипарадигменный ЯВУ.
По поводу знаковых/беззнаковых типов - да, их можно объединить, но тогда нужно добавить знаковые форматы вывода, знаковые тайпкасты, операции знакового умножения, знакового деления и т.п.
Я тут не со всем идеологически согласен. Лучше ИМХО маленький язык и большие разнообразные библиотеки, чем всё упаковывать в один компилятор. Всё на все случаи жизни туда всё равно не вставишь, да и дорабатывать отдельную библиотеку проще, чем влезать в потроха компилера.
Андрей, я искал примерно того же, т.е. людей, которым понравится реализовывать обозначенные мною идеи, но как видишь, чудеса бывают редко, чтобы так уж всё излагаемое взяло и всем подряд понравилось.
Поэтому надеюсь, ты примешь тот грустный факт, что мне неинтересно создавать компилятор с нуля; вместо этого интересно работать на готовой связке, которая показывает отличную эффективность. Думаю, мало шансов переплюнуть кодогенерацию SDCC даже приблизительно. Но тебе хочу пожелать успехов. А если соберёшься адаптировать библиотеки (или разрабатывать новые) для своего компилятора Паскаля, тут у нас может появиться интерес для совместной деятельности.
Я думал, ты хочешь забабахать новый компилятор. Ессно, не как Вирт - Оберон на Обероне, а пользуясь уже имеющимися инструментами (в моем случае Coco/R). Там только написать сам текстовый файл atg с элементами языка и соответствующими им образцами кода, а парсер и прочая мутотень уже есть.
Ну а ежели ты хочешь идти через связку с SDCC, то тоже можно. Главное, чтобы исходник на Обероне компилировался просто в код Z80, файлом bat например, без всяких подкручиваний, перекопирований и шаманств. Иначе им никто пользоваться не будет. Только одному самому пригодится.
Oleg N. Cher, покажи здесь уже свой "Dash" чтобы доказать эффективность
Так и задумано. Ты скрин на http://zx.oberon2.ru/zx-dev.htm уже посмотрел? Трудность вижу если ошибки полезут не с уровня Оберона, а с уровня Си, вот например jerri сказал что Си не знает.
Я очень скоро выложу все свои наработки по данному проекту, Андрей. И буду отвечать на разные вопросы и всех учить рисовать скриншоты Даша в Пэйнте.
P.S. Господа. По задумке форум создавался не для оскорбления друг друга, а для обсуждения разных тем, связанных с ZX. Не нравится тема – создай другую, а не приходи в эту флудить, качать права и учить всех какой ты умный. Поэтому если Raider намерен аппелировать к форумчанам насчёт своих обид, то вспомним, что именно я создал интересную для многих тему, а кто-то другой пришёл и сюда насрал, изгадив моё детище и утопив его в своих пиписьках. И теперь меня обвиняют в подделке скриншотов и пугают модерацией и баном? Это смешно, господа. Модерацию надо было делать вовремя.
Опять же, если бы овнер форума не боялся захвата власти, или там чего он боится, то раздал бы вменяемым людям модераторские права, и этого хая не случилось бы в принципе. Значит, Raider, ищите причину своих обид не во мне и моих высказываниях. Я не красна девица, чтобы всех удовлетворять. А в политике своего форума, которая не защитила меня, пользователя, стремящегося сделать и сказать что-то полезное о ZX, и не оградила от тупых зложелателей. Если в глазах ZEK’а пришёл злой оберонщик и всех обосрал, то в моих глазах пришли злые мэйнстримисты и принялись просто смешивать мои разработки и меня самого с *****м, на что я не согласился и принялся аргументированно доказывать свою точку зрения, а поскольку в ответ на удары ногами по голове вежливо улыбаться как-то не принято, то мне пришлось применить сложившийся здесь на форуме стиль общения.
Фух ... Выдержал испытание "чтением" ... Специально решил прочитать все посты ...
Олег, совершенно не важно нужен ли ОБЕРОН большинству. Однако важно нужен ли он хотя бы одному человеку. А такие уже есть. Поэтому я желаю Вам доделать ОБЕРОН.
Только, думаю, что сравнивать Oberon с другими языками просто бесполезно. Это всё равно, что придти к японцу и сказать, что его язык устарел, и пора говорить на прогрессивном английском, ну или наоборот. Лично мне совершенно всё равно на каком языке писать, мне важен результат. И практика показывает, что наилучший результат, например: из трёх языков "Pascal", "Oberon" или "Си", даёт только "Assembler".
Давайте посмотрим в корень проблемы, что надо от языка:
1. Скорость исполнения
2. Компактность
Остальные характеристики всегда будут второстепенными. Переносимость кода, как по-мне, не должна входить в список характеристик вообще, поскольку этот пункт всегда вытеснят первый пункт, и тянет за собой кучу недостатков. Например, я вот только что придумал самый переносимый язык под названием "XorAndOr", назовём его ещё более красиво "XAO" ... Во как звучит ... На трёх операциях Xor, And и Or можно сделать вообще всё. А переносимость, ну просто идеальна ... Но выгоден этот язык будет только на матрицах. Поэтому, чего не добавляй в язык, - всегда будет хуже Assembler'а.
А из этого вывод, что на Speccy с его скоростью и памятью языки высокого уровня будут всегда выглядеть убого, с точки зрения кода. Когда пишешь код на асме мозг работает иначе, и рождаются совсем другие идеи, которые просто пестрят особенностями.
Например: у "Flash Inc." в плеере под Covox есть место микширования трёх каналов в один тремя командами асма, то есть "(a+b+c)/3", это ведь родилось именно потому, что мозг программиста просто жил в Z80.
Или например: "IF A>7 THEN DEC(A)" ни один компилятор не превратит в "SUB 8: ADC A,7"
Получается, что пункт номер "1", осилить практически невозможно.
В итоге остался только один пункт номер "2". То есть единственное, что оправдано, это компактность кода. Собственно я вижу применение любого языка на любых платформах, лишь в виде математики и кранчера данных, ну можно ещё отдать ему рисование каких-нибудь текстов. Однако этот инструмент уже есть и называется BASIC. Вот тут-то и главное !!! Бейсик уже лежит в ROM'е, и если бы Oberon дал бы мне возможность написать набор функций для расчётов чего-нибудь используя при это "ваську", что займёт минимум памяти, и я мог бы этот код таскать по памяти, вызывая его из нужного мне места в Assembler'е, то тогда бы это был оправданны язык.
Но мне кажется, что в итоге этот язык как и паскали, си, бейсики, фортраны будут только называться языком для серьёзных задач. Поскольку умножение это не серьёзная задача, и рисование линии это не серьёзная задача, и рисование полигона это так же не серьёзная задача. А вот если это будет работать невероятно быстро, если это будет заставлять смотрящего произносить фразу "как это оно на трёх-то мегагерцах работает-то ?", то это уже серьёзная задача.
Спасибо, Robus! За терпение и добрые слова. :v2_dizzy_heart: Думаете я хотел уздреть здесь зека? Да нет вовсе! Я хотел уздреть Вас, Rasmer'а, CopperFeet'а, Кладова. Потому что я уважаю этих людей за Спектрум-деятельность и интересные посты. Кстати, здорово что пришли, располагайтесь.
Я почти доделал технологию, которую опубликую если не сегодня, так завтра. Насчёт варки в асме – полностью согласен, это обучение мастерству полным погружением. Я не собираюсь потеснять асм для Z80 Оберон-кодингом. Смысл – сделать программирование для Спектрума более удобным для новичков, дав им быстрый старт в язык, прививающий хороший стиль мышления. Ещё смысл – получить хороший удобный структурно-модульный клей для асм-подпрограмм. А вот последние-то и надо делать сверхоптимальными и хай-кастомизабельными, чтобы не включать в целевую программу неиспользуемые участки кода. Это возможно.
Так что вижу нишу для кроссразработки на Обероне для Спека. А ещё Оберон может помочь использовать хорошие Спектрум-наработки на других платформах. И вести одномоментную разработку одной программы на одном языке для Спека и, например, для Win32/Linux. Это тоже возможно. Заявляю как оберонщик и спектрумист.
Я знаю реакцию на слово 'Оберон'. Мне 15 лет назад подарили диск "Всё для программиста", на котором были компиляторы Modula-2 и Oberon-M. Меня тогда Модула заинтересовала больше, забавная была штучка. На Оберон только посмотрел. А активно работал на TurboBasic, MS-QuickC, TurboC++ и TurboPascal. Мой путь к Оберон-технологиям был долог, и я это пытаюсь донести вам. А Диму оцениваю как человека, находящегося где-то в начале знакомства с Оберонами. Буду огорчён если я стану причиной его дальнейшей нелюбви к ним.
У ZX-Basic масса достоинств, главное из которых – его наличие в ПЗУ. И я одобряю его использование для разработки на самом Спектруме. При кросс же разработке на первый план выходит наглядность программы и беглое её понимание.
Да, с примером облом. :wink: Но надеюсь, сами напишете. :v2_dizzy_king:Цитата:
Тока, если можно - пример чуть посложнее, чем Hello, world. И инструкцию в расчете не на гениев, которые из всех технологий только про Оберон не знают, а для простых смертных, которые для Спеки писали только на asm и Basic. Для всех, то бишь. Вот это дело будет!
Алекс, давайте Вы сами нам скажете насколько сложно программировать для Спектрума на Обероне. После того, как попробуете. Это будет чистая практика.
Читайте ветку http://zx.pk.ru/showthread.php?t=18387
Ругать Оберон с позиции многолетнего на нём ОПЫТА РАЗРАБОТКИ из всех писавших в эту ветку ОБОСНОВАННО могу только я, но, как вы все заметили, не спешу этого делать. Только по одной простой причине: Оберон-технологии ОЧЕНЬ ГИБКИЕ и МОЩНЫЕ. И поддаются лёгкой и быстрой (и надёжной) доработке в любом необходимом направлении. Как доказательство, показываю вам среду разработки НА ПЯТИ ЯЗЫКАХ программирования (Оберон, Оберон-2, Си, Си++, ассемблер процессора Z80) для ZX, которую я сделал на базе Оберон-среды BlackBox и компилятора SDCC за 2 дня. И это, несмотря на молодость проекта, вероятно, УЖЕ самый мощный и удобный инструмент из известных мне ПО ПРОСТОТЕ и ПОТЕНЦИАЛУ для развития (а также по качеству кодогенерации) для высокоуровневой разработки для Спектрума, и в т.ч. для новичков. А уж если его развить. Есть идеи как ЛЕГКО И БЫСТРО (за пару дней бы справился) добавить поддержку языков Паскаль и Модула-2. Да, нету дебаггера и пока нету подсветки синтаксиса. Последнее обещаю сделать. Не для зека, он слов не понимает. Для Alone, Raydac и других собратьев. Теперь пусть все сишники на свете возьмут сто библиотек и попробуют повторить данный проект в данный срок. И я делал это не за деньги, а за совесть, как энтузиаст. В ответ ожидаю доброе слово и немного благодарности. Вопросов по теме и предложений по усовершенствованию.