Rumah  >  Artikel  >  hujung hadapan web  >  Pembangunan Fullstack: Belajar Python sebagai Pembangun JavaScript

Pembangunan Fullstack: Belajar Python sebagai Pembangun JavaScript

WBOY
WBOYasal
2024-08-31 00:22:33462semak imbas

Fullstack Development: Learning Python as JavaScript Developers

Perjalanan Bermula

Saya telah bekerja sebagai pembangun bahagian hadapan selama lebih daripada 8 tahun, dan dalam 2 tahun yang lalu, saya memutuskan untuk memikirkan semula kerjaya saya dan bagaimana saya boleh berkembang. Saya mendapati bahawa teknologi bahagian hadapan sering berubah: rangka kerja, konsep dan jurang yang berbeza antara komponen kelas React dan cangkuk. Saya menyedari bahawa semua ini hanyalah abstraksi yang digunakan untuk menyatakan keperluan perniagaan dan visi peribadi. Dari sudut ini, saya memutuskan untuk menukar laluan kerjaya saya dan menjadi pembangun tindanan penuh sedikit.

Seperti yang kita semua tahu, pembangunan frontend adalah mengenai JavaScript pada masa kini, itulah sebabnya saya memutuskan untuk mempelajari Node.js dan rangka kerja utamanya. Semua pembangun frontend menemui Node.js dalam satu cara atau yang lain, dan sebagai Pembangun Frontend Kanan, anda seharusnya boleh menulis titik akhir asas dalam Node.js dengan Express atau perpustakaan lain. Selepas 2 tahun pembangunan aktif di bahagian Node.js, apabila tugas saya menjadi 50/50 antara bahagian hadapan dan bahagian belakang, saya mendapati bahawa kebanyakan projek tidak mengehadkan diri mereka kepada satu bahasa sahaja.

Node.js bukanlah alat yang ideal untuk segala-galanya, terutamanya apabila anda bekerja di syarikat yang lebih besar. Bahasa yang berbeza menyediakan penyelesaian yang berbeza atau lebih optimum untuk menyelesaikan kes perniagaan tertentu. Inilah sebabnya saya mula menyelidik perkara yang boleh saya pelajari sebagai bahasa belakang kedua saya dan bagaimana saya boleh menggunakannya pada masa hadapan.

Saya ingin berkongsi pengalaman saya dan mengapa saya memutuskan untuk menggunakan Python selepas cuba mempelajari Rust (kebanyakannya bukan untuk pembangunan web), Swift (yang kebanyakannya merupakan penyelesaian yang mengutamakan mudah alih) dan Golang. Di sini, anda akan mengetahui sebab saya percaya Python ialah peluang yang baik untuk pembangun bahagian hadapan belajar dan cara mula menggunakannya.

Mengapa Python?

Kini, AI ialah sesuatu yang diperkatakan oleh semua orang. Menyebutnya dalam temu bual sebagai sebahagian daripada pengalaman anda sentiasa memberi anda mata tambahan. Hampir semua syarikat cuba memasukkan AI ke dalam produk mereka, dan Python berjalan seiring dengan AI dan Pembelajaran Mesin. Dengan mempelajari Python, anda bukan sahaja mendapat peluang untuk menulis aplikasi web dengan rangka kerja seperti Django, Flask dan FastAPI, tetapi anda juga boleh mula bekerja dengan Pembelajaran Mesin dan perkhidmatan AI.
Di satu pihak, mempelajari bahasa yang lebih kompleks seperti Rust, Go, atau Elixir adalah idea yang baik jika anda ingin menjadi pengaturcara yang lebih baik. Walau bagaimanapun, dari perspektif kerjaya, ia bukanlah satu peralihan yang mudah untuk menjadi pembangun bahagian belakang dengan bahasa yang sama sekali berbeza yang anda kurang biasa.

Python ialah bahasa pengaturcaraan yang ditaip secara dinamik. Sebagai pembangun JavaScript yang telah menghabiskan sebahagian besar kerjaya anda dalam persekitaran yang serupa, ini tidak seharusnya menakutkan anda, kerana anda sudah tahu jenis isu yang boleh dijangkakan dalam kod tersebut.
Dengan Python, anda bukan sahaja boleh mula menulis aplikasi web tetapi juga memanfaatkan kemahiran anda dalam bidang berkaitan AI, yang memberikan Python kelebihan yang ketara sebagai bahasa kedua.

Keluk Pembelajaran

Keluk pembelajaran adalah mudah. Dalam Python, anda perlu mempelajari beberapa konsep asas dengan pasti. Jika anda mempunyai pengalaman dengan JavaScript, ia tidak sepatutnya menjadi masalah besar.

Berikut ialah contoh kod dalam 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 low! Try again.")
        elif 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()

Saya tidak fikir anda akan menemui sesuatu yang terlalu rumit di sini. Walaupun anda tidak pernah belajar Python sebelum ini, anda boleh memahami hampir semua baris tanpa membaca dokumentasi.

Perbezaan terbesar yang anda akan perhatikan ialah Python menggunakan lekukan untuk menentukan blok kod dan bukannya pendakap kerinting. Itu mungkin kelihatan pelik, dan saya masih merasakannya agak luar biasa, tetapi selepas beberapa ketika, anda akan terbiasa dengannya dan membaca kod menjadi lebih mudah.

