Apa itu Julia?
Julia adalah bahasa pemrograman yang relatif baru, pertama kali dirilis pada tahun 2012. Meskipun baru berusia sepuluh tahun, Julia berkembang pesat dan kini menjadi salah satu dari 30 bahasa pemrograman teratas menurut indeks TIOBE Oktober 2022.

Salah satu fitur menonjol Julia adalah dirancang untuk komputasi ilmiah. Artinya, Julia mudah digunakan dan cepat, sekaligus mampu menangani data dalam jumlah besar dan perhitungan kompleks dengan kecepatan tinggi. Slogan Julia yang terkenal adalah "berjalan seperti C tetapi terbaca seperti Python."
Julia adalah bahasa terkompilasi yang terbaca seperti bahasa terinterpretasi. Kebanyakan bahasa terkompilasi tradisional (seperti C atau C++) yang mampu menyelesaikan masalah komputasi berat harus terlebih dahulu dikompilasi ke format yang dapat dibaca mesin sebelum dapat dieksekusi.
Di sisi lain, Julia dapat mencapai performa yang sama dengan kesederhanaan bahasa terinterpretasi (seperti Python) tanpa perlu dikompilasi sebelum dieksekusi. Sebagai gantinya, Julia menggunakan kompiler Just-In-Time (JIT) yang melakukan kompilasi saat run-time.
Mengapa Memilih Julia untuk Machine Learning?
Python telah mendominasi lanskap data science dan machine learning sejak lama, dan ada alasannya. Ini adalah bahasa pemrograman yang sangat kuat dan fleksibel. Namun, ada beberapa kekurangan Python yang tidak menjadi masalah di Julia.
Beberapa kekurangan Python dibandingkan Julia adalah:
- Python adalah bahasa terinterpretasi yang lebih lambat dengan opsi terbatas untuk meningkatkan kecepatannya. Hal ini dapat membuat proyek machine learning big data menjadi kurang efisien dibandingkan dengan Julia.
- Python menggunakan single dispatch, yang membatasi secara signifikan tipe yang dapat digunakan dan dibagikan antar fungsi dan pustaka.
- Komputasi paralel dan threading tidak tertanam dalam desain bahasa Python. Meskipun ada pustaka yang memungkinkan sebagian threading, penerapannya tidak optimal.
Pada bagian ini, kami membahas beberapa alasan mengapa Julia adalah pilihan yang sangat baik untuk machine learning.
Anda juga dapat menelusuri lebih jauh kebangkitan bahasa ini dan apakah Julia layak dipelajari pada 2022 dalam artikel terpisah.
1. Sederhana & Mudah Digunakan
Julia memiliki sintaks yang sangat ramah dan dekat dengan bahasa Inggris. Ini membuatnya jauh lebih cepat untuk dipelajari karena kodenya sering kali intuitif dan mudah dipahami.
Julia juga cepat dan mudah di-instal serta langsung digunakan. Tidak perlu memasang distribusi khusus bahasa (seperti pada Python dan Anaconda) atau mengikuti proses instalasi yang berbelit-belit (seperti pada C dan C++).
Bagi praktisi machine learning, semakin cepat Anda mengurangi friksi pada aspek pemrograman, semakin cepat pula Anda dapat mulai melakukan hal terbaik Anda: menganalisis data dan membangun model.
2. Kecepatan
Salah satu ciri khas terbesar Julia adalah kecepatannya. Kami telah menyebutkan bahwa Julia adalah bahasa terkompilasi, yang memberikan peningkatan kecepatan yang signifikan dibandingkan bahasa terinterpretasi.
Julia termasuk dalam "klub petaflop" bersama C, C++, dan Fortran. Betul, klub eksklusif ini hanya memiliki empat anggota dan satu syarat untuk bergabung: mencapai kecepatan satu petaflop (yaitu seribu triliun operasi) per detik pada kinerja puncak.
Tidak jarang kita menemukan data dalam jumlah besar pada machine learning, sehingga menggunakan bahasa pemrograman yang cepat dapat sangat mempercepat waktu pelatihan dan menurunkan biaya saat menerapkan model ke produksi.
3. Kode Tidak Tervektorisasi Tetap Cepat
Di Julia, tidak perlu memvektorisasi kode untuk meningkatkan performa. Menulis kode tidak tervektorisasi berupa loop dan fungsi native sudah cepat. Memang, memvektorisasi kode di Julia mungkin memberi sedikit peningkatan kecepatan, tetapi tidak diperlukan.
Menulis dan menggunakan kode tidak tervektorisasi dapat menghemat banyak waktu saat membangun model machine learning karena Anda tidak perlu melakukan refaktor kode untuk mempercepatnya.
4. Guna Ulang Kode & Multiple Dispatch
Julia menggunakan duck-typing untuk 'menebak' tipe yang sesuai bagi suatu fungsi. Fitur ini berarti: jika berjalan seperti bebek, dan bersuara seperti bebek, kemungkinan besar itu bebek. Jadi, objek apa pun yang memenuhi spesifikasi implisit suatu fungsi didukung—tanpa perlu ditentukan secara eksplisit.
Namun, duck-typing tidak selalu tepat untuk kasus khusus, dan di sinilah multiple dispatch berperan. Dengan multiple dispatch, Anda dapat mendefinisikan beberapa kasus khusus untuk suatu fungsi, dan bergantung pada kondisi yang terpenuhi, fungsi akan memilih opsi yang paling sesuai saat run-time.
Multiple dispatch berguna dalam machine learning karena Anda tidak harus memikirkan setiap kemungkinan tipe yang boleh diteruskan ke fungsi. Sebagai gantinya, paket di Julia tetap sangat fleksibel sekaligus mampu berbagi kode dan tipe antar paket yang berbeda.
Pertimbangkan format tanggal: ada beberapa paket yang menggunakan format tanggal dan tanggal/waktu kustom masing-masing. Misalnya, Anda memiliki format datetime bawaan Python serta format Pandas datetime64[ns]. Di Julia, hanya ada satu format berbasis tanggal yang dibagikan di semua paket dari modul dates bawaan.
5. Manajemen Paket Bawaan
Paket dikelola secara otomatis di Julia dengan Pkg. Pkg untuk Julia seperti Pip untuk Python, tetapi jauh lebih baik. Lingkungan dikelola di Julia melalui dua berkas: Project.toml dan Manifest.toml. Berkas-berkas ini memberi tahu Julia paket apa yang digunakan dalam proyek dan versinya. Alih-alih mendefinisikan lingkungan khusus secara eksternal, lokasi folder berkas Julia Anda (yang berisi berkas toml Project dan Manifest) menjadi lingkungan tersebut.
Pendekatan manajemen paket bawaan yang sederhana seperti ini memudahkan untuk berbagi dan mereproduksi proyek dan analisis machine learning Anda.
6. Masalah Dua Bahasa
Tahukah Anda bahwa hanya 20–30% paket Python yang sebenarnya terdiri dari kode Python?

