「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > フルスタック開発: JavaScript 開発者としての Python の学習

フルスタック開発: JavaScript 開発者としての Python の学習

2024 年 9 月 2 日に公開
ブラウズ:447

Fullstack Development: Learning Python as JavaScript Developers

旅の始まり

私はフロントエンド開発者として 8 年以上働いてきましたが、ここ 2 年間で自分のキャリアとどのように成長できるかを再考することにしました。フロントエンド テクノロジは頻繁に変更され、さまざまなフレームワーク、コンセプト、React クラスのコンポーネントとフックの間のギャップがあることがわかりました。これらはすべて、ビジネスのニーズや個人のビジョンを表現するために使用される抽象的なものにすぎないことに気づきました。この時点から、私はキャリアパスを少し変更して、フルスタック開発者になることに決めました。

皆さんご存知のとおり、最近のフロントエンド開発は JavaScript がすべてです。そのため、私は Node.js とその主要なフレームワークを学ぶことにしました。すべてのフロントエンド開発者は何らかの形で Node.js に遭遇します。上級フロントエンド開発者であれば、Express または別のライブラリを使用して Node.js で基本的なエンドポイントを作成できるはずです。 Node.js 側で 2 年間積極的に開発を行った後、私の仕事がフロントエンドとバックエンドで 50/50 になったとき、ほとんどのプロジェクトが 1 つの言語に限定されていないことがわかりました。

Node.js は、特に大企業で働いている場合には、すべてに最適なツールというわけではありません。言語が異なれば、提供されるソリューションも異なります。また、特定のビジネス ケースを解決するのに最適な言語もあります。これが、私が 2 番目のバックエンド言語として何を学べ、それを将来どのように活用できるかを調査し始めた理由です。

私の経験と、Rust (主に Web 開発用ではない)、Swift (主にモバイルファーストのソリューション)、Golang を学ぼうとした後で Python にこだわることにした理由を共有したいと思います。ここでは、フロントエンド開発者にとって Python が学習の素晴らしい機会であると私が考える理由と、Python を使い始める方法について説明します。

なぜパイソンなのか?

今、AI について誰もが話題にしています。面接で経験の一部としてそれを言及すると、常に追加ポイントが与えられます。ほぼすべての企業が自社の製品に AI を組み込もうとしていますが、Python は AI や機械学習と密接に関係しています。 Python を学習すると、Django、Flask、FastAPI などのフレームワークを使用して Web アプリケーションを作成する機会が得られるだけでなく、機械学習や AI サービスの操作を開始することもできます。
一方で、より優れたプログラマーになりたい場合は、Rust、Go、Elixir などのより複雑な言語を学ぶことは良い考えです。ただし、キャリアの観点から見ると、あまり馴染みのない、まったく異なる言語を使用するバックエンド開発者になるのは簡単ではありません。

Python は動的に型指定されるプログラミング言語です。キャリアの大部分を同様の環境で過ごしてきた JavaScript 開発者としては、コード内でどのような種類の問題が予想されるかをすでに知っているので、これに怯える必要はありません。
Python を使用すると、Web アプリケーションの作成を開始できるだけでなく、AI 関連分野でのスキルを活用することもできるため、Python は第 2 言語として大きな利点をもたらします。

学習曲線

学習曲線は簡単でした。 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 に Types アノテーションが組み込まれていることには驚きました。

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 が最も近いバージョンでいくつかの基本的な型を追加していることは知っています (node.js の組み込み型のサポートに関する Medium の投稿を参照) が、Python と比較すると貧弱に見えます。

Python のグローバル インタープリター ロック (GIL)

JavaScript はイベント駆動型のノンブロッキング モデルを使用しますが、Python の Global Interpreter Lock (GIL) はマルチスレッド プログラムではわかりにくい概念になる可能性があります。
Python Global Interpreter Lock (GIL) は、一度に 1 つのスレッドだけが Python コードを実行することを保証するメカニズムです。 Python プログラムに複数のスレッドがある場合でも、GIL により、一度に Python コードを実行できるスレッドは 1 つだけです。
JavaScript では、Web ワーカーでマルチスレッドを実現できますが、Python ではこれを実現するために追加のライブラリを使用する必要があります。

