Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - valexey_u

Страницы: 1 ... 4 5 [6] 7 8 ... 201
76
Теперь тестовые прогоны делаются на сервере. Результаты в абсолютных величинах могут измениться (и изменятся).

77
И да, правильно сделал, что открыл компилятор. По крейней мере он получился таким.. Очень ручным что-ли. Одна фишка безгеморройной кросскомпиляции дорогого стоит.

78
Сборщика мусора ведь нет?
:)
С самого начала разработки компилятора, я решил максимально упростить задачу. Я не был уверен, что у меня на это хватит способностей. Поэтому, получилось то, что получилось. Однопоточный сборщик мусора не ахти какая сложная вещь, но он меня не интересует. Многопоточный, напротив слишком сложен, поэтому я от него отказался. Вообще, я решился опубликовать компилятор, только потому, что Rifat каким-то образом умудрился сделать кодогенерацию еще хуже. А раз так, думаю, то и я могу. Хотя сначала, делал только для себя и не собирался это никому показывать.
Не, я не к тому что реализация без GC это что-то плохое :-) Я просто уточнил. Есть туча оберонов без GC. И они без GC, полагаю, ровно по той же причине.

79
Я прикрепил архив, добавил туда бинарники для Windows и Linux, а также файл test.ob07 -- пример консольного вывода для Linux.

Спасибо! Проверил - компилируется 32битный бинарь, запускается. Пока всё хорошо.
Сборщика мусора ведь нет?

80
Сначала, надо уяснить, что Oberon-07, это язык, предназначенный для быстрой реализации с минимальными затратами и сравнительно эффективного применения в случае простейшей реализации. В связи с этим, все разговоры об умных компиляторах, современных средствах отладки, шаблонах, замыканиях и т. д. лишены смысла. Многие недостатки языка либо упрощают реализацию, либо упрощают отладку в условиях, когда есть только голый компилятор без каких-либо инструментов.
Полностью согласен. Ещё нюанс - до кучи оно еще оптимизировано под то, чтобы писать в одиночку и без IDE. Собственно как Вирт и работает над системой Оберон. В этом плане язык весьма неплохо продуман и довольно удобен.

- ран-тайм проверки (индексы, указатели). Замедляют и так небыстрые программы. Но оказывают неоценимую помощь, позволяют быстро выявить такие ошибки, которые бывает очень трудно найти без пошагового отладчика и прочих средств. Вряд ли я хоть что-нибудь написал бы на O7 без них. Конечно, люди разные, есть и такие, которые могут кодировать сразу без ошибок на любом языке, но я к таким не отношусь.
Это всё же не часть языка, в сообщении о языке про это ничего не сказано. Это часть Оберона как операционки. Ну и, бывает полезно иметь возможность их отключать.

- сильная типизация. Тоже отлавливает очень много ошибок. И да, упрощает реализацию ).
Согласен.

- единственный выход из процедуры, отсутствие прерываний циклов. Спорная фича. Затрудняет кодинг, увеличивает размер и снижает эффективность кода, немного упрощает отладку.
Идея визуализации потока управления через "отступы". Это работает не очень хорошо на таком уровне, мягко говоря.

- обязательная квалификация идентификаторов. На первый взгляд, избыточно. Раздувает и без того не очень компактный оберон-код. Но вот, как-то мне надо было просмотреть одну программу на паскале, так я задолбался искать процедуры по всем модулям. Конечно, эту проблему легко решает IDE, но ведь я говорю о простейшей реализации...
С одной стороны полезная штука, с другой стороны, можно было сделать более человечески - разрешить использовать идентификаторы без квалификации если они в импортах были явным образом перечислены. Т.е. что-то вроде IMPORT (function1, typeT, somthingElse) from MyModule, MyModule; -- тут можно без квалификации будет использовать function1, typeT, somethingElse а все остальное из модуля MyModule придется использовать с квалификатором: MyModule.something .

То есть можно было сделать лучше, можно но не обязательно, ибо ресурсы у реализатора ограничены - всё делаем в одно лицо.


