Bahasa pemrograman Julia adalah bahasa komputasi ilmiah yang pertama kali diumumkan pada 2012. Sejak itu, Julia menjadi penantang serius di lanskap bahasa pemrograman data. Dengan kemudahan penggunaan, kecepatan, dan dukungan untuk kasus penggunaan komputasi ilmiah, mempelajari Julia merupakan jalur yang layak bagi banyak data scientist saat ini.
Artikel ini menyajikan tutorial mendalam dan panjang tentang bahasa pemrograman Julia untuk pemula, mencakup sintaks dasar, bekerja dengan berbagai tipe data, vektor dan string, data frame, dan banyak lagi.
Mengapa belajar Julia?
Ada banyak alasan di balik meningkatnya popularitas Julia. Walau Python dan R masih menjadi bahasa pemrograman yang paling banyak digunakan dalam data science, Julia telah diunduh lebih dari 35 juta kali. Alasan di balik pertumbuhannya diulas secara menyeluruh dalam artikel ini, namun berikut ringkasan fitur dan keunggulan Julia:
- Kecepatan: Salah satu prinsip utama Julia adalah harus seluwes Python, sebersahabat R untuk statistik, tetapi secepat C. Ini memungkinkan alur kerja data yang lebih cepat, terutama untuk komputasi ilmiah.
- Sintaks: Cara lain Julia menonjol adalah sintaksnya. Meski cepat, sintaks Julia bertipe dinamis, sehingga lebih dekat dengan R dan Python daripada bahasa pemrograman yang lebih kompleks. Artinya, Julia jauh lebih mudah diakses dan dipelajari dibanding banyak bahasa pemrograman berkinerja tinggi lainnya.
- Multiple dispatch: Tanpa terlalu teknis, keunggulan lain Julia adalah multiple dispatch, yakni kemampuan fungsi Julia untuk berperilaku berbeda bergantung pada tipe argumen yang diberikan. Ini membuatnya fleksibel untuk digunakan.
Berkat fitur-fitur ini, Julia masuk 5 besar bahasa yang paling disukai dalam survei pengembang StackOverflow 2022. Terutama bagi komunitas ilmiah yang ingin beralih dari alat seperti Matlab.

Tangkapan layar dari StackOverflow Developer Survey 2022
Jika demikian, mari kita menyelami cara memulai dengan Julia.
Mulai dengan Julia
Kuasai dasar-dasar Julia dengan kursus Introduction to Julia kami yang interaktif dan praktik langsung.
Bagaimana cara memasang dan menjalankan Julia?
Memasang Julia sangat mudah. Unduh penginstal sesuai sistem operasi Anda di halaman situs Julia dan centang kotak untuk menambahkan Julia ke PATH sistem. Jika Anda mengetik julia di command line dan mendapatkan keluaran berikut, semuanya berjalan dengan baik.

