×

Belajar Mudah Bahasa Julia untuk umum

Belajar Mudah Bahasa Julia untuk umum

3,591 Views

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

  1. 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.
  2. 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.
  3. 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.
  4. 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

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

  1. multi-paradigma yang berarti bisa digunakan untuk pemrograman object-oriented maupun pemrograman fungsional.
  2. 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.
  3. 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.
  4. 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

  1. if else
  2. try
  3. true
  4. false
  5. while
  6. for
  7. pi
  8. hindari penamaan function sebagai nama variabel seperti sqrt

Konvensi atau perjanjian yang digunakan secara umum dalam membuat variabel yaitu

  1. tidak boleh didahului karakter
  2. bila terdiri dari dua kata, bisa dipisahkan underscore. Contoh: panjang_segitiga
  3. 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 yth 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

 

You May Have Missed