Обновить
-6
0
Иван Левашев@OCTAGRAM

Удалённый программист Delphi+Ada

Отправить сообщение
ЧСХ писать на Аде под писюк наверное станет только псих (когда есть элитный шарп)


Помню, Delphi сначала начали делать под .NET. Настоящее унижение, что моё любимое число 8, в долгожданной версии Delphi 8 стало проклятьем, эта Delphi ничего другого не умела. Потом какая-то муха покусала многих разработчиков, они к мёду нативных программ начали подмешивать дёготь дотнета. И МатКАД, и АвтоКАД, и не обошла беда стороной RAD Studio. Подсказки кода почему-то надо было сделать в дотнетовской части. К счастью, нашлись народные умельцы. В Delphi 10 Lite вырезано всё, что связано с дотнетом.

Вот так нативной частью программы, без трассирующей сборки мусора, народ с удовольствием пользуется, а дотнетовскую дрянь отпилит первый же риппер. А какую часть хотите писать вы?
Применительно к таблице из [EFF], раз уж мы доказали отсутствие исключений, то можно исключать проверки из кода, и тогда скорость повыше. По такому пути шли в проекте CubeSat, попутно решая другую проблему. Родного транслятора Ады для National Instruments нет, взяли AdaMagic.

Но AdaMagic из коробки для Linux и Windows, а на других надо что-то думать с механизмом исключений, портировать рантайм. Нет исключений — нет рантайма — нет проблем.
Из коробки не может, как и чистая Ада, без SPARK. Но вот тут какие-то инструменты вижу:
alastairreid.github.io/rust-verification-tools
Язык Mesa по-своему интересен. После того, как Хоар изобрёл мониторы, начались реальные попытки встраивания мониторов в язык программирования. Например, в книге «Операционные системы» Танненбаума используется несуществующий Pidgin Pascal со встроенными в язык мониторами. А из реальных языков это Active Oberon и Ada. И в Pidgin Pascal, и в AO мониторы явные. Отличие от Ады можно увидеть в том, что, например, в AO можно, будучи в мьютексе в глубине защищённой монитором процедуры, атомарно выйти и ждать условную переменную. А в языке Ада все такие ожидания навешиваются только на вход в entry, но никак не в середину, а если надо из середины отпустить мьютекс и чего-то ждать, то для этого можно сделать requeue в другой entry.

Mesa — ещё один паскалеподобный язык программирования, в котором мониторы были встроенными. Или, наверное, лучше сказать, алголоподобный. Потому что я его смотрел, и после адско-обероновского чистописания Mesa довольно загрязнена спецсимволами. Когда Вирт делал Modula-2, он вдохновлялся Mesa, но, как можно убедиться, виртовские языки сильно почище. Я изучал материалы по Мезе из исторического интереса. Интересно поузнавать немного про отбракованные ветви. Например, сейчас почти нигде не осталось векторных обработчиков исключений. В Common Lisp Condition System тоже была возможность обрабатывать исключительную ситуацию с восстановлением. Казалось бы, почему бы и нет. Оказывается, эта особенность языка причудливо сталкивается с мониторами. Оказывается, векторный обработчик исключения запросто может вешать программу, не в силах войти в мьютекс или дождаться условной переменной. В Мезе этому пытались противостоять, на языковом уровне делая у защищённых процедур что-то типа предбанников, в которых мьютекс не взят, и доступа ко внутренним данным нет. Сейчас в языках программирования как бы надпись «Здесь живут драконы», и только через язык Меза можно на этих драконов посмотреть. Убедиться.

Другой интересной особенностью Мезы был упор на обильную многозадачность. То есть, Меза тогда — как Go сейчас.
А в Shadow Warrior было управление техникой, а не только в охранные камеры смотреть, как в Дюке.
Взгляд вверх-вниз там был сделан как прокрутка кадра. То есть, это как если бы монитор был не 4:3 формата, а 4:9, но все 3 монитора 4:3 не видно, а показывается одна треть на выбор игрока. Вертикальные линии остаются параллельными.
Маловато они наэкспериментировали. Поделюсь своими находками.

В зазеркалье можно войти по dnclip, но если его выключить, игрок застревает на месте. При попытке ходить игрок судорожно дёргается на одном месте.

