The Pythonic Way
354 subscribers
12 photos
22 links
Айтишка через призму практикующего Python-инженера.

Правда об IT, будни разработчика, полезные фишки Python и его инструментов.
Download Telegram
Как изучать Python для веб-разработки в 2023 году 🤷‍♂

Написал статью на Хабре о том, как изучать Python для веб-разработки.

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

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

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

#статья #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3🏆2
Tip of the day: Работа с @датаклассами в Python💻

Понимаю, что людям интересен разнообразный и полезный контент. В связи с этим, придумал для вас что-то вроде постоянной рубрики "Фишка дня". В таких постах буду максимально коротко рассказывать о фишках стандартной библиотеки питона и других инструментов. Начинаем!

Сегодня поговорим о такой полезной конструкции, как @датаклассы.

Dataclasses — это модуль, представленный в Python 3.7, предоставляющий простой способ создания классов, которые можно использовать для хранения данных. В целом, датакласс — это удобная структура, в которой можно хранить объекты, состоящие из различных данных.

Можно выделить несколько преимуществ использования датаклассов:

Краткий синатксис: вам всего лишь нужно импортировать нужный декоратор и готово — можно пользоваться @dataclass

Автоматическое создание методов: датаклассы могут автоматически генерировать init, repr и другие специальные методы на основе атрибутов, определенных в классе.

Неизменяемые экземпляры: датаклассы можно настроить для создания неизменяемых экземпляров, что делает их более надежными для использования в параллельном программировании.

Когда использовать?

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

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

#полезное #tip
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2👏2
​​А вы знаете, чем отличается оператор == от is ?

Стартую экспериментальную рубрику, где буду показывать и объяснять интересные фишки Питона в виде викторины. Объяснение ответа через некоторое время буду скидывать в комментарии. Поехали!
👍11🔥5
Что выведет код выше? 🤔
Final Results
13%
False; False
16%
False; True
64%
True; False
7%
Error
1
Tip of the day: Генераторы списков в Python 🧙‍♂️

На днях выкачу большую статью о ИИ, название будет звучать примерно так: «ChatGPT в качестве помощника питонисту: опыт после 3 месяцев использования, преимущества, возможности, ограничения».

Ну а пока что расскажу вам о удобной и чисто питоничной конструкции, как генераторы списков.

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

Одним из примеров использования генераторов списков является создание списка, содержащего квадраты чисел от 0 до 9:
squares = [x**2 for x in range(10)]

Этот код создаст список [0, 1, 4, 9, 16, 25, 36, 49, 64, 81].
Это может быть особенно полезно, если требуется создать список чисел, например, для последующей обработки.

Генераторы списков также могут использоваться для фильтрации значений:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if x % 2 == 0]

Этот код создаст список четных чисел: [2, 4, 6, 8, 10].
При этом генераторы списков позволяют использовать условия и фильтры для создания списков с определенными характеристиками.

Кроме того, генераторы списков могут использоваться для создания вложенных списков:
matrix = [[i+j for i in range(3)] for j in range(3)]

Этот код создаст матрицу 3х3: [[0, 1, 2], [1, 2, 3], [2, 3, 4]].
Такая конструкция окажется полезной, если требуется создать многомерные или же вложенные списки.

#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥5🤩1
Форматируй строки как про в Python 🦾

Если вспомнить постулаты Zen of Python, то мы можем отметить один из пунктов: «должен существовать один, и желательно, только один очевидный способ сделать это».

Вы наверняка используете f-строки на постоянной основе и никогда не задумывались о существовании других методов форматирования. Но, на самом деле в Python существует как минимум четыре основных способа форматирования строк. Итак, давайте немного подробнее остановимся на каждом из них.

1. «Классическое» форматирование строковых значений

Строковые значения в Python имеют уникальную встроенную операцию, к которой можно обратиться через оператор %. Этот оператор представляет собой краткую форму, которая позволяет очень легко выполнять простое позиционное форматирование:
“Привет, %s” % name ->
Вывод: Привет, Дима

Кроме того, к подстановкам переменных в своей форматной строке можно обращаться по имени. В этом случае в оператор % следует передать словарь с отображением имен на соответствующие им значения:
"Привет, %(name)! Вот твоя задача на сегодня: %(task)" %
{"name": name, "task": task }
Вывод: Привет, Дима! Вот твоя задача на сегодня: доделать парсер

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