Ketergantungan pada bahasa lain ini terjadi karena, agar dapat mengembangkan paket yang efisien dan efektif, paket-paket tersebut harus dibangun dalam bahasa tingkat rendah seperti C dan C++.
Paket-paket ini menggunakan bahasa tersebut karena, dalam komputasi ilmiah, pengembangan solusi dan paket biasanya melibatkan dua bahasa pemrograman: bahasa prototipe yang mudah digunakan (seperti Python) untuk membuat implementasi awal yang cepat, lalu bahasa cepat (seperti C++) tempat seluruh kode ditulis ulang untuk versi final solusi.
Dapat Anda bayangkan, ini adalah proses yang lambat dan tidak efisien, bukan hanya untuk pengembangan awal tetapi juga untuk pemeliharaan jangka panjang dan fitur baru.
Di sisi lain, paket di Julia dapat diprototipe, dikembangkan, dan dipelihara dalam Julia. Akibatnya, seluruh siklus pengembangan dapat dipangkas menjadi hanya sebagian kecil dari waktu sebelumnya.
Paket Machine Learning di Julia
Saat ini Julia memiliki lebih dari 7.400 paket dalam general registry. Meskipun jumlah ini jauh dari banyaknya paket yang tersedia di Python (lebih dari 200.000), menemukan paket yang tepat untuk menyelesaikan masalah spesifik tetap dapat menjadi tantangan.
Bagian ini akan membahas paket utama yang Anda perlukan untuk menganalisis data dan membangun model machine learning.
Namun, jika Anda baru memulai machine learning di Julia, coba dulu kotak peralatan paket: MLJ. Paket ini dibuat khusus untuk mengumpulkan paket machine learning paling populer ke dalam satu tempat yang mudah diakses, menghemat waktu Anda dalam mencari paket terbaik untuk proyek Anda. Saat ini MLJ mendukung lebih dari 20 paket machine learning yang berbeda.
Di bawah ini adalah daftar beberapa paket paling umum yang akan Anda temui dalam proyek machine learning—mulai dari mengimpor, membersihkan, dan memvisualisasikan data, hingga membangun model:
- Notebook: Pluto, IJulia, Jupyter
- Manajemen paket/lingkungan: Pkg
- Impor dan penanganan data: CSV, DataFrames
- Pemodelan grafik dan keluaran: Plots, StatsPlots, LaTeXStrings, Measures, Makie
- Statistik dan Matematika: Random, Statistics, LinearAlgebra, StatsBase, Distributions, HypothesisTests, KernelDensity, Lasso, Combinatorics, SpecialFunctions, Roots
- Paket machine learning individual:
- Generalized linear models (mis. regresi linear, regresi logistik): GLM
- Deep Learning: Flux, Knet
- Support vector machines: LIBSVM
- Decision tree, random forest, AdaBoost: DecisionTree
- K-nearest neighbors: NearestNeighbors
- K-means clustering: Clustering
- Principal component analysis: MultivariateStats
Juga tersedia banyak implementasi dan wrapper untuk paket Python populer seperti Scikit-Learn dan Tensorflow. Namun, Anda tidak harus menggunakan paket-paket ini, karena Anda bisa kehilangan banyak keunggulan kuat Julia (seperti kecepatan dan multiple dispatch).
Memulai Julia untuk Machine Learning
Salah satu cara terbaik untuk memulai dengan Julia adalah melalui lingkungan notebook Pluto. Pada bagian ini, kami membahas manfaat menggunakan Pluto, terutama di awal perjalanan data science saat Anda masih belajar membangun proyek machine learning dengan Julia. Kami juga mengulas beberapa sumber daya terbaik untuk mempelajari lebih lanjut tentang Julia dan machine learning.
Pluto