- SET. Применяется нечасто, но бывает полезен, когда надо упаковать несколько булевских значений в одну переменную, чтобы не раздувать список параметров.
SET я использовал (при программировании микроконтроллеров) для работы с битиками. Весьма удобно. Железяки иногда требуют записи определенных битиков в определенные места - вот для этого оно вполне ничего себе.

- Беззнаковое целое. Я ни разу не пожалел о его отсутствии. Конечно, бывают случаи, когда этот тип был бы полезен, но для 32-битной реализации это бывает нечасто. Для 64-бит, ИМХО, вообще "не стОит выделки".
Стоит выделки. См. задачку например. Т.е. на моей практике регулярно попадается что-то такое, что требует именно беззнакового целого. И не из за того, что оно в два раза более емкое чем знаковое. Т.е. востребованность беззнаковых типов сильно зависит от множества задач решаемых человеком. Некоторым программистам наверняка беззнаковые и не потребуются, но если вдруг потребуются, будет неприятно.

81
Новое решение работает корректно на всех размерах кроме 4Гб.

82
Между тем, появилось решение использующее вот этот компилятор (компилирует в Си, насколько я понимаю): https://github.com/ComdivByZero/vostok

83
Давно уже можно генерить для Linux, в инструкции написано. Только без библиотек это неудобно. И зачем тестировать на производительность игрушечный компилятор?
Теперь осознал и отвечу: специфика этой задачки такова, что она реально очень похожа на реальные задачи. Т.е. на задачи, где все упирается в IO и продуманность алгоритмов. Твой компилятор не имеет особого смысла тестировать на передыдущей задаче (где мы сортировали пузырьком), но вот на этой - имеет смысл.

Важно понять какую цену (по производительности, трудозатратам и так далее) мы платим за независимость, т.е. за реализацию всего с нуля в условиях ограниченных людских ресурсов.

И также хочется сравнить этот подход (когда все пишем сами) с подходом когда есть язык чуть посложнее, поудобней, считается что компилятор стабилен и писали его вполне профессиональные люди под коммерческие задачи, т.е. с ББ.

Решение базирующееся на твоем компиляторе/языке теоретически может даже выиграть первый раунд по производительности, просто за счет алгоритмов и отсутствия лишних прослоек между программой и системой.

84
Да, еще вопрос к akron1: где взять актуальную версию компилятора?
Вроде вот последняя версия: http://board.kolibrios.org/viewtopic.php?f=33&t=2443&sid=06ed798bbd09a775c48ce781636a1776&start=30#p66481
Хм. А собирать его чем? В архиве предположительно только исполняемый файл для калибри. А я эльфов хочу...

85
Modula-3 компилятор (64битный) тоже похоже будет работать. В общем, будут желающие на модулу - уточняйте что именно вам нужно.

86
А вот какие типы там есть: http://nongnu.org/gm2/type_compatibility.html

87
А, да, оно собралось и собирает под AMD64

88
GNU Modula-2 compiler собрался. Hello world тоже собрался.

MODULE hello ;

FROM StrIO IMPORT WriteString, WriteLn ;

BEGIN
   WriteString('hello world') ; WriteLn
END hello.

Таким образом, компилятор для модулы есть. С Modula-3 сложнее.

89
Ну, WinAPI в *nix'ах нет :-) А что сейчас модно использовать вместо Files?
Так в *nix'ах и ББ нет официально.  Но там же есть системные вызовы и libc.
А вместо Files обычно используют Files. :) Для обычной-то работы нормально.

Тут играем, тут не играем, а тут рыбу заворачиваем :-)

ББ нынче полный опенсорс, и понятие официоза стало весьма расплывчатым. Свободное ПО же. Исходники есть и доступны под правильной лицензией? Значит официально вполне. Пусть не релиз, а бета, но есть же. Тем более что нам не много надо - нам же даже гуя не надо. Так, компилятор консольный чтобы консольные приложения же лепить.

90
Ну, WinAPI в *nix'ах нет :-) А что сейчас модно использовать вместо Files?
А Wine тогда что такое?
Костыль.

Страницы: 1 ... 4 5 [6] 7 8 ... 201