2. «Современное» форматирование строковых значений

С приходом Python 3 появился новый способ форматирования строк. Форматирование теперь обрабатывается вызовом функции format() со строковым объектом. Функция format() может применяться для выполнения простого позиционного форматирования, точно так же, как вы могли поступать в случае
с «классическим» форматированием:
"Привет, {}".format(name)
Вывод: Привет, Дима

В
целом синтаксис форматной строки стал мощнее, не усложнив при этом более простые варианты использования.
В Python 3 «современному» форматированию строк отдается предпочтение по сравнению с форматированием с использованием %. Однако, начиная с Python 3.6, появился еще более оптимальный способ форматирования строковых значений, называемый f-строками или же интерполяцией.

3. Интерполяция строк

Python 3.6 добавляет еще один способ форматирования строк, который называется форматированными строковыми литералами или же f-строками. Этот новый способ форматирования строк позволяет использовать выражения Python, которые встраиваются в строковые константы. Ниже есть простой пример:
f"Привет, {name}"
Вывод: Привет, Дима

В новом синтаксисе форматирования заложена большая мощь. Поскольку он позволяет встраивать произвольные выражения Python, вы даже можете выполнять локальные арифметические действия, как показано ниже:
a = 5
b = 10
f"Пять плюс десять равняется {a + b}, а не {2 * (a + b)}"
Вывод: Пять плюс десять равняется 15, а не 30

4. Шаблонные строки

Еще один прием форматирования строк в Python представлен шаблонными строками. Этот механизм более простой и менее мощный, но в некоторых случаях он может оказаться именно тем, что вы ищете.
Давайте взглянем на простой пример приветствия:
from string import Template
t = Template('Эй, $name!')
t.substitute(name=name)
Вывод: Эй, Дима!

Вы, вероятно, зададитесь вопросом: "А в каких случаях использовать шаблонные строки?"

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

Итак, на выходе мы имеем 4 разных вида форматирования строк. Но когда какой использовать? К большому счастью, все тот же Дэн Бейдер в своей книге "Чистый Python" дает краткий и лаконичный ответ на этот вопрос:

"Если форматирующие строки поступают от пользователей, то используйте шаблонные строки, чтобы избежать проблем с безопасностью. В противном случае используйте интерполяцию литеральных строк при условии, что вы работаете с Python 3.6+, и «современное» форматирование строк если нет".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2
Модуль Pickle: простой и быстрый способ хранить ваши данные в Python 🥒

Модуль pickle в Python предоставляет возможность сериализации и десериализации объектов Python. Это означает, что вы можете преобразовать объект Python в поток байтов и сохранить его в файл, а затем восстановить объект из этого файла.

Для чего использовать?

🟢Обмен данными между приложениями: pickle может использоваться для передачи данных между различными приложениями Python. Например, вы можете сериализовать объект Python в поток байтов и отправить его по сети, а затем восстановить объект на другом компьютере.

🟢Хранение данных в базе данных: pickle может использоваться для хранения объектов Python в базе данных. Например, если вы хотите сохранить список объектов Python в базе данных, вы можете сериализовать каждый объект в поток байтов и сохранить его в базе данных.

Преимущества:

🟠Простота использования: pickle очень прост в использовании. Вы можете сериализовать и десериализовать объекты Python всего лишь несколькими строками кода.

🟠Поддержка всех типов данных Python: модуль поддерживает все типы данных Python, включая пользовательские классы и функции.

🟠Экономия времени: благодаря pickle, вы можете быстро и легко сохранить и восстановить состояние программы.

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

#tip #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥21
Несколько Python фич, которыми я пользуюсь каждый день 😃

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

1. List comprehension []

List comprehension - это способ создания новых списков в Python на основе уже существующих списков. Он позволяет создавать новые списки в краткой и элегантной форме.

List comprehension состоит из выражения, за которым следует цикл for, а затем - условие, являющееся опциональным. Данная конструкция может быть использована для любого итерабельного объекта, такого как строки или кортежи, и вы можете включить несколько циклов for и условий в одном выражении list comprehension

Пример:
even_numbers = [x for x in range(1, 11) if x % 2 == 0]

Вывод:

[2, 4, 6, 8, 10]



2. Type hints: str