В движке Билд всё состоит из секторов, границами у которых служат либо стены (белые), либо границы соседних секторов (фиолетовые). Зазеркалье всегда делают как одну комнату с белыми стенами, и только само зеркало — фиолетовая стенка. Я не видел, чтобы пробовали в зазеркалье делать соседние сектора, то есть, фиолетовые стенки, отличные от самого зеркала. Я сделал, и вот, что получилось. Эти соседние сектора уже не считаются зазеркальем. По этим секторам становится возможным ходить без читов. У этих секторов рисуется пол и потолок. Можно рядом с зеркалом или не очень рядом сделать дверь или просто проход. Идём по туннелю и приходим в зазеркалье без читов. Конечно, можно ещё телепорт сделать туда или обратно.

Движок рисует зазеркалье крайне примитивно. Скажем, я сильно растягивал комнату зазеркалья, чтоб было, где побродить. И вот стою я в зазеркалье снаружи кинотеатра, смотрю на отражённый кинотеатр и сквозь все стены вижу вдалеке зеркало, через которое я пришёл. Это если с читами ходить. Если себе тропинку сделать, то я вижу эту тропинку сквозь все стены реального мира. Например, в самом первом уровне если зазеркальная тропинка огибает здание с секретной комнатой на углу, то тропинку видно сквозь угол здания. Нашёл решение. В зазеркалье можно поставить внутренние стены (белые), и тогда при трассировке лучей эти объекты будут загораживать. На всех твёрдых (белых) стенах текстура отражения реального мира, что и хотелось добиться. Если сидеть с калькулятором, белые стены рисовать в точности в тех местах, где отражение стен реального мира, то ура, ура! Стены реального мира начинают загораживать тропинки в зазеркалье. Игрок становится жителем как бы тонкого плана, наложенного поверх обычного плотного. Трёхмерный оверлей. А если нам хочется в зазеркалье стену или столб, которые будет видно только в зазеркалье, огораживаем белую стену тончайшим слоем фиолетовой границы сектора. Всё, это уже не стена в зазеркалье, а стена в обычном секторе, она отрисуется как положено.

Я мечтал сделать карту, где бы это полностью эксплуатировалось. Из зазеркалья можно нажатиями кнопки включать ракетницу в реальном мире, стреляя по пробегающим противникам. Или самому отправлять ракетницу в телепорт. Ты их видишь, они тебя — нет. В зазеркалье можно поставить камеры и наблюдать из обычного мира. Конечно, и само зеркало можно не прятать, а сделать большое на всю улицу. По-разному можно распорядиться переходом между мирами. Можно разные команды рождать в разных мирах. Можно всех рождать в одном мире, а переход в другой мир сделать односторонним. Из реального мира в зазеркалье в один конец. Или наоборот. Можно, как в Pollen, переплести миры системой телепортов, чтоб постоянно между ними надо было прыгать. Можно сделать транспорт синхронно в зазеркалье и обычном мире. Скажем, заходим в метро, жмём кнопку, нас перевозит в зазеркалье. А в реальном мире синхронно в точку назначения приезжает пустой вагон и по прибытии открывается дверь. Из неё никто не выходит, но ясно же, что кто-то «приехал». Ещё, может быть, можно заскриптовать создание в реальном мире спрайтов отпечатков подошв, пока игроки ходят по зазеркалью.
Там нет никакой магии. Чтобы отрисовать картинку в зеркале, делается снимок камеры из зеркально отражённого ракурса изнутри зеркальной комнаты. Отражается и рисуется поверх текстуры зеркала. И это та причина, почему с маленькой зеркальной комнатой глюки. В зазеркалье неоткуда снимок сделать. В 2,5D движке Build выход за границы карты был фатален. В Build всё существует внутри секторов, а сектора соединяются. Вне секторов не просто вакуум, там ничто (астрофизики называют это текстурой).
Linux Standard Base определяет двоичный стандарт на пользовательское окружение (библиотеки). Gtk+ там есть. Коммерческий софт компилируется под LSB, а потом запускается в самых разных дистрибутивах, используя пакеты для поддержки LSB.
LSB туда поставить можно со стандартным GTK+?
А почему бы не взять Delphi для Linux? И CrossVcl или FmxLinux
А так-то да, Россия постоянно конфликтует с Западом зачем-то.


Как при Иване Грозном русские земли под крылом Москвы собрала вместо Польши, так и конфликтует, ух, она какая плохая, нарушила все планы, самозванка.

Авось на 101й раз предложение «а давайте нагнем этих американцев с их требованиями» будет встречать адекватную реакцию и встречный вопрос «а может со всех разумных точек зрения для России лучше с ними дружить вместо того чтобы страдать хренью?»


