Что изучать после основ python
Помощь в изучении Python. Что дальше?
Учиться по книгам можно бесконечно. Судя по Вашим словам, Вы вполне подготовлены, чтобы начать работу над несложным проектом / задачей.
Ну и еще несколько советов:
1. Ползуйтесь хорошим IDE (я использую PyCharm Pro, но в принципе и бесплатный PyCharm community edition прекрасно подойдет). Там можно настроить Python консоль, так что интерактивность не пострадает.
2. Если возьметесь за что-либо, что можно назвать проектом, пользуйтесь системой контроля версий. Это не так страшно как кажется. Я бы советовал Git. Можно из командной строки (для изучения предпочтительна, лично я предпочитаю и для работы), либо UI клиент (я пользуюсь SourceTree). Изучить Git на начальном этапе можно за полдня. Вот хорошая книжка:
достаточно первые пару глав прочесть для начала
4. При разработке в Python, пользуйтесь virtualenv. Это нужно для того, чтобы не замусоривать ваш основной дистрибутив Python установленными сторонними модулями и библиотеками.
5. Это вопрос личного вкуса и удобства, но лично мне в работе сильно помогают системы project management. Я пользуюсь Blossom.io, но он платный. Из бесплатных, могу порекомендовать Trello.
Все эти вещи могут показаться тягомотными, но это нужно пройти лишь один раз. После этого у Вас будет настроенное рабочее пространство для профессиональной работы. Это сделает Вам рабочий процесс намного удобнее, и знакомство с этим будет плюсом, если потом захотите работу искать в Python.
Собственно по Python, очень рекомендую вот это:
куча реально полезной информации. По всем конкретным вопросам нет ничего лучше StackOverflow.
Ну и уже когда практического опыта на реальном проекте поднаберетесь, вот тогда делайте upgrade, читайте еще книжки, код других проектов, участвуйте в других open source проектах, и т.д. В итоге гораздо быстрее все освоите, чем если прямолинейным чтением книг / прохождением курсов будете заниматься.
Go после Python: как я учу новый язык
Привет, Хабр! Меня зовут Максим Чижов, я бэкенд-инженер. Несколько месяцев назад мне понадобилось в довесок к основному языку Python выучить также Go. Расскажу, с какими проблемами я столкнулся в процессе и как их решал, а также где я сейчас.
Зачем мне новый язык
Я программирую на Python с 2010 года. Не так давно я пришёл в Авито на должность middle-инженера, и мне понадобилось изучить также Golang: множество сервисов мы пишем именно на этом языке. К счастью, у меня уже был опыт изучения новых языков программирования вдобавок к основному. К примеру, когда я был студентом, я писал на С++, а когда пошёл работать после ВУЗа, то пришлось выучить Perl, который был в то время популярен. Однако Perl постепенно отмирал и, работая в Билайне, я постепенно перешёл на Python, который тогда мне казался слишком замудрённым.
Но со временем привыкаешь ко всему, привык я и к Python. Развил свои навыки, участвовал в технических собеседованиях, в общем, чувствовал себя как рыба в воде. Но прогресс не стоит на месте.
Много моих коллег рекламировали Go как в хорошем, так и в плохом свете, и мне очень захотелось в него окунуться. Да и повод был достойный — мой юнит начал активно писать сервисы на нём. Памятуя о сложностях в изучении новых языков, я решил подойти к этому процессу системно.
Разведка
Прежде чем приступать к основной части, я решил провести верхнеуровневое расследование, чтобы понять, с чем придётся иметь дело. Бегло изучив популярные статьи, я вынес из них, что Go был создан для достижения определённых возможностей, которых были лишены существующие языки.
Например, это существенное упрощение синтаксиса и уменьшение ключевых слов до минимума. Как следствие, более строгая структура языка, в отличие, например, от С++, где одну и ту же функциональность можно написать разными способами. ИТ-сообщество пестрит мемами про это, высмеивая, например идею, что два разных программиста на С++ могут просто не понять чужой код, потому что пишут на разных С++. Так вот, с Go такого произойти не должно.
Также стоит упомянуть, что Go поддерживает параллелизм, является компилируемым, чистит мусор из коробки и имеет хороший набор для профилирования, что должно делать его сверхбыстрым. Многие согласятся, что именно этого не хватает интерпретируемым языкам, таким как Python, а уж о питоновском GIL не говорил только ленивый.
После прочтения вводных статей я сделал вывод, что Golang вобрал в себя, по мнению его создателей и респондентов, наиболее полезные фишки существующих языков. Так ли это?
Начало пути
Вопросом о том, с чего начать, задавался каждый, кто начинал изучать новый язык программирования. Первая мысль — это пройти какие-то специальные курсы. Однако я начал не с этого.
Чтобы найти точку входа, я воспользовался старым проверенным инструментом Codewars. Порешав задачи типа kyu 7-8, я понял, что это слишком просто, и принялся за более сложные 4, 5, 6. Поработал в таком режиме несколько часов и осознал, что процесс идёт довольно легко.
Но я обратил внимание на одну существенную вещь. Когда ты решил кату, то можешь видеть решения других людей. Если это Python, то решения пестрят разнообразием, от однострочного решения до решения «в лоб», а если это Go, то все решения очень похожи и все они «в лоб», за редким исключением. Чтобы не быть голословным, приведу конкретный пример.
Возьмём кату среднего уровня сложности. Я выбрал стандартную задачу с олимпиад, которую называют Улитка, или Snail. Нам надо развернуть двумерный массив по спирали, начиная с элемента под номером 0,0. Что же мы видим среди решений на Python? Вот, например, решение «в лоб»:
Решение довольно прозрачно, и его может прочитать даже человек, который просто знаком с программированием, но не знаком с Python. «Питоновские гуру» же предлагают и такое элегантное решение с рекурсией:
Да, в комментах пишут, что решение имеет более высокую сложность, чем оптимальное, но тем не менее, это красиво. Кто-то даже предполагает божественную сущность этого решения.
Я привёл в пример лишь две крайности в решении этой задачи на Python. Если же вы решите её сами, вам будут доступны все решения пользователей, и вы увидите, что вариантов — бесчисленное количество.
Давайте теперь посмотрим, что происходит в решениях на Go. Большинство из них похожи на первое решение для Python, а остальные отличаются лишь небольшими вариациями.
Таким образом я сделал вывод об относительной строгости синтаксиса Go, что для меня является облегчающим фактором в изучении. Код можно читать даже будучи не особо знакомым с языком.
Если вы не знаете, с чего начать, начните с малого. Codewars я взял только потому, что сам им пользуюсь. Наверняка у вас есть любимый ресурс с задачами по программированию. Решив пару задач, вы поймёте свой уровень. Исходя из этого сможете остаться и решать задачи дальше, либо перейти на следующий уровень обучения.
Следующий уровень
Я был готов перейти к следующему шагу, решив, что основы языка мне понятны. А следующим шагом выбрал продвинутый курс по Go, который включает в себя более 30 занятий по 2 часа. Потратив 10 часов своего бесценного времени, я понял, что тут что-то не то. И действительно, информацию одного урока можно было бы усвоить за 15 минут: остальное время преподавателя уходило на рассуждения и ответы на вопросы слушателей.
По моему опыту, КПД курсов составляет около 20% из-за большого количества «воды». Я принял решение не продолжать тратить время, взял перерыв на подумать и пошёл дальше.
Проверенный метод
Глянув документацию к Go, я был приятно удивлен её подробностью и лёгкостью. Но, как известно, наши люди смотрят инструкцию, только когда что-то ломается. В их числе и я. Первым делом я решил опробовать не так давно появившиеся в Go модули. Скачав GoLand, я пошёл в бой.
Попробуем создать работающую программу на Go. Создаём новый проект под названием article, GOPATH пока отключен.
Напишем простой код в файле start.go:
А теперь запустим go run start.go. Выдаёт ошибку:
Ага! Значит нужен какой-то главный пакет. Ок, переименуем его:
Хочу теперь открыть CSV файл, например. Что мне может для этого потребоваться? Наверное, библиотека для работы с CSV файлами. Гуглим и находим вот такой вариант. Попробуем его импортировать:
Но почему он выделен красным? Видимо, его надо установить. GoLand предлагает сделать это одним нажатием:
Отлично, пакет установлен, и я могу его использовать. Попробуем открыть несуществующий файл из примера:
Странно, почему подсвечивает красным метод UnmarshalFile, ведь я установил пакет?
Да и код нормально запускается:
После небольшого гугления, идём Preferences — Go — GOPATH и ставим галочку в поле Index entire GOPATH. Красный цвет ушёл, GoLand увидел директорию с пакетами.
Отлично, теперь попробуем создать свой модуль. Несмотря на отличный туториал, я, конечно, им не воспользуюсь. Попробую сделать всё интуитивно. Создадим директорию my_mod с файлом some.go, который будет содержать следующее:
Теперь попробуем вызвать её из main:
Прошу заметить, как импортируется модуль. Однако почему-то такая функция не найдена. Немного гуглим и исправляем ситуацию:
Модуль работает! Оказывается, для импорта нужно, чтобы функция начиналась с заглавной буквы. Вполне очевидное поведение. Теперь можно и в документацию заглянуть. Create a Go module — очень хорошее пособие, но оно говорит, что мой модуль — это вовсе не модуль. Проделав все описанные в документации действия, понимаю, как на самом деле работают модули в Go. Как быть с моим способом импорта? Можно ли его использовать? Оставлю эти вопросы открытыми, точнее, отдам на откуп читателю.
Ну что ж, работа с Go довольно проста и комфортна, однако чтение документации и реализация примеров никак не добавит скиллов. Это важно, чтобы только пощупать инструменты для работы. Однако не стоит стесняться делать такие примитивные действия, они тоже полезны.
В бой
После этого многие добавляют в своё резюме новый навык и начинают искать работу, но я пошёл другим путем. Наконец-то в бэклоге спринта мне попалась задача на Go, и я с радостью взял её. За время изучения языка и решения задачи я понял о Go несколько вещей.
Стандартные инструменты. Очень не хватает стандартных инструментов, например, для работы со строками и массивами. В частности, я был крайне удивлён отсутствию сортировки слайсов. Сначала хотел достать из закромов своего разума сильно запылившийся метод быстрой сортировки, но вовремя одумался и нашёл пакет sort.
Sort как раз и предлагает тот же метод, но не гарантирует стабильности. Кроме того, он предоставляет довольно интересные функции, например symMerge, которая позволяет оптимально слить два отсортированных слайса так, чтобы результат тоже был отсортирован. К слову, эта задача довольно часто попадается на собеседованиях по алгоритмам.
Строгая статическая типизация. Это очень болезненный момент для программистов, которые привыкли к динамической. При первом рассмотрении это вызывает сильное отторжение, а в некоторых случаях даже депрессию.
Теперь на объявление переменной уходит довольно большое количество времени, так как разработчик должен предсказать её тип. А если тип назначен неверно, например int32 вместо int64, это может вызвать вал проблем в дальнейшем. Однако есть и плюсы в таком подходе. Например, значительное уменьшение количества ошибок, многие из которых отлавливаются ещё при компиляции.
Неявный return. Подводный камень, который для неопытного Go-разработчика может вылиться в неявные ошибки. Для Python-разработчика return без аргументов означает, что функция вернёт None. В Go это не так.
В данном случае функция вернёт значение переменной err. Вроде бы это удобно, но хочется, чтобы явное было лучше, чем неявное.
Исключения. В Go нет исключений как таковых. Точнее, есть panic, но многие придерживаются мнения, что паниковать — это не Go-way. Поэтому часто функции и методы возвращают два значения: целевое и ошибку. Возврат нескольких значений мне довольно привычен после Python, но приходится явно проверять ошибки и код становится ужасным на вид:
Подобные куски кода, а порой и вложенные друг в друга добавляют шума в чёткую организацию.
Оператор defer. Данный оператор стал чем-то новым для меня. Ранее я не сталкивался с подобным, и он показался мне удобным. Некий триггер возврата функции, который позволяет сократить количество кода.
ООП. Go — функциональный язык, он не предоставляет стандартных средств ООП как таковых. Это, конечно, вызывает у многих болезненные ощущения. И, несмотря на то, что с помощью конструкции Interface мы можем имитировать ООП, это всё ещё очень сырой механизм.
Типичная проблема возникает, когда нужно добавить ещё один метод для сущности. В этом случае питонист просто добавил бы этот метод в родительский класс и переопределил его там, где требуется. В Go же мы вынуждены добавлять метод во все имплементации, так как в противном случае можем нарушить один из принципов SOLID — принцип подстановки Барбары Лисков.
Многопоточность. После GIL настоящая многопоточность вызывает немыслимый прилив эндорфинов и прочих гормонов радости. Однако при ближайшем рассмотрении становится понятно, что этот мощный инструмент стоит использовать с крайней осторожностью, так как все прелести многопоточного программирования сразу же выливаются на несчастного Python-GIL-ограниченного разработчика. На помощь приходят примитивы синхронизации, при использовании которых невольно всплывает в подсознании С, С++, POSIX и прочая ностальгия из программистского детства.
Горутины. В Python уже давно есть асинхронный код и корутины, так что особых проблем с горутинами не возникло. Стоит отметить, что цикл событий встроен в Go. Однако не стоит забывать о проблемах многопоточности.
Каналы. Для синхронизации работы горутин используются каналы. Сначала к этому инструменту можно отнестись с недоверием, но потом становится понятно, что это довольно удобная фича языка.
У Go ещё много различных инструментов, например, профилирование из коробки, рефлексия и так далее. Однако в статье я не буду заострять на них внимание, а лишь в очередной раз скажу, что разработчики языка предоставили довольно подробную и понятную документацию.
Между делом
Очень рекомендую телеграм-бота Golangquiz. С его помощью вы сможете всегда понять свой уровень владения языком. Ну и просто развлечься небольшими задачами с собеседований.
Что дальше
Несмотря на небольшой опыт в Go, я уже вызвался проводить собеседования. Сначала как слушатель, потом с наставником, а затем уже и самостоятельно. Собеседования для меня делятся на две категории.
Первая — это скрининг. Получасовой блиц опрос об основных навыках не только в языке, но и в смежных областях: базах данных, сложности алгоритмов и т.д. Вопросы довольно стандартные, порой кажущиеся слишком простыми. Но это первый этап отбора кандидатов, и, как ни странно, на нём отсеивается много народу.
Вторая категория — это секция программирования. Здесь кандидат показывает свои способности в решении задач, связанных с алгоритмами. Сложность для собеседующего состоит в том, что кандидат может захотеть написать алгоритм на любом языке. К примеру, очень много кандидатов на PHP, который я знаю поверхностно. А что, если он захочет написать код на Java? А если на Haskell?
На момент написания статьи я нахожусь именно на этом шаге, рассчитывая, что проведение собеседований повысит мой собственный скилл. Собеседования Python-кандидатов помогли мне погрузиться в язык очень глубоко, поэтому надеюсь, что и с Go произойдёт то же самое.
Резюме
В конце хочу ещё раз подчеркнуть, что знание одного языка существенно упрощает изучение второго. Наверняка это верно не только для той связки, которую я описал в статье, но и для других языков, и не только языков программирования. Общие принципы и парадигмы программирования не сильно меняются с приходом новых языков, а некоторые вообще остаются в неизменном виде.
Наиболее сложным моментом я считаю точку входа. Если вы хотите начать, то придётся приложить немало усилий. Вам всё время будет казаться, что не хватает знаний или других ценностей для преодоления себя. Это ложное чувство стоит отбросить, так как оно не принесёт ничего, кроме вреда. Надо просто сесть и начать. Неважно, с чего.
Самая полезная часть обучения — это, по моему мнению, написание проектов с нуля. Но не просто каких-то придуманных вами, а тех, у которых есть заказчик, описание и дедлайны.
🐍 Дорожная карта Python-разработчика
Miroslav Kungurov
1. Где и как учиться?
Итак, у нас есть четыре способа изучения языка:
Ищите курсы с трудоустройством, поскольку на всех курсах, ютуб-роликах дают примерно одинаковые знания: отличается только подача материала и наличие куратора, который придет на помощь. Если вам нужно полностью погрузиться в процесс обучения, чтобы чему-то научиться, то выбирайте буткемп – интенсивные курсы/лагеря по программированию. Основам вполне можно научиться самостоятельно и вы не одни на этом пути. Главное при таком подходе – самодисциплина и умение вовремя взять перерыв. И, наконец, идеальный вариант – найти наставника, который проведет по всем подводным камням и поделится знаниями.
Где учат Python с гарантией трудоустройства?
На курсах. Например, GeekBrains ведет прием на факультет Python-разработки, где вас научат:
Окей, я выбираю путь самообразования. Что дальше?
Дальше – выбор операционной системы.
2. Операционная система и редактор кода (IDE)
Какую ОС выбрать?
Не Винду. На ней можно покрывать 90% задач, но потом все равно придется столкнуться с Линуксом, потому что питонщики занимаются бэкенд-разработкой и их программы в итоге запускаются в среде Линукс.
Порядок изучения Ubuntu:
3. Основы Python
Как понять, где заканчиваются основы?
Плюс-минус основы включают в себя:
4. Git и GitHub
5. Веб-разработка
Питонисты пишут бэкенд веб-приложений на фреймворках и микрофреймворках.
Микрофреймворки – Flask, FastAPI, Bottle, Pyramid – имеют минимальный функционал и предоставляют в основном только роутинг (переход на страницу), а для всего остального нужно ставить дополнительный плагины или писать их самому. Больше гибкости, но ниже скорость разработки.
Что выбрать?
Если нужно сделать сайт, веб-приложение, которое похоже на обычный сайт, то выбирайте Джанго. Для нестандартных задач – микрофреймворки. Вакансий по Джанго больше, чем по всем остальным фреймворками и микрофреймворкам.
6. Тестирование
7. Наука о данных
8. Машинное обучение
В машинном обучении потребуется отличное знание Python. Начните с библиотек Numpy, Matplotlib, Scikit-learn. Не обойтись без математики и статистики: множества, пределы функций, производные, интегралы, случайные события, линейная регрессия и дисперсионный анализ.
9. Продвинутый Python
Скорее всего, несколько статей из нашей подборки уже есть в закладках вашего браузера. Однако у всех бесплатных учебных материалов имеется большой недостаток: в случае возникновения вопроса приходится гуглить и тратить время на поиски ответа; к тому же нет помощи в трудоустройстве. И еще один факт: многие проходят бесплатные курсы, но далеко не все получают работу. Можно взять количеством: пройти десяток курсов и… заваливаться на собеседованиях. Образовательная онлайн-платформа GeekBrains трудоустраивает после обучения и сейчас ведет набор на факультет Python-разработки. Зачем платить, ведь знания везде дают плюс-минус одинаковые? Чтобы получить гарантированный оффер.
Что учить новичку после основ Python?
Что лучше учить Python 2 или Python 3?
хочу начать учить питон но полазив в нете, частенько попадалась информация что вроде как 2 будет.
Java: что учить после основ?
Здравствуйте. В java новичок. возможно таких вопросов было много но конкретно по пунктам 1. 2.
Что учить после основ PHP?
Здравствуйте, подскажите что учить рпосле основ PHP? Какую тему и если можно уроки посоветуйте.
Решение
а ее не надо изучать просто так, как книгу, ее надо на примере сразу рассматривать. Найди что тебе интересно. Парсинг? Рассчеты? Гуи или боты (прости господи)? и пробуй решать задачу, писать проект заодно изучая библиотеку.
Кстати, как вариант пока остановись на форуме, просто проверь себя, реально ты «изучил» и легко сможешь помогать тут новичкам или в ряде задач есть решения лучше твоего? Тогда изучи их, что ты упустил? Постепенно смотри более сложные задачи, уже с либами.
1000 страниц из 1300-страничного учебника Изучаем Python. Изучил?
Добавлено через 11 минут
iamyk789, Изучив первую главу в «Лутц М. Программирование на Python», дальше уже сможешь определится, чем ты хочешь заниматься в дальнейшем и выбери соответствующую часть в этой книге.
«Системное программирование», «Работа с графикой», «web программирование» или что то еще используя специализированные библиотеки (изучая документацию к ним) и так далее.
Что учить после освоения основ
Здравствуйте. В общем, проблема у меня есть: не знаю, что учить дальше. То есть я худо-бедно освоил.
Что лучше учить после основ C#?
Всем привет, прочитал книгу Троелсена, начал читать Рихтера, работал с консолью, немного в формах.
Что лучшие учить новичку C# или Java
Привет, последние время мне приходиться работать с Web это HTML CSS JS PHP MySQL, и не много с.
Что изучать после основ?
Всем доброго времени суток, пробуксировал учебник по плюсам, теперь знаю основы от выделения памяти.
Что изучать после изучения основ языка
Доброго дня друзья. У меня такой вопрос. Подруга изучила основы С++, параллельно изучает книгу по.
Python за месяц
Руководство для абсолютных чайновичков.
(Прим. пер.: это советы от автора-индуса, но вроде дельные. Дополняйте в комментах.)
Месяц — это много времени. Если тратить на обучение по 6-7 часов каждый день, то можно сделать дофига.
Теперь план по неделям.
![]()
Статья переведена при поддержке компании EDISON Software, которая дает дельные советы юниорам, а также проектирует программное обеспечение и пишет ТЗ на русском и английском.
Первая неделя: познакомьтесь с Python
Разберитесь как все устроено в Python. Проверьте как можно больше вещей.
Я понимаю, звучит противоречиво. Но поверьте мне. Я знаю кучу людей, у которых отпало всякое желание изучать что-либо после того как они не смогли установить среду разработки или ПО. Я советую сразу залезть в андроид приложение вроде Programming Hero или на сайт Repl и начать исследовать язык. Не ставьте себе задачу первым делом установить Python, если вы не особо подкованы технически.
Вторая неделя: начните разработку программного обеспечения (соберите проект)
Получите опыт разработки ПО. Попробуйте использовать все, что вы выучили, чтобы создать настоящий проект.
Просто слепо следуя шагам в уроке или видео вы не разовьете умение думать. Вы должны применить свои знания в проекте. Как только вы потратите все силы на поиск ответа, вы его запомните.
Третья неделя: освойтесь как программист
Ваша цель на 3 неделе получить общее представление о процессе разработки ПО. Вам не нужно будет оттачивать ваши навыки. Но вы должны знать некоторые основы, так как они повлияют на вашу повседневную работу.
Если вы болеете этой темой и посвящаете ей всего себя, то сможете сделать все за месяц.
Четвертая неделя: серьезно отнеситесь к тому, чтобы получить работу (стажера)
Ваша цель четвертой недели всерьез задуматься об устройстве на работу. Даже если вы не хотите получать работу прямо сейчас, вы многому научитесь в процессе собеседований.
часов): Каждый раз, когда вы получаете отказ, определите для себя 2 вещи, которые вы должны знать, чтобы получить работу. Затем потратьте 4-5 дней на то, чтобы отточить свое мастерство в этих вопросах. Таким образом, после каждого отказа вы будете становиться лучше как разработчик.
Готовность к работе:
Правда в том, что вы никогда не будете готовы к работе на 100%. Все что вам нужно это очень хорошо выучить 1-2 вещи. И ознакомиться с другими вопросами, чтобы преодолеть барьер собеседований. Как только вы получите работу, вы многому научитесь на ней.
Обучение это процесс. На вашем пути обязательно будут трудности. Чем их больше — тем вы лучше как разработчик.
Если вы сможете закончить список за 28 дней, вы большой молодец. Но даже если вы выполните 60-70% списка, вы разовьете необходимые качества и навыки. Они помогут вам стать программистом.
Если вы все еще не знаете c чего начать,