パイソン的な考え方

JavaScript の「複数の方法で実行する」という考え方は、Python ではうまく機能しません。Python は、「それを実行するための明白な方法は 1 つ、できれば 1 つだけあるべきである」という概念に忠実に従っているからです。
JavaScript の世界では、どの企業も独自のコード スタイル ガイドを作成することが多く、基本的な JavaScript スタイルの推奨事項に従っている場合は幸いです。実際には、セミコロンの使用などの慣行は大きく異なる可能性があり、あるプロジェクトではセミコロンを使用する場合もあれば、別のプロジェクトでは使用しない場合もあります。
Python では、PEP 8 (Python のスタイル ガイド) の Python の原則に従うことを強くお勧めします。このガイドでは、Python コードの書き方の基本的なルールを概説します。
より良いコードを書くには、コミュニティに参加し、明確さと単純さを優先する慣用的な Python の実践方法を学ぶことが不可欠です。

依存関係と仮想環境の管理

この部分もわかりにくいかもしれません。 JavaScript では、通常、パッケージ マネージャーを追加して、問題なく依存関係のインストールを開始できます。ただし、Python の pip と仮想環境は新しい概念かもしれません。

Python で追加の依存関係を使用する場合は、別の仮想環境を使用することを強くお勧めします。 pip (JavaScript の npm に相当する Python) を使用して依存関係を環境にインストールすると、システム Python インタープリター (オペレーティング システムにプリインストールされているもの) が OS によって使用されるため、システム ユーティリティまたは OS 自体が機能しなくなる可能性があります。他のシステム ユーティリティ。

解決策として、venv モジュールを使用して仮想環境を作成できます:

python -m venv myenv
myenv\Scripts\activate # for windows
source myenv/bin/activate # for Mac

仮想環境に入ると、ルート環境に問題や危険を与えることなく、すべての依存関係をインストールできます。

サポートとリソースを見つける

Python を学んだ方法

新しい言語を学ぶのは常に困難です。私はオンライン プラットフォームで Python の基礎を学び始め、そこでいくつかの小さなプロジェクトも完了しました。これが私が学習プロセス中に使用した計画です:

  • Python の基本。
  • Python の高度な概念 (モジュール システム、型、環境、非同期コード)。
  • Django、Flask、FastAPI などの最も人気のあるフレームワークの基礎を学びます。
  • FastAPI を使用して最初の API サーバーを作成します。
  • データベースを追加し、Python でデータベースを操作する方法を学習します。
  • 無料のホスティング サービスにアプリケーションをデプロイします。

ヘルプを見つける場所

学習中に Reddit コミュニティや Discord サーバーで多くのヘルプを見つけることができます。私は主に Reddit ユーザーなので、Python のサブレディットと、最初のアプリケーションに使用するフレームワークを見つけることをお勧めします。

公式ドキュメントを必ず使用してください。私の意見では、これは圧倒的に見えるので、コンセプトに行き詰まった場合は、ほとんどの場合、関連する記事を探すようにしています。

PEP 8 — Python コードのスタイル ガイドを必ずお読みください。Python コードの記述方法に関する基本的なルールが記載されています。

過去とこれからを振り返って

JavaScript 開発者から Python を受け入れるまでの私の道のりを振り返ってみると、後悔はしていません。この移行により、特に AI と機械学習の分野でエキサイティングな機会が開かれ、現在、私はこれらをプロジェクト、特にバックエンドで幅広く活用しています。

今後を見据えると、Python の可能性は無限大です。 Web 開発、データ サイエンス、自動化、または AI や機械学習の掘り下げのいずれであっても、Python は新しい地平を構築し探索するための強力で多用途の基盤を提供します。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/oversec/fullstack-development-learning-python-as-javascript-developers-l6l?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3