Skip to main content

I'm not that fanatic anymore ^^!

Haiiii *impersonate cara Takeru Satoh mengucapkan hai (iya dalam bahasa Jepang) di dorama Emperor's Cook :P

Yak, sesuai judul post kali ini, saya sudah tidak sefanatik dulu terhadap bahasa pemrograman yang saya gunakan, yakni Java. Semua berawal ketika saya mengenal JVM language lain (bahasa pemrograman yang berjalan di Java Virtual Machine) seperti :

  1. Groovy yang mengusung Dynamic Typing

    Bagi programmer dynamic type seperti PHP mungkin akan merasa familiar dengan Groovy, karena kita tidak perlu mendeklarasikan tipe data pada variable. Saya sempat jatuh cinta pada bahasa ini, namun saya masih merasakan keamanan "bermain" OOP dengan static type.
  2. Scala dengan konsep Functional OOP (Object Oriented Programming)

    Bahasa ini membuka wawasan saya bahwa diluar pemrograman struktural dan berbasis object (imperative), pernah ada bahasa yang mengusung konsep functional dan belakangan ini mulai muncul lagi ke permukaan dan bahkan banyak menyedot perhatian para developer.
    Functional programming memakai konsep persamaan fungsi dalam matematika x = f(y).
    Jika pada paradigma imperative (OOP) jika menulis bagaimana cara melakukan sesuatu, pada paradigma functional kita menulis apa yang harus dilakukan (deklaratif)

    Sebagai contoh untuk memfilter sebuah arraylist dari Person yang usianya <= 30 tahun

    Imperative

    List<Person> personList = ...
    List<Person> tigaPuluhanPersonList = new ArrayList<>();
    for(Person person : personList){
        if (person.age <= 30) {
            tigaPuluhanPersonList.add(person);   
        }
    }


    Functional

    List<Person> personList = ...
    List<Person> tigaPuluhanPersonList = 
        personList.filter(person -> person.age <= 30);


    Scala menggabungkan kedua konsep ini, yakni OOP dengan static type dan functional sehingga kita bisa memanfaatkan kekuatan OOP dan kemudahan Functional, awesome.
    Hanya saja Scala dibangun oleh kalangan akademisi yakni Martin Odersky dari EFPL Swiss,
    beberapa konsepnya dan syntaxnya agak susah dipahami oleh kalangan non akademisi seperti saya.
    Selain itu, integrasi dengan existing library yang ditulis dengan bahasa Java agak merepotkan.
     
  3. Ceylon yang dibangun oleh Gavin King, sang developer Hibernate ORM yang terkenal itu

    Saya tidak akan membahasnya karena gaung dari bahasa ini tidak seperti Scala maupun 2 bahasa berikut.
  4. Clojure yang membawa Lisp ke ranah JVM

    Yap Clojure adalah bahasa pemrograman yang memakai dialek dari bahasa Lisp.
    Sepengetahuan saya, Clojure cukup populer di kalangan developer yang butuh mengolah data secara significant.
  5. Dan yang paling baru adalah Kotlin yang secara konsep mirip Scala

    Meskipun sama-sama mengusung konsep Functional OOP, Kotlin dirancang dan diclaim oleh Jetbrains (Perusahaan di balik IDE populer Intellij IDEA) sebagai bahasa yang industrial ready (mendukung dengan baik exisisting library yang ditulis dengan bahasa Java).

    I'm fall in love with this language at first code ^ ^)

    Secara syntax masih relatif dekat dengan Java (as programming language), namun jauh mengurangi boilerplate code jika kita menggunakan bahasa Java.

    sebagai contoh adalah type inference (compiler secara otomatis menentukan tipe data dari variable yang dideklarasikan)

    jika kita biasa mendeklarasikan variable dengan cara

    String nama = "Eko Suhariyadi";

    menjadi

    val nama = "Eko Suhariyadi"


Yap, baik pada Groovy, Scala, maupun Kotlin semicolon adalah optional.
No more compile error caused by missing semicolon :P
FYI pada functional programming sangat dianjurkan agar variable di buat immutable
(sekali diinisialiasi tidak bisa diassign dengan value lain), karena lebih aman di sisi concurrency.

