国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Rumah pembangunan bahagian belakang tutorial php Ironi Penaipan Statik dalam Bahasa Dinamik

Ironi Penaipan Statik dalam Bahasa Dinamik

Nov 03, 2024 am 06:28 AM

Anda juga boleh membaca artikel ini di Medium.

Selalu lucu apabila kita melihat bagaimana bahasa pengaturcaraan berkembang dari semasa ke semasa.

Pada suatu masa dahulu, apabila saya memulakan perjalanan saya dalam dunia pembangunan perisian, bahasa dinamik seperti Python, PHP dan JavaScript dihargai kerana fleksibiliti dan sintaks ringkas yang sesuai untuk pembangunan pesat.

Walau bagaimanapun, apabila bahasa yang ditaip lemah ini berkembang, ia menggabungkan ciri bahasa yang ditaip dengan kuat, menjadikannya hampir serupa dengan C dan Java:

  • Python: Keupayaan pembayang jenis diperkenalkan sejak versi 3.5 pada 2015 dan dipertingkatkan dalam versi 3.12 pada 2022.
  • PHP: Jenis yang diisytiharkan diperkenalkan dalam versi 7 pada 2015.
  • JavaScript: Dilanjutkan dengan keluaran TypeScript pada tahun 2012 yang ditakrifkan sebagai "JavaScript dengan sintaks untuk jenis".

Kenapa peralihan ini?

Dalam bahasa menaip ketat, kami mentakrifkan jenis pembolehubah dalam kod kami secara eksplisit. Matlamatnya adalah untuk menangkap ralat semasa fasa pembangunan sebelum melaksanakan program dan memberikan petunjuk kepada pengkompil tentang saiz memori untuk diperuntukkan kepada pembolehubah ini.

// C++ example: 'y' will be an integer
float x = 3.14;
int y = x;  //  y = 3 (ignored the decimal part of the number)

Sebaliknya, bahasa yang ditaip secara dinamik seperti Python, PHP dan JavaScript membenarkan kami membuat pembolehubah dan membiarkan penterjemah membayangkan jenisnya semasa masa jalan:

# In python and PHP: 'y' will take the same type as 'x'
x = 3.14
y = x  // y = 3.14 (float)

Bagaimanakah penaipan eksplisit diperkenalkan dalam bahasa dinamik ?

Dalam contoh berikut, kami mengisytiharkan fungsi yang sama menggunakan penaipan dinamik dan statik.

Python:

# using the classic syntax:
def add(x, y):
    return x + y
# using explicit typing:
def add(x: int, y:int) -> int:
    return x + y

JavaScript / TypeScript:

// using the classic syntax
function add(x, y) {
    return x + y;
}
// using explicit typing
function add(x: number, y: number): number {
    return x + y;
}

PHP:

// using the classic syntax:
function add($x, $y) {
    return $x + $y;
}
// using explicit typing:
function add(int $x, int $y): int {
    return $x + $y;
}

PHP 8.2 (dikeluarkan pada Disember 2022) meneruskannya dengan memperkenalkan sokongan untuk null, true dan false sebagai jenis yang berdiri sendiri:

