[13:25:16] <ada_ru> (reznikmm) отвечает (I_vlxy_I) на <Vadim https://youtu.…>
Я посмотрел тоже
[13:25:56] <ada_ru> (reznikmm) похоже в С++ выехали за счет каких-то "временных объектов", которых в Аде нет и не предвидится
[13:26:48] <ada_ru> (reznikmm) Значит нам остается или COW или тупое копирование. Но COW плох только из-за атомиков. А что если привязать строку к задаче?
[13:27:39] <ada_ru> (reznikmm) добавить поле Task_Id, и модифицировать счетчик только если значение совпадает с текущей задачей. Тогда атомики не нужны
[13:28:04] <ada_ru> (insert_reference_here) отвечает (reznikmm) на <добавить поле Task_I…>
И что, в каждую строку добавлять?
[13:28:35] <ada_ru> (reznikmm) да, это же не много
[13:29:15] <ada_ru> (reznikmm) для "малых" строк это место пойдёт под хранение символов.
[13:29:23] <ada_ru> (insert_reference_here) А как строки между тасками передавать?
[13:29:46] <ada_ru> (reznikmm) Если не совпадает Task_Id, то задача сделает себе копию
[13:29:48] <ada_ru> (insert_reference_here) Как их шарить между тасками?
[13:30:22] <ada_ru> (reznikmm) Передавать, как и остальное в Аде, через рандеву и защищенные объекты
[13:30:27] <ada_ru> (insert_reference_here) отвечает (reznikmm) на <Если не совпадает Ta…>
У тебя получился CoW
[13:30:55] <ada_ru> (reznikmm) Да, но без атомиков
[13:32:16] <ada_ru> (reznikmm) Если строка через передана рандеву, то ею владеет другая задача, следовательно счетчик ссылок > 0, строка не может измениться пока не закончится рандеву и можно ее спокойно скопировать
[13:33:06] <ada_ru> (insert_reference_here) отвечает (reznikmm) на <Если строка через пе…>
А тут уже атомики нужны
[13:33:19] <ada_ru> (reznikmm) Если строка берётся из защищенного объекта, то тоже счёткик > 0 до выхода из защещенной подпрограммы
[13:33:38] <ada_ru> (reznikmm) Зачем
[13:33:41] <ada_ru> (Vadim) Шлюз IRC не пешпт?
[13:33:57] <ada_ru> (reznikmm) отвечает (Vadim) на <Шлюз IRC не пешпт?>
щас перезапущу
[13:34:14] <ada_ru> (Vadim) Строку в рандеву можно передать как in out. Занавес.
[13:35:47] <ada_ru> (reznikmm) другая задача не будет счетчик менять
[13:35:55] <ada_ru> (insert_reference_here) отвечает (reznikmm) на <Зачем>
Потому что из-за неатомарных инкрементов у тебя строка может быть освобождена раньше времени
[13:38:55] <ada_ru> (godunko) Главная проблема здесь - ограничения на использование строки, более строгие нежели предполагается по умолчанию.
[13:39:24] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <похоже в С++ выехали…>
Разве их нет? Если функция возвращает значение, это значение разве не временный объект?
[13:39:54] <ada_ru> (godunko) Объект любого типа можно хранить в глобальной переменной и использовать любым образом в разных нитях
[13:40:15] <ada_ru> (I_vlxy_I) В Аде есть все то же, что и в С++98. А в с++11 добавили мув семантику, которая упорядочила работу с временными объектами
[13:40:16] <ada_ru> (godunko) Ограничение только одно: исклчен параллельный доступ.
[13:40:40] <ada_ru> (reznikmm) отвечает (I_vlxy_I) на <Разве их нет? Если ф…>
Компилятор тбе не скажет, временный он или нет, ты не можешь иметь отдельный код для временных объектов
[13:41:07] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <Компилятор тбе не ск…>
И в с++ не можешь
[13:41:27] <ada_ru> (I_vlxy_I) Но ты можешь написать код который будет вызван в случае если объект временный
[13:41:54] <ada_ru> (reznikmm) отвечает на <(godunko) Ограничени…>
Доступ вне защищенных объектов против правил, для строки им можно принебречь.
[13:42:20] <ada_ru> (reznikmm) отвечает (I_vlxy_I) на <Но ты можешь написат…>
В Аде такого нет.
[13:43:08] <ada_ru> (reznikmm) Какие ещё затыки кроме in out в рандеву?
[13:46:44] <ada_ru> (godunko) защищённые типы, задачи и рандеву - прошлое индустрии.
[13:47:12] <ada_ru> (godunko) hypher threading, multicore, multicpu - настоящее
[13:48:04] <ada_ru> (godunko) Крайне не эффективно использовать "старые" концепции на современном оборудовании и в современном стиле
[13:48:27] <ada_ru> (godunko) И такой базовый тип как строка - просто обязан работать в подобное окружении.
[13:48:30] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <Какие ещё затыки кро…>
а что такого есть в in out чего нет в ссылках С++? Которые foo&
[13:49:25] <ada_ru> (godunko) Пример? Поступил HTTP запрос, создан объект в нити X, отправлен запрос в БД, нить убралась обслуживать другой запрос
[13:49:59] <ada_ru> (godunko) Поступил ответ от базы данных, произвольная нить подхватила его и... ей оказывается не принадлежит строка.
[13:50:03] <ada_ru> (I_vlxy_I) смотри, в Аде допустим у тебя есть record у которого в одном из полей имеем access, ту бишь указатель. когда ты эту штуковину копируешь куда-нибудь у тебя, по сути происходит move как раз - ибо указатель копируется, а вот содержимое того, куда он указывает - нет.
[13:50:18] <ada_ru> (I_vlxy_I) в С++11 просто позволили эту семантику кастомизировать и делать корректной
[13:50:20] <ada_ru> (I_vlxy_I) грубо говоря
[13:50:24] <ada_ru> (I_vlxy_I) управлять этим
[13:50:34] <ada_ru> (reznikmm) отвечает (I_vlxy_I) на <а что такого есть в …>
Разница, как я вижу, только для простых типов, в Аде они передаются по копированию
[13:50:52] <ada_ru> (I_vlxy_I) А в Rust до кучи добавили compile time проверки на то, что мувнутый объект никто точно использовать не будет
[13:51:28] <ada_ru> (godunko) Примечание: в language design team была впихнута идея move constructors, которую будут рассматривать как часть типов с владельцем.
[13:51:51] <ada_ru> (reznikmm) отвечает на <(godunko) Поступил о…>
Скопировать строку по сравнению с переключением контекста не так и долго
[13:52:40] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <Разница, как я вижу,…>
ну, это не тот случай когда move-семантика в С++ работает 🙂
[13:52:50] <ada_ru> (reznikmm) отвечает на <(godunko) Примечание…>
Т.е. нам ничего изобретать не надо? Это же прекрасно!
[13:53:09] <ada_ru> (I_vlxy_I) отвечает на <(godunko) Примечание…>
там еще мув-семантику присваивания нужно
[13:53:25] <ada_ru> (I_vlxy_I) конструкторов может быть не достаточно
[13:54:36] <ada_ru> (I_vlxy_I) плюс хорошо бы сделать так, чтобы компилятор отслеживал корректность, чтобы исключить вероятность работы с мувнутым объектом. а то в плюсах это известные грабли
[13:54:47] <ada_ru> (I_vlxy_I) в этом плане лучше сами знаете кто
[13:54:51] <ada_ru> (I_vlxy_I) rustRustRUST!
[13:57:07] <ada_ru> (I_vlxy_I) надо аккуратно подтыривать у раста, я считаю
[14:01:29] <ada_ru> (I_vlxy_I) только пожалуйста, не делаейте это через очередную виртуальную функцию!
[14:05:06] <ada_ru> (Vadim) Кстати да, task_id не обязательно даст внятный ответ для foreign task
[14:05:33] <ada_ru> (Vadim) Откуда пришло управление в текущий Ada код.
[14:07:49] <ada_ru> (reznikmm) Типа когда поток низ С++ вызывает адский обработчик?
[14:08:15] <ada_ru> (Vadim) Да
[14:09:00] <ada_ru> (reznikmm) значит будет COW навсегда? 😕
[14:13:57] <ada_ru> (I_vlxy_I) э? как одно с другим связано?
[14:18:26] <ada_ru> (I_vlxy_I) погодите ка. а как COW тут работает в случае если W случается из другой таски?
[14:18:44] <ada_ru> (I_vlxy_I) там же вообще мьютекс может потребоваться. не?
[14:20:28] <ada_ru> (reznikmm) отвечает (I_vlxy_I) на <э? как одно с другим…>
language design team в составе из двух человек в обозримом будущем не сможет родить то, что впихнули в С++, а если и сможет это всё равно будет не Ада. А ARG насрать
[14:21:09] <ada_ru> (I_vlxy_I) погоди, почему не Ада будет? а какой язык они там рожают?
[14:21:20] <ada_ru> (reznikmm) отвечает (I_vlxy_I) на <погодите ка. а как C…>
ну там же атомики, всё работает как надо. если 1 то перетрёт, а если >1 - сделает копию
[14:21:43] <ada_ru> (reznikmm) Аду рожает ARG
[14:22:28] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <ну там же атомики, в…>
дык пока он копию делает, другая таска будет содержимое менять
[14:22:36] <ada_ru> (I_vlxy_I) и копия выйдет кривой и убогой
[14:23:07] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <Аду рожает ARG>
А language design team это кто тогда? и зачем?
[14:23:39] <ada_ru> (reznikmm) отвечает (I_vlxy_I) на <дык пока он копию де…>
никто не может модифицировать, пока счётчик > 1
[14:23:46] <ada_ru> (Vadim) COW не плохое решение. Как бы его ни обсирали :)
[14:24:32] <ada_ru> (I_vlxy_I) отвечает (Vadim) на <COW не плохое решени…>
для конкретно длинных строк - это очень классное решение
[14:24:53] <ada_ru> (I_vlxy_I) и его в плюсах применяют. не в стандартной либе конечно
[14:25:01] <ada_ru> (Vadim) Да, отказ от COW для строк малого размера может быть полезен на современных 64-bit машинах, ещё более полезен на завтрашних 128-bit машинах.
[14:25:30] <ada_ru> (reznikmm) отвечает (Vadim) на <COW не плохое решени…>
Можно сдлать лучше, если придумать костыль для in out в рандеву 😊
[14:26:17] <ada_ru> (I_vlxy_I) но вообще общий мутабельный стейт для многопоточки - то еще решение
[14:27:07] <ada_ru> (I_vlxy_I) но объясните мне бюрократию Ады: ARG пилит Аду и её стандарт. ок. а кто такие, чем занимаются и зачем существуют, language design team?
[14:28:10] <ada_ru> (nitrocerber) Вы там акуратнее про ленгвидж дизайн тим, ребзя
[14:28:22] <ada_ru> (nitrocerber) я не уверен, что это не попадает под днд
[14:28:55] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <я не уверен, что это…>
драконы есть?
[14:29:15] <ada_ru> (nitrocerber) всё больше тролли
[14:29:26] <ada_ru> (I_vlxy_I) драконы в подземельях сидят и дезигнят нечто Ада-подобное?
[14:29:42] <ada_ru> (nitrocerber) ну или как оно там правильно.. нда?
[14:29:44] <ada_ru> (nitrocerber) я забыл
[14:29:50] <ada_ru> (I_vlxy_I) но идея форкнуть Аду - хороша 🙂
[14:29:58] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <ну или как оно там п…>
палишься! 🙂
[14:30:03] <ada_ru> (nitrocerber) и сделать адараст
[14:30:31] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <и сделать адараст>
да. и медаль почетного адараста тоже сделать.
[14:32:07] <ada_ru> (reznikmm) отвечает (I_vlxy_I) на <но объясните мне бюр…>
Ну это организаторы https://github.com/AdaCore/ada-spark-rfcs/
[14:32:17] <ada_ru> (I_vlxy_I) а, ок
[14:32:34] <ada_ru> (I_vlxy_I) а move-самантику в ARG продвинуть как-то можно вообще?
[14:33:06] <ada_ru> (I_vlxy_I) хотя если бы можно было еще и адекватные конструкторы/деструкторы сделать... эхъ.. ну да ладно.
[14:33:29] <ada_ru> (I_vlxy_I) может быть я слишком biased
[14:33:32] <ada_ru> (nitrocerber) ...и вообще заменить крестами
[14:33:34] <ada_ru> (reznikmm) да, можно пробовать, пишешь на ada-comments@ и начинаешь рассказывать старым пердунам, как оно в современном мире
[14:34:21] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <...и вообще заменить…>
не, для замены крестов есть кресты.
[14:35:01] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <да, можно пробовать,…>
а на меня смотрят круглыми глазами и говорят, что такого не существует и не нужно. и идут обратно в свой embedded которому 40 лет?
[14:35:29] <ada_ru> (nitrocerber) та глаза может и осмысленные. тока где взять ресурс..)
[14:38:50] <ada_ru> (reznikmm) отвечает (I_vlxy_I) на <а на меня смотрят кр…>
Ну я вот пытался объяснить, что использовать байтовый массив для реализации 'Image не правильно. Летом прошлого года. Всё равно сделали по своему. https://github.com/AdaCore/ada-spark-rfcs/pull/17
[14:50:04] <ada_ru> (godunko) Да ладно, вроде же используют Wide_Wide_String ныне?
[14:50:17] <ada_ru> (godunko) Уже лучше
[15:01:43] <ada_ru> (reznikmm) Не ужели?
[15:02:44] <ada_ru> (I_vlxy_I) а если utf-8, то зачем там wide_wide?
[15:03:42] <ada_ru> (I_vlxy_I) А свои фрустрации на тему того, что Ада не достаточно безопасна и GNAT выдает в лучшем случае ворнинг там, где надо бы компайл тайм еггог, можно писать в иссуес сюда? https://github.com/AdaCore/ada-spark-rfcs
Это имеет смысл?
[15:04:21] <ada_ru> (I_vlxy_I) то есть пожелания того, что стандард должен бы требовать в таких вот случаях ошибку компиляции. во имя уменьшения рантайм инцидентов
[15:04:25] <ada_ru> (reznikmm) нужно писать!
[15:04:46] <ada_ru> (I_vlxy_I) это правильное место для этого? там кто-то читает это? 🙂
[15:05:02] <ada_ru> (reznikmm) да
[15:05:38] <ada_ru> (reznikmm) писать можно и в ada-comments@ но там плохо видно остальным, как-то
[15:06:23] <ada_ru> (godunko) Писать нужно! Именно RFC читают люди, способные вывести язык на новый уровень.
[15:06:49] <ada_ru> (I_vlxy_I) но это будут issues, не PR
[15:07:01] <ada_ru> (godunko) comments@ это скорее сборище динозавров, весьма умных, но отставших от некоторых передовых идей и практик.
[15:07:03] <ada_ru> (I_vlxy_I) ибо я в стандарте Ады как хрюша в цитрусовых
[15:07:15] <ada_ru> (I_vlxy_I) вообще - крестовик 🙂
[15:08:02] <ada_ru> (Vadim) Там wide_wide что бы utf8 не всплыло
[15:08:12] <ada_ru> (Vadim) Ему там делать нечего.
[15:10:44] <ada_ru> (reznikmm) отвечает на <(godunko) Да ладно, …>
Блин, там всё снова поменяли, я отстал от жизни 😊
[15:11:32] <ada_ru> (avkvlru) Подскажите плиз, в аде есть стандартный тип байт или надо самому объявлять через range и for use
[15:15:52] <ada_ru> (reznikmm) отвечает (avkvlru) на <Подскажите плиз, в а…>
Таких много разных. Interface.Unsigned_8, Stream_Element, Storage_Element, выбирайте на свой вкус
[15:16:34] <ada_ru> (avkvlru) спасибо. Кстати пару дней назад тут обсуждали direct_io- c точки зрения эффективности. Короче, он ужасен)
[15:16:56] <ada_ru> (reznikmm) Character (/me уклоняется от летящего кирпича от Вадим 😂)
[15:17:22] <ada_ru> (avkvlru) character вроде не гарантирует, что будет 8 бит...
[15:18:13] <ada_ru> (avkvlru) в гнате нашел unsigned_byte в модальных типах... но стандартным судя по всему является именно Integer_8 из интерфейсов
[15:18:26] <ada_ru> (avkvlru) ну или ансигнед8
[15:21:20] <ada_ru> (avkvlru) Но вообще конечно ада поражает 4(!) пересмотра стандартов и до сих пор нет даже длинночисленной арифметики и нормальной работы с файлами... При этом ещё удивляются, почему ей никто не хочет пользоваться
[15:24:08] <ada_ru> (I_vlxy_I) ну, нормальная работа с файловой системой (каталоги там, обход дерева каталогов) в плюсах тоже только в C++17 появилась 🙂
[15:24:23] <ada_ru> (I_vlxy_I) зато скоро в плюсы еще и сеть добавят!
[15:25:37] <ada_ru> (I_vlxy_I) btw: утилитарные стандартные типы размера 8, 16, 32 и 64 бита все же нужны наверное где-то поближе, чем в интерфейсах.
Хотяя...
[15:26:14] <ada_ru> (I_vlxy_I) может идеалогия Ады совсем вовсе не такая. и наоборот - отсутствием оных Ада стимулирует создавать свои типы под узкие нужды. Более строгая и гранулярная типизация
[15:26:19] <ada_ru> (I_vlxy_I) надо попривыкнуть
[15:26:57] <ada_ru> (avkvlru) До "нормальной" было ещё несколько "ненормальных", которые впринципе всех неплохо устраивали, учитывая сколько софта на них написано)
[15:27:15] <ada_ru> (avkvlru) И я не про обход директорий, он в аде тоже в 2005 появился, я про блокировки доступа.
[15:27:35] <ada_ru> (I_vlxy_I) плохо устраивало - кресты не были в курсе про существование каталогов. обойти каталог было нельзя стандартным способом
[15:27:40] <ada_ru> (I_vlxy_I) скопировать файл - тоже
[15:27:43] <ada_ru> (I_vlxy_I) переименовать - тоже
[15:27:47] <ada_ru> (I_vlxy_I) удалить там.. и проч
[15:28:06] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <И я не про обход дир…>
хмм... а что там с блокировкой доступа на линухе?
[15:28:33] <ada_ru> (I_vlxy_I) вроде там фиг заблокируешь файл. вообще не факт что такая возможность в принципе может быть
[15:29:08] <ada_ru> (I_vlxy_I) flock?
[15:30:35] <ada_ru> (I_vlxy_I) это какая-то довольно специфичная штука, кажется
[15:30:41] <ada_ru> (avkvlru) Ну на сях писали модули все кому нужно. Но мне реально интересна логика проектировщиков, которые в 83м году не знали про существование каталогов. Не помню точно, когда появилась работа с каталогами в 95 или 2005, но при таком подходе неудивительно, что всплеск интереса быстро закончился. Особенно учитывая, какие извращения приходилось применять, чтобы присвоить файловую переменную (учитывая что она limited private)
[15:30:58] <ada_ru> (avkvlru) Ну на этой довольно специфичной штуке большая часть инета держится...
[15:31:02] <ada_ru> (I_vlxy_I) ой, ну в крестах каталогов не существовало до 2017 года 🙂
[15:31:04] <ada_ru> (avkvlru) и приложений для совместной работы...
[15:31:37] <ada_ru> (avkvlru) Алексей, одно дело когда возможность реализованна неоптимально (в крестах никто не мешал юзать сишные библиотеки), и другое, когда её как бы нет)
[15:31:52] <ada_ru> (I_vlxy_I) дык в Аде никто не мешает юзать сишные либы.
[15:32:05] <ada_ru> (avkvlru) С кучей кода и извращений...
[15:32:07] <ada_ru> (I_vlxy_I) то есть в плюсах, как и в Аде делали просто - берем системное API и юзаем напрямую
[15:32:28] <ada_ru> (I_vlxy_I) либо берем стороннюю либу которая это упражнение уже проделала. например boost::filesystem
[15:32:30] <ada_ru> (avkvlru) В аде использовать си-шные библиотеки стало можно с 95го нормально.
[15:33:08] <ada_ru> (I_vlxy_I) отсутствие интерфейса с сями - это да, косяк
[15:33:30] <ada_ru> (I_vlxy_I) но в 83 году си был довольно маргинальной штукой еще. тем более, что планировалось построить свой Ада-мир в DoD
[15:34:01] <ada_ru> (avkvlru) Поэтому мне и интересна логика разработчиков ады 83... В 95-м по сути только то и делали, что правили идиотизмы первой версии, по мере возможности (процедуры параметры, интерфейс с чужими библиотеками хоть и кривой, рабочие типы строк и т.п.
[15:34:17] <ada_ru> (I_vlxy_I) в виндах сильно бесит что при открытии файла он лочится.
[15:34:37] <ada_ru> (avkvlru) Где? В виндах? Вроде нет)
[15:34:45] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <Поэтому мне и интере…>
дык предполагался моноязыковый огромны мир
[15:35:01] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <Где? В виндах? Вроде…>
лочится-лочится. если кто-то файло открыл, его даже удалить нельзя!
[15:35:15] <ada_ru> (avkvlru) Только если там есть вызов флок или его аналога. Иначе бога ради...
[15:35:45] <ada_ru> (I_vlxy_I) в виндах по умолчанию открытие файла - блокирующее. то есть ты не можешь потом его открыть на запись кем-либо
[15:35:53] <ada_ru> (I_vlxy_I) в виндах печально всё 🙁
[15:36:43] <ada_ru> (avkvlru) Хз... в перле можно без проблем работать с одним файлом двумя программами. По крайней мере в стравбери . Возможно конечно он его спецаиально разлочивает. Именно под виндами.
[15:36:55] <ada_ru> (I_vlxy_I) алсо, возможно в матрешке или в gnatcoll есть что-то про файлы адекватное. или в том же флористе
[15:37:57] <ada_ru> (avkvlru) отвечает (I_vlxy_I) на <дык предполагался мо…>
А он должен был с неба упасть? Я понимаю разработчиков си, которые сделали вместе с языком операционку... Там действительно можно было не париться стандартизацией библиотек, она следовала автоматом.
[15:38:20] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <А он должен был с не…>
в DoD же делали и операционки и вообще все. в этот проект вливались огромные бабки
[15:38:34] <ada_ru> (avkvlru) Про законы мерфи как я понимаю они не слышали...
[15:39:01] <ada_ru> (avkvlru) Про здравый смысл тоже
[15:39:26] <ada_ru> (I_vlxy_I) ну, у них было благое начинание - выкинуть несколько тысяч ЯП из продакшена, заменить его одним
[15:40:06] <ada_ru> (avkvlru) А действующий парк операционнок и железо тоже предполагалось выкинуть? У них при этом предположении ничего в голове не колыхнулось?
[15:40:09] <ada_ru> (I_vlxy_I) ну и тогда были времена когда такие идеи витали в воздухе. тот же PL/I. Все устали тогда от дикого зоопарка языков
[15:40:27] <ada_ru> (avkvlru) И плодили новые)))
[15:40:45] <ada_ru> (I_vlxy_I) дык они плюс-минус успешно это провернули. статистически.
[15:41:01] <ada_ru> (I_vlxy_I) другое дело, что за пределами DoD Ада в итоге не особо кому нужна оказалась
[15:41:10] <ada_ru> (avkvlru) Да и там тоже)
[15:41:23] <ada_ru> (I_vlxy_I) мир ПК Ада игнорировала чуть более чем полностью
[15:41:38] <ada_ru> (avkvlru) Ну как сейчас мир смартфонов...
[15:41:55] <ada_ru> (avkvlru) Я так понимаю любую перспективную технологию разработчики ады игнорируют чуть более чем полностью)
[15:42:05] <ada_ru> (I_vlxy_I) в мире смартфонов все просто - какой язык вендор предоставляет, на том и пишут в основном
[15:42:10] <ada_ru> (I_vlxy_I) ну, плюс на С++ конечно
[15:42:17] <ada_ru> (I_vlxy_I) куда без него? скорость же и ресурсы
[15:42:38] <ada_ru> (avkvlru) Угу. И в итоге всё в очередной раз скатывается к промышленному использованию си))
[15:42:54] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <Я так понимаю любую …>
не. многопоточку они поддержали тогда, когда о ней вообще никто не помышлял даже. лет за 20 до массового внедрения
[15:42:56] <ada_ru> (avkvlru) И какой-нибудь скриптовой поддержки типа перла/питона.
[15:43:04] <ada_ru> (I_vlxy_I) как и дженерики например
[15:43:50] <ada_ru> (avkvlru) Ну как бы помягче сказать. Технологии надо поддерживать вовремя, а не за 20 лет до их появления. Тем более, что появившиеся технологии очень мало напоминают таски.
[15:44:01] <ada_ru> (avkvlru) Хотя... в каком году в си появился форк?
[15:44:44] <ada_ru> (avkvlru) Пусть убогий, он вполне себе успешно просуществовал до широкого внедрения нитей.
[15:45:01] <ada_ru> (avkvlru) Апач если не ошибаюсь и по сей день на форке живёт.
[15:45:05] <ada_ru> (I_vlxy_I) в C? он вроде так и не появился
[15:45:34] <ada_ru> (avkvlru) хм... По моему он родом именно из юникса, а си его встроенный язык
[15:45:36] <ada_ru> (I_vlxy_I) thread появился в C11
[15:45:41] <ada_ru> (I_vlxy_I) https://en.cppreference.com/w/c/thread
[15:45:49] <ada_ru> (I_vlxy_I) если мы говорим про язык, а не про юникс
[15:45:58] <ada_ru> (I_vlxy_I) (и я не про С++ сейчас)
[15:46:52] <ada_ru> (avkvlru) Си и юникс были единым целым. Его разработчики понятия не имели, что делают стандартный язык мира. Они просто сделали удобную экосистему из оси и языка.
[15:47:26] <ada_ru> (avkvlru) И поскольку с мозгами у них было всё хорошо- язык сам собой стал стандартом. Вначале неофициальным, а потом за него взялись теоретики)
[15:47:56] <ada_ru> (avkvlru) С перлом, если не ошибаюсь была та же история. Не займись им эффективные менеджеры- язык бы и по сей день жил наверное.
[15:48:50] <ada_ru> (avkvlru) С адой сейчас происходит забавная метаморфоза- после теоретиков им занялись практики и язык потихоньку, за каких-то 30 лет стал юзабельным... Если не ошибаюсь в 2020м наконец-то разрешат функциям параметр out?
[15:51:59] <ada_ru> (avkvlru) Строго говоря уже с 95го язык стал более-менее юзабельным, но к тому времени все кто им интересовался успели прочитать первый стандарт и ужаснуться.
[15:54:46] <ada_ru> (nitrocerber) отвечает (avkvlru) на <С адой сейчас происх…>
так давно разрешили уже
[15:55:23] <ada_ru> (avkvlru) Э... в ада 95/ 2005 точно нет.
[15:55:34] <ada_ru> (avkvlru) Про 12 не знаю... я с 95м работаю по техническим причинам.
[15:56:41] <ada_ru> (nitrocerber) с 12ой
[15:57:51] <ada_ru> (avkvlru) Ну что тут ещё добавить... В принципе повторюсь, уже в 95м ада стала вполне юзабельной, но репутация невменяемого языка уже сформировалась.
[16:02:10] <ada_ru> (I_vlxy_I) А что такого ужасного в 83 Аде было? Ну, кроме отсутствия интерфейса с Си
[16:05:30] <ada_ru> (Vadim) Как мамонт замечу, что между C и Ada я выбрал Ada. В то время исключения в C++ ещё скорее отсутствовали.
[16:06:10] <ada_ru> (Vadim) ООП конечно было странным, но и C++ множественным наследованием не сильно радовал.
[16:06:15] <ada_ru> (avkvlru) Ну в принципе отсутствие нормального взаимодействия с системой и другими языками само по себе приговор при отсуствии своих библиотек. Уж простите но в 90х годах с нуля почти никто не кодил, как и в отрыве от системы.
Доисторическая концепция строк. Даже по сравнению с Си.
Издевательские файловые переменные, которые для нормальной работы приходилось заворачивать в ссылки.
[16:06:24] <ada_ru> (I_vlxy_I) дык С++ стал юзабелен по описанию примерно в 98 году, а на практике реализации догнали стандарт только где-то в 2003-2005. плюс-минус
[16:06:46] <ada_ru> (avkvlru) Си++ мог себе это позволить, держа за спиной Си.
[16:07:09] <ada_ru> (I_vlxy_I) это правда
[16:07:42] <ada_ru> (I_vlxy_I) правда он далеко не полностью совместим. но тем не менее, да. можно многое юзать из инфраструктуры Си
[16:08:01] <ada_ru> (I_vlxy_I) но в 80-83 году у Си не было еще той инфраструктуры, что появилась к 90 году.
[16:08:13] <ada_ru> (I_vlxy_I) напомню, что стандартный язык для тех же макинтошей был Паскаль
[16:08:27] <ada_ru> (I_vlxy_I) и паскаля ошметки видны даже в WinAPI
[16:09:02] <ada_ru> (avkvlru) Ну вин 2.0 же была на паскале по настоянию IBM если не ошибаюсь. Они же вместе начинали её разрабатывать
[16:09:06] <ada_ru> (I_vlxy_I) а сейчас вот глупо не иметь возможности интерфейситься с питоном и js
[16:09:42] <ada_ru> (avkvlru) У си изначально была инфраструктура. То, что она была бедненькая объясняется просто относительно невысоким проникновений компов в целом.
[16:10:08] <ada_ru> (I_vlxy_I) Си работал на довольно больших машинах
[16:10:30] <ada_ru> (avkvlru) Да... и повторюсь, он вообще ни на что не претендовал когда создавался. Его везде сами звали))
[16:10:32] <ada_ru> (I_vlxy_I) его не было в embedded например. Си был - юникс. А юникса не было ни на ПК ни во встроенке/военке
[16:11:15] <ada_ru> (avkvlru) И уж простите, но в 80х его потенциал был вполне очевиден, судя по книжкам (сам судить не могу, мне тогда бз-34 казался чудом техники)
[16:12:01] <ada_ru> (avkvlru) А ада простите мне почему-то напомнила гопника, который влез в чужую компанию и требовал всем делать как он сказал, потому что за ним крутые дяди :) И был логично послан, ибо сам толком ничего не умел.
[16:12:15] <ada_ru> (avkvlru) Теперь поумнел, посолиднел, но репутация осталась)
[16:13:16] <ada_ru> (avkvlru) Если бы в разработчиков хватило мозга сделать хоть какой-нибудь бета-тест, я думаю история языка повернулась бы по другому... Не пришлось бы мучительно выползать из 20 летнего забвения, т.к. потенциал заложен действительно впечатляющий. Но потенциала мало.
[16:13:49] <ada_ru> (I_vlxy_I) между прочим, сейчас упихивать ВСЁ в стандартную библиотеку уже практически мовитон.
[16:14:12] <ada_ru> (I_vlxy_I) сейчас делают иначе
[16:14:35] <ada_ru> (I_vlxy_I) сейчас вся нужная функциональность доставляется тебе для твоего проекта через стандартный пакетный менеджер для данного языка
[16:14:56] <ada_ru> (I_vlxy_I) например cargo в Rust, или pip в python, или npm в js
[16:15:50] <ada_ru> (I_vlxy_I) поэтому я склонен больше стенать на тему того, что пока alire имеет некоторые нюансы и что пакетом там пока не так много, нежели на тему того, что в стандартной либе чего-то нет.
[16:21:58] <ada_ru> (I_vlxy_I) ситуация когда есть много разных либ которые конкурируют в пакетном менеджере, рихтуются и улучшаются, а потом появляется среди них лидер и он становится стандартом дефакто, коих затем, если юзкейс частый, и добавляют потом в стандарт - более здоровая, нежели когда сидит комитет и 10 лет рожает идею как должна быть устроена новая фича в стандартной либе.
[16:24:24] <ada_ru> (I_vlxy_I) а потом оказывается, что комитет родил какую-то фигню, которую, однако, должны теперь все реализоват
[16:28:10] <ada_ru> (avkvlru) соглашусь... но до этого я думаю в гнате дойдут ещё через 10 лет)
[16:28:28] <ada_ru> (avkvlru) собственно перл на кпане и вылез
[16:28:34] <ada_ru> (I_vlxy_I) почему? alire же развивается
[16:28:38] <ada_ru> (I_vlxy_I) 81 пакет сейчас
[16:28:53] <ada_ru> (avkvlru) я думаю к этой цифре трудно что-то добавить)
[16:28:56] <ada_ru> (I_vlxy_I) естественно будет хорошо если поставляться gnat будет сразу с alire искаропки
[16:29:31] <ada_ru> (I_vlxy_I) точнее - gnat community, естественно в состав gcc alire не будет входить 🙂
[16:29:57] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <я думаю к этой цифре…>
думаю эту чиселку можно удвоить легко
[16:30:10] <ada_ru> (avkvlru) я про сам порядок...
[16:30:53] <ada_ru> (I_vlxy_I) ок. увеличить на один двоичный порядок 🙂
[16:32:38] <ada_ru> (I_vlxy_I) если там по итогу будет плюс-минус все необходимое, то потихоньку число юзеров возрастет и число пакетов будет увеличиваться
[16:32:47] <ada_ru> (avkvlru) В "мёртвый" спан ежедневно заливается около 30 релизов и 20 апдейтов.
[16:33:05] <ada_ru> (avkvlru) Эт я самым тупым методом посмотрел - глазками...
[16:33:09] <ada_ru> (avkvlru) https://metacpan.org/recent
[16:33:25] <ada_ru> (I_vlxy_I) я рад, что у перла тут все лучше чем у c++ 🙂
[16:33:57] <ada_ru> (avkvlru) Я честно говоря не знаю про питон и гоу, но там вроде-бы на порядок лучше.
[16:34:36] <ada_ru> (I_vlxy_I) можно посмотреть на раст 🙂
[16:34:43] <ada_ru> (avkvlru) Хотя сам факт наличия алиры - радует... а где глянуть доступный список пакетов? Я тут вечерами, в порядке релакса переписываю потихоньку систему на 2005ю аду.
[16:35:02] <ada_ru> (I_vlxy_I) 39041 пакет у раста
[16:35:05] <ada_ru> (I_vlxy_I) https://crates.io
[16:35:13] <ada_ru> (avkvlru) К стыду своему про раст вообще ниче не знаю)
[16:35:36] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <Хотя сам факт наличи…>
https://alire.ada.dev/crates.html
[16:37:23] <ada_ru> (avkvlru) а.... зип ада появилась. Она то мне как раз и нужна)
[16:39:01] <ada_ru> (avkvlru) Надо будет туда мемостр залить (пакет для поддержки сохраняемых строк, наподобие сишного), мне понравился. Жалко авторы не указаны.
[16:41:34] <ada_ru> (avkvlru) э-э-э- алира только под убунту?
[16:41:40] <ada_ru> (I_vlxy_I) в алире есть еще над чем поработать естественно. но как-то пользоваться уже можно. у меня удалось по крайней мере. правда пришлось написать плагин для GPS
[16:41:48] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <э-э-э- алира только …>
я юзаю на арче, а что?
[16:41:56] <ada_ru> (avkvlru) под вин получится?
[16:42:01] <ada_ru> (I_vlxy_I) с арчом была проблема, но была пофикшена
[16:42:13] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <под вин получится?>
не пробовал. должно получиться, думаю
[16:42:18] <ada_ru> (I_vlxy_I) что-то в коде алиры я видел про винду
[16:43:13] <ada_ru> (I_vlxy_I) другое дело, что можно немного огрести багов 🙂 народу мало, тестируют/пытаются использовать мало людей. и не на каждом конфиге это пробовали
[16:43:41] <ada_ru> (avkvlru) ладно, допилю потихоньку нашу железку и потом посмотрю поближе. Мне тут ещё пару недель всё перепиливать)
[16:44:13] <ada_ru> (I_vlxy_I) у них чатик спец. алировский есть: https://gitter.im/ada-lang/Alire
[16:44:20] <ada_ru> (I_vlxy_I) можешь прямо туда сходить и спросить
[16:44:25] <ada_ru> (I_vlxy_I) чаще отвечают в будние дни
[16:44:30] <ada_ru> (I_vlxy_I) в выходные народ отдыхает 🙂
[16:44:50] <ada_ru> (avkvlru) ну как и все)
[16:45:02] <ada_ru> (I_vlxy_I) ну, я в выхи больше с адой вожусь 🙂
[16:45:10] <ada_ru> (I_vlxy_I) так то я крестовик 🙂
[16:45:27] <ada_ru> (I_vlxy_I) а как выходные, так адараст
[16:57:14] <ada_ru> (I_vlxy_I) Плюс ночью Ада да Раст
[18:53:19] <ada_ru> (a) Романтика...
[18:58:17] <ada_ru> (Oleg) адараст звучит!
[19:03:31] <ada_ru> (a) Особенно в контексте "а по ночам адараст" :)
[19:31:33] <ada_ru> (I_vlxy_I) Вы так говорите, будто это что-то плохое.. Будто это нужно скрывать и стесняться..
[20:20:54] <ada_ru> (nitrocerber) Я помню как все 3 года на спецкурсе вещал по курсовикам/диплому, назыывал тему "бла бла на языке ада" и все неизменно ржали. И не надоело же за три года..
[20:21:00] <ada_ru> (nitrocerber) Так что может и стоит стесняться)
[20:36:28] <nordwind> Курсовик на языке ада... Ну да, понятно почему ржали
[20:39:38] <ada_ru> (Victor) Как там, "Язык Ада грозит нам термоядерным адом"?
Многие ( вне СССР) боялись, что ошибка в компиляторе и СОИ - гремучая смесь.
[20:43:35] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <Я помню как все 3 го…>
Пентагон специально так язык назвал :-)
[20:45:05] <ada_ru> (I_vlxy_I) Чтобы исключить русских
[20:45:16] <ada_ru> (I_vlxy_I) Особенно молодёжь
[20:52:37] <ada_ru> (godunko) Что бы уничтожить русских - они умрут от ржачки
[22:35:33] <ada_ru> (I_vlxy_I) и не смогут Аду применять, да
[22:38:55] <ada_ru> (shiz01) А ада умеет а директории?
Хочу свой аццкий ls сделать.
а потом и прочий юзерленд.
[22:39:52] <ada_ru> (I_vlxy_I) вроде да
[22:40:16] <ada_ru> (I_vlxy_I) но свой юзерленд наверно кошерней всего было бы напрямую через позикс делать 😉
[22:40:40] <ada_ru> (I_vlxy_I) отвечает (shiz01) на <А ада умеет а директ…>
https://en.wikibooks.org/wiki/Ada_Programming/Libraries/Ada.Directories
[22:40:45] <ada_ru> (shiz01) отвечает (I_vlxy_I) на <вроде да>
Хорошо, тогда к выходным азы пойму, и буду пилить.
[22:40:55] <ada_ru> (shiz01) отвечает (I_vlxy_I) на <https://en.wikibooks…>
Спасибо.
[22:41:49] <ada_ru> (shiz01) отвечает (I_vlxy_I) на <но свой юзерленд нав…>
Сначала простой сделаю, на основе стандартной либы.
Зато кроссплатформенно получится и можно будет на винде запускать.
[22:42:36] <ada_ru> (I_vlxy_I) кстати, я где-то видел что кто-то такое упражнение уже деала
[22:42:41] <ada_ru> (shiz01) А как разберуст, можно и POSIX-совместимуб ветку сделать.
[22:43:09] <ada_ru> (I_vlxy_I) https://github.com/berriedale/ada-coreutils
[22:43:10] <ada_ru> (I_vlxy_I) во
[22:43:15] <ada_ru> (shiz01) отвечает (I_vlxy_I) на <кстати, я где-то вид…>
Ну и ладно.
Я. Хочу. Свой. Адский. LS.
[22:43:25] <ada_ru> (I_vlxy_I) да, свой это хорошо
[22:43:31] <ada_ru> (I_vlxy_I) вообще в качестве упражнения отлично
[22:43:39] <ada_ru> (I_vlxy_I) coreutils их много
[22:43:59] <ada_ru> (I_vlxy_I) на расте тоже кто-то таким занимался
[22:44:01] <ada_ru> (shiz01) отвечает (I_vlxy_I) на <https://github.com/b…>
Ага, ибо 'фатальный недостаток' найти не трудно.
[22:44:05] <ada_ru> (I_vlxy_I) rustRustRUST!
[22:44:37] <ada_ru> (I_vlxy_I) отвечает (shiz01) на <Ага, ибо 'фатальный …>
ну, кроме того упражнение очень хорошее. системные простые утилиты. они и полезные и интуитивно понятно что должны делать и что ожидаешь от них в плане работы
[22:44:40] <ada_ru> (I_vlxy_I) и сравнить есть с чем
[22:45:11] <ada_ru> (I_vlxy_I) и стандартну либу Ады изучить получится, если не через посих делать
[22:45:22] <ada_ru> (shiz01) отвечает (I_vlxy_I) на <rustRustRUST!>
Хочится и раст и на асме поупарываться, но тут за пятью зайцами погонишься - ни одного кабана не поймаешь.
[22:45:30] <ada_ru> (I_vlxy_I) хорошая идея в общем
[22:46:01] <ada_ru> (shiz01) отвечает (shiz01) на <Хочится и раст и на …>
Так что пока - ада.
[22:47:02] <ada_ru> (shiz01) отвечает (I_vlxy_I) на <хорошая идея в общем>
Ага.
В напалеоновских планах свой дистр линя, (знакомый уже года два подбивает) хочу туда опцианально аццкий юзерленд в массы протолкнуть.
[22:47:31] <ada_ru> (I_vlxy_I) правильно. ибо нефиг. а вместо просто gcc, туда сразу gnat по умолчанию ставить!
[22:48:03] <ada_ru> (shiz01) отвечает (I_vlxy_I) на <правильно. ибо нефиг…>
Конеш. Ибо нефиг gcc огрызком поставлять.
Если gcc - то это весь gcc.