31
Общий раздел / Re: Component Pascal vs Oberon-07
« : Январь 14, 2013, 07:27:00 am »Во-вторых у того же msp430 есть 20ти битная адресация памяти. Память остается плоской. Мегабайт ннада? :-)Тогда это в принципе уже можно считать 32-х битной архитектурой. Указатели там сколько бит занимают?
...кстати посмотрел я этот msp430. Набор инструкций довольно простой, думаю несложно будет компилятор написать. Только у меня этого микроконтроллера к сожалению нет, а эмулятор неинтересно.
Это будет гарантированно работать везде и всегда. А вот что выбрать в КП? :-)INTEGER разумеется
Хотя возможно действительно стоит объявить тип, аналогичный size_t(как я писал ранее про Host.Int) в Си. Тогда его можно будет использовать в качестве индекса массива для гарантии полного покрытия на 64-х битных архитектурах.
Большенство программ пользуется автотулзами например, которые проверяют при configure параметры платформы, наличие нужных библиотек, свойств ОС и так далее. Если configure отработало нормально, значит с очень большой вероятностью, все будет ОК.Не говорите мне про этот ужас. Я с ним под Haiku намучился. Если под Haiku есть проблемы, то представляю какие серьёзные будут проблемы с микроконтроллерами.
А теперь я прошу доказать тезис, что любой Обероновский (в том числе любого Оберона) код будет гарантированно работать и работать везде одинаково.А чего тут доказывать; спецификация оберонов чётко описывает все детали, критичные для исполнения. В отличии от Си там нет "undefined behavior". Другое дело, что не каждый компилятор соответствует спецификации. Например компилятор BlackBox'а содержит несколько критичных для безопасности багов и некорректно реализует логику оператора WITH.
Никто не мешает. Просто жалко памяти :-) КПД 50, а тои 25% это как-то маловато будет.А какая разница объявить целое как INTEGER или LONGINT если всё равно логика программы работает только в диапазоне INTEGER'а. Из-за выравнивания КПД в любом случае будет низким.
Ни то ни другое не является вменяемой заменой. Просмотреть экспорт - там не будет комментариев и некоторых милых нюансов, которые в рукописной спеке всегда видны. То есть это тупо машинная выдача.Скопируйте эту выдачу в документацию и напишите какие хотите комментарии.
С тем же успехом я могу просматривать експорты dll и на основе этого пытаться писать приложение.Не можете. Там нет информации о типах, именах аргументов процедур и т. д.
А документация на модуль (писаная человеком) во-первых не всегда естьHeader с комментариями - это уже по сути документация. Некоторые программы типа Doxygen'а даже умеют по ним HTML документацию с навигацией составлять.
, во-вторых устаревает, в-третьих она НИКАК не согласована с реальной реализацией. Очередной источник ошибок. Спасибо, я как-нибудь с хедерами (а лучше - с Адскими спеками на пакет)Извините, но если вы не можете согласовать документацию с кодом, то у вас плохая организация разработки. Оберон тут не виноват. Я конечно понимаю, что у каждого свой подход к разработке, но...
Рукотворный костыль. Тем более что он работет только в ББ, а мы про язык говорим.Если вам угодно, можете настроить выделение жирным шрифтом идентификаторов со "*" в каком-нибудь Notepad++ или как ваш любимый редактор/IDE называется.
Ну, поэтому и появилась например scala и kotlin. Особенно прекрасен последний (ибо скала все же тяжеловата для восприятия).Т. е. синтаксис оберона всё же лучше Java?
Они там по сути пулы делают. С рукопашным убиением пулов.Они же не так делаются...
java-приложения грузятся во-первых не полторы минутыЛично видел. Простая графическая Java-программа в Windows грузилась очень долго. Вообще Java в Windows выглядит и работает как-то криво и инородно.
Оптимизации во время исполнения в некоторых случаях дают такую оптимизацию, которая в принципе на этапе компиляции не достижима (потому что на этапе компиляции для этого просто нет информации). Получается смешно - нужно выбирать, нам нужен реалтайм, или же мы хотим чтобы приложение быстро работало :-)Мне не надо такой оптимизации. Мне надо, чтобы за миллисекунды запускалось, как BlackBox.
Обероны вообще и КП в частности, в наше время не являются безопасными языками. Безопасный это haskell например. А лучше - Agda.Component Pascal сам по себе формально является чисто безопасным ЯП. Модуль SYSTEM - это BlackBox-специфичное расширение языка, не имеющее к Component Pascal'ю никакого отношения. Также как говорилось выше компилятор BlackBox содержит критические уязвимости, позволяющие написать эксплоит и обойти защиту.
...и в С++, если нужно безопасно, то можно сделать безопасней чем в Обероне.В С++ не может формально считаться безопасным, т. к. там допустима арифметика указателей и небезопасное управление памятью.
Насколько я помню, в КП нет модуля Meta. Так что и проблемы нет :-)Вообще в сообщении о языке написано:
Цитировать
Appendix D: Mandatory Requirements for EnvironmentХотя в конце сказано, что для слинкованных модулей (как раз случай для микроконтроллеров) допускается исключить эту информацию. Так что ООП и RTTI Component Pascal'я можно смело использовать в микроконтроллерах.
...
3) Modules and at least their exported procedures (commands) and exported types must be retrievable dynamically. If necessary, this may cause modules to be loaded. The programming interface used to load modules or to access the mentioned meta information is not defined by the language, but the language compiler needs to preserve this information when generating code.
Except for fully linked applications where no modules will ever be added at run-time, a linking loader for modules is required. Embedded systems are important examples of applications that can be fully linked.
Ну, ладно, не удачный пример. Пусть будет АВЛ-дерево. Или красно-черное.Вы часто в своём коде этим пользуетесь напрямую? В BlackBox вообще сложнее Shell-sort(сортировка ключей строковых ресурсов) да бинарного поиска(поиск имён символов при импорте) я алгоритма не нашёл. При этом BlackBox работает весьма шустро.
Да что там, можно и по алгоритмам пройтись. Например сортировки. Обогнать стандартную шаблонную с++-сортировку очень сложно. То есть реализовав одну из стандартных сортировок (из книжки Вирта например) его не обогнать.