Как стать автором
Обновить
11
0
Иван Денисов @ivan_denisov

научный сотрудник, программист

Отправить сообщение
Заметил, что не 10 лет статье было в 2016 году, а 20 лет. А скоро будет 30 :) А статья в силу сложившегося кризиса в производстве микросхем, все более актуальна…
Про обработку исключений с сделал небольшой пример в Блэкбоксе, как это реализуемо.
forum.oberoncore.ru/viewtopic.php?f=134&t=6536&p=113147#p113147
Средства есть, но будут ли пользоваться. Всё же режим с ранним отловом ошибок и явной проверкой предусловий — более честный что-ли… надо применять лучше парадигму контрактного программирования, чем парадигму отлова исключений выполнения.
Про серьезные задачи вопрос времени, конечно. Можно и без гигабайтных библиотек.
Вот скажем есть модель, демонстрирующая решения уравнения Шрёдингера.
visual.sfu-kras.ru/ready/264
Да, некоторое время понадобилось, чтобы разобраться с алгоритмами поиска собственных значений и собственных векторов. Я взял реализацию QL-алгоритма из open-source библиотеки Lib для Блэкбокса. А метод прогонки написал сам по книге Калиткина. Зато это была работа в стиле настоящего open source, когда ты берешь кусочек чужого кода, а не чужие библиотеки.
Второй пример, работа с матрицами: visual.sfu-kras.ru/model/95
Алгоритм приведения матрицы к треугольному виду и решения системы методом Гаусса очень простой. Да, надо знать основы математики на уровне первого курса вуза, но опять же это меньше 20 строчек кода.
Раз уж мы в хабе «Open source», то стоит отметить, что с недавнего времени XDS версии 2.6 опубликована в открытых исходных кодах под лицензией Apache License 2.0 github.com/excelsior-oss/xds-2.60
XDS ­­— это отечественный оптимизирующий компилятор для Оберона-2 и Модулы-2. Скорее всего я не ошибусь, если скажу, что некоторые коды для спутников связи ГЛОНАСС написаны с применением этого компилятора.
Звёздочка действительно семантически пересекается с указателями из мира Си языков, есть такой момент. Тут я не мог диктовать какие-то изменения синтаксиса, так как решил взять как есть язык Оберон из академической среды без изменений. Влад Фольц работает наз своим экспериментальным языком Eberon github.com/vladfolts/oberonjs/wiki/Eberon
Там есть ряд полезных изменений, однако звёздочка оставлена как есть.
Если делать проекты в популярных IDE, то наверное вы реже сталкиваетесь с такой проблемой. Динамическая загрузка модулей в системе Блэкбокс для эвристических алгоритмов выглядит несколько подозрительно, поэтому была серия проблем такого рода для моих приложений. Мы решали вопрос путём загрузки в специальные формы на сайтах антивирусов. Еще цифровой сертификат также решает проблему отчасти, снижая вероятность ложно-положительных срабатываний. Так или иначе — когда код в браузере, распространять приложение намного легче :)
Спасибо за конструктивный отзыв. Похоже, что Julia — перспективный язык, стоит попробовать.

Поясню, что в проекте транслятор загружается в браузер к клиенту. Минимализм Оберона позволил сделать очень «легкий» транслятор, так что во время сборки программы пользователя не происходит обращений к серверу вовсе.

С обработкой ошибок во время выполнения, соглашусь, что в Обероне нет языковых средств для обработки исключений. Это накладывает определённые ограничения на архитектуру проектов, и подобные проверки обычно реализуются явным образом. Также обработка исключений ложится на плечи среды поддержки выполнения. Как в микроконтроллерах есть такая система, которая позволяет после перезапуска программы проанализировать, что произошло: wiki.oberon.org/ob/o7/debug Так и в Блэкбоксе (промышленной open-source среде IDE для Оберона), есть возможность заменить стандартный TRAP диалог системой обработки исключений для продакшн версии программы. В проекте, который я описываю, пока никакой системы обработки исключений не предусмотрено, так что в случае срабатывания исключения (АВОСТ, выход за границу массива и т.п.), программа просто останавливается и сообщает об ошибке. Может быть для образовательных задач — это правильный выбор. Буду анализировать отзывы.
Что-то несколько выше уровня восприятия токенов языка программирования создает это ощущение полноты и правильности. Если вам будет любопытно, то рекомендую посмотреть перевод лекции Роберта Гризмера «Эволюция языка программирования Go»: www.youtube.com/watch?v=ZbtB1Aqc41A Он очень точно выводит некоторые проблемы, которые стоят перед разработчиками языков программирования.
«совсем каплю Оберона» любопытно, что вы имели в виду?

Информация

В рейтинге
Не участвует
Откуда
Красноярск, Красноярский край, Россия
Дата рождения
Зарегистрирован
Активность