Проблема в не тільки в тому що конструктор видаляється. Вона ще і в тому, що AOT не може генерувати код в рантаймі(Reflection.Emit), а це прямо необхідна штука для нормальної швидкодії. Є контейнери які можуть працювати з АОТ і без Reflection.Emit, але вони не такі зручні як звичайні. Наприклад, Splat(https://github.com/reactiveui/splat) він працює за рахунок того, що розробник повиннен самостійно передати делегат який створить інстанс. Це виглядає наступним чином:
Locator.CurrentMutable.Register(() => new Toaster(Locator.Current.Resolve()), typeof(IToaster));
P.S. Помітив що обрізаються < >. @Admin, ти вкурсі про це?)
Дякую за пояснення. Якщо суть в тому, що AOT викидає конструктори, то чи не можна реєструвати залежності викликаючи new самостійно і обійтись вже існуючими IoC контейнерами і без кодогенераціі?
Тут більша проблема Reflection.Emit. На AOT платформах він відсутній як класс.
В Xamarin є режим AOT компіляції і лінковка під час якої викидують методи/класси/збірки. В результаті, може виявитися що конструктор сервісу, який зареєстрований в звичайному ІоС контейнері, був просто викинутить оскільки ніхто явно його не визивав. Всі ці оптимізації можуть значно покращити швидкість холодного старту.
https://docs.microsoft.com/en-us/xamarin/mac/internals/aot
В Unity є IL2CPP (Intermediate Language To C++) - це штука яка компілить IL код в С++ і потім білдить його уже як С++ застосунок. Цей спосіб вимушені міра, оскільки iOS дозволяє тільки AOT компіляцію от вони і викручуються.
Nice catch!
Здається воно залишилось після моїх старих експереметнів. Звідти уже нічого не використовується. Запустив cleanup всього проекту щоб прибрати подібні штуки.
Варто уточнити, що Wanted Languags в опитуванні Stack Overflow - це мови які програмісти хотіл б вивчити в наступному році. Тобто більшість хоче вчити Python, потім JavaScrip і Go. Це не говорить про те, що вони будуть вчити ці мови, або ці мови стануть популярними, чи для цих мов відкриється більшість вакансій. Це говорить лише про хайп навколо мов.
Автор любить вибрані ним мови, наводить статистику з ними, але бачить лише те, що хоче там бачити. Насправді, якщо об'єктивно дивитись саме на динаміку розвитку (а не абсолютне значення на даний момент) на тому ж графіку за PR, за тим, на скільки люблять розробники певну мову і хотіли з нею працювати, то явним і беззаперечним лідером є TypeScript. Жодна мова не має такого кута нахилу по динаміці, що має TypeScript. Більшість розробників, хто спробували з нею працювати, можуть сказати, що вона має просто гігантську перевагу у порівнянні з JavaScript.
Це якщо говорити про результати наведеного опитування і про перспективи. Звичайно ж на TypeScript не писатимеш програми для космічної, медичної чи взагалі для науково-ємної галузі. Але якщо говорити про найпопулярнішу галузь в програмуванні, як мінімум, в Україні - вебпрограмування, то TypeScript тут має найкращу перспективу.
Виправив обрізку тегів, тепер в блоках з кодом нічого не має обрізатися.
Проблема в не тільки в тому що конструктор видаляється. Вона ще і в тому, що AOT не може генерувати код в рантаймі(Reflection.Emit), а це прямо необхідна штука для нормальної швидкодії. Є контейнери які можуть працювати з АОТ і без Reflection.Emit, але вони не такі зручні як звичайні. Наприклад, Splat(https://github.com/reactiveui/splat) він працює за рахунок того, що розробник повиннен самостійно передати делегат який створить інстанс. Це виглядає наступним чином:
Locator.CurrentMutable.Register(() => new Toaster(Locator.Current.Resolve()), typeof(IToaster));
P.S. Помітив що обрізаються < >. @Admin, ти вкурсі про це?)
Дякую за пояснення. Якщо суть в тому, що AOT викидає конструктори, то чи не можна реєструвати залежності викликаючи new самостійно і обійтись вже існуючими IoC контейнерами і без кодогенераціі?
Тут більша проблема Reflection.Emit. На AOT платформах він відсутній як класс.
В Xamarin є режим AOT компіляції і лінковка під час якої викидують методи/класси/збірки. В результаті, може виявитися що конструктор сервісу, який зареєстрований в звичайному ІоС контейнері, був просто викинутить оскільки ніхто явно його не визивав. Всі ці оптимізації можуть значно покращити швидкість холодного старту. https://docs.microsoft.com/en-us/xamarin/mac/internals/aot
https://docs.microsoft.com/en-us/xamarin/android/deploy-test/linker
В Unity є IL2CPP (Intermediate Language To C++) - це штука яка компілить IL код в С++ і потім білдить його уже як С++ застосунок. Цей спосіб вимушені міра, оскільки iOS дозволяє тільки AOT компіляцію от вони і викручуються.
https://docs.unity3d.com/Manual/IL2CPP.html
А які проблеми з рефлексією в Xamarin, Unity?
Nice catch! Здається воно залишилось після моїх старих експереметнів. Звідти уже нічого не використовується. Запустив cleanup всього проекту щоб прибрати подібні штуки.
https://github.com/byme8/ZeroIoC/blob/master/src/ZeroIoC.Core/ZeroIoCContainer.cs#L5
Пригадалося:
ПС дякую за статтю.
Я питав про пряме чи автоматичне копіювання без зайвих рухів.
Непогане видиво про Юнікод: https://www.youtube.com/watch?v=MijmeoH9LT4
Кому ліньки вибирати чи самому налаштовувати Oh-My-Zsh тему: я був зробив (трохи покращений) відповідник класичної теми bash -- https://gist.github.com/bebyx/38ce753760f4f3a71e56dc081e64aa8e
Також, надибав гламурний плаґін для ZSH автозаповнення: https://starship.rs/
Так, ви праві. Виправлено.
Гарно, що є стаття про юнікод українською. Тільки виправте "БМЯП", бо це мабуть російською.
Варто уточнити, що Wanted Languags в опитуванні Stack Overflow - це мови які програмісти хотіл б вивчити в наступному році. Тобто більшість хоче вчити Python, потім JavaScrip і Go. Це не говорить про те, що вони будуть вчити ці мови, або ці мови стануть популярними, чи для цих мов відкриється більшість вакансій. Це говорить лише про хайп навколо мов.
Якщо ж брати дійсно найпопулярніші мови, то такий рейтинг є в опитуванні. Це мови, якими користуються найбільше. https://insights.stackoverflow.com/survey/2019#most-popular-technologies Згідно цієї таблиці, найбільш популярними є
Автор любить вибрані ним мови, наводить статистику з ними, але бачить лише те, що хоче там бачити. Насправді, якщо об'єктивно дивитись саме на динаміку розвитку (а не абсолютне значення на даний момент) на тому ж графіку за PR, за тим, на скільки люблять розробники певну мову і хотіли з нею працювати, то явним і беззаперечним лідером є TypeScript. Жодна мова не має такого кута нахилу по динаміці, що має TypeScript. Більшість розробників, хто спробували з нею працювати, можуть сказати, що вона має просто гігантську перевагу у порівнянні з JavaScript.
Це якщо говорити про результати наведеного опитування і про перспективи. Звичайно ж на TypeScript не писатимеш програми для космічної, медичної чи взагалі для науково-ємної галузі. Але якщо говорити про найпопулярнішу галузь в програмуванні, як мінімум, в Україні - вебпрограмування, то TypeScript тут має найкращу перспективу.
Зараз все в порядку. Я користуюсь Chrome.
В якому браузері вони не показуються? І чи нема там помилок в консолі JS? Зображення повинні завантажуватися при прокрутці сторінки.
Картинки в статті не відображаються. А стаття цікава.