Memasang dan menjalankan bahasa pemrograman Julia
Baik PyCharm maupun VSCode menyediakan plugin Julia yang mendukung highlight kode dan debugging. Namun, karena data scientist biasanya senang bekerja di JupyterLab, menambahkan kernel Julia ke JupyterLab juga mudah. Setelah masuk ke prompt julia di terminal, cukup masukkan dua baris ini:
using Pkg
add("IJulia")
Kode tersebut menambahkan paket IJulia ke instalasi Julia di sistem. Mulai ulang sesi JupyterLab yang berjalan, dan Anda akan melihat opsi Julia di Launcher.
Julia berjalan di JupyterLab
Sintaks dasar Julia
Bagian ini membahas dasar-dasar sintaks Julia, termasuk variabel, tipe data, operator, vektor, dan sebagainya.
Operator
Dalam pemrograman, ada karakter khusus yang disebut operator yang merepresentasikan proses matematis atau logis tertentu. Di bawah ini Anda akan melihat operator yang paling umum, termasuk penjumlahan, pengurangan, perkalian, pembagian, dan lainnya.
Catatan: Di Julia, komentar ditulis dengan satu karakter #. Apa pun yang ditulis setelah # akan diabaikan program (hingga akhir baris).
# Addition in Julia
37 + 73
110
# Subtraction in Julia
17 - 19
-2
# Multiplication in Julia
29 * 33
957
# Division in Julia
22 / 7
3.142857142857143
# Backwards division in Julia, the above is equal to 0 / 5.
5 \ 0
0
# The remainder operator in Julia
98456 % 23
16
# Raising to the power 2 (squaring)
(22 / 7) ^ 2
9.877551020408163
# Raising to the power 3 (cubing)
-7 ^ 3
-343
# Raising to the power 0.5 (square-rooting)
(355 / 133) ^ 0.5
1.633760365638372
Variabel
Dalam pemrograman, kita menggunakan variabel untuk menyimpan informasi. Variabel memudahkan kita merujuk suatu informasi lewat nama. Misalnya di sini kita menyimpan angka 73 ke dalam variabel bernama a, dan string “Hello world!” ke variabel “word” (kita akan melihat berbagai tipe data Julia pada bagian berikut). Mengetik nama variabel di command line akan mencetak nilainya.
# Storing the number 73 in a variable a
a = 73
a
73
# Storing "Hello world!" in word
word = "Hello world!"
word
Hello world!
Semua operator dan fungsi Julia bekerja sama pada variabel.
# Multiplying two numeric variables
a = 73
b = 37
a * b
2701
Anda dapat menggunakan karakter alfanumerik apa pun dalam nama variabel, termasuk garis bawah. Namun, ada konvensi tertentu dalam penamaannya di Julia. Nama variabel:
- menggunakan
lower_snake_case(huruf kecil dan kata dipisahkan garis bawah) - tidak boleh diawali angka.
Pengenalan tipe data di Julia
Tipe data memberi tahu program nilai apa yang diambil sebuah variabel dan operator matematis atau logis apa yang dapat digunakan padanya tanpa menyebabkan error. Ada berbagai tipe data di Julia, di bawah ini adalah yang paling dasar.
|
Tipe data |
Ekspresi |
Contoh |
Deskripsi |
|
Integer |
|
1, -99 |
Bilangan bulat |
|
Float |
|
1.23, 4.0 |
Bilangan dengan titik desimal |
|
Boolean |
|
true, false |
Nilai logika |
|
String |
|
"Hello", "A", "" |
Data teks dengan jumlah karakter berapa pun |
|
Karakter |
|
'A', '$', '\u20AC' |
Data teks dengan tepat satu karakter |
Tipe data dari sebuah variabel dapat dicetak menggunakan fungsi typeof():
# Getting the type of 3.14
typeof(3.14)
Float64
Saat melakukan operasi di Julia, Anda perlu memperhatikan konsekuensi dari perbedaan tipe data. Misalnya, mengalikan float dan integer akan menghasilkan float.
# Bank balance as an integer
balance = 100
# Interest rate as a float
interest_rate = 1.05
# Interest rate as a float
new_balance = balance * interest_rate
typeof(new_balance)
Float64
Sebaliknya, melakukan operasi pada string dan tipe data numerik sering kali menimbulkan error. Seperti berikut ini.
# Bank balance as an integer
balance = 100
# Interest rate as a string
interest_rate = “5%”
# Interest rate as a float
new_balance = balance * interest_rate
ERROR: MethodError:
no method matching *(::Int64, ::String)
Mengonversi tipe data di Julia
Anda bisa mengonversi berbagai tipe data ke tipe lain di Julia dengan fungsi bawaan. Di bawah ini tabel yang menunjukkan cara mengonversi berbagai tipe data di Julia.
|
Dari |
Ke |
Fungsi |
|
Integer |
Float |
|
|
Float |
Integer |
|
|
Integer atau float |
String |
|
|
String |
Float |
|
|
String |
Integer |
|
Bekerja dengan karakter dan string di Julia
Kita telah melihat tipe data karakter dan string di bagian sebelumnya, pada bagian ini, kita akan menyelami operasi karakter dan string yang umum. Sebagai pengingat, string adalah rangkaian karakter berurutan atau teks di dalam tanda kutip ganda.
# A string is a series of characters
word = "Hello world!"
word
"Hello world!"
Untuk menulis string multi-baris, Anda dapat menggunakan triple quotes:
multi_line = """
This is a
multi-line string.
"""
print(multi_line)
This is a
multi-line string.
Anda dapat mengekstrak informasi dan atribut dari string dengan berbagai cara. Misalnya, pengindeksan menggunakan tanda kurung dapat mengekstrak karakter individual atau rentang karakter berdasarkan posisinya. Pada contoh ini, 1:3 menunjukkan urutan angka dari 1 hingga 3 inklusif.
text = "Julia is a high-level, dynamic programming language"
# Extracting the first character in text based on its index
text[1]
'J': ASCII/Unicode U+004A (category Lu: Letter, uppercase)
# Extracting the first three characters in text based on its index
text[1:3]
"Jul"
Di atas kita menaruh 1 di dalam tanda kurung, dan itu mengembalikan karakter pertama. Sebagai alternatif, Anda juga dapat menggunakan operator khusus begin:
# Extracting the first character in text with the begin operator
text[begin]
'J': ASCII/Unicode U+004A (category Lu: Letter, uppercase)
Saat Anda mengekstrak satu karakter dari string, ia akan memiliki tipe data Char.
# Extract the type of the fourth character
typeof(text[4])
Char
# Extract the type of the fourth character
typeof(text[4])
Namun, ketika Anda melakukan slicing pada string dan mengekstrak lebih dari satu karakter, keluarannya juga berupa string.
# Extract the type of the first 5 characters
typeof(text[begin:5])
String
Di atas, kita melakukan slicing lima karakter pertama dari text. Perlu diingat bahwa kedua indeks di kedua sisi titik dua bersifat inklusif. Berbeda dengan Python, indeks negatif tidak didukung. Sebagai gantinya, Anda akan menggunakan operator end dengan angka negatif. Misalnya, untuk mendapatkan karakter ketiga dari akhir string, Anda dapat menulis berikut ini.
# Third from the end of the string
text[end-2]
'a': ASCII/Unicode U+0067 (category Ll: Letter, lowercase)
Operasi string yang umum di Julia
Anda dapat menggunakan fungsi length() untuk menghitung jumlah karakter dalam sebuah string.
# Count the number of characters in a string
length(text)
51
Tugas umum adalah menggabungkan dua atau lebih string. Anda dapat melakukannya dengan fungsi string(), memasukkan string ke dalam fungsi dan dipisahkan koma.
# Creating one string from "Julia", "is", "awesome"
string("Julia ", "is ", "awesome!")
"Julia is awesome!"
Anda juga dapat menggunakan operator * (perkalian) untuk menggabungkan string
# Creating one string by multiplying strings
"73 " * "is " * "the " * "best " * "prime."
"73 is the best prime."
Pada kedua cara tersebut, ingatlah untuk memberi spasi di antara kata. Cara lain menggabungkan string adalah dengan mengulang sebuah string beberapa kali. Berikut caranya dengan operator ^ (pangkat):
# Creating one string with the exponentiation operator
"Three times the fun!" ^ 3
"Three times the fun! Three times the fun! Three times the fun!"
Array di Julia
Tipe data umum lain di Julia dan bahasa lainnya adalah array, sebagaimana penyebutannya di Julia. Array adalah daftar nilai yang disimpan di antara tanda kurung siku []. Array disebut berbeda berdasarkan dimensinya.
- Array satu dimensi disebut vektor.
- Array dua dimensi disebut matriks.
- Array tiga dimensi ke atas disebut array.
Dalam tutorial ini, kita akan berfokus pada vektor. Vektor dapat dibuat dengan memasukkan item ke dalam sepasang tanda kurung, seperti di bawah ini.
# Define a three-integer vector
x = [1, 2, 3]
3-element Vector{Int64}:
1
2
3
# Get the type of x
typeof(x)
Vector{Int64} (alias for Array{Int64, 1})
Vektor x bertipe Vector, yang merupakan alias untuk array satu dimensi (sebagaimana tercantum pada keluaran alias for Array{In664, 1}). Semua elemennya bertipe data Int64. Namun ini tidak selalu berarti semua elemen harus memiliki tipe yang sama. Misalnya, berikut vektor dengan elemen bertipe berbeda.
# Define a vector with various data types
array = [1, "Hello", 22/7]
3-element Vector{Any}:
1
"Hello"
3.142857142857143
Seperti yang terlihat, elemen vektor memiliki tipe data Any di dalam tanda kurung kurawal, yang merepresentasikan beragam tipe data. Anda bahkan bisa memasukkan vektor ke dalam vektor.
# Define a vector with various data types, including another vector
array = [1, 2, 3, ["Hello", 73]]
4-element Array{Any,1}:
1
2
3
Any["Hello", 73]
Fungsi length() bekerja sama pada vektor seperti pada string, yakni menghitung jumlah elemen dalam array.
# Get the length of a vector
length(array)
3
Aturan pengindeksan juga serupa — di sini, kita mengindeks elemen pertama dan kedua dalam array.
# Get the first element of a vector
array = [1, "Hello", 22/7]
array[begin]
1
# Get the last element of a vector
array[end-1]
"Hello"
Operator Boolean dan perbandingan numerik
Bahasa pemrograman menggunakan nilai Boolean untuk menerapkan logika. Boolean hanya dapat memiliki dua nilai: true atau false. Nilai Boolean sangat berguna saat bekerja dengan perbandingan numerik dan operator Boolean. Mari terlebih dahulu melihat perbandingan numerik.
Operator perbandingan numerik di Julia
Pada tabel di bawah, Anda akan menemukan operator perbandingan numerik yang paling umum digunakan di Julia. Seperti terlihat pada contoh, Anda dapat membandingkan Boolean, objek numerik, dan lainnya menggunakan operator perbandingan numerik. Perhatikan bahwa Anda dapat menggunakan satu atau dua simbol untuk menulis kurang dari atau sama dengan/lebih dari atau sama dengan. Untuk versi satu simbol, ketik \le lalu TAB atau \ge lalu TAB.
|
Operator |
Nama |
Contoh |
|
|
kesetaraan |
|
|
|
ketidaksamaan |
|
|
|
kurang dari |
|
|
|
kurang dari atau sama dengan |
|
|
|
lebih dari |
|
|
|
lebih dari atau sama dengan |
|
Operator Boolean di Julia
Di luar operator perbandingan numerik, ada operator Boolean — seperti and/or. Operator ini dapat digunakan untuk menggabungkan dua atau lebih ekspresi Boolean menjadi satu. Di bawah ini operator Boolean paling umum dan cara penggunaannya.
|
Operator |
Nama |
Contoh |
|
|
operator and |
|
|
|
operator or |
|
Sintaks Julia tingkat menengah
Pernyataan kondisional di Julia
Menggunakan nilai dan operator Boolean, Anda dapat menulis pernyataan kondisional. Misalnya, jika sesuatu bernilai true — lakukan sebuah operasi. Jika false, lakukan operasi lain. Pernyataan kondisional juga disebut pernyataan if/else. Berikut cara menulisnya:
if true
print("Do something")
else
print("Do something else")
end
Setiap kali kondisi setelah kata kunci if bernilai true, blok if dieksekusi; jika tidak, blok else dieksekusi. Contoh berikut menunjukkan kondisi yang memeriksa apakah sebuah angka genap atau ganjil.
number = 5
if number % 2 == 0
print("The number is even")
else
print("The number is odd")
end
The number is odd
Pada ekspresi setelah if, kita menggunakan operator modulus, %, untuk memeriksa apakah angka tersebut menghasilkan 0 sebagai sisa saat dibagi 2. Ekspresi bernilai false karena sisa pembagian 5 dengan 2 adalah 1. Oleh karena itu, klausa else dijalankan. Sekarang, mari gunakan pengetahuan tentang operator Boolean dan pernyataan kondisional untuk menulis program yang memeriksa apakah sebuah angka positif, negatif, atau nol.
number = 0
if number > 0
print("The number is positive.")
elseif number == 0
print("The number is equal to zero.")
else
print("The number is negative.")
end
The number is equal to zero.
Kita menambahkan kondisi baru menggunakan klausa elseif. Kita menggunakan klausa elseif saat harus memeriksa dua atau lebih kondisi dalam urutan tertentu.
For loop
For loop dalam pemrograman digunakan untuk melakukan iterasi dan menjalankan operasi pada setiap elemen dari suatu urutan (string, vektor, tuple, set, dll.) secara berurutan. Sintaks for loop di Julia cukup sederhana. Misalnya, mari buat loop yang mencetak setiap elemen vektor:
languages = ["Julia", "Python", "R"]
for lang = languages
println(lang)
end
Julia
Python
R
For loop dimulai dengan menulis kata kunci for. Lalu, kita memilih nama variabel sementara. Dalam kasus ini, kita memilih lang, yang nilainya berubah saat kita melewati vektor languages. Kemudian, untuk menentukan bahwa kita melakukan loop melalui languages, kita menulis namanya setelah operator penugasan =.
Di dalam loop, kita menggunakan fungsi println() untuk mencetak setiap elemen languages, yang diwakili oleh variabel sementara lang. lang disebut variabel sementara karena tidak dapat diakses setelah loop selesai.
Catatan: Perbedaan antara print() dan println() adalah println() mencetak item pada baris baru.
Anda dapat menggunakan semua yang telah dipelajari hingga saat ini di dalam for loop. Misalnya, mari buat array berisi 10 integer dan hanya mencetak bilangan ganjil di dalamnya:
integers_vector = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for i = integers_vector
# Print only odd numbers
if i % 2 == 1
println(i)
end
end
1
3
5
7
9
Jangan lupa menutup for loop dan pernyataan if dengan end.
Anda juga dapat melakukan iterasi pada string karena string juga merupakan urutan. Di sini, misalnya, kita mencetak setiap huruf pada string "Julia".
for letter = "Julia"
println(letter)
end
J
u
l
i
a
Memasang paket di Julia
Semua operator (+, -, *, ^), fungsi (print(), println(), typeof()) dan kata kunci (for, if, else) yang kita gunakan disertakan dalam instalasi Julia. Namun, kode dalam instalasi tidak cukup untuk menyelesaikan semua masalah kita. Kita perlu memasang paket untuk memuat alat dan fungsi demi fungsionalitas tambahan. Paket adalah pustaka kode yang sudah ditulis (oleh programmer lain) yang dapat kita tambahkan ke instalasi Julia untuk membantu menyelesaikan masalah spesifik.
Misalnya, kita akan memasang dua paket bernama DataFrames dan CSV yang membantu memanipulasi informasi dalam file CSV. Berikut caranya:
using Pkg
Pkg.add("DataFrames")
Pkg.add("CSV")
Kelas Pkg adalah manajer paket global Julia. Fungsi add()-nya menambahkan paket baru ke instalasi. Untuk mengimpor semua nama fungsi dari pustaka, kita mengimpornya dengan kata kunci using di bagian atas skrip.
using DataFrames
using CSV
Kita akan menggunakan fungsinya pada bagian berikutnya.
Memulai dengan DataFrame
DataFrame adalah tipe data khusus dalam bahasa data seperti Julia, Python, atau R yang dirancang untuk bekerja dengan tabel. Format file paling populer untuk menyimpan tabel adalah CSV (comma-separated values). Pustaka DataFrame memiliki alat untuk memuat file tersebut dan memanipulasi informasi di dalamnya.
Mengimpor file CSV
Kita akan mengimpor dataset diamonds untuk tutorial ini. File diamonds.csv terlihat seperti ini:

