Berpindah ke Python untuk Software Numerik

August 10, 2014 by · Leave a Comment 

Ketika saya baru pertama kali belajar tentang dunia programming, saya lebih suka membuat aplikasi dengan menggunakan bahasa pemrograman PHP (PHP Hypertext Preprocessor) dengan basis web. Dulu beberapa teman yang minta dibuatkan aplikasi web, baik itu blog, aplikasi database, atau aplikasi perhitungan sederhana, biasanya saya membuatkannya dalam bentuk web dengan menggunakan PHP karena memang fungsinya diperuntukkan untuk aplikasi web.

Akhir-akhir ini, saya sering ingin membuatkan sebuah aplikasi perhitungan yang tidak membutuhkan database. Aplikasi ini khusus untuk ranah teknik sipil (engineering) dan tidak memerlukan koneksi database seperti MySQL atau PostgreSQL. Saya sempat berpindah ke pemrograman desktop selama masih di Laboratorium Rekayasa Struktur. Saat itu saya menggunakan bahasa C# untuk membuat aplikasi  Analisis Kurvatur Momen.

Di awal tahun ini, setelah keluar dari lab, saya membuat sebuah software analisis struktur, openSAP32, yang saya buat dengan menggunakan Python. Karena kesibukan pekerjaan di luar Jakarta dan saat ini saya sedang bertugas ke site di Lhokseumawe, software ini sedikit terlantar. Sedikit informasi mengenai software ini, saya berencana membuat software analisis struktur sederhana yang bisa saya pakai tanpa harus menggunakan software komersial. Tujuannya adalah mempelajari lebih dalam tentang analisis struktur metode matriks dan berharap bisa meningkatkan nalar berpikir, syukur kalau ternyata nanti bisa dikembangkan hingga analisis gempa dan dinamik. Untuk saat ini, software ini baru bisa digunakan untuk analisis rangka batang 2 dimensi, dengan fitur yang masih minim. Kalau ada waktu luang, saya terus berusaha mengembangkan sofware ini.

Ketika banyak tenaga dan pikiran yang harus dibutuhkan untuk membuat openSAP32, saya terpikir untuk membuat software yang lebih sederhana, yang bisa saya selesaikan dalam waktu singkat. Nantinya aplikasi ini saya kumpulkan menjadi sebuah tools yang berguna buat saya sendiri dan juga engineer sipil lainnya tentunya. Untuk kasus ini, saya berpikir bahwa aplikasi desktop bukanlah pilihan yang tepat. Saya melihat aplikasi desktop lebih ditujukan pada sebuah aplikasi yang besar yang fungsinya untuk sebuah tugas khusus, sama seperti openSAP32.

Kumpulan aplikasi ini lebih cocok dibuat di atas platform web yang menangani aplikasi yang lebih kecil. Model MVC (Mode-View-Controller) pun cocok digunakan untuk aplikasi numerik. Yang berbeda adalah, jika umumnya pada aplikasi database, model digunakan sebagai media query data ke database, pada aplikasi numerik, namun model digunakan sebagai tempat mengolah data berupa perhitungan numerik yang diharapkan akan ditampilkan hasilnya.

Sudah hampir sebulan ini saya mencoba mempelajari pemrograman web dengan menggunakan python. Saya lebih memilih menggunakan python karena selain bisa digunakan untuk web, banyak library python yang khusus dibuat untuk proses numerik. Contoh library tersebut adalah Numpy, Scipy, Matplotlib, dan Simpy. Semuanya saya rasa sudah cukup matang sebagai sebuah library.

Ada banyak pilihan framework pada python. Di antara Flask, CherryPy, Bottle, Tornado, Django, dan web2py, saya menjatuhkan pilihan pada CherryPy. Flask bagus, hanya saja dukungan untuk Python 3 masih tanda tanya. Tornado khusus digunakan untuk web server untuk proses asynchronous, sedangkan saya tidak membutuhkannya. Bottle hanya menyediakan web server HTTP yang tidak production-ready. Django terlalu besar untuk aplikasi yang saya buat dan web2py sepertinya terlalu kompleks. CherryPy saya pilih karena tidak dilengkapi oleh 3rd-party yang memang tidak saya butuhkan seperti akses database dan autentikasi. Aplikasi yang ingin saya buat murni interaksi dinamik antara user dan kode yang bermain di level numerik. CherryPy juga sudah dilengkapi built-in http server sehingga tidak membutuhkan banyak dependencies.

Awalnya saya cukup kesulitan mempelajari framework ini. Ditambah lagi saya harus mempelajari Mako sebagai library untuk template aplikasi ini nantinya. Untuk membuat framework ini bekerja sebagai arsitektur MVC, saya harus membuat beberapa script agar bisa berjalan sesuai dengan keinginan.  Semuanya berada dalam kontrol kita, tidak seperti banyak framework PHP yang semuanya tinggal pakai karena memang dari awal sudah menggunakan konsep MVC. Bahkan model routing dan dispatching pun bebas mau yang seperti apa.

Akhirnya saya bisa sedikit puas karena berhasil membuat dasar dari model aplikasi yang saya inginkan. Begitulah saya yang pada awalnya berharap bisa menguasai framework ini dengan cepat, ternyata harus bersabar lebih lama untuk mendapatkan apa yang saya harapkan. Tampaknya beralih ke Python adalah langkah yang menurut saya akan sangat berguna ke depannya 🙂

Kalau kamu ingin melihat kerangka MVC aplikasi saya, kamu bisa melihat-lihat ke halaman github aplikasi yang saya beri nama civil-engineering-toolbox.