REBOL – Melawan Kompleksisasi dan Gendutisasi Pemrograman Masa Kini


Tahukah Anda berapa megabyte total file yang harus di download untuk instalasi Lazarus 1.2.6 dan FreePASCAL 2.6.4? Berikut saya tampilkan potongan gambar dari screenshot situsnya:

lazarus_fpc_deb

Sekitar 125 MB.

Entah berapa total ruang yang dibutuhkan setelah proses instalasi. Kalau pada distro yang saya gunakan yakni wattOS R8 dengan repository yang saya arahkan ke penyedia Debian Jessie, paket program fpc membutuhkan 282MB, fpc-source membutuhkan 102MB dan lazarus membutuhkan 992MB. Total jendral ketiganya membutuhkan ruang harddisk 1376MB atau sekitar 1,4GB.

Kecil untuk ukuran harddisk sekarang.

Betul. Tapi bukan perbandingan antara ukuran software dengan kapasitas harddisk yang ingin saya kemukakan, tapi masalah KOMPLEKSITAS development tools masa-kini yang untuk membuat aplikasi HALO DUNIA saja susah atau bahkan susah minta ampun.

Jika Anda belajar secara otodidak pemrograman JAVA atau belajar pemrograman C/C++ menggunakan ANJUTA atau belajar pemrograman Android, maka saya yakin Anda mengerti yang saya maksudkan.ūüôā

Dan sebagian dari Anda pun mungkin menyadari bahwa dari segudang library atau SDK yang terinstalasi dan segudang fitur dan fasilitas yang tersedia, hanya sebagian kecil saja yang termanfaatkan. Semisal mengacu pada lazarus dan freepascal tadi, dari 1,4GB yang terinstalasi, hanya sebagian kecil saja yang kita pakai.

Yang mestinya bisa sederhana, mestinya tidak perlu dibikin kompleks sehingga untuk membuat aplikasi sederhana saja banyak hal yang harus dipelajari. Jadi sebelum kita bisa mengimplementasikan solusi masalah, kita sudah dihadapkan kepada masalah lagi yakni menguasai tools. Tanpa menguasai tools, kita tidak dapat mengimplementasikan solusi. Iya kalau menguasai tools-nya gampang, inilah KOMPLEKSISASI.

Yang mestinya bisa langsing, kenyataannya gendut. Yang mestinya bisa ringan, kenyataannya berat. Untuk membuat aplikasi sederhana pun, bergiga-giga yang harus kita instalasi. Inilah GENDUTISASI.

Namun demikian, bagi programmer, bergelut dengan tools yang kompleks dan gendut adalah sebuah kehidupan yang harus dijalani. Mau tidak mau, suka tidak suka, programmer harus menguasai segala kompleksitas itu agar bisa tetap bersaing dan tetap terpakai.

Adakah pilihan lain yang tidak kompleks dan tidak gendut?

Ada. REBOL.

Nostalgia Masa Jaya DOS

Jika Anda mulai belajar pemrograman pada saat komputer masih dirajai oleh sistem operasi DOS (MS-DOS dan IBM PC DOS), maka sangat boleh jadi Anda mengenal interpreter BASIC seperti BASICA, GW-BASIC dan QBASIC. Anda juga akan mengingat dominasi Borland dengan produk-produknya seperti kompiler Turbo Pascal 5.5/6.0/7.0, kompiler Turbo C 2.0 dan juga Turbo Assembler 2.0.

gwbasic_dosbox_diary

Teringat oleh saya ketika memamerkan program aplikasi Diary yang saya buat menggunakan GW-BASIC. Distribusi aplikasi sangatlah mudah, tinggal meng-copy file DIARY.BAT, GW-BASIC.EXE dan DIARY.BAS saja dan aplikasi bisa running di komputer DOS manapun. Dengan satu file GW-BASIC.EXE, kita bisa membuat berbagai aplikasi baik mode teks maupun grafis. Beda dengan sekarang, bikin installer untuk aplikasi yang kita buat sendiri pun masih perlu belajar lagi.

Btw, gambar di atas bukanlah program Diary yang dulu saya buat melainkan program yang baru saya buat untuk ilustrasi saja karena program Diary saya tentunya sudah hilang bersama disket-disket saya.

Software Tak Harus Kompleks dan Gendut

