Skip to content
View SpyDev14's full-sized avatar

Block or report SpyDev14

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
SpyDev14/README.md

aka Video Kompany, SpyDev14, _b.VV();, etc.

Обо мне

Привет! Меня зовут Влад, я студент колледжа на третьем курсе по IT направлению. В свободное от работы и учёбы время я люблю писать программы, люблю изучать программирование, компьютерные науки: люблю разбираться как работает какая-то "магия". Сети, например, или процессор. Также иногда принимаю участие в разработке билдов Space Station 14. Ещё нравится изучать языки программирования: недавно попробовал язык "Rust" - мне очень понравился, но не до конца понял времена жизни в плане их аннотаций.

Далее я делился своим мнением о других языках, включая: Lua, Python, Js (чуть-чуть), C# и косвенно Java в контексте подхода к ООП.

Помимо него хочу попробовать Lua, в частности ООП в Lua (ооочень легкий язык, там его нужно реализовывать вручную, потому и хочу попробовать), а так я уже неплохо разбираюсь в C# и хорошо знаю Python. Касательно Python, мне больше всего в нём нравится реализация ООП. Выглядит примерно также, как мы бы реализовали его в Lua, но уже реализованное на уровне интерпертатора, но как минус - нет возможности изменять работу ООП как нам нужно. Например, не переопределить стандартную делегацию необработанных вызовов нашему объекту, в нём захардкоженна только стандартная последовательность: экземпляр -> объект типа -> родительский тип -> ... -> object -> raise AttributeError. Можно сделать это через переопределение __getattr__, но это не то что бы чистый способ, некоторые моменты могут сломаться. Если конкретнее, мне нравится, что в Python всё действительно объект: функция, переменная, класс (тип), модуль / пакет, и т.д, понятная реализация наследования (делегации вызовов, которые исходный объект не знает как обработать, т.е в нашем случае доступ к атрибутам, которых нет в __dict__ объекта с которым мы работаем, например __dict__ экземпляра; я уже описал последовательность выше). А полиморфизм реализован через утиную типизацию и, что не мало важно, в языке есть аннотация типов, позволяющая нативно описать, что мы ожидаем на входе и выходе из функций, чего нет в том же Lua или в JavaScript. Хотя не хватает фишки из Rust - нельзя указать тип "A и B", (в Rust: A + B), нужно создавать класс, наследующийся от всех необходимых. Возвращаясь ко "всё - объект" также нравится, что типы - это объекты-фабрики экземпляров, и сами эти типы создаются мета-типами (метаклассами) - объектами-фабриками фабрик. Чума! В том же C# (и в Java) ООП кривое, мне не нравится как оно там реализовано, всё захардкоженно и скрыто от наших глаз - вот где настоящая "магия", а не в Python! Более магического языка чем C# я и не вспомню! Если в Python всё понятно, то в C# функционал на уровне хардкода внутри компилятора, кодогенерации и т.д. Например, если как работают ORM в Python в целом понятно - то то, как работает в Entity Framework в C# - это для меня какая-то загадка. Ну как пример: указание на поля модели там реализовано через анонимные лямбда функции вида x => x.MyProperty! И как указано в документации - это не компилируется в выполняемый код, а просто сохраняется как-то в таком виде. Правды ради, с EF я и не работал, только видел чужой код. В любом случае, в C# настоящая магия, то же ООП: классы как структуры языка, неявная делегация вызовов, неявная передача this и доступ к полям this внутри методов, конструкторы как часть языка, в общем много магии. В том же Python всё как на ладони, можно проследить создание объекта от вызова __call__ у объекта-типа, до __init__ на экземпляре для его инициализации (это принято считать конструктором в Python).

Уфф, как-то я разошёлся. В общем, приятно познакомится)

Ps: и помимо работы ООП в языках, я могу примерно также, и даже больше, про сотню других тем, будь то как выглядит и работает программа на низком (машинном) уровне (функции / процедуры (и ещё чем они отличаются! (концептуально)), к примеру), от куда берётся код выхода из программы (значение регистра rax / eax в момент выхода (кстати выход тоже момент интересный: на низком уровне мы должны самостоятельно вернуть управление операционной системе, особенно если у нас не Windows и 25 год, а DOS и 90й год, иначе процессор пойдёт выполнять память, без шуток, разделение выполняемого кода программы и памяти лишь концептуальное); про память: ссылочные / значимые типы, стек, статическая память, куча, аллокация / деаллокация в куче, что за висячие указатели, утечка памяти, двойное освобождение; про работу терминала (консоли; stdin / ..out / ..err, отличия последних двух (интересный факт: input(">>> ") в Python выведет префикс >>> в stderr, а не в stdout)) и так далее.

PPs: ))))), хотя обычно мне это не с кем обсуждать, ИРЛ друзья пошли в автомеханники :/

Контакты

  • Телеграм (приоритетный способ): @bViewVariables
  • Рабочая почта (редко смотрю): zombiefight1408@gmail.com (создавал давно для игровой студии ZF Games, думал делать игры для Play Market)
  • Discrod (пускай будет): spy.3082

Мой вклад в Open Source

Space Station 14

  1. Улучшение UI меню факса (pr на основе моей работы)
  2. Исправил серьёзный косяк с адаптивом (к измененик размера) окна ускорителя частиц
  3. Исправил адаптив окна консоли связи
  4. Исправил локализацию в окне консоли шаттла
  5. Улучшил адаптив окна объекта с зарядом (с компонентом заряда)
  • Ps: Некоторые PR-ы были переоткрыты людьми из сообщества по моему согласию, т.к мои не успели рассмотреть и закрыли из-за особых обстоятельств, с обстоятельствами которых я не согласен, но у меня, увы, нет времени на разбирательства.

Ещё не принятые PR-ы

  1. Улучшение UI консоли заказов (совместно с @c4llv07e)

Nuclear 14

  1. Значительное улучшение локализации названий и описаний внутриигровых ролей (RU форк)
  2. Добавил множество новых рецептов одежды, оружия, щитов и прочего для ранее неиспользуемых, но повсеместно встречающихся, верстаков (бронный, оружейный, и т.д), добавил новый материал - кожу, способы её получения, возможность рвать одежду на кожу.

Crystall Edge

  1. Добавил 'arrow' в названия наконечников стрел (по запросу)

Pinned Loading

  1. django-admin-registrar django-admin-registrar Public

    Python Django package for for convenient registration of models in the admin area without a boilerplate.

    Python 1

  2. tetris-rust tetris-rust Public

    Rust

  3. PersonalGPTAssistantBOT PersonalGPTAssistantBOT Public

    Бот для общения с ChatGPT через telegram

    Python

  4. spy-scripts spy-scripts Public

    Скрипты poweshell для удобной работы с python и не только

    PowerShell

  5. TLTConvectorTraining TLTConvectorTraining Public

    Действительно последний учебный проект

    Python

  6. PrototypeAssembler PrototypeAssembler Public

    Сборщик прототипов SS14

    C# 2