Mojo adalah bahasa pemrograman berkinerja tinggi yang awalnya dirancang untuk menyatukan dan menyederhanakan pengembangan aplikasi di seluruh lapisan stack AI.
Bahasa ini menggabungkan kemudahan penggunaan dan sintaksis bahasa tingkat tinggi Python dengan kinerja bahasa tingkat sistem seperti C dan Rust, yang dapat berjalan di seluruh stack AI dan domain khusus.
Modular Inc. memulai pengembangan bahasa pemrograman Mojo pada tahun 2022, dan rilis tersedia umum pertama bahasa ini terjadi pada September 2023. Motif di balik pembuatan Mojo, menurut perusahaan, adalah untuk mengatasi kesulitan yang ditemui selama pengembangan platform AI mereka sendiri, yang dianggap membutuhkan pendekatan yang berbeda secara mendasar dalam hal arsitektur dan kompilasi, akses perangkat keras dan manajemen memori.
Mojo dan AI
Di seluruh lanskap pengembangan perangkat lunak saat ini, seorang programmer yang ingin bekerja di seluruh stack AI kemungkinan harus menulis kode dalam dua atau tiga bahasa yang berbeda, dimulai dengan yang berikut:
- Python biasanya adalah kode penghubung yang memasukkan data ke dalam sistem AI yang kompleks.
- Sistem pemrosesan AI yang kompleks biasanya ditulis dalam bahasa yang sangat efisien seperti Rust atau C dan superset-nya.
- Pengetahuan tentang C dan C++ diperlukan untuk menggunakan model pemrograman CUDA dan memanfaatkan pemrosesan paralel GPU.
Janji Mojo adalah untuk menyederhanakan cara aplikasi dibangun, awalnya di seluruh stack AI. Tujuannya adalah untuk menyediakan satu bahasa pemrograman bagi pengembang AI untuk menangani aspek-aspek unik di seluruh stack AI, seperti akselerator, lingkungan pembelajaran mesin, dan teknik kompilasi adaptif, tanpa mengorbankan kinerja atau kemudahan penggunaan atau memerlukan campuran bahasa untuk memenuhi kebutuhan tersebut.
Modular Inc., perusahaan yang menciptakan dan memelihara Mojo, mengatakan bahwa motif di balik pembuatan bahasa ini adalah kesulitan yang dihadapi Modular saat mengembangkan produk AI mereka sendiri yang disebut platform Max.
Ekstensibilitas Mojo
Meskipun tujuan utama Mojo adalah untuk memperbaiki masalah serius di bidang pengembangan AI, bahasa ini tidak secara inheren terikat pada AI. Proyek-proyek yang dibangun dengan bahasa pemrograman Mojo sudah muncul di pengembangan web, grafik 3D, dan pengkodean gambar. Selain itu, penggunaan Mojo terhadap kerangka kompilator MLIR modern memungkinkan kode sumbernya untuk menargetkan berbagai domain, dari perangkat genggam hingga mesin komputasi kuantum.
Mojo dan Python
Salah satu manfaat utama Mojo adalah bahwa ia mengadopsi sintaksis yang mirip dengan Python.
Python terkenal dalam komunitas pengembangan perangkat lunak karena mudah dipelajari, dan telah diterima dengan antusias. Selain itu, Python sudah tertanam kuat di dunia AI dengan pustaka dan proyek populer seperti PyTorch, NumPy, dan TensorFlow.
Selain itu, tim pengembangan Mojo sangat memprioritaskan kompatibilitas superset Mojo dengan Python, di mana runtime Mojo sepenuhnya mendukung sintaksis Python.
Mojo memungkinkan pengembang Python untuk memindahkan kode Python mereka yang ada langsung ke lingkungan Mojo tanpa harus mengedit kode mereka atau mempelajari sintaksis khusus Mojo. Ketika fungsionalitas Mojo tertentu diperlukan, pengembang dapat belajar Mojo secara bertahap sesuai kebutuhan.
Dukungan Python di Mojo menghilangkan hambatan signifikan untuk adopsi. Harapan Modular adalah agar pengembang mengenali manfaat kinerja dan skalabilitas Mojo, dan itu akan menjadi pilihan alami untuk proyek pengembangan Python.
Mojo dan kinerja
Masalah utama dengan bahasa pemrograman Python adalah kinerjanya yang buruk dan ketidakmampuannya untuk melakukan threading di seluruh inti CPU. Hal ini sangat membatasi penggunaan Python dalam kasus penggunaan pemrosesan data yang memiliki beban kerja tinggi, yang sangat umum di seluruh stack AI.
Mojo mendukung sintaksis yang mirip dengan Python, tetapi arsitektur dasarnya dan fitur bahasa tambahan serta kemajuan kompilator membantu Mojo mendekati kinerja tinggi dari bahasa pemrograman sistem termasuk Rust dan C.
Mengingat kemunculannya yang relatif baru, Mojo dirancang untuk secara native mendukung berbagai fitur modern dan optimisasi sistem, seperti berikut:
- Dukungan untuk kompilator MLIR, sebagai lawan dari kompilator LLVM yang digunakan oleh bahasa-bahasa seperti Rust, Swift, dan Kotlin native.
- Penggunaan transparan dari jenis operasi single instruction, multiple data (SIMD) di seluruh bahasa.
- Pemeriksa kepemilikan dan pinjaman yang membantu memastikan keselamatan memori, mencegah kebocoran memori, dan menyederhanakan konkurensi.
Kekuatan bertahan Mojo
Meskipun banyak bahasa pemrograman datang dan pergi, ada beberapa faktor yang membedakan Mojo.
Pertama, sebagian besar bahasa pemrograman yang sukses awalnya mengatasi masalah dengan platform atau teknologi tertentu dan kemudian memperluas jangkauan mereka ke domain lain.
Masalah khusus yang diatasi Mojo adalah kompleksitas yang menantang dan disparitas cara pemrograman yang bersatu di seluruh stack AI. Pengembang juga menemukan cara untuk menerapkan Mojo di luar AI dan pembelajaran mesin. Oleh karena itu, seperti bahasa pemrograman sukses lainnya, Mojo memiliki potensi kuat untuk berhasil.
Kedua, Mojo memiliki pengalaman, panduan, dan kepemimpinan dari salah satu penciptanya, CEO Modular Chris Lattner. Sejarah panjang dan cemerlangnya dalam teknologi kompilator dan pengembangan bahasa pemrograman mencakup kredensial berikut:
- Menciptakan kompilator LLVM sebagai bagian dari proyek riset Universitas Illinois.
- Co-menciptakan kompilator MLIR saat bekerja di Google.
- Dia adalah tokoh sentral dalam pengembangan bahasa pemrograman Swift di Apple.
Kepemimpinan Lattner dalam bidang pengembangan perangkat lunak dan pengalamannya dalam pengembangan kompilator memberikan pedigree yang kuat untuk membimbing perkembangan proyek ambisius seperti Mojo.