Akses dataset diamonds di sini
Baris pertama disebut header dan berisi nama kolom. Mari memuatnya menggunakan paket CSV dan DataFrames.
# Load in the diamonds DataFrame
diamonds = DataFrame(CSV.File("data/diamonds.csv"))
typeof(diamonds)
DataFrame
Kita meneruskan path ke file CSV ke CSV.File(), yang kemudian diteruskan ke fungsi DataFrame(). Keluaran dari typeof() menunjukkan operasi berhasil.
Manipulasi data sederhana
Hal pertama yang selalu dilakukan saat Anda memiliki DataFrame baru adalah mencetak beberapa baris untuk melihat tampilannya. Anda dapat melakukannya dengan fungsi first().
# Print the first 7 rows of diamond
first(diamonds, 7)
7 × 10 DataFrame

7 baris pertama dari dataset diamonds
Fungsi first() mengembalikan n baris pertama dari sebuah DataFrame. Seperti terlihat, ada 6 kolom numerik dan 3 kolom kategorikal (teks). Indeks juga dihitung sebagai kolom dalam Julia DataFrames.
Ada juga fungsi last() yang bekerja serupa dengan first(). Anda mungkin sudah menebak dari namanya. Benar, fungsi ini mengambil n baris terakhir.
Fungsi lain yang berguna adalah size(). Fungsi ini mencetak jumlah baris dan kolom pada sebuah DataFrame.
# Print the dimensions of diamonds
size(diamonds)
(10000, 10)
Dataset kita memiliki 10 ribu baris dan 10 kolom (termasuk indeks). Mata manusia tidak bisa menangani seluruh 10 ribu baris, jadi kita menggunakan statistik ringkas untuk memahami sebaran kolom dalam dataset. Untuk itu, gunakan fungsi describe()
# Summary statistics of diamonds using describe()
describe(diamonds)
10 × 7 DataFrame

