Задать вопрос
Ответы пользователя по тегу Программирование
  • Для каких примерно целей программисту нужен computer science?

    @Akela_wolf
    Extreme Programmer
    Если коротко: не нужен.

    Если длинно, то нужен в определенных областях. Например, разработка компилятора (особенно оптимизирующего компилятора) - это самый что ни на есть computer science. Разработка ядра операционной системы. Разработка виртуальной машины. И тому подобные задачи, которые требуют глубокого понимания как работает компьютер, какие алгоритмы будут эффективны, а какие нет.
    В обычной жизни прикладного программиста максимум computer science, который мне приходилось использовать - это понимание О-нотации. Чем для меня, как для разработчика, оборачивается использование коллекции со временем доступа О(1) или О(n)? Насколько критично в данном месте (с определенными объемами данных) использовать алгоритм сложности О(n^2)? И тому подобные вопросы.
    Ответ написан
    4 комментария
  • Как научиться писать большие проекты в одиночку и не сойти с ума?

    @Akela_wolf
    Extreme Programmer
    Роберт Мартин. "Чистая архитектура"
    Ответ написан
    Комментировать
  • VM vs native, какие плюсы и минусы?

    @Akela_wolf
    Extreme Programmer
    Плюсы VM:
    1. Главный плюс - переносимость. У нас есть VM и байт-код, работать это будет на любой платформе для которой есть VM. В частности девиз Java: write once, run anywhere.
    2. Упрощение взаимодействия между разными языками. В случае native, например, у нас есть библиотека на C++ и код на Go - как их подружить? Это возможно, но это дополнительная сложность и трудоемкость. В случае JVM у нас есть interoperability между Java, Scala, Kotlin, Groovy и т.д. В случае JS - аналогично, между Javascript, Typescript, Kotlin.js, Dart. Конечно там есть свои особенности, например использовать Kotlin coroutines из Java-кода не так просто, но в целом, на базовом уровне все вполне пристойно работает вместе.
    3. JIT-оптимизация. JIT-компилятор может собирать статистику работы конкретного экземпляра программы, выявлять hot paths и оптимизировать именно их. При компиляции такую оптимизацию сделать невозможно т.к. она зависит от рантайма (в частности от данных с которыми работает программа)

    Минусы:
    1. Зависимость от VM. Коду, очевидно, нужна VM. Во многих продуктах приходится поставлять VM вместе с продуктом, чтобы не зависеть от установленного в системе софта. Это увеличивает объем дистрибутива.
    2. Поскольку перед стартом программы должна стартовать VM - программа стартует дольше
    3. Производительность. В общем будет ниже чем у native кода. Хотя в очень многих случаях это не будет критично.
    Ответ написан
    Комментировать
  • Как назвать этот процесс?

    @Akela_wolf
    Extreme Programmer
    А первый проект прям проект-проект или по сути скрипт сборки второго проекта?
    Пока выглядит так, что эти три проекта (2-4) суть модули какой-то системы. А первый - часть buildscript этой системы.

    По крайней мере так было бы в моем мире JVM и Gradle.
    Ответ написан