rebol_usb4relAdalah REBOL, bahasa pemrograman yang melawan kompleksitas dan gendutisasi software. REBOL adalah singkatan dari Relative Expression Based Object Language. Carl Sassenrath, pencipta bahasa pemrograman ini adalah seorang arsitek dan pelopor sistem operasi multitasking AmigaOS.

Carl percaya bahwa dengan bahasa pemrograman yang tepat dan tools yang tepat, software bisa dibuat tanpa mengalami kompleksisasi dan gendutisasi. Dan tak hanya percaya, Carl Sassenrath membuktikannya dengan mendirikan REBOL Technology pada tahun 1998.

Dengan REBOL kita bisa melupakan tentang instalasi IDE yang berukuran besar, mempelajari proses pembuatan software yang kompleks, mempelajari berbagai SDK dan berbagai tools pendukungnya. Dengan REBOL kita bisa kembali ke model pembuatan aplikasi dengan GW-BASIC seperti yang saya ilustrasikan di atas. Distribusi aplikasi pun hanya sekedar meng-copy folder saja dan aplikasi pun siap dijalankan.

Gambar di atas adalah program interface untuk modul relay USB-4REL yang saya buat menggunakan REBOL/VIEW 2.7.8. Besar file kode programnya 1493 byte. Kode programnya adalah sebagai berikut:

Kode Program usb4r.r

REBOL
[
    Title: "USB4R Interface"
    Date: 23-March-2014
    Author: "Chandra MDE"
    Email: chandra@teknikelektrolinks.com
    Company: "Teknik Elektro Links"
    File: %usb4r.r
]


;--Let's make a simple but cool GUI
;------------------------------------
view layout
[
    vtext center papaya font-size 18 "USB-4REL Interface Example" bold
    bar 258 return

    across
    vtext papaya font-size 14 bold "ID Module:"
    f: field 80
    btn 80 green bold "READ ID" 
    [
        s: ""
        call/output "./usb4rc ID" s
        either find s "ID Modul = USB4REL"    [
            f/text: last parse s " "
            show f
        ][
            alert "USB-4REL not found."
            quit
        ]
    ]
    return 

    across
    btn 120x30 gold bold     "RELAY-1 ON"    [call "./usb4rc R1"]
    pad 10
   btn 120x30 silver bold     "RELAY-1 OFF"    [call "./usb4rc r1"]
    return

    across
   btn 120x30 gold bold     "RELAY-2 ON"     [call "./usb4rc R2"]
    pad 10
    btn 120x30 silver bold     "RELAY-2 OFF"     [call "./usb4rc r2"]
    return

    across
   btn 120x30 gold bold     "RELAY-3 ON"     [call "./usb4rc R3"]
    pad 10
   btn 120x30 silver bold     "RELAY-3 OFF"     [call "./usb4rc r3"]
    return

    across
   btn 120x30 gold bold     "RELAY-4 ON"     [call "./usb4rc R4"]
    pad 10
   btn 120x30 silver bold     "RELAY-4 OFF"     [call "./usb4rc r4"]
   
    below
    btn 258x30 beige bold     "ALL RELAY ON"     [call "./usb4rc RA"]
    btn 258x30 tan bold         "ALL RELAY OFF"     [call "./usb4rc rA"]
    btn 258x40 red bold         "Q U I T"             [quit]
    
    vtext font-size 26 bold blue "Teknik Elektro Links"
]

Yang paling menyenangkan adalah dengan REBOL, kita mempunyai tools pemrograman untuk berbagai platform seperti Windows, Apple OS/X, Linux, FreeBSD dan OpenBSD. REBOL pun telah tersedia untuk versi Linux-ARMv6 dan Linux-ARMv7. Kita bisa membuat aplikasi versi Windows yang running dengan mulus pada platform lain bahkan nyaris tanpa perlu modifikasi.

rebol_vs_starduino

Gambar di atas adalah aplikasi Temperature Monitoring & Controlling yang saya buat menggunakan REBOL. Aplikasi ini berkomunikasi melalui port serial dengan board mikrokontroler ATmega8. Gambar sebelah kiri adalah aplikasi yang running pada Windows XP dan gambar sebelah kanan adalah aplikasi yang sama yang running pada Linux.

Gambar berikut ini adalah contoh program interface untuk modul SER-4REL yang saya buat menggunakan REBOL/VIEW 2.7.8 pada platform Windows.

rebol_ser4rel_windows

REBOL/CORE dan REBOL/VIEW