Keluaran fungsi describe()
Keluaran berupa tabel ringkas dengan 7 kolom. Kolom min, max, mean, dan median hanya berlaku untuk kolom numerik. Pada kolom eltype, Anda dapat melihat tipe data setiap kolom pada diamonds. Angka di samping String merujuk panjang string terpanjang pada kolom tersebut.
Anda juga dapat menggunakan sintaks berikut untuk memilih kolom individual dari DataFrame.
# Extracting the first 10 rows of the cut column
diamonds[:, :cut][begin:10]
10-element PooledArrays.PooledArray{String15,UInt32,1,Array{UInt32,1}}:
"Ideal"
"Ideal"
"Ideal"
"Premium"
"Fair"
"Premium"
"Very Good"
"Ideal"
"Ideal"
"Premium"
Titik dua pertama di dalam tanda kurung memilih semua baris. Lalu, kita menentukan nama kolom setelah koma dan titik dua lainnya (tanpa tanda kutip). Kemudian, kita menggunakan pengindeksan pada array yang dikembalikan untuk memilih sepuluh baris pertama. Untuk membuat kode di atas lebih sederhana, kita bisa langsung memilih sepuluh baris pertama di dalam tanda kurung pertama seperti berikut:
# Extracting the first 10 rows of the cut column
diamonds[1:10, :carat]
10-element PooledArrays.PooledArray{String15,UInt32,1,Array{UInt32,1}}:
"Ideal"
"Ideal"
"Ideal"
"Premium"
"Fair"
"Premium"
"Very Good"
"Ideal"
"Ideal"
"Premium"
Untuk memilih beberapa kolom, tempatkan nama kolom (diawali titik dua) di dalam tanda kurung siku.
# Extracting the first 5 rows of the cut, carat, price columns
diamonds[1:5, [:carat, :cut, :price]]
5 × 3 DataFrame