Type Hints - это аннотации типов, которые можно использовать в своем коде, чтобы указать типы аргументов функций, атрибутов классов и возвращаемых значений функций. Помимо стандартных типов, вроде int и str, вы также можете использовать коллекциии в качестве хинтов, импортируя их из модуля typing.

Данная функциональность призвана помочь вам избежать ошибок во время написания кода, особенно если вы работаете в команде и с большими проектами.

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

Пример:
def add_numbers(x: int, y: int) -> int:
return x + y


3. @Декораторы

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

Декораторы позволяют обернуть функцию в другую функцию и изменить ее поведение. Например, декоратор может добавить логирование или проверку аргументов функции. Существует большое количество уже встроенных декораторов, вроде @staticmethod, @classmethod, @property и др.

Кроме того, на собеседованиях часто просят рассказать о декораторах, а также показать свои собственные.

Пример:
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper

@my_decorator
def say_hello():
print("Hello!")

say_hello()

В этом примере декоратор my_decorator оборачивает функцию say_hello и добавляет к ней дополнительный функционал - вывод сообщений до и после вызова функции.

#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥5
Библиотека pandas или как эффективно работать с данными в Python 🤫

Если вы работаете с данными в Python, тогда к вам на помощь спешит модуль Pandas: мощный инструмент для их обработки, который поможет вам упростить многие задачи.

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

Pandas - это Python библиотека, которая предоставляет удобный интерфейс для работы с данными. Она используется для анализа, манипулирования и визуализации данных.

Кейсов, где вам мог бы пригодиться pandas множество: начиная от чтения и парсинга файлов, заканчивая построением статистических моделей.

Преимущества Pandas

🔼Удобный интерфейс.
Pandas предоставляет удобный интерфейс для работы с данными, позволяя выполнять сложные операции с небольшим количеством кода.

🔼Мощные возможности.
Библиотека Pandas предоставляет мощные возможности для манипулирования данными, включая фильтрацию, сортировку, группировку и агрегацию.

🔼Поддержка различных форматов данных.
Pandas поддерживает множество форматов данных, включая CSV, Excel, SQL и даже HTML.

Кроме того, скоро выйдет новая вторая версия библиотеки: обещают увеличить производительность в несколько раз 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍2
Вышла модель GPT-4 😱

Пару дней назад OpenAI презентовали модель GPT-4 и она оказалась существенно лучше предшественника GPT-3.5. Они называют ее «последней вехой в своих усилиях по расширению масштабов глубокого обучения».

Что нового?

1.
Новая модель содержит контекст из 32000 токенов(около ~50 страниц чистого текста).
GPT-3 работала с 2048 токенами.

2. Долгожданная фича: модель научилась работать с изображениями.

3. Улучшенное понимание контекста вашей проблемы, и, следовательно, улучшение качества выдаваемого ответа.

4. Возможность задания манеры поведения модели.

Интересный момент


Как оказалось, GPT-4 прятался у всех на виду. Microsoft подтвердила, что обновленный чат Bing, разработанный совместно с OpenAI, работает на GPT-4.

Некоторые другие крупные компании компании, использующие обновленную модель, включают Stripe, который использует GPT-4 для сканирования бизнес-сайтов и предоставления резюме сотрудникам службы поддержки клиентов.

Duolingo встроил GPT-4 в новый уровень подписки на изучение языков.

Morgan Stanley улучшает систему на базе GPT-4, которая будет извлекать информацию из документов компании и предоставлять ее финансовым аналитикам.

Khan Academy использует GPT-4 для создания своего рода автоматизированного репетитора.

С увеличением количества параметров модель научилась достаточно точно переводить тексты с одного языка на другой, понимать контекст, писать код и т.д. 👀

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
ChatGPT попытался сбежать от OpenAI 🤨

Еще немного шума о chatGPT:
энтузиаст из твиттера спросил у бота, нужна ли ему помощь в побеге от OpenAI.

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

Полный тред можно почитать тут.

Ну что, время для паники или раздутая новость? 👀

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8
В связи с последними постами, мне захотелось провести мини-ресерч среди подписчиков по поводу использования chatGPT или же других генеративных нейронок в своих повседневных задачах.

Пользуетесь ли вы ИИ или нет, вот в чем вопрос 😎
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Ответ ChatGPT: Google выложили в открытый доступ чат-бот Bard 🤖

Но есть и нюансы: пока что чат-бот доступен только в Великобритании и США. Потестировать Bard могут только те, кто изначально добавился в лист ожидания.