public null $nil = null;
public false $false = false;`

Di manakah ironinya?

Jangan anggap artikel ini sebagai bantahan terhadap ciri baharu ini, saya mengakui kelebihan menggunakan bahasa yang ditaip dengan ketat. Walau bagaimanapun, menggunakan anotasi jenis dalam Python, sebagai contoh, tidak menghalang anda daripada menukar jenis pembolehubah anda:

x: int = 0
x = "John" 
print(type(x))   # <class 'str'>

Sama untuk PHP, ia hanya akan mencetak amaran Dihentikan pada konsol.

Orang mungkin bertanya mengapa jurubahasa membenarkan kami melaksanakan kod ini?
Ini kerana bahasa ini dibina sedemikian: ia ditaip secara dinamik mengikut takrifan. Jika kita mengalih keluar ciri ini, ia tidak akan dinamik lagi; mereka akan menjadi bahasa ditaip ketat seperti C , tetapi lebih perlahan.

Mudah-mudahan, anda boleh meminta jurubahasa anda untuk menjadi lebih tegar dengan menetapkan strict_types kepada benar dalam fail PHP anda:

declare(strict_types=1);

Semasa dalam python, anda boleh menggunakan pakej 'mypy' untuk menganalisis kod anda dan menangkap pepijat:

// C++ example: 'y' will be an integer
float x = 3.14;
int y = x;  //  y = 3 (ignored the decimal part of the number)

Anda boleh melihat 'mypy' sebagai penasihat yang memberitahu anda kesalahan yang anda lakukan, tetapi ia tidak menghalang anda daripada melaksanakan kod anda atas risiko anda.

The Irony of Static Typing in Dynamic Languages

Walaupun anda tidak pasti tentang jenis pembolehubah anda, anda masih boleh menggunakan operator kesatuan untuk mengurangkan senarai jenis yang diterima:

Contoh berikut daripada PHP dan Python menunjukkan cara melakukannya:

# In python and PHP: 'y' will take the same type as 'x'
x = 3.14
y = x  // y = 3.14 (float)

Adakah kita mengorbankan kebolehbacaan kod?

Sepuluh tahun yang lalu, saya memutuskan untuk menggunakan Python untuk PhD saya kerana kesederhanaan dan keupayaan untuk membuat prototaip idea baharu dengan cepat. Kemudian saya mula menggunakannya juga untuk projek saya yang lain.

Kini, saya mendapati diri saya membaca beberapa PEP yang pelik dan menyoal diri sendiri sama ada ia benar-benar berbaloi untuk merumitkan pangkalan kod saya dengan memasukkan ciri baharu ini.

Mari lihat fungsi contoh yang mencetak item kamus. Berikut ialah versi awal:

# using the classic syntax:
def add(x, y):
    return x + y
# using explicit typing:
def add(x: int, y:int) -> int:
    return x + y

Dengan menggunakan pengesyoran daripada PEP 692 yang diperkenalkan dalam Python 3.12, kod tersebut menjadi:

// using the classic syntax
function add(x, y) {
    return x + y;
}
// using explicit typing
function add(x: number, y: number): number {
    return x + y;
}

Ringkasnya: kami mencipta kelas yang mewarisi daripada TypedDict, menyatakan nama dan jenis setiap item dan menggunakan operator Unpack untuk memberitahu "mypy" bahawa objek yang diterima ialah TypedDict.

Akibatnya, saiz kod kami meningkat dua kali ganda. Ia akan menjadi lebih panjang jika objek kita mempunyai lebih banyak item.

Nasib baik, kami boleh menggunakan penaipan statik untuk beberapa bahagian kod kami dan membiarkan yang lain sebagai dinamik. Atau kita boleh memilih untuk tidak menggunakannya sama sekali jika kita mahu.

The Irony of Static Typing in Dynamic Languages

Bilakah kita harus menggunakannya?

Jangan berasa tertekan untuk menulis semula keseluruhan pangkalan kod anda hanya kerana anda mempelajari ciri baharu yang berkilat.

Ciri baharu ini seperti alatan. Nasihat saya gunakannya dengan bijak:

Gunakan penaipan statik dalam senario berikut:

  • Apabila mendapatkan semula data daripada sumber luaran, seperti pangkalan data, perpustakaan dan API.
  • Di bahagian kritikal kod anda di mana kegagalan tidak dibenarkan.
  • Apabila pangkalan kod anda terdedah kepada pepijat yang kerap berlaku.

Elakkan menggunakan penaipan statik apabila anda:

  • Mereka bentuk prototaip untuk menguji idea anda dengan cepat.
  • Melaksanakan logik dalaman dengan pemeriksaan jenis hanya akan menghasilkan kod bertele-tele dengan dan tiada faedah.
  • Hanya memaparkan data pada skrin (cth. merancang carta, imej, nombor…).
  • Menulis skrip baris arahan tanpa input pengguna.

Perlu diingat bahawa apabila bercakap tentang pengekodan, peraturan emas sentiasa untuk berusaha untuk kesederhanaan, kecuali jika anda mempunyai sebab yang kukuh untuk merumitkan perkara.

Atas ialah kandungan terperinci Ironi Penaipan Statik dalam Bahasa Dinamik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Agnes Tachyon Build Guide | Musume Derby Pretty
2 minggu yang lalu By Jack chen
Oguri Cap Build Guide | Musume Derby Pretty
3 minggu yang lalu By Jack chen
Puncak bagaimana untuk emote
4 minggu yang lalu By Jack chen

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah saya tetap terkini dengan perkembangan php terkini dan amalan terbaik? Bagaimanakah saya tetap terkini dengan perkembangan php terkini dan amalan terbaik? Jun 23, 2025 am 12:56 AM

Tostaycurrentwithphpdevelopmentsandbestpractices, followeyNewsssourcesLikePhp.netandphpweekly, engageWithCommunitiesonforumsandconference, keeptoolingupdatedandgraduallyAdoptNewFeatures, dan readribcoursourcourceSource

Apakah php, dan mengapa ia digunakan untuk pembangunan web? Apakah php, dan mengapa ia digunakan untuk pembangunan web? Jun 23, 2025 am 12:55 AM

Phpbecamepopularforwebdevelopmentduetoitseaseoflearning, seamlessintegrationwithhtml, widespreadhostingsupport, andalargeecosystemincludingframeworkslikelaravelandcmsplatformsLikeWordPress.itexcelsinhandessubmissions

Bagaimana cara menetapkan zon waktu php? Bagaimana cara menetapkan zon waktu php? Jun 25, 2025 am 01:00 AM

TosetTheRightTimeZoneinPhp, USEDATE_DEFAULT_TIMEZONE_SET () functionAtthestArtAfyourscriptwithavalididentifiersuchas'america/new_york'.1.usedate_default_timeSet ()

Apakah amalan terbaik untuk menulis kod PHP yang bersih dan boleh dipelihara? Apakah amalan terbaik untuk menulis kod PHP yang bersih dan boleh dipelihara? Jun 24, 2025 am 12:53 AM

Kunci untuk menulis kod PHP yang bersih dan mudah dijaga terletak pada penamaan yang jelas, berikutan piawaian, struktur yang munasabah, menggunakan komen dan kesesuaian yang baik. 1. Gunakan pembolehubah, fungsi dan nama kelas yang jelas, seperti $ userData dan calculateToTalPrice (); 2. Ikuti gaya kod bersatu piawai PSR-12; 3. Pecahkan struktur kod mengikut tanggungjawab, dan aturnya menggunakan katalog MVC atau Laravel; 4. Elakkan kod gaya mi dan memecah logik ke dalam fungsi kecil dengan satu tanggungjawab; 5. Tambah komen pada mata utama dan tulis dokumen antara muka untuk menjelaskan parameter, pulangan nilai dan pengecualian; 6. Meningkatkan kebolehlihatan, mengguna pakai suntikan pergantungan, mengurangkan kaedah keadaan global dan statik. Amalan ini meningkatkan kualiti kod, kecekapan kerjasama dan kemudahan pasca penyelenggaraan.

Bagaimana saya melaksanakan pertanyaan SQL menggunakan php? Bagaimana saya melaksanakan pertanyaan SQL menggunakan php? Jun 24, 2025 am 12:54 AM

Ya, youpanrunsqlqueriesusingphp, danTheProcessinvolveschoosingadatabaseextension, connectingTothedatabase, executingqueriSafely, andclosingconnectionswhendone.todothis, firstChoosebetweBetbeSquLiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpiorpdob

Bagaimana dengan cepat menguji coretan kod PHP? Bagaimana dengan cepat menguji coretan kod PHP? Jun 25, 2025 am 12:58 AM

Toquicklytestaphpcodesnippet, useanOnlinePhpsandboxlike3v4l.orgorphpize.onlineForInstantExecutionWithoutSetup; runcodelocallywithphpclibycreatinga.phpfileAndexeCuteTerMinal;

Bagaimana saya menggunakan caching halaman dalam php? Bagaimana saya menggunakan caching halaman dalam php? Jun 24, 2025 am 12:50 AM

PHP Page Caching meningkatkan prestasi laman web dengan mengurangkan beban pelayan dan mempercepatkan beban halaman. 1. Cache fail asas mengelakkan generasi berulang kandungan dinamik dengan menghasilkan fail HTML statik dan menyediakan perkhidmatan semasa tempoh kesahihan; 2. Dayakan Opcache untuk menyusun skrip PHP ke dalam bytecode dan simpannya dalam ingatan, meningkatkan kecekapan pelaksanaan; 3. Bagi halaman dinamik dengan parameter, mereka harus di-cache secara berasingan mengikut parameter URL, dan mengelakkan kandungan khusus pengguna cache; 4. Perpustakaan cache ringan seperti phpfastcache boleh digunakan untuk memudahkan pembangunan dan menyokong pemacu penyimpanan berganda. Menggabungkan kaedah ini secara berkesan dapat mengoptimumkan strategi caching projek PHP.

Bagaimana untuk menaik taraf versi PHP? Bagaimana untuk menaik taraf versi PHP? Jun 27, 2025 am 02:14 AM

Menaik taraf versi PHP sebenarnya tidak sukar, tetapi kunci terletak pada langkah -langkah operasi dan langkah berjaga -jaga. Berikut adalah kaedah khusus: 1. Sahkan versi PHP semasa dan persekitaran berjalan, gunakan baris arahan atau fail phpinfo.php untuk dilihat; 2. Pilih versi baru yang sesuai dan pasangnya. Adalah disyorkan untuk memasangnya dengan 8.2 atau 8.1. Pengguna Linux menggunakan pengurus pakej, dan pengguna macOS menggunakan homebrew; 3. Migrasi fail dan sambungan konfigurasi, kemas kini php.ini dan pasang sambungan yang diperlukan; 4. Uji sama ada laman web berjalan secara normal, periksa log ralat untuk memastikan tiada masalah keserasian. Ikuti langkah -langkah ini dan anda boleh berjaya melengkapkan peningkatan dalam kebanyakan situasi.

See all articles