Python adalah bahasa pemrograman multifungsi yang dibuat oleh Guido van Rossum dan dirilis pada tahun 1991. GvR, begitu ia biasa disebut di komunitas Python, menciptakan Python untuk menjadi interpreter yang memiliki kemampuan penanganan kesalahan (exception handling) dan mengutamakan sintaksis yang mudah dibaca serta dimengerti (readability).


Didesain untuk memudahkan dalam prototyping, Python menjadi bahasa yang sangat mudah dipahami dan fleksibel.

Python juga memilih untuk menggunakan indentasi untuk mengelompokkan blok kode, berbeda dengan beberapa bahasa lain yang menggunakan simbol tertentu, misalnya kurung kurawal, atau sintaksis begin-end.



Sehingga secara visual pun, blok kode Python didesain untuk mudah dipahami. Salah satu yang paling dikenal adalah, penggunaan titik koma atau semicolon (;) tidak wajib di Python dan penggunaan semicolon cenderung dianggap bukan cara khas Python (non-pythonic way), meskipun ia tetap dapat digunakan, misalnya untuk memisahkan dua statement dalam baris yang sama.

  1. print("Hello World"); print("Welcome to Python")



Python juga memilih untuk mengadopsi dynamic typing secara opsional, yakni variabel yang dibuat tidak akan diketahui tipenya hingga ia dipanggil pertama kali atau dieksekusi, tidak perlu deklarasi variabel (meskipun dimungkinkan), dan memungkinkan tipe data berubah dalam proses eksekusi program.

Sejak Python versi 3.6, sudah tersedia pilihan untuk static typing.

Python pun terus berkembang dalam penggunaannya, sehingga fitur-fitur baru dibutuhkan untuk dikembangkan. Versi 2.0 dirilis Oktober 2000 dengan beberapa pengembangan fitur termasuk Garbage Collector dan Memory Management yang juga menjadi fitur pada beberapa bahasa pemrograman modern lainnya, di antaranya Java dan C#.

Python 3.0 adalah versi perubahan mayor yang dirilis pada Desember 2008, yang didesain sebagai versi yang tidak backward-compatible dengan versi-versi sebelumnya. Beberapa sintaksis/statement yang sebelumnya berjalan di versi 2.x, kini tidak lagi berjalan. Semua hal ini didasarkan pada keinginan bahasa Python yang kembali ke “inti”, yakni readable, consistent & explicit. Contohnya, fungsi print yang sebelumnya adalah statement di python 2.x, menjadi function di python 3.x.

Lebih jauh tentang Python 3.0 http://docs.python.org/release/3.0.1/whatsnew/3.0.html

Versi terbaru Python pada saat pembaruan modul ini adalah 3.8 yang dirilis pada 14 Oktober 2019. Pada saat tulisan ini dibuat, Python 3.9 sedang dikembangkan dan berstatus 3.9.0 alpha 1.

Sejarah / Overview

Saat ini, Python dikelola oleh lembaga non-komersial Python Software Foundation (PSF). Namun sebelumnya, GvR dijuluki sebagai Benevolent dictator for life (BDFL) karena hampir semua keputusan pengembangan Python diambil oleh GvR,

berbeda dengan bahasa lain yang misalnya menggunakan voting dan semacamnya. Pasca tahun 2000, dibentuklah beberapa sistem yang memungkinkan

Python menjadi lebih sustain, misalnya Python Enhancement Proposals (PEP) untuk pengembangan Python dan tentunya Python Software Foundation (PSF).

Jika PSF menjadi lembaga yang mengelola dan mengadvokasi Python, PEP menjadi panduan dalam pengembangan Python. Beberapa PEP memuat misalnya bagaimana sintaksis dan bagaimana Bahasa Python akan berevolusi, bagaimana modul akan dinyatakan usang (deprecated), dan sebagainya.

Setelah kurang lebih 30 tahun dalam pengembangan Python, GvR memutuskan untuk tidak lagi menjabat BDFL pada 12 Juli 2018.

Salah satu patokan dalam pengembangan Python adalah PEP 20 yang berjudul Zen of Python.