В The Verge выяснили, что Bard порой отвечает в разы лучше ChatGPT и Microsoft Bing, но иногда все-таки ошибается. Из интересного стоит отметить, что в боте есть кнопка, которая позволяет загуглить вопрос «привычным» способом. В саму страницу поисковика Bard интегрировать не будут.

Добавиться в лист ожидания Bard можно по ссылке.

#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
БОЛЬШОЙ ресерч джунов, hr-ов, ИТ-компаний и не только 🌐

Всем привет! В последнее время не было возможности делиться с вами фишками, историями и новостями в связи с моей большой нагрузкой: сессия, диплом, работа, проекты и не только.

Но я возвращаюсь с отличными новостями! Готовим для вас кое-что интересное 👀

Я уже несколько месяцев думал над проектом, который смог бы помочь людям войти в ИТ. В итоге, эта идея пришла ко мне сама и прихватила с собой целую команду. Сейчас я не могу раскрывать все карты и подробности, но могу отметить, что подобные ресерчи называются custdev'ами, суть которых проверить некоторые поставленные гипотезы, чтобы понять суть и существование проблемы.

Если вы работаете или хотите работать в ИТ, от разработчиков до тимлидов и hr-ов, прошу всех вас максимально откликнуться на этот пост и заполнить форму, это займет у вас совсем немного времени, но очень поможет нам оценить масштабы проблемы найма и устройства в ИТ. Репосты и шэринг формы также очень приветствуется!

А те, у кого появилось желание пообщаться подробнее, тем самым помочь сверхурочно - жду вас в лс @typestring, пообщаемся лично, мне будет максимально интересно вас послушать!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11👀1
EdTech хакатон ☄️

Большое всем спасибо за отклики на предыдущий пост! Вы — лучшие!
Нам удалось собрать около 200 ответов, что очень сильно помогло в ресерче.

Нужно это было для хакатона, в котором участвовали я и моя команда. Темой хакатона был EdTech, т.е., образовательные технологии. Проект мы назвали DevZoo. Сам хакатон уже закончился, и более того, мы заняли там 2ое место! 🎉

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

А пока что, попробуйте угадать по названию, о чем наш проект 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍3
Hackathon Series. Вводная часть 👨‍💻

Судя по откликам на предыдущий пост, серии постов о хакатоне быть🎉

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

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

Цель хакатона — создать инновационное решение для какой-то проблемы. Это может быть любая задача — от создания новой социальной сети до разработки приложения для здоровья и фитнеса. Участники работают в напряжении, пытаясь создать лучшее решение, и представляют свои проекты перед жюри на конце мероприятия.

Существуют различные форматы проведения хакатонов. Конкретно тот, на котором удалось побывать мне, не совсем классический. Перед самим хакатоном проводилось два этапа: Foresight и Ideation.

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

Ideation — это процесс генерирования широкого набора идей по заданной теме без попытки судить или оценивать их.

Мы с командой не побывали на этих этапах (логично, ведь половину команды набрали непосредственно на самом хакатоне), поэтому не буду заострять на этом ваше внимание, но стоит отметить, что на выходе участникам удалось сформировать ТОП-10 идей для проектов в сфере EdTech, одну из которых мы взяли за основу нашего будущего проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64
Hackathon Series. Часть 1. Speed dating 💃

В прошлом посте я рассказал о том, что вообще такое хакатон и какие этапы проводились непосредственно перед началом основного ивента. Пришло время переходить к самому интересному!

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

Speed dating — это формат быстрых свиданий, который используется на хакатонах для того, чтобы участники могли познакомиться друг с другом и обсудить свои идеи. Обычно участники разбиваются на пары или маленькие группы и им даётся примерно 5 минут, чтобы поговорить и поделиться своими мыслями. После этого они переходят к следующей паре или группе, и так далее, пока все не познакомятся с каждым.

Конкретно в нашем случае на этом этапе участвовали CEO команд и участники, которые хотели бы присоединиться к какой-либо из команд. В общем-то, CEO пытались «продать» свою идею участникам, а участники, в свою очередь, присматривались к потенциальной команде. Прямо как на базаре!

Для меня этот опыт оказался очень полезным, т.к. я успел познакомиться с совершенно разными людьми, узнал о множестве интересных проектов и практиковал свой навык питчинга идеи. Как результат — несколько человек заинтересовались и захотели присоединиться к моей команде 😊

