Конспекты, шпаргалки и подборки по программированию и околопрограммным темам в формате Markdown.
Данный репозиторий в первую очередь предназначен для личного пользования, поэтому не претендую на абсолютную достоверность или информативность. Но материалы в нем могут оказаться кому-то полезными, поэтому было принято решение вынести их в открытый доступ.
В содержании описано наполнение репозитория, а по ссылкам можно найти описание конспектов, их назначение и вводное слово. Решение вынести их в README принято для того, чтобы не захламлять конспекты и не ухудшать удобство их использования.
Форматирование конспектов выполнено так, чтобы сохранялась читабельность и в чистом виде без средств просмотра md-файлов. Кроме того, для удобства чтения и вывода сохраняется длина строки не более 72 символов за исключением некоторых кодовых вставок и ссылок.
Буду рад, если конспекты будут вам полезны :)
Также буду рад предложениям по исправлению и дополнению репозитория и его материалов :)
Спасибо :)
Папка с общими для всех конспектов вспомогательными материалами.
Список сокращений и аббревиатур.
Темы, связанные с бэкенд разработкой и сетями.
На текущий момент данный раздел не содержит в себе конспектов.
Общие темы, не связанные с конкретными языками программирования, технологиями или IT-направлениями, за исключением технологий, широко используемых среди различных сфер программирования.
Конспект по алгоритмам и структурам данных.
Содержит в себе довольно подробный конспект по множеству алгоритмов и структур данных, не только базовых, но и более продвинутых.
Основным источником выступают "Тренировки по алгоритмам" от Яндекса с 1.0 до 7.0, но большое кол-во алгоритмов, структур данных и их реализации взяты из других источников, дополняя конспект. Из "Тренировок" 1.0 - 7.0 в данном конспекте имеются все темы, кроме пары отдельных специализированных (например, BWT-сжатие).
Не претендует на звание учебника, но имеет потенциал для изучения почти без сторонних источников. Тем не менее, рекомендуется для начала изучить записи "Тренировок" (или изучить тему любым иным способом), а конспект использовать для повторения, закрепления, дополнения или быстрого поиска информации.
Кроме того, конспект не претендует на абсолютную полноту - как указано выше, пара тем из "Тренировок" пропущена, а в общем плане далеко не все возможные алгоритмы и структуры данных освещены подробно или даже хоть сколько-то. Иногда встречаются вещи, которые упомянуты, но не законспектированы - чаще всего к ним приписан источник или ссылка на сайт, где можно почитать подробнее.
Конспект структурирован в первую очередь по темам (Матвыкладки, Алгоритмы, Структуры данных) и подтемам, а не по ходу "Тренировок". Кроме того, частично структурирован по сложности, но в первую очередь все-таки структура тематическая.
Почти все кодовые вставки выполнены на ЯП Python.
Конспект по git.
Содержит в себе как краткую шпаргалку по самым полезным и используемым в текущее время командам, так и подробный конспект по функционалу, командам, специальным файлам и проч.
Не претендует на звание учебника или самого подробного источника информации по git, т.к. данную функцию выполняет документация, но содержит в себе относительно сухое описание функционала git и множества команд, взятых из указанных источников.
Ожидаемое использование: как сопроводительный конспект к обучению (например, на тех же указанных источниках) или как шпаргалка/конспект с целью освежить или слегка углубить знания.
Конспект по ООП, принципам и паттернам.
Содержит в себе краткое описание ООП как парадигмы, принципов программирования и принципов ООП, а также краткую шпаргалку по паттернам проектирования.
Представляет собой довольно подробный конспект по базе ООП и принципов, подкрепленный собственными примерами. В то же время представляет собой очень краткий конспект по паттернам проектирования, направленным скорее на быструю возможность вспомнить тот или иной паттерн, чем изучить его с нуля. Для последнего - см. источники в конспекте.
Все кодовые вставки выполнены на ЯП Python.
Темы, связанные с языком программирования Python.
Отдельно стоит указать, что конспекта непосредственно по языку Python не планируется, т.к. я изучал его значительно загодя до начала ведения конспектов по программированию. Но оставлю отдельную свою рекомендацию по изучению языка.
Книжные ресурсы:
-
Для начинающих и не желающих слишком глубоко копаться: книга Эрика Мэтиза "Изучаем Python". Данная книга не особо многому учит вне самой базы и при этом имеет направленность на игры, что подкрепляет мотивацию и создает легкую игровую атмосферу обучения.
-
Для тех, кто хочет разобраться подробнее: книга Наоми Седер "Python. Экспресс-курс". Данная книга глубже копает в язык программирования и его особенности, выходит за рамки базовых возможностей Python, но годом написания и надписью "экспресс-курс" намекает, что придется также самостоятельно поискать некоторые более новые или более подробные моменты.
-
Кроме того, в рекомендациях также часто попадаются книги Марка Лутца, но сам я к данным книгам не обращался, поэтому лично рекомендовать или рассказать подробнее не могу. Тем не менее, счел их стоящими упоминания.
-
Всегда стоит помнить о документации как на сам язык, так и его библиотеки. Вдобавок стоит помнить и об обновлениях языка, т.к. многие версии привносят что-то новое или кардинально меняют старое (например, 3.9 важен для инлайн аннотирования, 3.10 привес match-case конструкцию, а 3.13 по умолчанию использует интерпретатор без GIL). К обновлениям также выходит документация, которую также стоит изучать.
Электронные ресурсы:
-
В первую очередь стоит обратить внимание на большие курсы на YouTube для более наглядного и быстрого вкатывания в тему Python или какую-то подтему. Но, думаю, такие вещи и без моей заметки понятны.
-
Кроме Youtube можно найти бесплатные курсы на Stepik и других площадках, а также множество материалов есть в свободном доступе от Яндекса. Например, хендбук Яндекс Образования по Python: ссылка.
-
И также, если цель обучения - подготовка к собеседованию, советую обратить внимание на тренажеры задач наподобие Leetcode, а также различные подборки задач и вопросов с собеседований, например: ссылка.
Справочник по множеству библиотек языка программирования Python, как встроенных, так и внешних. Библиотеки и примеры кода актуальны для версии Python 3.12, если не указано иного. Предназначен для быстрого поиска справочной информации (или источника) по той или иной библиотеке Python.
Данный справочник не претендует на полноту, т.к. библиотеки набирались либо по необходимости, либо по мере изучения какой-либо темы. Кроме того, даже в пределах упомянутых библиотек справочник часто будет иметь лишь краткую характеристику той или иной библиотеки с ссылкой на источник, где можно почитать подробнее. Может также встречаться краткое описание функций или классов без описания аргументов - в таких случаях справочник предоставляет описание возможностей библиотеки и подразумевает, что по необходимости читатель обратится к источникам, документации и Интернету для более подробного описания той или иной конкретной функции или класса.
С внешними библиотеками ситуация отдельная. Т.к. каждая из них чаще всего представляет полноценный большой инструмент с множеством ф-ций, классов и т.п., то такие библиотеки требуют отдельных конспектов, что делает нерациональным их подробное расписывание в справочнике. Поэтому в разделе внешних библиотек указано назначение той или иной библиотеки, а полноценные гайды по ним стоит искать в указанных источниках, Интернете или, если конспекты будут иметься в данном репозитории, тут.
Темы, связанные с языком запросов SQL и реляционными базами данных.
Конспект по языку запросов PostgreSQL.
Содержит в себе конспект по основному функционалу PostgreSQL. По большей части опирается на книгу Моргунова и документацию. Кроме того, дополнен по работе с Python и типами данных даты-времени, а в источниках, помимо прочего, содержатся тренажеры, на которых можно попрактиковаться в написании запросов к БД.