Pluto adalah lingkungan Notebook interaktif yang mudah digunakan dengan antarmuka yang ramah. Kesederhanaan ini membuatnya sangat cocok bagi pemula yang mulai belajar Julia. Pluto juga memiliki banyak fitur tambahan yang memungkinkan Anda membangun solusi machine learning yang lebih menarik hampir tanpa usaha:
Reaktif
Saat mengevaluasi satu sel, Pluto juga akan mempertimbangkan sel lain mana yang harus dijalankan. Fitur ini memastikan sel yang bergantung diperbarui sebelum sel saat ini dievaluasi.
Hal hebat tentang Pluto adalah cukup cerdas untuk mengetahui tepatnya sel mana yang perlu dijalankan selain sel saat ini sehingga Anda tidak menghadapi masalah harus memperbarui setiap sel jika membuat perubahan di suatu bagian notebook.
Pluto juga membersihkan kode lama atau yang dihapus dan memperbarui keluaran sel mana pun yang bergantung untuk mencerminkan tindakan tersebut. Jika Anda mendefinisikan variabel di satu sel lalu menghapus sel itu, Pluto juga akan menghapus variabel tersebut dari namespace-nya. Selain itu, sel kode yang bergantung akan menampilkan pesan kesalahan untuk menunjukkan bahwa variabel yang dibutuhkan kini telah dihapus.
Interaktif
Sifat reaktif menyebabkan interaktivitas otomatis antar sel. Ini sangat berguna untuk cepat membuat bagan atau objek interaktif yang otomatis diperbarui saat variabel berubah.
Yang menarik dari Pluto adalah variabel tersebut bisa berupa widget interaktif di dalam notebook, seperti slider atau kotak teks bawaan. Anda bahkan dapat merancang widget sendiri jika menguasai Javascript.
Reaktivitas dan interaktivitas memungkinkan Anda menghasilkan laporan dan dasbor dinamis berdasarkan model machine learning dan analisis data Anda. Kunci keberhasilan proyek machine learning adalah komunikasi, dan Pluto mempermudah Anda untuk mendemonstrasikan dan menjelaskan proyek Anda.
Manajemen Paket Otomatis
Pluto terintegrasi mulus dengan Pkg untuk memungkinkan manajemen paket otomatis di notebook Anda. Bukan hanya itu, Anda sebenarnya tidak perlu memasang paket di luar Pluto. Semua informasi yang dibutuhkan Pluto (dan Julia) untuk menjalankan dan mereproduksi notebook Anda disimpan langsung di dalam notebook itu sendiri!
Ini berarti Anda dapat membagikan notebook kepada kolega atau teman sekelas, dan Anda dapat yakin semua paket yang tepat yang diperlukan notebook tersebut untuk berjalan akan ikut terbawa.
Kontrol Versi
Semua notebook Pluto disimpan sebagai berkas .jl yang dapat dieksekusi. Jika Anda membuka notebook di editor teks, tampilannya akan sedikit berbeda dari notebook yang Anda lihat di browser. Berkas tersebut berisi semua informasi yang dibutuhkan notebook, seperti kode, ketergantungan sel, dan urutan eksekusi. Namun, berkas-berkas ini tidak berisi keluaran apa pun. Semua ini membuat kontrol versi menggunakan Git dan GitHub jauh lebih mudah.
Ekspor & Berbagi
Notebook Pluto dapat diekspor sebagai berkas .jl yang dapat dieksekusi, PDF statis, atau berkas HTML statis. Jika Anda mengekspor sebagai HTML, maka orang yang Anda bagikan juga akan mendapatkan opsi untuk mengunduh dan mengedit berkas notebook mentah tanpa harus memasang Julia di perangkat mereka.
Pluto mewujudkan hal ini dengan bermitra dengan Binder—platform gratis yang meng-host notebook Pluto secara daring (juga bekerja dengan bahasa pemrograman lain, seperti Python dan R).
Fitur ini adalah langkah terakhir dalam alur kerja machine learning: pertama Anda melakukan analisis, lalu Anda membangun laporan interaktif di notebook untuk menunjukkan hasilnya, dan terakhir Anda dapat membagikan notebook kepada rekan teknis yang dapat mereproduksi dan mengedit analisis, serta kepada pihak non-teknis.
Sumber Belajar Julia
Berikut beberapa sumber yang sangat direkomendasikan untuk mempelajari bahasa pemrograman Julia dan cara menggunakannya dalam data science dan machine learning:
- Jika Anda menikmati belajar di lingkungan interaktif, kami memiliki kursus Introduction to Julia
- Untuk penjelasan komprehensif tentang bahasa pemrograman Julia, buku Think Julia: How to Think Like a Computer Scientist adalah salah satu sumber terbaik.
- Lihat tutorial Julia untuk pemula kami guna panduan langkah demi langkah memulai Julia
- Lihat lembar contekan kami untuk panduan ringkas hal-hal penting pemrograman Julia.