Contoh lain adalah lambda expression seperti yang bisa dilakukan dengan Java 8.
Lihat post saya sebelumnya tentang retrolambda.
Saya lebih suka menggunakan Kotlin untuk mendevelop aplikasi berbasis Android.
Tapi tidak menutup kemungkinan saya akan menggunakan Kotlin di aplikasi lain.

Sedangkan bahasa di luar JVM yang saya pakai adalah PHP (yang dulu saya benci) dan Python.
Perkembangan teknologi yang cepat menuntut kita untuk belajar bahasa baru, sesuai dengan kebutuhan "pasar".

Semangat belajar Sob :)

Comments

Post a Comment

Popular posts from this blog

Java | Menambahkan Dialog Konfirmasi Sebelum Keluar dari Aplikasi

Kali ini saya ingin berbagi cara sederhana untuk menampilkan dialog konfirmasi sebelum keluar dari aplikasi. Dengan syarat aplikasi yang kita buat harus menggunakan JFrame sebagai frame utama. Langkah-langkah yang harus kita lakukan adalah sebagai berikut: 1. Ganti property default close operation dari JFrame menjadi DO_NOTHING_ON_CLOSE, value ini dimaksudkan agar ketika button close dari JFrame diklik tidak akan terjadi apa-apa. Sebaliknya jika valuenya adalah EXIT_ON_CLOSE, maka ketika button close dari JFrame diklik maka program akan tertutup. setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); 2. Yang kedua adalah kita harus menambahkan WindowListener pada JFrame. Interface WindowListener memiliki beberapa method terkait event terhadap window (yakni JFrame), namun yang harus kita override hanyalah method windowClosing, method ini akan dipanggil ketika button close diklik.   Sebagai informasi, apabila kita menambahkan WindowListener secara langsung maka semua method dari i

PostgreSQL | Membuat Nomor Urut dengan Window Function ROW_NUMBER()

Pengguna Oracle Database mungkin sudah sangat familiar dengan clausa ROWNUM. Bagi yang belum tahu apa itu ROWNUM,  ROWNUM  adalah  pseudo column  (kolom bayangan) yang berisi nomor urut dari hasil eksekusi query. Sayangnya fitur ini belum tersedia pada PostgreSQL . Namun ada kabar gembira bagi kita pengguna  PostgreSQL , dimana sejak versi 8.4, PostgreSQL telah menyediakan 1 window function  yang mengakomodasi masalah ROWNUM, yakni ROW_NUMBER() . Sesuai dengan dokumentasi yang disediakan, cara menggunakan fungsi ini adalah dengan menggabungkannya dengan clausa OVER  yang didalamnya berisi clausa ORDER BY . Supaya lebih jelas dan lebih mudah dipahami, lebih baik langsung kita praktekkan saja. Saya membuat sebuah table dengan struktur sebagai berikut CREATE TABLE name ( code CHAR(1) ); yang kemudian saya isi kolom code dengan alfabet mulai dari a s/d z  dan angka 0 (nol). Sebelumnya kita lakukan query ke table name tanpa clausa ORDER BY : SELECT code FROM name; Outputny

PostgreSQL | Ekspresi Kondisional CASE Pada Query

Salah satu fitur yang saya sukai dari PostgreSQL adalah dapat digunakannya ekspresi kondisional pada query. PostgreSQL menyediakan ekpresi CASE yang memiliki fungsi yang sama dengan statemen IF/ELSE pada bahasa pemrograman. Berikut adalah bentuk dari ekspresi CASE pada PostgreSQL CASE WHEN condition THEN result      [WHEN ...]      [ELSE result] END Untuk melihat bagaimana cara menggunakan ekspresi CASE, saya memiliki sebuah tabel number dengan sebuah kolom nomor yang memuat data bertipe integer. SELECT nomor FROM number ORDER BY nomor;  nomor -------      1      3     32     37     38     97 (6 rows) Sekarang mari kita gunakan ekspresi CASE untuk menentukan apakah nomor tersebut merupakan bilangan ganjil atau genap. SELECT nomor, (CASE WHEN nomor % 2 = 0 THEN 'Bilangan Genap' ELSE 'Bilangan Ganjil' END) AS status FROM number ORDER BY nomor; dan hasilnya adalah sebagai berikut:  nomor |     status     -------+-----------------      1 | Bilangan