Size: a a a

2019 December 20

JC

Julian =) Coffee in archlinux_ru
Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀
зачем-зачем, задача такая. Например, ты пишешь браузер, а в браузере есть плагины. Плагин загрузился, посмотрел на текущий код браузера и говорит - ну блэт, кто ж так делает, не нужно использоваться метод draw() для отрисовки квадратиков, нужно draw_accelerated(). А, у тебя такого метода нету? Ну сейчас добавим.
Намекаешь на прототипное програмирование?
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in archlinux_ru
Julian =) Coffee
Намекаешь на прототипное програмирование?
да в Java можно и не в прототип добавить метод, а прямо в самый настоящий класс. Просто это будет сложнее
источник

JC

Julian =) Coffee in archlinux_ru
А как ты уведомишь тогда?
источник

JC

Julian =) Coffee in archlinux_ru
За Java и прочие языки не знаю, в Python можно посмотреть есть ли метод в dir от класа.
Да и добавить наверняка можно.
источник

JC

Julian =) Coffee in archlinux_ru
C другой стороны, секурно ли это, если любой может менять код класса
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in archlinux_ru
во-первых, можно использовать JVMTI и использовать хот релоад классов в JVM по отладочному протоколу. Это делает IDE, когда ты просишь добавить кода без перезапуска приложения

во-вторых можно использовать JavaCompiler (Java) или Roslyn (C#), чтобы в рантайме взять код класса, добавить в него нужный патч как в исходник, перекомпилировать и зарелоадить класс в новый класслоадер.

во-третьих, можно использовать Spring с BeanPostProcessor-ами и ReloadableContext. В спринге если что можно контексты перезапускать, и даже писать свои собственные. Ты перезапускаешь контекст приложения, берешь тот же самый базовый объект-бин, но обобрачиваешь его другим набором динамичеких проксей, где будут новые методы. Всё заново autowire-ится, конечно - долгая и неприятная процедура. Тут это получается не совсем класс, а "система, ведущая себя как будто бы класс изменился" - то есть, скорее архитектурное решение

как старый код будет использовать новый класс? Ну так он будет вначале резолвить и кэшировать ссылки на него через регистри, на манер OSGi.

можно сам OSGi кстати заюзать. Или что-то такое
источник

CV

Captain Jack Vielfrass 🇷🇺🇮🇹🧚‍⃤ in archlinux_ru
источник

CV

Captain Jack Vielfrass 🇷🇺🇮🇹🧚‍⃤ in archlinux_ru
Кааааааеф
источник

u

usanama in archlinux_ru
охуеть у вас портянки
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in archlinux_ru
usanama
охуеть у вас портянки
ну что поделаешь, когда @Julian_CM говорит, что JS - говно.

а в JS достаточно просто взять и к любому классу прицепить любой метод

потому что класс в JS - это не встроенная конструкция языка, а паттерн проектирования

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

JC

Julian =) Coffee in archlinux_ru
а потом поддерживать код, который сам себя переписывает в рантайме
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in archlinux_ru
А в Common Lisp так поверх стандартной системы ещё и понаписали красивых интерфейсов, в которые можно вклиниваться, чтобы изменять ООП по своему вкусу

https://habr.com/ru/post/230619/
источник

JC

Julian =) Coffee in archlinux_ru
🌝
источник

CV

Captain Jack Vielfrass 🇷🇺🇮🇹🧚‍⃤ in archlinux_ru
Все. я дожил до будущего
источник

u

usanama in archlinux_ru
Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀
ну что поделаешь, когда @Julian_CM говорит, что JS - говно.

а в JS достаточно просто взять и к любому классу прицепить любой метод

потому что класс в JS - это не встроенная конструкция языка, а паттерн проектирования

и ты можешь делать классы, используя совершенно разные паттерны. Таким образом можно получать совершенно разное ООП
мб он просто не понимает? ну или, допустим, не хочет понять почемуто
я скажу так. я за функциональщину. в хорошем смысле. и топлю против аскетов
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in archlinux_ru
У меня даже выпуск подкаста был про то, как писать скрипты на Java :))

https://m.habr.com/ru/company/jugru/blog/429670/
источник

OC

Oleg Chirukhin ☄️ 🧙🏻‍♂️🚀 in archlinux_ru
Правда, там с тех пор все немного изменлось, потому что к выпуску Java 13 все поняли, что сырые строки так делать нельзя, и переделали. Визуально это работает примерно так же, но ключики для командной строки немного другие
источник

u

usanama in archlinux_ru
да что вы сретесь емае. заставили чтоли вас писать ситемные вызовы на питоне а базы всякие на сишке? каждый прогер живет в своем болоте. иэто ботото щас настолько велико, что никто не знает как оно работает. имхо
источник

JC

Julian =) Coffee in archlinux_ru
Я просто считаю, что у нас сейчас программы разрались до тех размеров, что ни одни живущий не знает, как они себя ведут
источник

JC

Julian =) Coffee in archlinux_ru
Поэтому если компилятор нам не помогает проверять коректность кода, то будет бо-бо
источник