5 baris dan 3 kolom pertama dari dataset diamonds
Mari jalankan fungsi describe() hanya pada kolom numerik
# Running describe on numeric columns only
describe(diamonds[:, [:carat, :depth, :table, :price, :x, :y]])

Menjalankan describe() hanya pada kolom numerik
Untuk melihat DataFrame yang diurutkan naik berdasarkan sebuah kolom, gunakan fungsi sort():
# Sort diamonds and see the first 5 rows
sorted_diamonds = sort(diamonds, :price)
first(sorted_diamonds, 5)

Tabel ringkas yang diurutkan
Untuk mengurutkan menurun, bungkus fungsi order() pada nama kolom.
# Sort diamonds in descending order and see the first 5 rows
sorted_diamonds = sort(diamonds, order(:price, rev=true))
first(sorted_diamonds, 5)

Tabel ringkas yang diurutkan, menurun
Hebat! Sekarang, Anda dapat memuat DataFrame dan melakukan eksplorasi data dasar.
Pelajari lebih lanjut tentang Julia
Walaupun Julia adalah bahasa pemrograman yang masih muda, sudah ada banyak sumber daya untuk menguasainya. Berikut beberapa di antaranya untuk meningkatkan keterampilan Anda:
- The rise of Julia — Is it worth learning in 2022?
- Beralih dari MATLAB ke Julia
- Lihat cheat sheet kami, mencakup semua alat dan teknologi data, termasuk Julia
- Lihat kursus Introduction to Julia kami
Mulai dengan Julia
Kuasai dasar-dasar Julia dengan kursus Introduction to Julia kami yang interaktif dan praktik langsung.

