[00:01:52] <ada_ru> (I_vlxy_I) отвечает (LoKi_MoKi1337) на <А вот как их вывести…>
https://godbolt.org/z/fE7Wp6
[00:01:55] <ada_ru> (I_vlxy_I) например так
[00:02:04] <ada_ru> (I_vlxy_I) Put_Line(Integer'Image(a));
[00:02:14] <ada_ru> (I_vlxy_I) где a - переменная типа Integer
[00:18:04] <ada_ru> (I_vlxy_I) btw: поясните таки, почему можно не только Integer'Image(a), что логично, но и a'Image ? Чем это одно от другого отличается? А то у меня опять затуп на тему атрибутов 🙂
[00:24:37] <ada_ru> (a) отвечает (Oleg) на <Чтоб телефоны склады…>
Правильно. Зачем бэкапы пользователям. Пусть лежат у админа. И потому нужен его пароль.
[00:25:54] <ada_ru> (Oleg) отвечает (a) на <Правильно. Зачем бэк…>
Дело не в этом, по уму создается пользователь с правом записи в эту папку, но у него больше прав и нет. А так получить админовскую учетку раз плюнуть, и делай потом что хош
[00:26:44] <ada_ru> (a) И лучше сразу слать большому брату, у него надёжнее храниться будет
[00:27:00] <ada_ru> (Oleg) 😊
[00:27:18] <ada_ru> (a) Да такие ляпы сплошь и рядом
[00:27:25] <ada_ru> (I_vlxy_I) бэкапы должны быть только в облако. так надежней всего. точка
[00:28:04] <ada_ru> (a) Потому как права настраивать сложно и долго.
[00:28:09] <ada_ru> (a) И лень
[00:29:26] <ada_ru> (a) Насчёт облака не согласен. Видел как облака перестают существовать. И не доверяю. Несколько копий на разных носителях.
[00:30:46] <ada_ru> (a) И ещё потому что эти облака нам по факту не принадлежат. Кому угодно, но не конечному пользователю.
[00:32:39] <ada_ru> (I_vlxy_I) а я разве говорил с точки зрения конечного пользователя? 😛
[00:32:50] <ada_ru> (I_vlxy_I) я с т.з. производителя оборудования говорил ;-З
[00:54:43] <ada_ru> (avkvlru) отвечает (nitrocerber) на <со словами Unchecked…>
Почему??? Доброе утро. С чего вдруг free под запрет пошел, особенно учитывая, что гнат вообще не умеет память освобождать?
[00:55:17] <ada_ru> (nitrocerber) Предполагаю ,что по большому счёт по качану
[00:55:29] <ada_ru> (nitrocerber) Желание конкретного лида
[00:56:04] <ada_ru> (nitrocerber) "Есть контейнеры, они оттестированы - ими и пользуйся. И неча тут руками память мутить"
[00:56:07] <ada_ru> (avkvlru) Ну так без free будет дикая утечка памяти в коде? Гнат при потере видимости память не освобождает, как рекомендуется в стандарте, я на этом уже обжигался.
[00:56:17] <ada_ru> (nitrocerber) Не, ни фри, ни нью
[00:56:19] <ada_ru> (nitrocerber) в балансе
[00:56:39] <ada_ru> (avkvlru) ну... Вас ждут прекрасные сюпризы при долгоработающих приложениях)
[00:56:52] <ada_ru> (avkvlru) учитывая что он инициализацию тоже не всегда освобождает)
[00:57:15] <ada_ru> (nitrocerber) мне - как тому наркоману из простоквашино. особенно по вечерам (ц)
[00:57:42] <ada_ru> (nitrocerber) контейнеры вроде не срут, валгринд чистый
[00:58:07] <ada_ru> (avkvlru) в гнате работаете?
[00:58:13] <ada_ru> (nitrocerber) хотя я находил интересные сценарии, когда финализейшн не отрабатывал
[00:58:23] <ada_ru> (nitrocerber) но их поправили
[00:58:35] <ada_ru> (avkvlru) финализейшн то как правило работает, он просто работник так себе)
[00:58:48] <ada_ru> (nitrocerber) компилятор умные люди пишут. я погулять вышел
[01:12:16] <ada_ru> (I_vlxy_I) стандартную либу пилят явно!
[01:21:23] <ada_ru> (avkvlru) Вам знакомо это странное чуство, когда поимевшись сутки- открываешь инструкцию? :) Вот и я сегодня зайдя на свежую голову в раздел download more - нашел там библиотеку posix фрагменты которой пилил кривыми руками из win32 :)
[01:35:38] <ada_ru> (avkvlru) хотя... они её там тоже очень фрагментарно запилили. Увы. Так стандартный кросплатформенный filelock и не нашел... если кто знает- подскажите. Хотел сделать в помощь будущим поколениям поддержки, но получаются только костыли...
[01:43:27] <ada_ru> (I_vlxy_I) а в позиксе нема файллока разве?
[01:43:48] <ada_ru> (I_vlxy_I) если там реализован полностью слой позикса, то через позикс и файл залочить можно
[01:44:48] <ada_ru> (avkvlru) там обрывки посикса
[01:44:58] <ada_ru> (avkvlru) Кстати матрёшка для win существует?
[01:45:07] <ada_ru> (avkvlru) Или это чисто юникс?
[01:45:08] <ada_ru> (I_vlxy_I) мне казалось, что да
[01:45:17] <ada_ru> (avkvlru) они живы ещё?
[01:45:21] <ada_ru> (I_vlxy_I) я ж правильно понимаю, что ты хотел Адский аналог вот этого: https://pypi.org/project/filelock/
[01:45:27] <ada_ru> (I_vlxy_I) матрешка? весьма жива
[01:46:25] <ada_ru> (I_vlxy_I) последний коммит 20 февраля: https://github.com/reznikmm/matreshka/commits/master
[01:49:55] <ada_ru> (avkvlru) отвечает (I_vlxy_I) на <я ж правильно понима…>
Ну примерно. В аде тоже есть некий lock, но он несколько убог и может работать разве что как семафор)
[01:50:06] <ada_ru> (avkvlru) причём несовместимый с ничем другим...
[01:50:23] <ada_ru> (I_vlxy_I) ну вот, можно взять питоняку и уворовать
[01:50:29] <ada_ru> (I_vlxy_I) в смысле - переписать аццким образом
[01:50:55] <ada_ru> (avkvlru) а смысл? Есть Win32 со стандартным lockfileex и есть в юниксе posiz с fcntl
[01:51:17] <ada_ru> (avkvlru) К сожалению, чего -то общего и стандартного нет...
[01:51:39] <ada_ru> (I_vlxy_I) дык чтобы не пилить каждый раз велосипед
[01:51:55] <ada_ru> (I_vlxy_I) единая обертка. ну, см. доку к питонячьему модулю
[01:51:56] <ada_ru> (avkvlru) так это и будет очередной велосипед, или я чего-то не понимаю?
[01:52:31] <ada_ru> (I_vlxy_I) да. но велосипед который можно запаковать в alire-пакетик и которым будут пользоваться все, кому потребуется подобная функциональность
[01:52:44] <ada_ru> (I_vlxy_I) это лучше чем в стандартую либу подобное пихать даже 🙂
[01:52:48] <ada_ru> (avkvlru) В питоне есть встроенная кроссплатформенная поддержка posix
[01:52:57] <ada_ru> (avkvlru) в частности fcntl
[01:53:17] <ada_ru> (avkvlru) Поэтому там вообще не встаёт такого вопроса, его просто переписали в python -стайл.
[01:54:13] <ada_ru> (avkvlru) В аде такой поддержки нет, и всё что можно будет- это написать модуль который будет по разному работать в разных системах и сильно зависеть от реализации и версии компилятора...
[01:56:37] <ada_ru> (I_vlxy_I) встает же
[01:56:40] <ada_ru> (I_vlxy_I) глянь реализацию
[01:57:52] <ada_ru> (I_vlxy_I) __all__ = [
"Timeout",
"BaseFileLock",
"WindowsFileLock",
"UnixFileLock",
"SoftFileLock",
"FileLock"
]
[01:57:58] <ada_ru> (I_vlxy_I) Если б оно было не нужно, не было бы этого пакета
[01:58:18] <ada_ru> (I_vlxy_I) if msvcrt:
FileLock = WindowsFileLock
elif fcntl:
FileLock = UnixFileLock
else:
FileLock = SoftFileLock
[01:58:20] <ada_ru> (avkvlru) куда встаёт? Ты про питон? Да, там встаёт.
[01:58:27] <ada_ru> (avkvlru) В аде нет поддержки посикса...
[01:58:30] <ada_ru> (I_vlxy_I) про питон, да.
[01:58:37] <ada_ru> (I_vlxy_I) да и пёс с ней
[01:58:54] <ada_ru> (I_vlxy_I) нужно иметь возможность залочить файл - нужен пакетик/либа которая дает такую возможность. всё
[01:59:14] <ada_ru> (I_vlxy_I) берем питонячую либу и переписываем на Аду 🙂
[01:59:29] <ada_ru> (I_vlxy_I) возможно в зависимостях у нас нарисуется флорист, а может и нет
[01:59:42] <ada_ru> (avkvlru) Так не получится. Потому что флорист под win не пашет.
[01:59:55] <ada_ru> (avkvlru) Грубо говоря вначале надо поддержку посикса полноценную под вин запилить.
[02:00:05] <ada_ru> (avkvlru) И под другие системы... Тогда будет красиво как в питоне.
[02:00:23] <ada_ru> (avkvlru) Питон у себя в ядре запил поддержку посикса со всеми вытекающими
[02:00:35] <ada_ru> (I_vlxy_I) дык и у них не пашет 🙂
[02:00:50] <ada_ru> (I_vlxy_I) они под виндой позиксом не пользуются
[02:00:56] <ada_ru> (I_vlxy_I) они под виндой напрямую дергают msvcrt
[02:01:31] <ada_ru> (avkvlru) хм... в питоне прекрасно fcnt работает(
[02:01:33] <ada_ru> (I_vlxy_I) для виндов будет одна сборка, для хрюниксов - другая. в чем проблема то?
[02:01:52] <ada_ru> (I_vlxy_I) try:
import msvcrt
except ImportError:
msvcrt = None
try:
import fcntl
except ImportError:
fcntl = None
[02:02:12] <ada_ru> (avkvlru) а... ну так я примерно и делаю)
[02:02:22] <ada_ru> (avkvlru) но блин... как-то костылёво это)
[02:02:31] <ada_ru> (I_vlxy_I) почему? так будет везде. и это ок
[02:03:06] <ada_ru> (avkvlru) Я просто представляю, как будет меня материть тот, кто через 10 или 15 лет увидит ссылку на win32 ;)
[02:03:20] <ada_ru> (I_vlxy_I) другое дело, что у нас не питон, у нас нормальный язык. поэтому просто для винды должен компиляться код, который работает с msvcrt, а код позиксовый не должен компиляться. а для линукса - позиксовый код компиляется, а msvcrt код - нет
[02:04:00] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <Я просто представляю…>
а в чем проблема? если MS выпилит к чертсям Win32 API из винды, то просто пакетик пофиксят этот. он же мелкий будет и запакетирован в alire
[02:04:21] <ada_ru> (I_vlxy_I) если что, вот питоняка: https://github.com/benediktschmitt/py-filelock/blob/master/filelock.py
[02:04:40] <ada_ru> (avkvlru) ну например в том, что gnat 2019 win32 уже не поддерживает)
[02:05:07] <ada_ru> (avkvlru) по крайней мере я не нашел библиотек для него, хотя может быть она конечно встроенна, надо порыть глубже
[02:05:50] <ada_ru> (I_vlxy_I) ну, во-первых это проблемы гната, во-вторых тебе нужно то там две функции 🙂 их можно дернуть напрямик без левых оберток
[02:06:18] <ada_ru> (avkvlru) ладно убедил, сделаю. Чтобы будущим поколениям поддержки жизнь мёдом не казалась)
[02:06:38] <ada_ru> (I_vlxy_I) и правильно! пусть страдают 🙂
[02:06:56] <ada_ru> (I_vlxy_I) ждем на гитхабе пакетик 🙂 обмажем его alire, будет бомба!
[08:32:50] <ada_ru> (reznikmm) отвечает (avkvlru) на <Ну так без free буде…>
Имеется ввиду, что вместо new ты делаешь Container.Insert, а вместо Unchecked_Deallocation делаешь Container.Delete, а в результате у тебя в твоём коде вообще нет указателей, чем сильно гордится автор
[08:38:02] <ada_ru> (reznikmm) отвечает (avkvlru) на <но блин... как-то ко…>
Я обычно импортирую только нужную мне функцию из Win32 API или libc, а на уровне проектного файла говорю, что из этого компилить. Можно глянуть тут https://github.com/reznikmm/spawn
[11:33:53] <ada_ru> (Vinpuh) Язык программирования C вновь стал самым популярным среди разработчиков
https://3dnews.ru/1010169
[11:36:55] <ada_ru> (dmt_ov) https://www.youtube.com/watch?v=WtDooIUqasM&feature=youtu.be
Видео которое заставило меня интересоваться Ада)
[12:18:39] <ada_ru> (reznikmm) отвечает (dmt_ov) на <https://www.youtube.…>
Могу порекомендовать брошурку https://www.ada-ru.org/safe_secure_2012
[15:09:28] <ada_ru> (I_vlxy_I) Кстати, а почему а Аде нет конструкторов? Это же снижает надежность в среднем.
[15:14:33] <ada_ru> (a) На Хабре про китайский от корабль написали, про аду ни слова. Неясно, на чем там софт
[15:38:48] <ada_ru> (I_vlxy_I) На сях, вестимо :-)
[15:41:54] <ada_ru> (Oleg) На китайсях
[15:56:45] <ada_ru> (avkvlru) по-моему в аде есть что-то наподобие конструкторов. надо посмотреть
[15:57:32] <ada_ru> (avkvlru) ну как минимум там есть возможность выполнять код после begin в библиотеках. Да, кстати, ада прекрасно ужилась с win32 блокировкой файлов. Теперь она хорошо стыкуется с перловским и питоновским флоками
[15:57:59] <ada_ru> (avkvlru) Как в readonly, так и в exclusive/
[15:59:22] <ada_ru> (avkvlru) Главный затык был в том, что у меня ломался мозг при виде CreateFile- которая оказывается в win32 всего лишь открывает файл)
[15:59:27] <ada_ru> (avkvlru) Логично, чё)
[16:04:46] <ada_ru> (avkvlru) Ещё подскажите кто-нибудь плиз, я запутался. UTF-8 в ада каким типом поддерживается для переменных?
[16:04:59] <ada_ru> (avkvlru) Wide-Wide-Char?
[16:05:57] <ada_ru> (avkvlru) И как вообще там перекодировать между разными кодировками- есть такая возможность? Какие-нибудь функции типа fromto?
[16:07:03] <ada_ru> (avkvlru) function Convert (Item : UTF_String;
Input_Scheme : Encoding_Scheme;
Output_Scheme : Encoding_Scheme;
Output_BOM : Boolean := False) return UTF_String;? Она?
[16:08:13] <ada_ru> (avkvlru) вот эта фраза из пакета мне мозг ломает... subtype UTF_8_String is String;
[16:19:07] <ada_ru> (sergey_dukov) отвечает (avkvlru) на <function Convert (It…>
направление перекодировки задаётся параметрами Input_Scheme и Output_Scheme. Возможные типы кодировок — UTF-8, UTF-16, UTF-32.
Вообще-то, ввод-вывод в различных кодировках и перекодировки лучше и полнее реализованы в пакете "XmlAda".
[16:20:57] <ada_ru> (avkvlru) спасибо.
[16:28:24] <ada_ru> (sergey_dukov) отвечает (avkvlru) на <по-моему в аде есть …>
Подобие конструкторов и деструкторов реализованы в управляемых типах (Controled Record). Для них введены подпрограммы "Initialize", "Adjust" и "Finalize".
[16:37:23] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <Подобие конструкторо…>
я гляну. но если они реализованы просто как виртуальные методы, то это работать будет не так как надо.
[16:49:56] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <я гляну. но если они…>
Они работают как надо.
Initialize — вызывается при создании объекта в памяти (в стеке или оператором new — неважно).
Adjust — вызывается при копировании одного объекта в другой. Сначала производится стандартное побитное копирование, за тем вызывается подпрограмма Adjust и программист решает, что нужно изменить в цели копирования.
Finalize — вызывается при покидании объектом области своего действия.
[16:51:36] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <Они работают как над…>
А если мой класс унаследован от кого-то? Чей именно Initialize будет вызван? А Finalize?
[16:52:53] <ada_ru> (sergey_dukov) А как это реализовано, точно сказать не могу. Наверное стандарт задаёт некие требования к компилятору.
[16:53:25] <ada_ru> (I_vlxy_I) Ну, мне интересно, что будет
[16:53:41] <ada_ru> (I_vlxy_I) Ибо через виртуальные методы это работать не будет как надо
[16:54:01] <ada_ru> (I_vlxy_I) То есть только виртуальности тут не достаточно
[16:55:00] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <А если мой класс уна…>
Всё определяется стандартными правилами наследования АДЫ.
[16:55:53] <ada_ru> (I_vlxy_I) Ну, это ж жесть. Значит конструктор базового типа вызван не будет
[16:56:06] <ada_ru> (I_vlxy_I) Как и деструктор
[16:57:32] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <То есть только вирту…>
Всё виртуальные подпрограммы обязаны бать замещены реальными, другого компилятор не допустит!
[16:58:29] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <Всё виртуальные подп…>
Именно. Одной реальной, чего не достаточно для конструкторов и деструкторов
[16:59:23] <ada_ru> (I_vlxy_I) Там замещение идёт цепочкой вызовов
[17:01:04] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <Ну, это ж жесть. Зна…>
В АДЕ есть возможность явно вызывать методы базового типа.
[17:02:38] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <В АДЕ есть возможнос…>
Знаю. Это везде есть. Но тут это должно делаться автоматически, иначе будут ошибки
[17:02:53] <ada_ru> (I_vlxy_I) Люди постоянно забывают все подряд
[17:03:13] <ada_ru> (I_vlxy_I) Надежность превыше всего!
[17:07:12] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <Знаю. Это везде есть…>
Тут вопрос спорный. Скорей, по моему мнению, автоматизм будет чаще вызывать коллизии и ошибки.
[17:07:50] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <Тут вопрос спорный. …>
Неа. По моему опыту - это не так.
[17:08:17] <ada_ru> (I_vlxy_I) Правила для базового типа должны быть те же, что и для поля записи
[17:08:42] <ada_ru> (I_vlxy_I) Потому, что в данном аспекте они не отличимы
[17:17:57] <ada_ru> (sergey_dukov) По моему, авторы стандарта уж чересчур сильно прогнулись в сторону похожести АДЫ на СИ++. Например вызов метода типа в нотации ТИП.МЕТОД. Такого быть не должно! Программист должен помнить, что он программирует на АДЕ! Только так можно полностью реализовать надёжность АДЫ. Разночтений быть не должно!
[17:19:50] <ada_ru> (reznikmm) отвечает (avkvlru) на <Ещё подскажите кто-н…>
Тут ответ зависит от того насколько нужна поддержка Unicode. Например GPS хранит в обычной String, как результат нифига нельзя посчитать сколько у тебя реальных символов в строке и как по ним пройтись, преобразовать пегистр, правильно сравнить. В Матрёшке Вадим сделал отдельный тип для юникод-строк, где всё правильно работает
[17:21:21] <ada_ru> (reznikmm) Стандарт Ады сам путает в этом вопросе. В одном месте они пишут что в String хранится только Latin-1, а потом в Аде 2005 они добавляют subtype UTF8_String is String;, что естественно противоречит.
[17:23:05] <ada_ru> (reznikmm) Wide_Wide_String может хранить в каждом элементе свой unicode copde point и есть стандартные подпрограммы преобразование в/из UTF-8, но этого тоже не всегда достточно.
[17:32:51] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <Знаю. Это везде есть…>
А если я не хочу чтоб вызывался метод порождающего типа? В СИ++ есть понятие "virtual". В АДЕ этого нет. А то что я раньше писал про виртуальные методы, это ошибка. Я имел ввиду "абстрактные" методы.
[17:36:12] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <А если я не хочу что…>
Если что, я про то, что конструктор не может быть просто абстрактным методом. Него совершенно другая семантика.
[17:37:02] <ada_ru> (I_vlxy_I) Если у него вдруг семантика обычного абстрактного метода, то это добавит ручной работы, и увеличит число ошибок
[17:39:12] <ada_ru> (avkvlru) Спасибо Максим, я тоже уже посматриваю на матрёшку, хотя для разовой операции- это проблема
[17:40:05] <ada_ru> (avkvlru) Кстати как Вы думаете- может на адару- запихнуть небольшую статью про блокировки в winada- хотя там в принципе всё несложно, но пара путающих моментов есть...
[17:40:22] <ada_ru> (avkvlru) По итогу то всё свелось к 10 строчкам хода)
[17:41:24] <ada_ru> (avkvlru) ибо стандартная блокировка в gnat.lock - слишком уж убогая, да ещё и виндоус нормально не пашет
[17:41:51] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <Если у него вдруг се…>
В АДЕ нет ВИРТУАЛЬНЫХ методов! А абстрактные методы, как и СИ++, обязательно должны быть замещены. Иначе компиляция, как и СИ++, не пройдёт.
[17:47:20] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <В АДЕ нет ВИРТУАЛЬНЫ…>
При чем тут это? Ещё раз - надежная семантика конструкторов не может быть реализована через обычную диспетчеризацию абстрактных или там виртуальных методов. Всё
[17:49:20] <ada_ru> (avkvlru) 07.05.2020 00:31 182 233 hello2000.exe
07.05.2020 00:31 989 883 hello2017.exe
[17:49:55] <ada_ru> (avkvlru) это одна и та же программа- выводящая hello world... скомпилированная компиляторами 2000 и 2017 года.
[17:50:07] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <07.05.2020 00:31 …>
Успех. Реальный. Размер ехе вырос сильно меньше чем мощность компа :-)
[17:50:21] <ada_ru> (avkvlru) Мда... тяжело нам будет без закона мура)
[17:50:43] <ada_ru> (I_vlxy_I) Не, ну стандартная либа то возросла тоже
[17:51:00] <ada_ru> (avkvlru) Но всё же... мне интересно, ЧЕГО они нашли в коде Put_Line("Hello world");
[17:55:13] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <При чем тут это? Ещё…>
Абстрактный метод — это метод не реализованный в базовом типе.
А без виртуальных методов, и в частности конструкторов и деструкторов всё гораздо проще, понятнее и НАДЁЖНЕЕ. Только помните, что это АДА, а не СИ++!
[17:56:35] <ada_ru> (I_vlxy_I) отвечает (sergey_dukov) на <Абстрактный метод —…>
конструктор никак не привязан к существованию виртуальных и абстрактных методов, также он никак не привязан к тэговости типа, если что. то, что в Аде подобная функциональность существует только для тэговых типов - косяк дизайна языка
[17:56:45] <ada_ru> (I_vlxy_I) и да, конструкторы повышают а не снижают надежность
[17:57:02] <ada_ru> (I_vlxy_I) и да, конструкторы это не имеют никакого отношения к виртуальным методам
[17:59:38] <ada_ru> (avkvlru) а разве в таггированных типах нет конструкторов? Точнее разве они не указываются принудительно в операторе new?
[18:01:32] <ada_ru> (I_vlxy_I) отвечает (avkvlru) на <а разве в таггирован…>
вопрос у том, как они работают и будет ли вызван конструктор базового типа также, как будут вызваны конструкторы полей, или же тут будет разная семантика
[18:01:45] <ada_ru> (sergey_dukov) Ну нет этого в АДЕ! И Слава Богу! Я не хочу, чтобы Initialize ходил по цепочке порождающих типов!
[18:04:36] <ada_ru> (I_vlxy_I) Мда... я чувствую, что у нас разные словари. Нужно как-то на примерах указать где тут проблема.
[18:08:37] <ada_ru> (I_vlxy_I) Может быть займусь на досуге
[18:16:10] <ada_ru> (sergey_dukov) отвечает (I_vlxy_I) на <Мда... я чувствую, ч…>
Хотя с Initialize я могу быть и не прав! Может этот метод и имеет особый "статус" как в СИ++. Прошу меня за это простить. Я когда-то с этим плотно соприкасался, когда разрабатывал "GNATCOM" с ЮНИКОДОМ. Но сейчас всё забыл. Давайте спросим специалиста. Максим, разъясните этот вопрос, пожалуйста.
[18:17:19] <ada_ru> (I_vlxy_I) Я помню, что там как минимум у полей должны дергаться эта функция. Странно будет если у базы не дергается
[18:20:10] <ada_ru> (reznikmm) отвечает (avkvlru) на <Кстати как Вы думает…>
Да, с удовольствием выложу
[18:24:25] <ada_ru> (sergey_dukov) отвечает (reznikmm) на <Да, с удовольствием …>
Максим, не подскажете ли как работает метод Initialize. Имеет ли он особый статус, как конструктор в СИ++?
[18:26:12] <ada_ru> (reznikmm) когда переопределяешь Initialize то нужно самому вызвать метод базового класса, если речь об этом
[18:26:43] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <когда переопределяеш…>
:-(
[18:26:53] <ada_ru> (I_vlxy_I) Место для ошибки тут
[18:27:07] <ada_ru> (reznikmm) а где-то это работает по другому?
[18:27:16] <ada_ru> (sergey_dukov) Да именно в этом. Спасибо.
[18:27:28] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <а где-то это работае…>
Везде
[18:34:28] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <а где-то это работае…>
C++, Java, C#, Delphi
[18:40:00] <ada_ru> (reznikmm) но если тебе надо что-то сделать *ДО* вызова родительского конструктора?
[18:41:12] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <но если тебе надо чт…>
Например?
[18:41:56] <ada_ru> (reznikmm) я не знаю :(
[18:43:56] <ada_ru> (I_vlxy_I) отвечает (reznikmm) на <но если тебе надо чт…>
А что если нужно сделать что-то до вызова Initialize полей?
[18:55:36] <ada_ru> (dmt_ov) отвечает (I_vlxy_I) на <А что если нужно сде…>
Значит этой логике не место в текущем классе)
[18:56:09] <ada_ru> (I_vlxy_I) В Rust’e например нет конструкторов и всей семантики с ними связанной, но там и наследования нет. Поэтому и проблем нет.
[18:56:49] <ada_ru> (I_vlxy_I) И было бы ок если бы в Аде было также. Но в Аде я вижу какое-то половинчатое решение
[18:57:35] <ada_ru> (nitrocerber) Barbara Liskov intensifies
[18:58:24] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <Barbara Liskov inten…>
Отсутствие наследования не означает отсутствие ООП возможностей :-)
[18:58:50] <ada_ru> (nitrocerber) там как раз про сабститьютабилити
[18:59:19] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <там как раз про сабс…>
Сабститутка!
[18:59:28] <ada_ru> (nitrocerber) Меня даже когда-то в гнаттесте заставили сделать режим, который конвертит объект дочернего типа в тип предка и гоняет тесты предка по потомку
[18:59:49] <ada_ru> (nitrocerber) типа, все тесты папаши должны применяться к потомку, даже если у потомка эти тесты переопределены
[19:00:50] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <типа, все тесты папа…>
И это правильно
[19:01:14] <ada_ru> (nitrocerber) пёс знает. иногда его намеренно нарушают
[19:05:52] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <пёс знает. иногда ег…>
https://youtu.be/fEYceCWI_h0
[19:08:15] <ada_ru> (nitrocerber) вертушка с ноги. и пояснить криком про сабститьютабилити
[19:08:33] <ada_ru> (nitrocerber) только наследование, только ооп. 359
[19:08:37] <ada_ru> (nitrocerber) или чо там было...
[19:10:44] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <вертушка с ноги. и п…>
Да!
[19:11:39] <ada_ru> (I_vlxy_I) Причём с джунами то ещё можно щадяще тут поступать, а вот если сеньер такое делает...
[19:12:28] <ada_ru> (nitrocerber) через дупу ооп воткнули в аду, чего уж
[19:12:43] <ada_ru> (nitrocerber) надо выкинуть
[19:13:14] <ada_ru> (I_vlxy_I) отвечает (nitrocerber) на <через дупу ооп воткн…>
Да. Вот то, как оно сделано в том же расте - прямо хорошо. Ну, то есть в Аде это смотрелось бы НАМНОГО лучше, чем то, что туда попытались вкорачить из симулы и с++/джавы.
[19:15:03] <ada_ru> (I_vlxy_I) в расте тут постарались всё сделать максимально эксплицитным. и без наследования как такового 🙂 но с контрактами/интерфейсами.
[19:15:11] <ada_ru> (I_vlxy_I) в общем, в Аде это смотрелось бы хорошо
[19:15:20] <ada_ru> (I_vlxy_I) но старое из Ады уже не выкинуть, увы
[19:15:28] <ada_ru> (nitrocerber) ада 2.0!
[19:16:32] <ada_ru> (I_vlxy_I) Ада++!
[19:16:34] <ada_ru> (I_vlxy_I) 😛
[20:16:09] <ada_ru> (Gourytch) https://github.com/features/codespaces
Ухъ!
[20:17:54] <ada_ru> (I_vlxy_I) отвечает (Gourytch) на <https://github.com/f…>
вау! прям будто бы аркадия!
[20:18:27] <ada_ru> (Gourytch) круть, согласись же?
ещё если там собирать и тестить можно - вообще дважды круть будет
[20:18:41] <ada_ru> (Gourytch) и артефакты собирать
[20:18:51] <ada_ru> (I_vlxy_I) угу. правда я не понимаю как они смогут поддержать мой извращенный путь билда на моем языке 🙂
[20:19:02] <ada_ru> (Gourytch) и дейли билды
(* чот размечтался *)
[20:19:18] <ada_ru> (I_vlxy_I) ну, то есть если там можно будет хоть как-то плагины ставить к vscode и хоть как-то кастомизироват это всё
[20:19:33] <ada_ru> (I_vlxy_I) отвечает (Gourytch) на <и артефакты собирать>
эмм.. github actions? не?
[20:19:39] <ada_ru> (I_vlxy_I) там есть встроенная CI же
[20:20:21] <ada_ru> (Gourytch) отвечает (I_vlxy_I) на <угу. правда я не пон…>
ну может там какая-нибудь контейнерная приблуда будет и интерфейс, мол для кастомных запускаем
/build.sh
а чо вы там нахерачите - ваши проблемы )
[20:21:23] <ada_ru> (Gourytch) отвечает (I_vlxy_I) на <эмм.. github actions…>
яхз, я в гитхабе такое никогда не пользовал. он для меня был чисто сырцехранилищем )
[20:21:43] <ada_ru> (I_vlxy_I) отвечает (Gourytch) на <яхз, я в гитхабе так…>
фу! ты его просто использовал!
[20:21:47] <ada_ru> (I_vlxy_I) нельзя так! бездуховно!
[20:22:40] <ada_ru> (Gourytch) отвечает (I_vlxy_I) на <фу! ты его просто ис…>
каюсь, я чёрствый мужлан. петякантроп. илои витякантроп?
ПУЗАНТРОП - это точно! =)
[20:27:14] <ada_ru> (I_vlxy_I) Короче, микрософт СОВРАЩАЕТ
[20:32:19] <ada_ru> (Gourytch) прикармливает )
[20:56:18] <ada_ru> (reznikmm) отвечает (Gourytch) на <яхз, я в гитхабе так…>
а я запилил на выходных GH Action для сборки RPM из Адского проекта через SPEC-файл. Даже как-то работает 😊
[20:56:45] <ada_ru> (reznikmm) https://ada.tips/
[20:56:54] <ada_ru> (Gourytch) отвечает (reznikmm) на <а я запилил на выход…>
круто. 👍