Во-первых, нам не нужен Запад, чтобы развивать совместную с Китаем и другими странами ШОС науку. Если где-то в важных моментах что-то до сих пор завязано на Запад, так надо перевязаться поскорее, чтоб они исчерпали возможности гадить нашим странам.

Упомянутая дружба больше попахивает шестерением. Единственно интересная дружба — дружба с сильной позиции. Шестерение ведёт в прямо противоположном направлении. Чтобы быть сильными, надо блюсти собственные интересы. Также надо адекватно вести отношения с партнёрами. Неправильно: с хорошими свинья, со свиньёй хорошие (Стокгольмский синдром). Правильно: зеркалим, время от времени делая учтивые жесты, чтоб разцикливалась ситуация, если это возможно. Что вовсе не факт.

Пока что с нами в достаточно хороших отношениях Китай, а США прут свиньёй.

Стокгольмский синдром засел в обществе достаточно глубоко. Вот, например, вроде бы все знают, что США страна-агрессор, и страны с большим присутствием католицизма довольно часто страны-агрессоры, а с Китаем мы в ШОС и БРИКС. И тут на днях пара праздников случилась. Один католический, так называемый Святой Валентин, другой Китайский Новый Год. Первый празднуют отнюдь не католики, а чуть ли не все, а второй как-то еле заметно. И в магазинах по первому поводу скидки были, оформление праздничное было, а по второму поводу почти нет. По логике, должно быть наоборот. И что, это мы так идём к успеху?

Ну я понимаю, досадно, что на высоком уровне медленно процессы идут интеграционные. Но кто нам доктор, если мы внизу не можем наконец себе объяснить, кто нам близкий, а кто далёкий. И действовать соответственно. К каждому же не приставишь психолога, лечить от Стокгольмского синдрома. Самим надо разбираться. Ни дружбы, ни семьи со Стокгольмским синдромом не получится. Ни восстановления страны. И в большом, и в малом один и тот же принцип.
С пробуждением!


На счёт пробуждения тоже как-то не очень понял. А когда у нас было иначе? Когда кое-кому не сиделось в ЕАО, так что Рейгана проняло. Или когда адвоката мошенника назначили сакральной жертвой, и прошлую санкцию заменили на новую. Не прекращая, по сути.

Всегда мы кому-то не нравились, всегда кто-то ближе был, кто-то дальше. В 70е Европа была ближе, Китай дальше. Сейчас поменялись ролями. А в общем ничего нового.

Политика России, приводящая к политике отмены России за рубежом


Если автор никакого другого смысла не вложил, то следует переформулировать, как

Слабость суверенитета России, выражающаяся в недостаточном участии в союзнических проектах, вроде Университета ШОС, в который я до сих пор без понятия, как поступить на программистскую специальность. Хотя бы поступить, не то что публиковаться
Англоязычные мигранты в Северной Америке не умеют пользоваться переводчиками?
Это всё да, но мы же теперь с Китаем как новая Франция и Германия. У нас свои ближние круги, с ШОС, БРИКС, ЕврАзЭС, и при чём тут США и ЕС.
Рука тянется открыть интервью Никлауса Вирта:

Его руководство по применению «Паскаля» было переведено на многие языки и до сих пор остается бестселлером, но денег за это Н. Вирт практически не получает. «У меня, собственно, никогда не было цели разбогатеть. Я просто получал удовольствие от исследовательской работы, кроме того, мне в Высшей технической школе и так платили довольно хорошо», — говорит Н. Вирт, и это звучит вполне искренне.


И перечитывать. И перечитывать.
Политика России, приводящая к политике отмены России за рубежом

Какая такая политика и в чём это выражается? И за каким рубежом
ненативных контролов Qt

Столбовая дорога современного Delphi, FireMonkey, в конечном итоге тоже такого типа получилась.

Свои компоненты невозможно интегрировать в панель редактора форм

Да, в этом плане Delphi IDE блистает.
Ничего этого не предлагают

Qt в сочетании с Адой или C++ — это как минимум нативный код и высокая скорость функционирования приложения.
Положить рядом поле с json данными, ну да, нерешаемая задача.


Для ЦБ РФ просто. А остальные банки гоняют на рейсах через ЦБ РФ в заданном им формате. Внутри банка между клиентами, да, документооборот можно устроить.

Информация

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