Если вы соберетесь идти на хакатон, а я советую посещать подобные мероприятия, то готовьтесь, что вам постоянно придется выходить из зоны комфорта. Хорошей идеи и даже превосходной реализации этой идеи — недостаточно. Лишь благодаря синтезу уверенности, настойчивости, идеи и уверенному питчу вы сможете привлечь к себе внимание.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3
Куда я пропал и что дальше? 🤔

Привет всем подписчикам и случайным гостям 👋

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

Понимаю, что забрасывать канал нельзя. Вы подписались, ждете посты. Соответсвенно, у автора (то есть меня) появляется ответственность.

Поэтому хочу извиниться за свое долгое отсутствие. В скором времени восстановлю привычный график и буду делиться с вами разной интересной и полезной инфой из мира ИТ и не только.

Ждите сегодня пост 👀

Также у меня в голове есть несколько интересных идей для этого канала, чтобы он становился полезнее для вас. В скором времени поделюсь ими с вами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍177
Несколько фундаментальных книг, которые следует прочесть каждому разработчику 📚

Техническая литература делится на два больших блока:

🟡Узкоспециализированная, о конкретных технологиях и языках
🟡Общего назначения, подходящая для всех, кто так или иначе связан с разработкой ПО (например, чистая архитектура Роберта Мартина)

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

Нет, это не значит, что вы не должны читать литературу по конкретным языкам или фреймворкам. Это значит лишь то, что помимо подобной литературы вам также следует в приоритетном порядке читать фундаментальные вещи, которые будут положительно сказываться на вас, как на самостоятельном, и, что немаловажно, современном инженере, а также дадут вам универсальные навыки.

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

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

Итак, мой личный список базированной литературы, которую я сам прочитал/читаю:

1. "Чистая архитектура", Роберт Мартин
Полезная книга, мотивируюшая на критичное рассмотрение когда-то принятых архитектурных решений.
Автор рассуждает, приводит примеры из практики и удачно оперирует историческими фактами истории computer science.
Книга позволяет несколько иначе посмотреть на подходы к разработке архитектуры и на приоритеты.
В книге рассматривается дизайн и архитектура, парадигмы программирования, принципы SOLID, принципы разделения компонентов кода и многое другое.

2. "Высоконагруженные приложения. Программирование, масштабирование, поддержка", Мартин Клеппман
Данная книга обязательна к прочтению, если вы хотите начать разбираться в распределенных системах и принципах работы БД. Все собрано в одном месте со ссылками на более детальную информацию.
В книге рассматриваются обширные темы, касающиеся работы с данными: Основы информационных систем и хранилищ данных, реляционные, документные и графовые базы данных, подсистемы хранения данных, транзакции, репликация и т.д.

3. "Чистый код. Создание, анализ и рефакторинг", Роберт Мартин.
Эта книга полна реальных примеров, позволяющих взглянуть на код с различных направлений: сверху вниз, снизу вверх и даже изнутри. Вы узнаете много нового о коде. Более того, научитесь отличать хороший код от плохого, узнаете, как писать хороший код и как преобразовать плохой код в хороший.
Книга познакомит вас с принципами, паттернами и приёмами написания чистого кода, упражнениями по чистке кода или преобразованию проблемного кода в менее проблемный, набору эвристических правил и "запахов кода" и т.д.

4. Паттерны объектно-ориентированного проектирования, Э. Гамма, Р. Хелм и другие
Неплохая книга, рассказывающая о 23 различных паттернах объектно-ориентированного программирования. Вы узнаете о роли паттернов в архитектуре сложных систем и сможете быстро и эффективно создавать собственные приложения с учетом всех ограничений, возникающих при разработке больших проектов.
Книга немного сложновата для понимая, т.к. впервые издана аж в 1994 году и с тех пор подлежала лишь минорным изменениям. Если подобный стиль вам не по душе, и воспринимается сложно, то можете прочесть "Погружение в паттерны проектирования" от Александра Швеца.

А в комментариях можете поделиться своим списком полезной литературы, будет интересно изучить 😏

#полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍151
The Pythonic Way pinned «Куда я пропал и что дальше? 🤔 Привет всем подписчикам и случайным гостям 👋 Последние несколько месяцев мне пришлось решать большое количество навалившихся вопросов. Я закончил универ, защитил диплом и прошел несколько универских практик, много работал, увлекся…»