Belajar Mudah Bahasa Julia untuk umum
Yuk mengenal bahasa julia yang sedang bersaing ketat dengan bahasa yang sudah ada seperti ruby, python, R, Matlab, Octave dan perl. Julia merupakan bahasa functional yang sintaks mirip dengan python sehingga masih sangat baru, tapi walaupun begitu bahasa ini layak kalian pelajari lho karena menawarkan beberapa kelebihan dibandingkan dengan python. Diantaranya yaitu
- Kecepatan: Yup, secara default bahasa Julia masih lebih cepat daripada Python karena menggunakan deklarasi tipe dan kompilasi JIT (Just in time). Hal yang berbeda dengan Python yang belum dioptimalkan tidak dapat menyamai kecepatan Julia kecuali menggunakan kompiler pihak ketiga seperti PyPy dan pustaka eksternal lainnya seperti cython.
- Ditujukan untuk kepentingan matematis: Bahasa Julia secara khusus diciptakan untuk perhitungan ilmiah yang digunakan dalam lingkungan matematika seperti octave, scilab, dan Matlab dimana kalau menggunakan python harus menggunakan package seperti numpy. Sintaks nya mirip dengan rumus matematika yang biasanya digunakan untuk operasi matematika lain selain hanya komputasi. Untuk alasan ini, Julia dapat dengan mudah dipahami oleh non-programmer kayak bahasa R lho.
- Core Engine: Core yang ada dalam Julia sendiri menggunakan bahasa C dan C++ dalam LLVM-nya. Julia seperti scripting language yang menggunakan JIT compiler (kayak python, C#) akan tetapi, Julia dapat juga di-compile ke berbagai kode natif bahasa pemrograman low-level.
- Syntax yang mirip dengan Python: Bagi kalian yang sudah belajar Python tentu akan mudah belajar Julia akan sintaksnya yang mirip, jadi nggak usah kuatir belajar lagi bahasa yang baru
Sejarah Singkat Julia
Contents
Julia merupakan bahasa pemrograman umum (general purpose) level atas (high level) yang dikembangkan oleh tim dari MIT (Massachusetts Institutes of Technology) seperti bahasa python, perl, ruby yang dari jeff Bezanson, Stefan Karpinski, Viral B. Shah, dan Alan Edelman. Ketiga merupakan ilmuwan komputer di MIT yang memiliki cita-cita menciptakan bahasa pemrograman high-level tapi dengan performa yang cepat untuk siapa saja.
Melalui performanya yang tinggi sangat diandalkan para ilmuwan untuk melakukan analitik big data, melakukan penelitian yang memiliki komputasi tinggi untuk penelitian ilmiah, serta simulasi desain rekayasa. Fitur lainnya yaitu
- multi-paradigma yang berarti bisa digunakan untuk pemrograman object-oriented maupun pemrograman fungsional.
- Dukungan penggunaan multi-thread dan multi-core pada CPU secara built-in baik itu dalam sebuah chip ataupun dalam sebuah sistem yang memiliki banyak chip.
- Selanjutnya dukungan dalam menggunakan berbagai macam jenis core seperti Graphic Processing Unit (GPU) dan Tensor Processing Unit (TPU) milik Google. Tentu hal ini akan membantu performa Julia dalam pengembangan AI maupun visualisasi big data.
- Package yang sangat banyak seperti plot grafik, numerik, statistik, machine learning, dan deep learning
Kalau sudah tertarik, jangan bengong saja donk, ayo download yang saat ini sudah mencapai 1.4.2 (23 mei 2020) lho. Kalian pilih saja sesuai dengan OS yang kamu pakai, https://julialang.org/downloads/. Berikut tampilan Julia, menarik sekali masih CLI (khas programmer)
Nggak usah kuatir, saat ini sedang dikembangkan menggunakan editor, tunggu saja
Belajar Dasar-Dasar Bahasa Julia
Bahasa julia yang ditujukan untuk beragam kalangan dengan sifatnya berupa functional programming maka tidak perlu deklarasi tipe data selain itu nggak pakai ribet kalau mau install package, ntar kita akan bahas satu persatu. Ikuti saja terus serial belajar mudah bahasa julia
Variable
Deklarasi variable pada Bahasa Julia tidak perlu deklarasi jenis/tipe data.
julia> pi = 3 3 julia> pi 3 julia> sqrt = 4 4 julia> kalimat = 'hello bos'
untuk cek tipe variabel yaitu
julia > typeof(a) Int64
Tipe data yang didukung oleh Julia yaitu Integer
Type | Signed? | Number of bits | Smallest value | Largest value |
---|---|---|---|---|
Int8 |
✓ | 8 | -2^7 | 2^7 – 1 |
UInt8 |
8 | 0 | 2^8 – 1 | |
Int16 |
✓ | 16 | -2^15 | 2^15 – 1 |
UInt16 |
16 | 0 | 2^16 – 1 | |
Int32 |
✓ | 32 | -2^31 | 2^31 – 1 |
UInt32 |
32 | 0 | 2^32 – 1 | |
Int64 |
✓ | 64 | -2^63 | 2^63 – 1 |
UInt64 |
64 | 0 | 2^64 – 1 | |
Int128 |
✓ | 128 | -2^127 | 2^127 – 1 |
UInt128 |
128 | 0 | 2^128 – 1 | |
Bool |
N/A | 8 | false (0) |
true (1) |
Untuk tipe data floating yaitu
Type | Precision | Number of bits |
---|---|---|
Float16 |
half | 16 |
Float32 |
single | 32 |
Float64 |
double | 64 |
Penamaan jenis tiap nama variabel tidak diijinkan sesuai dengan Keyword berikut
- if else
- try
- true
- false
- while
- for
- pi
- hindari penamaan function sebagai nama variabel seperti sqrt
Konvensi atau perjanjian yang digunakan secara umum dalam membuat variabel yaitu
- tidak boleh didahului karakter
- bila terdiri dari dua kata, bisa dipisahkan underscore. Contoh: panjang_segitiga
- bila variabel tersebut berupa konsanta, gunakan huruf kapital. Contoh: BUNGA_BANK
Oiya, julia agak berbeda dengan Python yang butuh Numpy untuk sebuah array/vector, kalau untuk julia sudah support secara default. Kita bisa membuat sebuah array dengan cara berikut
julia> vector = [1,3,7,8] 4-element Array{Int64,1}: 1 3 7 8
akses index nya mirip dengan matlab/octave yang dimulai dari angka 1, misalkan untuk akses nilai 3 yang berada di index 2 yaitu
julia> vector[2] 3
Operator arimatika
Operator aritmatika sama seperti octave, matlab, scilab, dan python. Namun ada tambahan feature seperti unary, yuk kita coba saja
#komentar 10+1 #operasi tambah 12-2 #operasi kurang 10*2 #operasi perkalian 10/2 #operasi pembagian 2^8 #operasi pangkat 10%3 #operasi sisa bagi / modulus
Lebih lengkap yaitu
Expression | Name | Description |
---|---|---|
+x |
unary plus | the identity operation |
-x |
unary minus | maps values to their additive inverses |
x + y |
binary plus | performs addition |
x - y |
binary minus | performs subtraction |
x * y |
times | performs multiplication |
x / y |
divide | performs division |
x ÷ y |
integer divide | x / y, truncated to an integer |
x \ y |
inverse divide | equivalent to y / x |
x ^ y |
power | raises x to the y th power |
x % y |
remainder | equivalent to rem(x,y) |
Operator Negasi
Sedangkan operator negasi yaitu menggunakan tanda seru !
Expression | Name | Description |
---|---|---|
!x |
negation | changes true to false and vice versa |
Bila kita coba kode berikut
!true
Akan menghasilkan false
Operator Bitwise
Operator bitwise pada julia yaitu ketika kalian suka otak-atik operator aritmatika pada level biner gunakan operator berikut
Expression | Name |
---|---|
~x |
bitwise not |
x & y |
bitwise and |
x | y |
bitwise or |
x ⊻ y |
bitwise xor (exclusive or) |
x >>> y |
logical shift right |
x >> y |
arithmetic shift right |
x << y |
logical/arithmetic shift left |
Kita coba saja operator bitwise
julia> 34 & 45 32 julia>
Kalau kalian masih bingung dengan cara diatas, kita bahas satu-satu persatu, nilai 34 dalam UInt8() yaitu
julia> bitstring(UInt8(34)) "00100010"
dan 45 yaitu
julia> bitstring(UInt8(45)) "00101101"
sehingga
00100010 00101101 -------- logika And akan menghasilkan 00100000
angka 00100000
merupakan urutan bit UInt8 dari nilai 32
julia> bitstring(UInt8(32)) "00100000"
Operator update
Ini yang agak unik yaitu operator update
+= -= *= /= \= ÷= %= ^= &= |= ⊻= >>>= >>= <<=
Kita coba saja yuk operator update
julia> a=10 10 julia> a+=5 15
Arti kode a +=5
yaitu a = a+5
untuk mempersingkat kode, ini tidak ada di python, matlab lho
Operator pada operasi Skalar Vector
Tidak seperti python, untuk julia sudah secara default mengenal array/vector seperti di matlab/octave sehingga untuk melakukan operasi dot vector hanya perlu menambahkan operator titik layaknya di matlab/octave.
julia> [1,2,3] .^ 3 3-element Array{Int64,1}: 1 8 27
Operator Perbandingan
untuk operator perbandingan, sama dengan bahasa yang lainnya yaitu
Operator | Name |
---|---|
== |
equality |
!= , ≠ |
inequality |
< |
less than |
<= , ≤ |
less than or equal to |
> |
greater than |
>= , ≥ |
greater than or equal to |
Kita coba operator perbandingan julia
julia> 12>=6 true
selain hal tersebut diatas, julia juga menyediakan beberapa function untuk mengecek equalitas antar variabel dan cek keberadaan jenis variabel yaitu
Function | Tests if |
---|---|
isequal(x, y) |
x and y are identical |
isfinite(x) |
x is a finite number |
isinf(x) |
x is infinite |
isnan(x) |
x is not a number |
Kita coba function tambahan untuk mengetes variabel, dengan perintah isequal()
julia> x = 9000 9000 julia> y = 800 800 julia> isequal(x,y) false
Beberapa function yang berkenaan dengan matematika dasar yaitu
Fungsi pembulatan
Function | Description | Return type |
round(x) | round x to the nearest integer | typeof(x) |
round(T, x) | round x to the nearest integer | T |
floor(x) | round x towards -Inf | typeof(x) |
floor(T, x) | round x towards -Inf | T |
ceil(x) | round x towards +Inf | typeof(x) |
ceil(T, x) | round x towards +Inf | T |
trunc(x) | round x towards zero | typeof(x) |
trunc(T, x) | round x towards zero | T |
Fungsi pembagian
Function | Description |
div(x,y), x÷y | truncated division; quotient rounded towards zero |
fld(x,y) | floored division; quotient rounded towards -Inf |
cld(x,y) | ceiling division; quotient rounded towards +Inf |
rem(x,y) | remainder; satisfies x == div(x,y)*y + rem(x,y); sign matches x |
mod(x,y) | modulus; satisfies x == fld(x,y)*y + mod(x,y); sign matches y |
mod1(x,y) | mod with offset 1; returns r∈(0,y] for y>0 or r∈[y,0) for y<0, where mod(r, y) == mod(x, y) |
mod2pi(x) | modulus with respect to 2pi; 0 <= mod2pi(x) < 2pi |
divrem(x,y) | returns (div(x,y),rem(x,y)) |
fldmod(x,y) | returns (fld(x,y),mod(x,y)) |
gcd(x,y…) | greatest positive common divisor of x, y,… |
lcm(x,y…) | least positive common multiple of x, y,… |
Fungsi sign dan absolut
Function | Description |
abs(x) | a positive value with the magnitude of x |
abs2(x) | the squared magnitude of x |
sign(x) | indicates the sign of x, returning -1, 0, or +1 |
signbit(x) | indicates whether the sign bit is on (true) or off (false) |
copysign(x,y) | a value with the magnitude of x and the sign of y |
flipsign(x,y) | a value with the magnitude of x and the sign of x*y |
Fungsi pangkat dan akar kuadrat
Function | Description |
sqrt(x), √x | square root of x |
cbrt(x), ∛x | cube root of x |
hypot(x,y) | hypotenuse of right-angled triangle with other sides of length x and y |
exp(x) | natural exponential function at x |
expm1(x) | accurate exp(x)-1 for x near zero |
ldexp(x,n) | x*2^n computed efficiently for integer values of n |
log(x) | natural logarithm of x |
log(b,x) | base b logarithm of x |
log2(x) | base 2 logarithm of x |
log10(x) | base 10 logarithm of x |
log1p(x) | accurate log(1+x) for x near zero |
exponent(x) | binary exponent of x |
significand(x) | binary significand (a.k.a. mantissa) of a floating-point number x |
Fungsi Trigonometri
sin, cos, tan, cot, sec , csc, sinh, cosh, tanh, coth, sech, csch, asin, acos, atan, acot, asec, acsc, asinh acosh atanh acoth asech acsch, sinc, cosc
Ikuti serial belajar mudah bahasa julia …. sampai dengan install package