«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Fullstack-разработка: изучение Python для разработчиков JavaScript

Fullstack-разработка: изучение Python для разработчиков JavaScript

Опубликовано 2 сентября 2024 г.
Просматривать:295

Fullstack Development: Learning Python as JavaScript Developers

Путешествие начинается

Я работаю фронтенд-разработчиком более 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.

Глобальная блокировка интерпретатора Python (GIL)

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

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

  • Основы Python.
  • Продвинутые концепции Python (система модулей, типы, среда, асинхронный код).
  • Изучение основ работы самых популярных фреймворков, таких как Django, Flask и FastAPI.
  • Написание моего первого API-сервера с помощью FastAPI.
  • Добавляем базу данных и учимся работать с базами данных на Python.
  • Развертывание приложения на бесплатном хостинге.

Где найти помощь

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

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

Обязательно прочтите PEP 8 — Руководство по стилю для кода Python, где вы можете найти основные правила написания кода Python.

Оглядываясь назад и вперед

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

Забегая вперед, возможности Python огромны. Будь то веб-разработка, обработка данных, автоматизация или более глубокое изучение искусственного интеллекта и машинного обучения, Python обеспечивает мощную и универсальную основу для развития и исследования новых горизонтов.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/oversec/fullstack-development-learning-python-as-javascript-developers-l6l?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3