• Советуют разработчики: подборка популярных книг о программировании, языках, алгоритмах

      В сегодняшнем материале мы собрали одни из наиболее популярных книг, отобранных самими разработчиками — резидентами Reddit, Quora, Stack Exchange, Stack Overflow и Hacker News.

      В нашу подборку попали работы по популярным языкам программирования, проектированию ПО, работе с Linux-системами, сборники практических советов для разработчиков — от начинающих, до опытных. Объединяют эту подборку высокие оценки самих программистов, которым эти книги помогали на разных этапах их карьеры.

      Читать дальше →
    • Списки с пропусками: вероятностная альтернатива сбалансированным деревьям

      • Translation
      image

      Списки с пропусками — это структура данных, которая может применяться вместо сбалансированных деревьев. Благодаря тому, что алгоритм балансировки вероятностный, а не строгий, вставка и удаление элемента в списках с пропусками реализуется намного проще и значительно быстрее, чем в сбалансированных деревьях.

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

      Балансировать структуру данных вероятностно проще, чем явно обеспечивать баланс. Для многих задач списки пропуска это более естественное представление данных по сравнению с деревьями. Алгоритмы получаются более простыми для реализации и, на практике, более быстрыми по сравнению со сбалансированными деревьями. Кроме того, списки с пропусками очень эффективно используют память. Они могут быть реализованы так, чтобы на один элемент приходился в среднем примерно 1.33 указатель (или даже меньше) и не требуют хранения для каждого элемента дополнительной информации о балансе или приоритете.
      Читать дальше →
      • +61
      • 27.6k
      • 9
    • Английский для айтишника? Легко!

        Эта тема не относится к IT напрямую, но все знают, что без нее никуда. К сожалению, далеко не у всех есть возможность изучать английский с преподавателями. Ну что ж, попробуем заняться этим дома и с максимальной отдачей!
        Читать дальше →
      • Чтобы пацанам было не стыдно показать

          Я стар и уже глуп, а у вас всё впереди, уважаемый программист. Но позвольте дать вам один совет, который наверняка поможет в вашей карьере – если, конечно, вы планируете остаться программистом.

          Советы типа «писать красивый код», «хорошо комментировать свои доработки», «изучать современные фреймворки» — очень полезные, но, увы, второстепенные. Они идут прицепом к главному качеству программиста, которое надо в себе развивать.

          Вот это главное качество: пытливый ум.
          Читать дальше →
        • Нейронные сети с нуля. Обзор курсов и статей на русском языке, бесплатно и без регистрации

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

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

            Обзор состоит из нескольких разделов, чтобы каждый мог выбрать уровень с которого можно начать.
            Для крупных разделов и видео-курсов указаны приблизительные временные затраты, необходимые знания, ожидаемые результаты и задания для самопроверки.


            Читать дальше →
          • Как я попал в ThoughtWorks или образцовое интервью

              image

              Не кажется ли вам странным то, что когда вы собираетесь поменять место работы и возникает необходимость пройти интервью, то в первую очередь вы думаете «надо подготовиться к интервью». Прорешать задачи на HackerRank, почитать Crack the coding interview, зазубрить как устроен ArrayList и чем она отличается от LinkedList. Ах да, еще сортировки спросить могут, и явно будет непрофессионально сказать, что quick sort скорее всего будет лучшим выбором.
              Но постойте, вы ведь программируете 8 часов в день, решаете интересные и нетривиальные задачи, и на новом месте работы будете делать плюс-минус тоже самое. Но тем не менее, чтобы пройти интервью необходимо как-то дополнительно готовиться, даже не оттачивать ежедневные навыки, а выучить то, что вам не понадобилось ни на текущем месте работы, ни вряд ли понадобиться на следующем. На ваши возражения о том, computer science у нас в крови, и разбуди нас посреди ночи мы обязаны написать с закрытыми глазами на наволочке обход дерева в ширину даже не приходя в сознание, я отвечу, что если я буду устраиваться в цирк, и моим главным трюком будет именно это — то пожалуй да, я согласен. Нужно этот навык проверить.
              Читать дальше →
            • Начинаем изучать STM32: битовые операции

                Небольшое отступление...


                В прошлом уроке мы рассмотрели с чего начать, если вы решили изучать микроконтроллеры STM32: как настроить IDE, как создать простой проект, как откомпилировать программу и как запустить программу на выполнение. После полюбовались на перемигивание светодиодов на Discovery-плате )


                Начиная новую статью, я задумывал сразу же перейти к подробному разбору листинга программы, который заставлял попеременно перемигиваться наши светодиоды, но уже перейдя к написанию, я вдруг осознал для себя, что есть большое количество вопросов без ответа на которые — перейти к рассмотрению программы было бы преждевременно. И для себя я определил целый перечень таких вопросов

                Читать дальше →
              • Основы компьютерных сетей. Тема №3. Протоколы нижних уровней (транспортного, сетевого и канального)

                • Tutorial

                Приветствую всех читателей. Пришло наконец время поговорить о протоколах, находящихся на нижних уровнях. В этой статье будут разобраны протоколы канального, сетевого и транспортного уровней. Присаживайтесь поудобнее и читайте на здоровье.
                Читать дальше →
              • Электронный документооборот. Реальный пример

                  Система электронного документооборота «Дело» функционировала на предприятии за долго то того, как там появился я. Но за два года моего участия я неплохо разобрался, как все устроено по капотом. О том, как же это все работает, о некоторых косяках я расскажу прямо сейчас.
                  Читать дальше →
                • Краткий обзор Kotlin и сравнение с C#

                    От автора:


                    Эта статья представляет собой заметки на коленке и является скорее кратким обзором Kotlin, включая небольшое сравнение с языком С# с точки зрения синтаксиса. Это мое мнение и мои размышления по поводу этого сравнительно молодого языка в мире Java-платформы, который на мой взгляд имеет хорошие шансы добиться успеха.

                    Читать дальше
                  • Учим Python качественно

                    Здравствуйте всем!

                    Решил поделиться методом обучения сего мощного, но в одно и тоже время лёгкого языка программирования. Он действительно лёгкий. Вам не надо будет запоминать и вводить лишних символов, которые Вы можете встретить в Си-подобных языках.

                    Удобочитаемый синтаксис, прост в обучении, высокоуровневый язык, Объектно-Ориентированый язык программирования (ООП), мощный, интерактивный режим, масса библиотек. Множество иных плюсов… И это всё в одном языке.
                    Для начала окунёмся в возможности и узнаем, что же умеет Python?
                    Читать дальше →
                  • Data Science: книги для начального уровня

                      Data Science — наука о данных, возникшая на стыке нескольких обширных направлений: программирования, математики и машинного обучения. Этим обусловлен высокий порог вхождения в профессию и необходимость постоянно получать новые знания.

                      Ключевыми навыками для начинающих специалистов являются:

                      • умение писать код (Python);
                      • способность визуализировать свои результаты;
                      • понимание того, что происходит «под капотом».

                      На эти три категории разделены книги, которые специалисты Plarium Krasnodar подобрали для читателей с начальными знаниями в Data Science.

                      Читать дальше →
                      • +17
                      • 41.5k
                      • 8
                    • Как прокачать свою карьеру через GitHub

                        GitHub – крупнейшая библиотека, созданная разработчиками для разработчиков. Главная прелесть хостинга в его идеологии: отдавать также легко, как и получать. Здесь можно найти самые разные IT-проекты как легальные, так и не совсем. Пользуясь открытостью, кто-то роется в исходниках в корыстных целях – чтобы потом использовать их уязвимости для банального шантажа, а кто-то с помощью репозиториев прокачивает свои профессиональные скилы. Давайте разберемся, как не закопаться в миллионах источников и какие перки можно заполучить.

                        То, что знания не принадлежат лишь узкому кругу избранных, уже признают и транснациональные корпорации. На основе одного исходного кода вырастает несколько новых – так и развиваются технологии, которыми в итоге начинает пользоваться весь мир. Такие гиганты, как Apple, Google, Facebook, Microsoft – разместили и продолжают постоянно обновлять свои репозитории на GitHub. Да что уж, если даже Министерство обороны США заводит хранилище на хостинге https://github.com/Code-dot-mil/code.mil с лозунгом «Помогите нам стать лучше». И каждое новое предложенное полезное решение – это очередной выученный урок в карьере разработчика.

                        Формат open-source проектов хорош тем, что позволяет участникам общаться также, как мы делаем это в социальных сетях. Помните про принцип соревновательности! К примеру, некто постит вариант реализации идеи. Другие участники, на интересе, либо желая покуражиться предлагают хаки. В итоге – сообщество плюсует авторам лучших решений.

                        Поэтому чтобы попрактиковаться и проверить свои способности периодически стоит закидывать pull requests – предложения на изменения кода – разработчику, открывшему приглянувшийся вам репозиторий. Владелец в свою очередь может как отклонить, так и принять запрос. Это и будет оценкой выполненной работы. Плюс – таким образом можно понять нуждается ли проект в доработках.

                        Читать дальше →
                      • STM32 USB Mass Storage Bootloader

                        Известно, что софт можно дописывать вечно, а всякого рода недочёты на плате полностью исправляются ревизии так к третьей. И если с железом уже ничего не поделаешь, то для обновления микропрограмм придумали неплохой способ обхода ограничений пространства и времени — Bootloader.

                        Загрузчик — это удобно и полезно, не правда ли? А если загрузчик собственной реализации, то это еще более удобно, полезно и гибко и не стабильно. Ну и конечно же, очень круто!

                        Так же, это прекрасная возможность углубиться и изучить особенности используемой вычислительной машины — в нашем случае микроконтроллера STM32 с ядром ARM Cortex-M3.

                        На самом деле, загрузчик — это проще, чем кажется на первый взгляд. В доказательство, под cut'ом соберём свой собственный USB Mass Storage Bootloader!

                        image
                        Читать дальше →
                      • Олимпиадное хобби. Размен монет

                          Размен монет Привет. Сегодня понедельник, поэтому я решил, что стоит начать свой рабочий день с разогрева пальцев и мозга. Для тех кто не в курсе: мое олимпиадное хобби состоит в решении олимпиадных задач по программированию, которые я беру с сайта http://uva.onlinejudge.org/. Сегодня нам предстоит решить задачу о размене монет из области динамического программирования. Задача не очень сложная, но есть над чем поразмыслить, поэтому заинтересовавшихся прошу под кат. К слову, это третья наша задача, но, безусловно, из всех самая интересная.
                          Читать дальше →