Пользователь пока ничего не рассказал о себе

Достижения

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

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

Все теги (16)

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

Все ответы (33)
  • Как восстановить знания по C++ на сегодняшний день?

    @Koss1024
    0. Прочитайте Страуструпа последнее издание (англ). Если язык вы знали то это лучшая книга чтобы обновить знания

    1. C++11 C++14, в производстве чаще пока еще С++03
    2. Лучший компилятор clang++ (поддерживает любой стандарт и любую платформу)
    3. boost это набор библиотек на все случаи жизни самый хорошо сынжинереный. Стоит писать не под него а с использованием
    4. пункт 3
    5. C++ для задач требующих точного понимания стоимости каждой операции, это embedded DSP Server computing
    Math много чего еще

    Учтите, С++ это инструмент который нужно учить постоянно

    Дополню
    -----------
    С++ мультипарадигменный
    А так же много уровней абстракции поддерживает

    На нем можно писать как на чистом С - это самый низкий уровень
    Можно ООП и абстракции
    Можно паттерны
    А можно функциональный стиль

    С С++ в этом и проблема что знать нужно очень много.

    Я могу сказать что я читал на протяжении своей карьеры
    Прежде всего я умел программировать и имел представление об алгоритмах и модели памяти
    (что такое указатели, алокация удаление и т д)

    Сначала я почитал какую-то левую книжку и изучил его на уровне новичка. Написал проект библиотека линейной алгебры (это было еще в универе, задача была актуальна для меня) В принципе здесь моих знаний хватало чтобы стать джуниором, но я такой подход не люблю

    Потом Страуструп (тогда это было издание по стандарту 03). Здесь я дополнил свои знания деталями которые пропустил при самостоятельном изучении. Тут стоит отметить что Страуструп весьма странная книга и написана тяжело. Секцию же ООП вообще там лучше не читать (самая последняя).

    Где-то рядом я прочитал Гради Буч - ООА и ООП с примерами применения. Очень хорошая кика чтобы понять к чему все это придумали вообще. Сильно выправляла мозги

    Потом был Керниган и Ричи Язык программирования С. Эту я прочитал просто от безделья, но теперь считаю что это было необходимо. Здесь можно понять зачем придумали именно С. И насколько там все просто, задумано.

    Следом пошли техники: Герб Саттер Решение сложных задач на С++ и Новые сложные задачи С++
    читать обязательно, разобрано много костылей и проблем языка. Дано очень много дельных советов

    С Мейерс - Эффективное использование С++ туда же. Прекрасный разбор.

    Макконнел - Совершенный код. Очень крутая книга. Она отшлифует уже почти бриллиант.

    Помимо всего прочего я работал над проектами и постоянно читал всяческие форумы, блоги, дискутировал с коллегами. Решал задачки разных собеседований.

    Отдельного внимания заслуживает книга Банды четырех (Паттерны).
    Я ее с трудом дочитал, читал ее я уже аж после всего перечисленного и после примерно 7-8 лет опыта С++.
    Я уже давно был Senior dev. и наконец нашел таки время и для нее. Она мне показалась до ужаса скучной и очевидной, поскольку почти все предложенные решения я придумывал и сам неоднократно. Кроме того, большинство этих решений неоправданно тяжелы, и очень запутывают код. Тема холиварная и спать надо много, но я пожалуй остановлюсь только на том что в моей практике, худшими с точки зрения цены ошибок были разработчики которые учились начиная с этой книги. Их код недодерживаем запутан и очень плохо поддается рефакторингу. Такой код имеет самые долго отлеживаемые ошибки.

    Где-то рядом я прочитал Фаулера - Рефакторинг. Вполне себе неплохо. Рекомендую. Но тут стоит к опытному коллеге обратиться. Идея то проста Тесты - Маленькие комиты - YAGNI KISS и SRP но детали лучше познавать на практике.
    У меня был хороший лид, который меня в конце концов научил :)

    Совсем забыл! Александреску же! Скажем так - не так страшен Александреску как тот кто его начитался :)
    Фана доставил много, а так же дал возможность на эти игрища потерять около 3-х месяцев работы. Даже не знаю
    стоит ли читать. Наверное стоит, но нужно помнить что на практике лучше не использовать если вы уже не эксперт.

    Остальное С++ не касается, но чтобы стать профессионалом Вам потребуются алгоритмы и структуры данных (Кормен, Кнут), многопоточность (Энтони Уильямс), другие языки(питон, JS, java), оптимизация и профилирование.
    и много много разных специфических знаний

    Удачи Вам в этом нелегком но, безусловно, интереснейшем пути :)
    Ответ написан
    7 комментариев
  • Как понять конструкцию "указатель на указатель"?

    @Koss1024
    Вот с картинками.
    cppstudio.com/post/9555
    Ответ написан
    Комментировать
  • Стоит ли использовать private static функции в C++?

    @Koss1024
    На самом деле ответ неоднозначен. И важны критерии

    Если мы говорим о функциях реализующих что-то но не требующими доступ к закрытой части класса, то зачем их в классе объявлять, пусть просто в cpp-шнике валяются (если они никому снаружи не нужны)

    Важно понимать, что чем меньше кода тем лучше, и чем тоньше интерфейс класса тем лучше
    если при этом функционал выполняется. (в разумных пределах)
    Поэтому лишний код в виде объявления функции в заголовке это плохо.

    Однако если доступ таки нужен (что скорее всего результат не лучшей декомпозиции) то конечно да

    Это не вопрос стиля. В С++ тоже можно и нужно писать функции. Это не Java.
    Ответ написан
    Комментировать
  • Как правильно распарсить запись функции и какие структуры данных использовать для ее хранения?

    @Koss1024
    Алгоритм известен более чем
    https://ru.wikipedia.org/wiki/Алгоритм_сортировочн...
    Пример в статье заменяем на названия функций и все. Если речь не идет о просини выражений дополнительно.

    Вопрос точно по С++? Поскольку запрос с сервера здесь выглядит слегка неуместно
    Всему свой тул
    Ответ написан
    Комментировать
  • Какую кривую эффективнее построить на множестве [0; 1] - Безье, нецелочисленную степенную или гиперболу?

    @Koss1024
    Здесь как родная ложится Рациональная кривая Безье второго порядка

    Базис
    b0(t) = (1-t)^2
    b1(t) = 2*(1-t)
    b2(t) = t^2

    Точки
    P0 = (0, 0)
    P1 = (1, 0) (или 0,1)
    P2 = (1, 1)

    Тогда обычная кривая имеет вид: B(t) = sum_by_i(b(i) *P(i))

    Рациональная B(t) = sum_by_i(b(i) * P(i) * w(i) ) / sum_by_i(b(i, w(i))

    Где w(i) это веса вершин установив значение w(1) > 1 вы получите свой результат

    На пальцах кривая стремится приблизиться к вершине с весом > 1 и наоборот
    Ответ написан
    Комментировать