Selain itu, banyak konsep dalam Python serupa dengan konsep dalam JavaScript. Daripada console.log, anda boleh menggunakan cetakan dan untuk interpolasi rentetan, anda boleh menambah f pada permulaan rentetan dan menggunakan sintaks yang hampir sama seperti dalam JavaScript.

Berikut ialah versi JavaScript kod di atas:

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 low! Try again.");
        } else if (userGuess > numberToGuess) {
            console.log("Too high! Try again.");
        } else {
            console.log(`Congratulations! You guessed the number ${numberToGuess} in ${attempts} attempts.`);
            guessed = true;
        }
    }
}

guessTheNumber();

Mengatasi Halangan: Konsep Utama

Anda boleh mempelajari banyak konsep berbeza dalam Python. Saya menunjukkan yang paling mengelirukan untuk saya sebagai pembangun JavaScript.

Sintaks Berasaskan Indentasi

Sebagai pembangun JavaScript, anda mungkin biasa dengan cara menggunakan blok kod dengan if/else dan pengendali lain. Dalam kebanyakan kes anda hanya menambah {} dan itu sahaja. Sistem berasaskan lekukan Python boleh menjadi rumit.

Mari lihat kod JavaScript:

if (role === "admin") {
    const posts = getDraftPosts()

    if (posts.length === 0) {
        throw NotFound()
    }   

    return posts
}

Analog python:

if role == "admin":
    posts = get_draft_posts()

    if posts.length == 0:
        raise NotFound()

    return posts

As you can see readability of blocks in Python could be challenging from the first view. This is why for me it was important to avoid deeply nested blocks because it is hard to read and easy to miss correct indention. Keep in mind that Python could attach your code to a wrong code block because of missed indention.

Type system

Python is a dynamic typing language but I was surprised to find Python built-in Types annotation.

def add(x: int, y: int) -> int:
    return x + y

You don’t need to install additional features, only what you need in Python *3.5 and above.*

Even more complex types could be described as equal to 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

For using these types you are not required to install something or transpile this code. This is something I missed in JavaScript, at least Node.js. I know Node.js is adding some basic types in the nearest version (see Medium post about node.js built-in types support) but it looks poor now if you compare it with Python.

Python’s Global Interpreter Lock (GIL)

JavaScript uses an event-driven, non-blocking model, while Python's Global Interpreter Lock (GIL) can be a confusing concept in multi-threaded programs.
The Python Global Interpreter Lock (GIL) is a mechanism that ensures only one thread executes Python code at a time. Even if your Python program has multiple threads, only one thread can execute Python code at a time due to the GIL.
With JavaScript, you can achieve multithreading with web workers, but in Python, you need to use additional libraries to accomplish this.

A Pythonic Mindset

JavaScript's "multiple ways to do it" philosophy doesn't work as well in Python because Python adheres more closely to the concept "There should be one - and preferably only one - obvious way to do it."
In the JavaScript world, every company often creates its own code style guide, and it's fortunate if it follows basic JavaScript style recommendations. In reality, practices like using semicolons can vary widely, to the point where one project might use semicolons and another might not.
In Python, following Pythonic principles from PEP 8 (Python's style guide) is highly recommended. This guide outlines the basic rules of how to write Python code.
To write better code, it's essential to engage with the community and learn idiomatic Python practices that prioritize clarity and simplicity.

Managing Dependencies and Virtual Environments

This part might also be confusing. In JavaScript, you can usually add a package manager and start installing dependencies without any issues. However, Python’s pip and virtual environments may be new concepts.

In Python, when using additional dependencies, it’s highly recommended to use a separate virtual environment. Installing dependencies with pip (the Python equivalent of npm in JavaScript) in your environment could potentially break system utilities or the OS itself, as the system Python interpreter (the one that comes pre-installed with your operating system) is used by the OS and other system utilities.

As a solution, you can create a virtual environment with venv module:

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

After you enter the virtual environment you can install all dependencies without any problem or danger for your root environment.

Finding Support and Resources

How I Learned Python

Learning a new language is always challenging. I started learning Python basics on an online platform, where I also completed some small projects. Here is the plan I used during my learning process:

  • Python basics.
  • Advanced Python concepts (module system, types, environment, async code).
  • Learning the basics of the most popular frameworks like Django, Flask, and FastAPI.
  • Writing my first API server with FastAPI.
  • Adding a database and learning how to work with databases in Python.
  • Deploying the application on a free hosting service.

Where to Find Help

You can find a lot of help in Reddit communities or Discord servers while learning. I’m mostly a Reddit user and would suggest finding subreddits for Python and the framework you decide to use for your first application.

Remember to use the official documentation. In my opinion, it looks overwhelming, and most of the time, I try to find related articles if I get stuck on a concept.

Make sure to read PEP 8 — Style Guide for Python Code, where you can find basic rules on how to write Python code.

Pandang Belakang dan Hadapan

Semasa saya merenung perjalanan saya daripada pembangun JavaScript untuk menerima Python, saya tidak menyesal. Peralihan ini telah membuka peluang menarik, terutamanya dalam bidang AI dan pembelajaran mesin, yang kini saya manfaatkan secara meluas dalam projek saya, terutamanya pada bahagian belakang.

Melihat ke hadapan, kemungkinan dengan Python adalah besar. Sama ada pembangunan web, sains data, automasi atau mendalami AI dan pembelajaran mesin, Python menyediakan asas yang kuat dan serba boleh untuk membina dan meneroka ufuk baharu.

Atas ialah kandungan terperinci Pembangunan Fullstack: Belajar Python sebagai Pembangun JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn