Как стать автором
Обновить
15
0.3

Пользователь

Отправить сообщение

— Встречали душых людей в IT?

— Конечно встречал, это я.

Последние 20 лет, то есть весь мой опыт жизни в Америке, всё происходит с точностью до наоборот. Чёрный лезет, а белый обязан уступать, иначе белому не поздоровится. И случись любая неприятность, все общественные организации, масс-медиа, суды и власти встанут на сторону чёрного.

Если после "нет ничего", то эта стратегия "Любите и делайте добро“ не имеет никакого смысла. А имеет смысл "воруй-убивай-делай все, чтобы продлить свою жизнь как можно дольше".

Уважаемый mayorovp выше по тексту тоже предложил Rc, но у них есть свои проблемы.

Как тогда предотвратить помещение одного и того же контрола дважды, например, в list, что сломает и логику приложения и структуры данных? Или вообще засовывание контрола самого в себя: list_control. Items[42]=list_control. Это ещё и утечку памяти создаст.

Ag синтаксически различает ссылки-локальные переменные и ссылки-поля объектов и разрешает только одну ссылку-поле на mutable объект, что предотвращает циклы, утечки и нарушения логики приложения, делает нужным GC и не требует unsafe режима. Это встроено в синтаксис и систему типов и проверяется во время компиляции. Пассаж по слабые ссылки не понял, они есть в Расте и они совсем не дорогие.

Rc превращает все контролы в immutable. GUI не может быть immutable.

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

В языке программирования Аргентум это делается тривиально: владеющие ссылки из формы к контролам и из списка к элементам, перекрестные не владеющие между контролами и из модели к контролам и все работает само. Поэтому мне хотелось узнать у любителей Раста, как это делается у них. Получается, никак. Тогда непонятен хайп.

Хотелось бы увидеть какой-нибудь практический пример.

Например, объект ‘from', который владеет контролами, списками групп навигации, аксессибилити метками. Контрол-список владеет несколькими элементами - тоже контролами, которые ссылаются на узлы модели данных. Формы ссылаются на сфокусированные контролы, а метки хранят ссылоки на контролы. Между моделью и элементами формы работает подписка на изменения.

Как эти структуры данных выражаются в виде умных ссылок раста. Как lifetimes и borrow checker предохраняют от случайного шарения контрола между списками, включения группового контрола в самого себя, случайного включения одной и той же метки аксессибилити два раза в форму, других нарушений логической структуры.

Как в Расте предлагается обрабатывать эту структуру данных многопоточно?

Официально: "Metamates".

Если верить греттатунненбергерам, памятник нужно делать из полиэтиленовых пакетов. Они вечные.

  • Автор безапеляционно восторгается LLM. Ок, его право.

  • Автор безапеляционно записывает в троглодиты всех не раздеюяющих его восторгов. Уже не очень ок, но пусть.

  • Из текста не видно, пробовал ли автор сам использовать эти генераторы случайных текстов в реальной программерской работе, или черпает знания из рекламных пересказов гуманитариев. Это не есть гуд.

  • Автор наворачивает свои домыслы на наукообразные рассуждения, не имеющие отношения к вопросу. И это уже реальная проблема этой статьи.

Особенность некоторых ARM. Как видно из мирового опыта использования этих процессоров, отсутствие исключений по делению на 0 не оказывает на реальный продуктовый код никакого влияния.

```Java

class Main {
public static void main(String[] args) {
var v = Long.MIN_VALUE;
System.out.println(v);
System.out.println(Math.abs(v));
}
}

// -9223372036854775808

// -9223372036854775808

```

Так работает two's-complement арифметика по модулю 2^64. Так работает Java, Kotlin, C++...

Кстати, почему числа 9223372036854775808 и 9223372036854775809 ...

Исправлю, спасибо за репорт.

 Неплохо бы ограничить максимальную ширину панели результатов

Сделано

Да, таково преимущество интерпретируемых языков.

Редактор с подсветкой синтаксиса: https://ace.c9.io/

Компилятор Аргентума портирован на ARM64. И, т.к. для генерации кода используется LLVM, он собирает исполняемые файлы для ARM.

Сайт плейграунда запущен на Raspberry Pi (node.js).

При нажатии Run:

  1. браузер делает POST с вашим текстом на compile-link-execute endpoint

  2. ваш исходник записывается во временный файл /temp/<hash>/xNNNtst.ag

  3. запускается CGI скрипт, который:

    1. компилирует agc -target aarch64-linux-gnu...

    2. линкует получившийся obj с libag_runtime

    3. запускает получившийся исполняемый файл с memory&timeout лимитами (1Mb & 5sec) через systemd-run от имени специального юзера.

  4. артефакты сборки/запуска удаляются на сервере

  5. браузеру возвращается отфильтрованный stderr&stdout компилятора, линковщика и вашего запущенного приложения.

Я вначале добавил кнопку "download executable" (Linux/Windows) (x86/Arm) но на это очень нервно реагировали виндовые антивирусы, и поэтому осталась только кнопка Run.

В Аргентуме операции над int выполняются по модулю 2^64 в 2-complement, это не UB.

В словременных процессорах все скаляры все равно хранятся в 64-битных регистрах, и переход на 128 скорее всего не произойдет в ближайшие сто лет, а для работы с SIMD потребуются совсем другие типы данных. Поэтому int Аргентума - это всегда 64 бита со знаком. И других целочисленных типов нет.

В модуле sys есть класс байтового массива Blob, который позволяет читать читать/писать 8-16-32-64 битовые значения в/из int.

Спасибо, посмотрю. Только не понятно, как UUIDv7 помогут в организации лукапа одного объекта по другому. Кстати, сейчас хешпап дает амортизированную константную сложность. Если есть возможность сделать проще/быстрее, буду рад.

Тоже интерфейсы. Причем в отличие от Go/Kotlin указатель на интерфейс занимает не два указателя, а один. Это здорово уменьшает количество исполняемых инструкций и экономит траффик регистры<->память.

Информация

В рейтинге
2 150-й
Зарегистрирован
Активность