Люблю элегантные, лаконичные, простые, надёжные решения, поэтому люблю функциональное программирование.

Достижения

Все достижения (3)

Наибольший вклад в теги

Все теги (23)

Лучшие ответы пользователя

Все ответы (23)
  • Методика обучения C#?

    @UnformedVoid
    Разработчик ПО
    Нет никаких правильных или неправильных способов изучения. Просто изучайте дальше, без ожидания результата. Не надо себя изводить поисками волшебных ключиков. Просто делайте постепенно. Дайте себе время включить всё это объёмное описание в свою картину мира. Раз нужно возвращаться к примерам — возвращайтесь. Возвращайтесь столько, сколько нужно. Главное, чтоб был интерес.
    Ответ написан
    Комментировать
  • Зачем нужно ООП?

    @UnformedVoid
    Разработчик ПО
    ООП задумывалось как подход для декомпозиции кода на модули — классы. Каждый класс выполняет свою функцию и код остаётся чистым. Это в идеале. Но в реале, ООП устраняя сложности процедурного программирования, добавляет свои. Всё как вы и описали. Идеи, описанные в книжках, в реальных примерах не имеют применений. Для написания хорошего ООП кода нужно много знать и хорошо понимать абстрактную сторону. Плюс, ООП реализовано множеством способов. Популярные реализации ООП (Java, C#) по-сути являются Класс-Ориентированным Программированием. Помимо этого ООП увеличивает объём кода. Также, постулаты на котором, основано текущее (популярное) ООП создают предпосылки для хрупкого кода. Например, наследование. Изначально наследование подразумевалось как метод для переиспользования кода. Но со временем стало понятно, что большие иерархии классов ведут к непредсказуемым ошибкам. Если обнаруживается ошибка в базовом классе при наличии уже большой иерархии, её исправление чревато появлением сложных ситуаций с падением модулей завязанных на него. Можно привести другие примеры, но это тема для целой статьи, а возможно и для нескольких. Сейчас в языки ООП внедряются фичи из функционального программирования. Функциональное программирование базируется на идее композиции функций. ООП сейчас переходит (или уже перешло) от наследования к композиции объектов. То есть рекомендуется использовать композицию вместо больших иерархий наследования. Функциональное программирование лишено проблем ООП. Многие вещи, которые в ООП надо специально изучать (например шаблоны проектирования, внедрение зависимостей), в ФП являются либо основополагающим принципом, либо естественно выплывающим следствием (в ООП тоже много хороших практик выплывают естественным образом, однако, чтоб понять их естественность приходится хорошенько вглядываться). ФП очень многое даёт из коробки. ООП — неплохая штука, однако оно отживает свой век. ФП позволяет с гораздо меньшими затратами писать надёжный, расширяемый, краткий, элегантный и эффективный код.

    Прошу не воспринимать моё отношение к ООП как негативное — у него есть свои плюсы, своя ниша. Плюс, в контексте ООП люди смогли изучить очень многое, ведь ООП навело их на многие мысли, создало необходимость в изучении структуризации и модуляризации кода. В контексте ФП это не было бы так очевидно (например, внедрение зависимостей в рамках ФП вообще не интересно изучать, так как в ФП — это просто передача параметров функции, то что мы итак понимаем). Так что всему своё место и время.
    Ответ написан
    7 комментариев
  • Можно ли достичь уровня middle в разработке без опыта в офисе?

    @UnformedVoid
    Разработчик ПО
    Чтоб ответить на этот вопрос достаточно убрать домыслы и подключить факты. Уровни (junior, middle, senior) придуманы людьми для приблизительной оценки опыта и не имеют в реале никаких чётких границ. По-сути, сказать, что кто-то middle уровня разработчик — ничего про него не сказать. Каждый человек получает опыт в соответствии со своим развитием (сюда можно включить огромный спектр возможностей человека), так что ответ на ваш вопрос в каждом из случаев будет разный. На счёт того стоит ли позиционировать себя как middle коллега выше уже ответил. Я добавлю от себя, что это зависит от уровня вашей уверенности в своих силах. Если уверены, то хоть сеньором себя позиционируйте — люди поверят. А опыт — это побочный продукт, наработаете в процессе.
    Ответ написан
    Комментировать
  • Как лучше реализовать веб приложение на vue js?

    @UnformedVoid
    Разработчик ПО
    Суть компонентного подхода в следующем:
    1) Логика и представление отделяются друг от друга
    2) Функционал разделяется на слабозависимые и переиспользуемые компоненты
    3) Компоненты компонуются в различных комбинациях, реализуя готовое приложение

    Поэтому ответ на ваш вопрос следующий:
    1) Разбить всё на максимально простые (но не проще) переиспользуемые компоненты
    2) Объединить их в более крупные компоненты и самые крупные из них объеднить в корне приложения (файл в котором запускается корневой экземпляр Vue) в готовое приложение
    Ответ написан
    2 комментария
  • Как работает анимация в хедере на сайте JetBrains?

    @UnformedVoid
    Разработчик ПО
    Вроде такие штуки называются каплевидными объектами или метаболами (metaball). У них есть строгое математическое описание. В целом это самая сложная часть в этой задаче. А в остальном — это просто отрисовка на канвасе в пару-тройку слоёв. По ощущениям каждый «шарик» привязан к какой-то точке, от которой он не может отойти больше чем на отведённое ему расстояние. Ну и вдобавок к этому, он «убегает» от курсора. Вот и весь эффект.

    Вот почитать и пример реализации:
    https://ru.wikipedia.org/wiki/Metaball
    paperjs.org/examples/meta-balls
    Ответ написан
    2 комментария

Лучшие вопросы пользователя

Все вопросы (2)