REBOL/CORE adalah inti dari REBOL. Untuk aplikasi berbasis console dan web, maka cukup REBOL/CORE yang kita butuhkan. REBOL/CORE adalah aplikasi single-file berukuran 369.128 byte (versi linux).

REBOL/VIEW adalah REBOL dengan kemampuan pemrograman GUI. REBOL/VIEW memiliki VID (Visual Interface Dialect). Dengan VID kita bisa membuat program dengan tampilan GUI dengan mudah dan akan tampak sama pada ketika dijalankan pada platform lain. REBOL/VIEW juga sebuah aplikasi single-file yang berukuran 1.215.652 byte saja (versi linux).

rebolcoreview

Untuk dapat menggunakan REBOL sangatlah mudah dan tidak perlu instalasi apapun kecuali distro yang kita gunakan tidak menyertakan font-100dpi dan font-75dpi. REBOL/CORE dan REBOL/VIEW bisa di download dari halaman berikut:

REBOL/CORE:
http://www.rebol.com/download-core.html

REBOL/VIEW:
http://www.rebol.com/download-view.html

Seberapa Mudahkah REBOL?

Sulit atau mudah tentu saja relatif bagi setiap orang. Semoga dengan menampilkan beberapa screenshot dan kode program REBOL, Anda bisa memperoleh gambaran tentang apa yang bisa dilakukan dengan REBOL yang single-file. Untuk yang pertama, mari kita lihat screenshot program kalkulator berikut ini:

rebol_calc

Untuk membuat kalkulator seperti itu, berikut adalah kode programnya:

Kode Program calculator.r

REBOL [
	Title: "Calculator"
	Version: 1.2.2
	Date:   17-Jun-2005 ;2-Apr-2001
	Author: ["Jeff Kreis" "Allen Kamp" "Carl Sassenrath"]
	Purpose: {Simple numeric calculator.}
	Needs: [1.3.0]
]

auto-clear: true

calculate: does [
	if error? try [text-box/text: form do text-box/text][
		text-box/text: "Error"
		text-box/color: red
	]
	auto-clear: true
	show text-box
]

clear-box: does [
	clear text-box/text
	text-box/color: snow
	auto-clear: false
	show text-box
]

