Я работаю фронтенд-разработчиком более 8 лет, и за последние 2 года я решил переосмыслить свою карьеру и способы роста. Я обнаружил, что фронтенд-технологии часто меняются: разные фреймворки, концепции и разрыв между компонентами классов React и хуками. Я понял, что все это всего лишь абстракция, используемая для выражения потребностей бизнеса и личного видения. С этого момента я решил сменить карьеру и немного стать Full-Stack разработчиком.
Как мы все знаем, в настоящее время фронтенд-разработка связана с JavaScript, поэтому я решил изучить Node.js и его основные фреймворки. Все фронтенд-разработчики так или иначе сталкиваются с Node.js, и как старший фронтенд-разработчик вы должны уметь писать базовые конечные точки в Node.js с помощью Express или другой библиотеки. После двух лет активной разработки на стороне Node.js, когда моя работа стала 50/50 между фронтендом и бэкендом, я обнаружил, что большинство проектов не ограничиваются одним языком.
Node.js — не идеальный инструмент для всего, особенно если вы работаете в крупной компании. Разные языки предоставляют разные решения или являются более оптимальными для решения конкретных бизнес-кейсов. Вот почему я начал исследовать, что я мог бы выучить в качестве второго серверного языка и как я мог бы использовать его в будущем.
Я хочу поделиться своим опытом и рассказать, почему я решил придерживаться Python после попыток изучить Rust (в основном не для веб-разработки), Swift (который в первую очередь является решением для мобильных устройств) и Golang. Здесь вы узнаете, почему я считаю, что Python — это прекрасная возможность для разработчиков внешнего интерфейса учиться и как начать его использовать.
Сегодня все говорят об искусственном интеллекте. Упоминание об этом в интервью как о части вашего опыта всегда дает вам дополнительные баллы. Почти все компании пытаются внедрить ИИ в свои продукты, а Python идет рука об руку с ИИ и машинным обучением. Изучая Python, вы не только получаете возможность писать веб-приложения с помощью таких фреймворков, как Django, Flask и FastAPI, но также можете начать работать с машинным обучением и сервисами искусственного интеллекта.
С одной стороны, изучение более сложных языков, таких как Rust, Go или Elixir, — хорошая идея, если вы хотите стать лучшим программистом. Однако с точки зрения карьеры переход к должности серверного разработчика, владеющего совершенно другим языком, с которым вы менее знакомы, непрост.
Python — это динамически типизированный язык программирования. Как разработчика JavaScript, который провел значительную часть своей карьеры в аналогичной среде, это не должно вас пугать, поскольку вы уже знаете, какие проблемы следует ожидать в коде.
С Python вы можете не только начать писать веб-приложения, но и применить свои навыки в областях, связанных с искусственным интеллектом, что дает Python значительное преимущество в качестве второго языка.
Кривая обучения была простой. В Python вам обязательно необходимо изучить некоторые базовые концепции. Если у вас есть опыт работы с JavaScript, это не составит большого труда.
Вот пример кода на Python:
import random def guess_the_number(): number_to_guess = random.randint(1, 100) attempts = 0 guessed = False print("Welcome to the Number Guessing Game!") print("I'm thinking of a number between 1 and 100. Can you guess what it is?") while not guessed: user_guess = int(input("Enter your guess: ")) attempts = 1 if user_guess number_to_guess: print("Too high! Try again.") else: print(f"Congratulations! You guessed the number {number_to_guess} in {attempts} attempts.") guessed = True guess_the_number()
Думаю, вы не найдете здесь ничего слишком сложного. Даже если вы раньше не изучали Python, вы сможете понять почти все строки, не читая документацию.
Самое большое отличие, которое вы заметите, заключается в том, что Python использует отступы для определения блоков кода вместо фигурных скобок. Это может показаться странным, и мне до сих пор кажется немного необычным, но со временем к этому привыкаешь, и читать код становится легче.
Кроме того, многие концепции Python аналогичны концепциям JavaScript. Вместо console.log вы можете использовать print, а для интерполяции строк можно добавить f в начале строки и использовать почти тот же синтаксис, что и в JavaScript.
Вот JavaScript-версия приведенного выше кода:
function guessTheNumber() { const numberToGuess = Math.floor(Math.random() * 100) 1; let attempts = 0; let guessed = false; console.log("Welcome to the Number Guessing Game!"); console.log("I'm thinking of a number between 1 and 100. Can you guess what it is?"); while (!guessed) { const userGuess = parseInt(prompt("Enter your guess: "), 10); attempts ; if (userGuess numberToGuess) { console.log("Too high! Try again."); } else { console.log(`Congratulations! You guessed the number ${numberToGuess} in ${attempts} attempts.`); guessed = true; } } } guessTheNumber();
В Python можно изучить множество различных концепций. Я показал самое запутанное для меня как разработчика JavaScript.
Как разработчик JavaScript, вы, возможно, знакомы с тем, как использовать блоки кода с операторами if/else и другими операторами. В большинстве случаев вы просто добавляете {} и все. Система Python, основанная на отступах, может быть сложной.
Давайте посмотрим код JavaScript:
if (role === "admin") { const posts = getDraftPosts() if (posts.length === 0) { throw NotFound() } return posts }
Аналог Python:
if role == "admin": posts = get_draft_posts() if posts.length == 0: raise NotFound() return posts
Как видите, читаемость блоков в Python на первый взгляд может быть сложной задачей. Вот почему для меня было важно избегать глубоко вложенных блоков, поскольку их трудно читать и легко пропустить правильный отступ. Имейте в виду, что Python может прикрепить ваш код к неправильному блоку кода из-за пропущенного отступа.
Python — это язык динамической типизации, но я был удивлен, обнаружив встроенную в Python аннотацию типов.
def add(x: int, y: int) -> int: return x y
Вам не нужно устанавливать дополнительные функции, только то, что вам нужно в Python *3.5 и выше.*
Даже более сложные типы можно описать как равные Typescript:
# enums from enum import Enum # import enum for built in lib class Season(Enum): # extend class to mark it as enum SPRING = 1 SUMMER = 2 AUTUMN = 3 WINTER = 4 print(Season.SPRING.name) # SPRING print(Season.SPRING.value) # 1 # or generics def first(container: List[T]) -> T: return container[0] list_two: List[int] = [1, 2, 3] print(first(list_two)) # 1
Для использования этих типов вам не требуется что-то устанавливать или транспилировать этот код. Это то, чего мне не хватало в JavaScript, по крайней мере в Node.js. Я знаю, что Node.js добавляет некоторые базовые типы в ближайшую версию (см. публикацию Medium о поддержке встроенных типов node.js), но сейчас она выглядит плохо, если сравнивать ее с Python.
JavaScript использует неблокирующую модель, управляемую событиями, в то время как глобальная блокировка интерпретатора Python (GIL) может сбивать с толку в многопоточных программах.
Глобальная блокировка интерпретатора Python (GIL) — это механизм, который гарантирует, что только один поток выполняет код Python одновременно. Даже если ваша программа Python имеет несколько потоков, из-за GIL только один поток может одновременно выполнять код Python.
С помощью JavaScript вы можете добиться многопоточности с помощью веб-воркеров, но в Python для этого необходимо использовать дополнительные библиотеки.
Философия JavaScript «множественных способов сделать это» не работает так же хорошо в Python, поскольку Python более тесно придерживается концепции «Должен быть один - и желательно только один - очевидный способ сделать это».
В мире JavaScript каждая компания часто создает собственное руководство по стилю кода, и хорошо, если она следует основным рекомендациям по стилю JavaScript. В действительности такие практики, как использование точек с запятой, могут сильно различаться, вплоть до того, что в одном проекте точки с запятой могут использоваться, а в другом — нет.
В Python настоятельно рекомендуется следовать принципам Python из PEP 8 (руководство по стилю Python). В этом руководстве изложены основные правила написания кода Python.
Чтобы писать лучший код, важно взаимодействовать с сообществом и изучать идиоматические практики Python, в которых приоритет отдается ясности и простоте.
Эта часть также может сбивать с толку. В JavaScript вы обычно можете без проблем добавить менеджер пакетов и начать установку зависимостей. Однако pip и виртуальные среды Python могут оказаться новыми концепциями.
В Python при использовании дополнительных зависимостей настоятельно рекомендуется использовать отдельную виртуальную среду. Установка зависимостей с помощью pip (эквивалент npm в JavaScript для Python) в вашей среде потенциально может привести к поломке системных утилит или самой ОС, поскольку системный интерпретатор Python (тот, который предустановлен в вашей операционной системе) используется ОС и другие системные утилиты.
В качестве решения вы можете создать виртуальную среду с помощью модуля venv:
python -m venv myenv myenv\Scripts\activate # for windows source myenv/bin/activate # for Mac
После входа в виртуальную среду вы можете установить все зависимости без каких-либо проблем или опасности для вашей корневой среды.
Изучать новый язык всегда сложно. Я начал изучать основы Python на онлайн-платформе, где также выполнил несколько небольших проектов. Вот план, который я использовал в процессе обучения:
Во время обучения вы можете найти много помощи в сообществах Reddit или на серверах Discord. В основном я являюсь пользователем Reddit и советую найти субреддиты для Python и фреймворка, который вы решите использовать для своего первого приложения.
Не забудьте использовать официальную документацию. На мой взгляд, это выглядит ошеломляюще, и большую часть времени я пытаюсь найти статьи по теме, если застреваю в какой-то концепции.
Обязательно прочтите PEP 8 — Руководство по стилю для кода Python, где вы можете найти основные правила написания кода Python.
Размышляя о своем пути от разработчика JavaScript к Python, я ни о чем не сожалею. Этот переход открыл захватывающие возможности, особенно в области искусственного интеллекта и машинного обучения, которые я теперь широко использую в своих проектах, особенно в серверной части.
Забегая вперед, возможности Python огромны. Будь то веб-разработка, обработка данных, автоматизация или более глубокое изучение искусственного интеллекта и машинного обучения, Python обеспечивает мощную и универсальную основу для развития и исследования новых горизонтов.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3