Jalur ini memperkenalkan Mojo, bahasa pemrograman sistem dari Modular yang mengikuti keluarga Python namun ditujukan untuk kinerja tingkat mesin. Materi disusun dari pemasangan, dua jenis fungsi, struct dan trait, ownership, koleksi, SIMD, parameter compile-time, perkakas, interop Python, hingga proyek kernel yang diukur secara jujur. Seluruh contoh dijalankan pada Mojo 1.2.0 di Linux dengan Modular SDK, dan setiap keluaran dalam topik merupakan hasil eksekusi sungguhan.
Mojo
Jalur bahasa pemrograman Mojo dari Modular: bahasa sistem keluarga Python dengan ownership, SIMD, dan parameter compile-time, dari pemasangan sampai proyek kernel yang diukur secara jujur.
0/0 selesai
Modul pembuka: kedudukan Mojo di keluarga Python, status versi dan churn API, serta pemasangan Modular SDK dan eksekusi pertama.
- Apa itu Mojo ?Memperkenalkan Mojo sebagai bahasa sistem milik Modular beserta garis keturunan Lattner, LLVM, dan MLIR.
- Status dan kejujuran soal churn APIMenyusun gambaran jujur tentang lini masa versi Mojo dan perubahan API antar rilis yang masih berlangsung.
- Pemasangan dan eksekusi pertamaMemasang Modular SDK di Linux, menjalankan program pertama, dan mencoba REPL serta mojo run.
Modul fungsi: def gaya Python, sejarah fn dan unifikasi ke def, variabel bertipe, dan konvensi argumen yang mengatur peminjaman serta kepemilikan.
- Fungsi defMenulis fungsi def dengan body bergaya Python dan aturan pengetikan yang longgar.
- Fungsi fnMenelusuri fungsi fn, keputusan penghapusannya di 1.0, dan disiplin ketat yang dipindahkan ke def bertipe.
- Variabel dan tipeMendeklarasikan variabel lokal var, Int, Float64, Bool, dan signature eksplisit.
- Konvensi argumenMenerapkan konvensi argumen bawaan, mut, dan var beserta implikasi peminjaman dan kepemilikannya.
Modul tipe buatan sendiri: struct dengan tata letak tetap dan semantik nilai, metode dan self, trait beserta conformance, serta metode siklus hidup.
- Dasar structMendefinisikan struct dengan field bertipe, tata letak tetap, dan semantik nilai.
- Metode dan selfMenambahkan metode def ke struct dan memahami self bawaan serta mut self.
- Trait dan conformanceMendeklarasikan trait dan menuliskan conformance bergaya Stringable pada struct.
- Metode khusus siklus hidupMengatur pembuatan, penyalinan, perpindahan, dan penghancuran nilai lewat metode siklus hidup.
Modul inti Mojo: perpindahan nilai, aturan peminjaman, peminjaman yang dapat diubah dan transfer kepemilikan, serta pengelolaan memori manual.
- Move secara bawaanMemahami bahwa nilai yang tak dapat disalin berpindah tanpa klon yang tak disengaja.
- Aturan borrowingMenalar konvensi bawaan yang meminjam secara immutable dan eksklusivitas peminjaman.
- inout dan owned secara mendalamMenggarap peminjaman yang dapat diubah dan transfer yang mengonsumsi, dari inout dan owned lama ke mut dan var terkini.
- Memori manualMengelola memori manual dengan Pointer, alokasi stack dan heap, serta destructor.
Modul data: kontainer yang dapat tumbuh, buffer kontigu dengan tampilan non-owning, serta penanganan string UTF-8 yang presisi.
- List, Dict, dan iterasiMenggunakan List dan Dict yang dapat tumbuh beserta perulangan for-in dan mutasi elemen lewat ref.
- Array dan sliceMengelola buffer kontigu berukuran tetap dan tampilan Span beserta batas pengindeksannya.
- Penanganan stringMengolah nilai String, slice per byte dan per code point, serta konversi antar bentuk.
Modul kinerja: alasan lane SIMD penting, tipe SIMD bertipe parameter, aritmetika lane dengan reduksi, dan pemilihan lebar yang portabel.
- Mengapa lane pentingMenjelaskan register, lebar vektor, dan berakhirnya peningkatan kecepatan gratis dari CPU modern.
- Tipe SIMDMendeklarasikan SIMD dengan parameter DType dan lebar serta mengoperasikan nilainya.
- Matematika lane dan reduksiMelakukan aritmetika lane demi lane dan meringkasnya dengan metode reduce_add.
- Pemilihan lebarMemilih lebar vektor yang portabel dan menangani sisa perulangan dengan benar.
Modul metaprogramming: konstanta comptime, fungsi berparameter kurung siku, alur kontrol compile-time, dan kernel generik satu body untuk banyak tipe.
- Konstanta aliasMemberi nama compile-time untuk lebar dan tipe dengan deklarasi comptime.
- Parameter dalam kurung sikuMemparametrisasi fungsi menurut dtype dan lebar pada kurung siku compile-time.
- Alur kontrol compile-timeMenggunakan comptime if dan comptime for yang dievaluasi lebih awal oleh compiler.
- Kernel generikMenulis satu body kernel yang melayani banyak dtype dan lebar sekaligus.
Modus bekerja produksi: struktur modul dan package, peta pustaka standar, subperintah mojo untuk build dan test, serta alur kerja editor dan dokumentasi.
- Modul dan packageMenata struktur import dan membangun paket precompiled dengan mojoc.
- Peta pustaka standarMemetakan modul collections, math, testing, dan kawan-kawan yang dikirim bersama Mojo.
- Build, run, dan testMenyusun tata letak proyek dan menjalankan subperintah mojo dari run sampai pengujian TestSuite.
- Alur kerja editor dan dokumentasiMemasang dukungan VS Code dan menjadikan docs.modular.com kebiasaan mencari API.
Modul jembatan ekosistem: alasan menjembatani Python, mengimpor modul dan nilai PythonObject, konversi dua arah, dan pertukaran array dengan NumPy.
- Mengapa perlu menjembataniMembingkai pembagian kerja jujur: NumPy tetap untuk orkestrasi, kernel berpindah ke Mojo.
- Mengimpor PythonMemanggil Python.import_module dan menyimpan nilai modul dalam PythonObject.
- Konversi nilaiMengirim angka, string, dan sekuens melintasi batas Mojo dan Python dua arah.
- Bolak-balik NumPyMeneruskan array NumPy masuk, menghitungnya sebagai Span, lalu mengembalikan hasilnya.
Modul puncak: memilih proyek kernel, merancang API yang sadar ownership dan terparameterisasi, serta mengukur kinerja terhadap baseline NumPy secara jujur.
- Pemilihan proyekMemilih lingkup proyek akhir: sebuah custom op atau pustaka kernel tensor kecil.
- Desain dan parameterisasiMerancang API bertipe parameter dtype dan lebar yang sadar ownership.
- Benchmark secara jujurMengukur kinerja terhadap baseline NumPy dengan varians ikut diperhitungkan.