calculator: layout [   
	style btn btn 40x24
	style kc btn red [clear-box]
	style k= btn [calculate]
	style k  btn [
		if auto-clear [clear-box]
		append text-box/text face/text
		show text-box
	]
	origin 10 space 4
	backeffect base-effect
	text-box: field "0" 172x24 bold snow right feel none
	pad 4
	across
	kc "C" keycode [#"C" #"c" page-down]
	k "(" #"("  k ")" #")"  k " / " #"/" return 
	k "7" #"7"  k "8" #"8"  k "9" #"9"  k " * " #"*" return 
	k "4" #"4"  k "5" #"5"  k "6" #"6"  k " - " #"-" return 
	k "1" #"1"  k "2" #"2"  k "3" #"3"  k " + " #"+" return 
	k "0" #"0"  k "-"       k "." #"."
	k= green "=" keycode [#"=" #"^m"] return
	key keycode [#"^(ESC)" #"^q"] [quit]
]

view center-face calculator

Jangan berharap ada penjelasan dari saya mengenai program di atas karena saya sendiri masih pemula. Tapi semoga bisa memberi gambaran bahwa cukup mengetik kode program dan menjalankannya dengan: rebol calculator.r, maka jadilah program kalkulator yang ekspresif.ūüôā

Dan ini yang berikutnya…

rebol_diagram

Untuk membuat tampilan grafis seperti itu, kode programnya adalah sebagai berikut:

Kode Program diagram.r

REBOL [
	Title: "Block Diagram"
	Date:  24-Apr-2001
	Author: "Carl Sassenrath"
]

i1: to-image layout [
	origin 0 backcolor white
	style box box font [color: 0.0.0 valign: 'top shadow: none space: 0x4]
		edge [size: 2x2]

	b1: box 180x120 "View / Pro" effect [gradient 0x1 220.160.220 20.0.20]
	at b1/offset + 20x30
	box 140x90 "View" effect [gradient 0x1 160.160.250 0.0.60]
	at b1/offset + 40x60
	box 100x60 "Core" effect [gradient 0x1 250.130.130 80.0.0]
	at b1/offset + 0x118
	image 180x32 "REBOL Client" black
]

i2: to-image layout [
	origin 0 backcolor white
	style box box font [color: 0.0.0 valign: 'top shadow: none space: 0x4]
		edge [size: 2x2]

	b1: box 180x120 "Command" effect [gradient 0x1 220.220.140 20.20.0]
	at b1/offset + 20x30
	box 140x90 "Core / Pro" effect [gradient 0x1 160.250.160 0.60.0]
	at b1/offset + 40x60
	box 100x60 "Core" effect [gradient 0x1 250.130.130 80.0.0]
	at b1/offset + 0x118
	image 180x32 "REBOL Server" black
]

i3: to-image layout [
	origin 0
	backcolor white
	at 0x0 box 40x40 white effect [arrow rotate 270]
	at 110x0 box 40x40 white effect [arrow rotate 90]
	at 24x10 box black 100x20
]

y: i2/size/y - i3/size/y / 2

view layout [
	backcolor white
	across space 0
	image i1
	pad 0x1 * y
	a1: image i3 effect [shadow 255.255.255]
	pad 0x-1 * y
	image i2
	at a1/offset - 0x20
	text "Internet" a1/size font-size 16 bold center 
]

Dan untuk semakin menunjukkan apa yang bisa dilakukan REBOL, berikut saya tampilkan screenshot software retail MerchantsVillage yang populer di Amerika.

Dan untuk menambah rasa penasaran Anda, berikut saya tampilkan screenshot contoh program Android yang saya buat menggunakan R3/Droid – REBOL 3 untuk Android.

r3droid1

Kode Program

 

r3droid2

Program Running

 

Nah, semoga tulisan ini bisa sedikit memberi gambaran tentang REBOL. Semoga bermanfaat. Jika Anda tertarik silakan mempelajarinya lebih lanjut dari situsnya di www.rebol.com.

 

2 comments

  1. bee · Februari 12, 2015

    Menarik. Kalo dibandingkan dgn development tool lainnya, bahkan kombinasi FreePascal dan Lazarus masih terhitung “kurus”. Coba bandingkan dgn Java (dgn Eclipse atau Netbeans), atau C# (dgn VS atau MonoDevelop), atau Obj-C (dgn XCode), yg ukuran installer-nya saja sudah dlm orde 1 digit GB. Setelah ter-install, bisa makan tempat hingga puluhan GB. Itu belum ditambahi “bonus” pustaka dan framework yg juga gak mau kalah besar, dalam orde raturan MB.

    Tapi apakah “gendutisasi” itu berarti buruk? Belum tentu. Orang kita masih sering mengidentikkan gendut dgn tanda kemakmuran bin kesejahteraan. Konon orang kurus itu dianggap kurang sejahtera (baca: miskin) atau sakit. Dlm pemahaman itu, sebenarnya gendutisasi bisa diterima sebagai tanda kesejahteraan dlm dunia teknologi. *halah, mulai ngawur iki*ūüėÄ

    Menurut hukum Moore, konon kemampuan teknologi berlipat ganda setiap 18-24 bulan. Jadi gendutisasi teknologi ini sudah merupakan konsekuensi. Kurang tepat jika terus dibandingkan dgn teknologi jaman DOS, yg OS-nya saja masih muat di disket magnet berkapasitas 360 KB. Kodingnya masih serba manual, belum ada API (masih dingin waktu itu), dan hal2 lain yg memanjakan programmer. Ibaratnya dulu teknologi masih di level sepeda onthel, yg ringan, bebas polusi, murah, dan bikin sehat, tapi ngayuhnya kesel dan lambat. Sementara teknologi sekarang sudah seperti mobil, yg berat dan besar, polusi tingkat tinggi, mahal, dan bikin malas, tapi menaikinya enak dan nyaman termasuk utk perjalanan jauh. Pilih mana? Silakan disesuaikan saja.ūüôā

    • Chandra MDE · Februari 12, 2015

      Betul itu. Silakan pilih mana yang sesuai.

      Gendutisasi memang tidak selalu buruk, demikian pula dengan kompleksisasi, malah ada “efek positifnya” bagi programmer. Cek: http://artlung.com/smorgasborg/Invention_of_Cplusplus.shtml

      Tapi bagi yang kepingin model lain, boleh mencoba REBOL dan/atau RED (perihal RED mungkin pada tulisan yang akan datang).

      Ilustrasi tentang DOS sebenarnya bukan ingin membandingkan tapi ingin membawa ke nuansa model pemrograman tempo doeloe yang tak jauh beda dengan REBOL yang adalah devtool masa kini.

      Thanks for the comment.ūüôā

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s