Zen of Python (https://www.python.org/dev/peps/pep-0020/)

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Jika ada pengembangan fitur Python, maka PEP 20 inilah yang menjadi dasar/akar dalam mengambil keputusan
kita akan mencoba membuat proyek baru menggunakan IntelliJ IDEA. Langsung saja, buka IntelliJ IDEA pada komputer Anda. Berikut adalah tampilan utama dari IntelliJ IDEA:
202001211355012af3a62c8d8b3b918124242f0c7a45ed.png
Untuk membuat proyek baru, Anda bisa memilih menu Create New Project. Anda akan melihat jendela baru seperti berikut:
20200121214223a29deb181e17604261fdfdb2a37642b9.png
Karena kita tetap akan menggunakan Gradle sebagai build tools, maka pada panel sebelah kiri pilihlah Gradle. Berikan tanda checklist pada Kotlin DSL build script untuk menetapkan Kotlin DSL sebagai build script yang akan digunakan pada proyek. Pada Additional Libraries and Frameworks, pilih Kotlin/JVM dengan memberikan tanda checklist. Dengan begitu IntelliJ IDEA akan melakukan setup proyek secara otomatis. Klik tombol Next dan isikan GroupId dan ArtifactId seperti gambar di bawah ini:
202001212142457a4f896171a5779a4b4dcafd11512a6c.png
GroupId tersebut akan digunakan sebagai package name dari proyek kita. Sedangkan ArtifactId akan menjadi nama proyek. Secara default, Intellij IDEA sudah menentukan nama proyek (sesuai dengan ArtifactId) dan juga lokasi proyek. Namun Anda bisa menggantinya sesuai kebutuhan. Jika sudah sesuai, klik tombol Finish dan Intellij IDEA akan membuatkan Anda sebuah proyek baru. Berikut adalah tampilan dari proyek tersebut:
202001212143174abbdc92a5d4eb3aa646e837d237fdc9.png
Struktur proyek yang diberikan, tidak jauh berbeda dengan proyek buatan perintah Gradle. Hanya saja, pada IntelliJ IDEA belum dibuatkan berkas kode secara otomatis, sehingga program belum bisa dijalankan. Anda perlu menambahkannya secara manual pada folder main/kotlin/. Buatlah package com.dicoding.kotlin dengan melakukan klik kanan pada folder kotlin dan pilih New - Package. Selanjutnya, klik kanan pada package name tersebut dan pilih New - Kotlin File/Class untuk menambahkan berkas Kotlin. Berikan nama pada berkas tersebut App.kt dan tambahkan kode berikut:

  1. fun main() {

  2.    println("Hello Kotlin!")

  3. }


Setelah menambahkan kode tersebut, maka proyek Anda dapat dijalankan.

Menjalankan Program IntelliJ IDEA

Seperti yang sudah disampaikan sebelumnya, salah satu kelebihan dari menggunakan IDE adalah dukungannya terhadap GUI. Perintah-perintah yang biasanya mengharuskan kita untuk menuliskannya pada terminal kini bisa digantikan dengan tombol interaktif pada IDE. Seperti halnya tombol untuk menjalankan program berikut:
20200121220553b07d37b28489c60430cf5cde7d669cdf.png
Tombol run tersebut hanya akan muncul di samping fungsi dengan nama main(). Klik tombol tersebut atau tekan CTRL + R untuk menjalankan program. Kompiler pada IntelliJ IDEA akan mengeksekusi kode di dalam fungsi main().  Jika berhasil, IIntelliJ IDEA akan menampilkan panel Run seperti di bawah ini:
20200121220640e73184351021b9a30cd9bdd24ddccf01.png
Pada dasarnya semua program aplikasi bisa dikembangan hanya dengan bantuan text editor dan build tools. Lalu adanya IDE adalah untuk mempermudah dan mempercepat proses pengembangan. Pada modul ini kita akan mempelajari bersama bagaimana membuat program dengan Kotlin dari cara yang paling dasar hingga memanfaatkan bantuan IDE.

Membuat Program Dengan Gradle

Untuk membuat program dengan Gradle, kita akan membutuhkan sebuah plugin yaitu Gradle Init Build Plugin. Kita tidak perlu menambahkannya secara manual karena plugin tersebut merupakan bawaan dari paket instalasi Gradle.
Sebelum membuat project, terlebih dahulu buat folder baru yang akan digunakan sebagai folder project yang nantinya akan kita buat. Setelah selesai, silakan buka terminal atau command prompt Anda dan kita akan langsung  coba membuat sebuah program dengan menjalankan perintah gradle init seperti berikut:
202004071944094c5180f7215037c84cc75533a0b4f8d5.png
Untuk pembuatan folder project di atas diberi nama kotlin-starter. Anda bisa menyesuaikan namanya dengan keinginan masing-masing. Lanjut, setelah kita menjalankan perintah seperti di atas, terminal akan menampilkan daftar jenis-jenis proyek yang bisa kita pilih. Kita bisa memilih jenis dari proyek yang ingin kita kembangkan dengan cara memilih angka yang ada pada daftar tersebut. Karena kita akan membuat proyek dengan tipe application maka masukkan angka 2 dan tekan enter.
20200407194450a5a6d89bffb713525e97c2909a04a651.png
Berikutnya kita akan diminta untuk memilih bahasa yang akan kita gunakan. Karena kita akan membuat proyek dengan Kotlin, langsung saja masukkan angka 4 dan tekan enter
Setelah itu, Anda juga bisa menentukan tipe dari build script, nama proyek dan juga package name yang akan digunakan. Selengkapnya bisa Anda lihat pada gambar berikut:     
20200407194517cb6470e7cf9eb475c70252fa2bcf617e.png
Sampai di sini kita telah memiliki proyek Kotlin baru dengan nama kotlin-starterpackage name com.dicoding.kotlin dan menggunakan Kotlin DSL sebagai build script-nya. Sebenarnya kita bisa meringkas langkah-langkah tersebut dengan cara langsung menuliskan perintah seperti berikut:

  1. gradle init --type kotlin-application --dsl kotlin --project-name kotlin-starter --package com.dicoding.kotlin


Jika Anda membuka proyek tersebut, maka Anda akan melihat struktur proyek seperti di bawah ini:
201904221037067f1823744078a06f5c53fbd352595fef.png
Mari kita pelajari satu per satu dari masing-masing berkas tersebut.

Gradle Wrapper

Di dalam folder gradle/wrapper/ kita akan menemukan 2 (dua) berkas yaitu gradle-wrapper.jar dan gradle-wrapper.properties. Berkas Wrapper JAR merupakan sebuah library yang berisi kode untuk mengunduh distribusi Gradle. Sedangkan gradle-wrapper.properties adalah sebuah properti yang bisa kita gunakan untuk mengkonfigurasi behaviour dari Wrapper runtime seperti mengatur versi Gradle dari proyek dll. Berikut adalah konfigurasi yang terdapat pada berkas tersebut:

  1. distributionBase=GRADLE_USER_HOME

  2. distributionPath=wrapper/dists

  3. distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.2-bin.zip

  4. zipStoreBase=GRADLE_USER_HOME

  5. zipStorePath=wrapper/dists


Terdapat juga berkas gradlew dan gradlew.bat pada folder root, yaitu sebuah shell script dan Windows batch script yang digunakan untuk menjalankan build dengan Wrapper.

Build Scripts

Selanjutnya, di dalam proyek tersebut juga terdapat 2 (dua) berkas gradle scripts yaitu settings.gradle.kts dan build.gradle.kts. Kedua berkas tersebut merupakan Gradle Kotlin DSL yang bisa kita gunakan untuk mengatur konfigurasi dari Gradle. Gradle mendukung 2 (dua) jenis build script yaitu Groovy dan Kotlin DSL. Namun pada akademi ini kita hanya akan fokus menggunakan Kotlin DSL. Beberapa hal yang menjadi alasan kenapa kita memilih Kotlin DSL adalah:
  • Memungkinkan kita untuk memaksimalkan fitur auto-completion pada IDE nantinya;
  • Membuat kita tidak perlu mempelajari 2 bahasa (Groovy + Kotlin);
  • Untuk DSL Konfigurasi, pengembangan Gradle kedepan akan lebih fokus ke penggunaan Kotlin dibandingkan dengan Groovy.
Di dalam berkas settings.gradle.kts kita akan menemukan konfigurasi berikut:

  1. /*

  2.  * This file was generated by the Gradle 'init' task.

  3.  *

  4.  * The settings file is used to specify which projects to include in your build.

  5.  *

  6.  * Detailed information about configuring a multi-project build in Gradle can be found

  7.  * in the user manual at https://docs.gradle.org/6.2.2/userguide/multi_project_builds.html

  8.  */

  9.  

  10. rootProject.name = "kotlin-starter"


Konfigurasi tersebut digunakan untuk mengatur nama dari proyek kita. Ke depannya, di dalam berkas ini kita bisa menambahkan beberapa konfigurasi seperti pengaturan modul dan sebagainya.
Kemudian berkas build.gradle.kts:

  1. import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

  2.  

  3. plugins {

  4.     kotlin("jvm") version "1.3.61"

  5. }

  6.  

  7. group = "com.dicoding.kotlin"

  8. version = "1.0-SNAPSHOT"

  9.  

  10. repositories {

  11.     mavenCentral()

  12. }

  13.  

  14. dependencies {

  15.     implementation(kotlin("stdlib-jdk8"))

  16. }

  17.  

  18. tasks.withType<KotlinCompile> {

  19.     kotlinOptions.jvmTarget = "1.8"

  20. }


Di dalam berkas tersebut terdapat berbagai macam konfigurasi seperti pengaturan pluginsrepositoriesdependencies dan lain sebagainya. Biasanya kita akan sering menggunakan berkas ini ketika kita ingin menambahkan dependency atau library baru. Pada proyek baru tersebut kita hanya memerlukan 1 (satu) library yang secara otomatis sudah ditambahkan, yaitu kotlin-stdlib.

Source (src)

Folder src merupakan tempat kita menyimpan berbagai macam sumber daya untuk pengembangan aplikasi. Di dalamnya Anda akan melihat 2 (dua) folder lagi yaitu main dan test.
Mari kita mulai dari folder main terlebih dahulu. Folder ini merupakan folder utama tempat di mana kita meletakkan berkas kode dan resources lainnya. Di dalam folder main terdapat folder Kotlin, lalu di dalam Kotlin terdapat package name dari proyek kita yaitu com.dicoding.kotlin. Pada package name ini lah kita bisa menambahkan berkas kode nantinya. Saat ini kita sudah memiliki 1 berkas bernama App.kt:

  1. /*

  2.  * This Kotlin source file was generated by the Gradle 'init' task.

  3.  */

  4. package com.dicoding.kotlin

  5.  

  6. class App {

  7.     val greeting: String

  8.         get() {

  9.             return "Hello world."

  10.         }

  11. }

  12.  

  13. fun main(args: Array<String>) {

  14.     println(App().greeting)

  15. }


Selanjutnya adalah folder test, yang berisi berkas-berkas kode pengujian aplikasi. Sama dengan folder main, di dalam test juga terdapat folder kotlin dan package name dari proyek kita. Di sana terdapat berkas AppTest.kt yang merupakan sebuah kelas pengujian. Berikut kode di dalamnya:

  1. /*

  2.  * This Kotlin source file was generated by the Gradle 'init' task.

  3.  */

  4. package com.dicoding.kotlin

  5.  

  6. import kotlin.test.Test

  7. import kotlin.test.assertNotNull

  8.  

  9. class AppTest {

  10.     @Test fun testAppHasAGreeting() {

  11.         val classUnderTest = App()

  12.         assertNotNull(classUnderTest.greeting, "app should have a greeting")

  13.     }

  14. }


Semua kode di atas dibuat secara otomatis saat kita membuat proyek dengan Gradle. 

Menjalankan Program Gradle

Setelah mengetahui struktur dari proyek yang dibuat, selanjutnya kita akan menjalankan program tersebut. Caranya sangat sederhana. Pada terminal kita cukup menjalankan 1 (satu) perintah Gradle berikut:

  1. gradle run


Lalu Gradle akan melakukan proses build pada proyek tersebut. Secara otomatis ia akan mengeksekusi kode di dalam berkas App.kt. Jika berhasil, maka terminal akan menampilkan pesan seperti di bawah ini:
20200407194605a24a824b14c845dfb507ed83c108f6c9.png
Jika proses build berlangsung lama, itu adalah hal normal karena baru pertama kali dijalankan pada suatu proyek di mana compiler akan mendownload beberapa library pendukung agar program dapat dijalankan dengan baik.
Perintah gradle run di atas, bisa juga Anda gunakan pada system operasi Windows, berikut contoh jika perintah tersebut dijalankan:
20200407194645a5f7ccf3f52fed33ca58891af86b7163.png


Cara Instalasi IntelliJ IDEA cukup mudah dengan unduhlah berkas instalasi IntelliJ IDEA berdasarkan sistem operasi dengan versi yang kami sarankan yaitu versi 2019.3.4 Community yang dapat diunduh pada tautan IntelliJ IDEA download page. Selanjutnya ikuti langkah-langkah instalasi sesuai sistem operasi yang digunakan.


Linux

Setelah berhasil mengunduh berkas, ekstrak berkas tersebut dengan menggunakan perintah yang dijalankan pada terminal berikut:

  1. tar xvf ideaIC-2019.3.4.tar.gz


Lanjut, masuk ke dalam folder bin dengan menggunakan perintah:

  1. cd idea-IC-193.6911.18/bin/


Terakhir, jalankan shell script idea.sh dengan menggunakan perintah.

  1. ./idea.sh


Ikuti instruksi pada jendela yang tampil untuk menyelesaikan proses instalasi.

Windows dan macOS

Berbeda dengan Linux, jika menggunakan Windows atau macOS, Anda tidak perlu mengekstrak hasil unduhan. Anda bisa langsung menjalankan berkas idealC-2019.3.4.exe (Windows) atau idealC-2019.3.4.dmg (macOS). Lalu ikuti instruksi pada jendela yang tampil untuk menyelesaikan proses instalasi.

Konfigurasi Intellij IDEA

Setelah selesai dengan proses instalasi, lakukanlah konfigurasi IntelliJ IDEA. Langkah konfigurasinya untuk setiap sistem operasi, bisa dibilang hampir mirip. Anda bisa langsung menjalankan IntelliJ IDEA dan mengikuti instruksi pada jendela yang tampil.
Sebelum digunakan untuk membuat proyek, kita perlu memeriksa terlebih dahulu konfigurasi SDK yang akan digunakan. Caranya dengan mengakses menu Configure -> Structure for New Projects pada jendela IntelliJ yang tampil.
Setelah tampil jendela baru, masuk pada bagian SDKs dan pastikan terdapat konfigurasi JDK seperti berikut:
202001212245410901d49314734f28ff27a2814bb0816f.png
Pastikan Anda melihat konfigurasi seperti pada gambar di atas. Karena jika tidak terdapat konfigurasi JDK maka kita tidak bisa membuat proyek baru. Jika itu terjadi, Anda tidak perlu khawatir, Anda bisa menambahkannya secara manual dengan cara:
  1. Klik ikon “+” yang berada di sisi kiri pada jendela yang tampil.
  2. Pada pilihan yang muncul, klik JDK.
  3. Setelah jendela baru terbuka, arahkan pada lokasi instalasi JDK kemudian klik OK.
  4. Pastikan tidak terjadi eror. Klik OK lalu Apply.

Pada dasarnya jika sebelumnya komputer kita sudah terinstal JDK, kita tidak perlu melakukan konfigurasi pada Intellij IDEA. Apa pasal?  JDK akan secara otomatis terdeteksi sehingga Anda bisa langsung menggunakannya untuk membuat proyek baru.
Untuk melakukan instalasi Gradle, mudah saja. Syaratnya cukup sederhana, yaitu komputer yang digunakan wajib terinstal JDK terlebih dahulu. Itulah alasan kita mempelajari bagaimana cara instalasi OpenJDK di awal. Instalasi Gradle bisa dilakukan secara manual ataupun menggunakan SDKMAN. Untuk menginstalnya secara manual, Anda bisa mengikuti langkah-langkah berikut:
  1. Unduh berkas distribusi Gradle pada tautan https://gradle.org/releases/. Anda bisa memilih binary-only atau complete yang disertai dengan dokumentasi.
  2. Kami menyarankan untuk mengunduh Gradle versi 6.2.2 untuk menghindari kesalahan yang mungkin saja terjadi.
  3. Setelah selesai, ekstrak ke folder yang diinginkan. Sebaiknya tempatkanlah pada folder yang mudah dijangkau. Ini akan mempermudah konfigurasi Environment Variable.

Instalasi Gradle via SDKMAN

Untuk memudahkan kita menginstal Gradle pada Linux dan macOS, kita bisa menggunakan SDKMAN. Keunggulannya, kita tak perlu lagi mengkonfigurasi Environment Variable karena SDKMAN akan melakukannya secara otomatis. Buka terminal, kemudian jalankan perintah berikut untuk instalasinya:

  1. sdk install gradle


Tunggu hingga proses instalasinya selesai. Sama seperti instalasi OpenJDK sebelumnya, kita bisa melihat daftar versi dari Gradle dengan menggunakan perintah:

  1. sdk list gradle


Ketika dijalankan, maka terminal akan menampilkan hasil seperti berikut:
202004071935393d47d91fe71f19164ddae0607a7423d8.png
Cukup mudah bukan? Untuk memastikan Gradle berhasil diinstal, bisa dengan jalankan perintah gradle -v pada terminal seperti berikut:
202004071936219bc230dbe089877c7eaf19b3076c6072.png

Konfigurasi Environment Variable Pada Windows

Berbeda dengan Linux dan macOS, Windows mengharuskan kita untuk mengatur Environment Variable secara manual agar dapat digunakan. Sama seperti konfigurasi OpenJDK, buka kembali pengaturan Environment Variables. Pada kolom System Variables pilih variable path kemudian klik Edit. Setelah jendela baru terbuka, Klik tombol New kemudian tambahkan lokasi berkas distribusi Gradle seperti berikut:
202004071434574147b30271df2ffe539b94483b4d4aa3.png
Selesai, klik OK pada jendela yang tampil dan jendela Environment Variable. Untuk memastikan apakah gradle sudah terinstall dengan baik. Anda bisa menjalankan perintah gradle -v pada command prompt seperti berikut:
202004071434317ecf180aa77f8a1f46d323014aab3179.png