AYU: Bahasa Pemrograman untuk Pemula

April 13, 2010 at 4:25 pm (IT (Information Technology))

Calon2 programmer Indonesia banyak menghadapi kendala ketika memulai belajar programming. Saya tidak akan membahas faktor external seperti akses ke sebuah PC, tapi fokus ke faktor internal yaitu programming language itu sendiri.

Berikut hipotesa yang mungkin terjadi:
1. Bahasa Inggris menghambat pemahaman konsep programming.
Mungkin tidak begitu menghambat, tapi bukankah “ULANG 10 KALI” lebih mudah dipahami daripada “for (int i = 1; i <= 10; i++)” ? Dari SD sampai SMA, kita diajarkan Fisika, dll dalam bahasa Indonesia. Kenapa tidak mengajarkan programming dengan programming language yg berbahasa Indonesia?

2. Programming language yg dipelajari terlalu kompleks.
Di beberapa universitas, programming language Java diajari kepada mahasiswa semester pertama. Well, ini OK-OK saja selama mereka punya pengalaman programming sebelumnya. Yes, we are all proud to have learned programming since the age of 10, tapi banyak yang tidak mempunyai pengalaman. Saya kaget ketika teman saya yg belajar Farmasi menanyakan ttg buku Pascal kepada saya. Loh, wong orang Farmasi koq belajar programming? Sama seperti di universitas saya sekarang, mahasiswa semester 1 Engineering dipaksa belajar Java. Hasilnya? Kode mereka terkesan aneh dan dipaksakan =) Biasanya mereka menggunakan kode dari contoh tutorial, lalu mengubah-ubah value variabel dan melalui proses trial-and-error untuk mendapatkan hasil yg diinginkan.

Orang yg tidak mempunyai pengalaman programming seharusnya dilatih agar “programming mode”-nya menjadi “on”. Ketika “programming mode”-nya sudah “on”, dia bisa mengambil buku programming language lainnya seperti C, VB, dll dan belajar dengan sendirinya.
Berdasarkan hipotesa saya diatas, saya mengambil inisiatif untuk membuat programming language baru berbasiskan bahasa Indonesia.
Karena ini programming language pertama yang saya buat, dan karena saya ingin language-nya simple, saya namakan AYU.

Seterusnya saya akan membahas ttg AYU…

——————-
Hello World in AYU
——————-
Berikut kode tradisi Kernighan & Ritchie ketika memperkenalkan C: hello, world!

AWAL
{
TULIS “Halo, dunia!” ;
}

——————
Data Types in AYU
——————
Kenapa harus pusing menjelaskan bedanya byte, short, int, unsigned int, dll?
AYU hanya memiliki 3 data types:
ANGKA, ANGKA_REAL, KATA

AWAL
{
— Ini adalah komentar.
ANGKA a;
ANGKA_REAL b;
KATA c;

— Masukkan kanan ke variabel kiri.
a <- 10 ;
b <- 3.14159 ;
c <- “Halo lagi.” ;

— Wow, AYU’s output statement is powerful!
TULIS a + ” ” + b + ” ” + c;
}

————-
Loops in AYU
————-
Pusing menjelaskan “for (int…”?
AYU memiliki 2 simple loops: satu conditional dan non-conditional.

Conditional Loop:
AWAL
{
ANGKA a;
ANGKA keluar;
a <- 1;
keluar <- 0;

SELAMA (a < 10) DAN (keluar = 0)
{
TULIS a;
a <- a + 1;

JIKA ( a = 5 )
{
keluar <- 1;
}
}
}

Non-Conditional Loop:
AWAL
{
ANGKA a;
a <- 1;

ULANG 5 KALI
{
ULANG 10 KALI
{
TULIS a + ” “;
a <- a + 1;
}

a <- 1;
TULIS “\n”;
}
}
—————–
Branching in AYU
—————–
IF..THEN..ELSE menjadi JIKA..ATAU_JIKA..SELEBIHNYA:

AWAL
{
ANGKA a;
ANGKA b;
a <- 1;
b <- 2;

JIKA (a = 0)
{
— do nothing
}
ATAU_JIKA (b = 2)
{
TULIS “b = 2 \n”;
}

JIKA ( a = 0 ) ATAU ( b = 0 )
{
— do nothing
}
SELEBIHNYA
{
TULIS “a dan b tidak berisi nol.”;
}
}

————-
Input in AYU
————-
Format input di AYU: BACA nama_variabel;

AWAL
{
ANGKA a;
ANGKA_REAL b;
KATA c;

TULIS “Input sebuah bilangan integer: “;
BACA a;
TULIS “Input sebuah bilangan real: “;
BACA b;
TULIS “Input sebuah kalimat: “;
BACA c;

TULIS “Anda telah menginput ” + a + b + c;
}
———–
Tujuan AYU
———–
1. Mengajarkan structured programming. AYU tidak memiliki GOTO dan BREAK;
2. Sebagai pijakan awal untuk nantinya belajar C-based languages (C, C++, Java, C#).
3. AYU adalah “teaching language” bukan “production language”, karena itu dibuat simple dan memang memilki performance & memory tradeoff.
4. Mengajarkan disiplin.
Semua keywords (AWAL, ANGKA, dll) harus menggunakan HURUF_BESAR.
Semua blok (JIKA, ULANG, dll) harus ada beginning ‘{‘ dan ending ‘}’.
Semua statement harus ditutup dengan ‘;’.
Semua variabel harus di-deklarasikan terlebih dahulu.
—————–
Implementasi AYU
—————–
AYU.EXE bukanlah sebuah compiler, saya menyebutnya “parser-generator”. Pertama, AYU.EXE mem-parse atau mengecek syntax program berdasarkan grammar yg telah ditentukan, dan jika tidak ada error, akan meng-generate C# source code. CSC.EXE kemudian dipanggil untuk meng-compile .CS file yg telah dihasilkan.

Walaupun bukan compiler, AYU.EXE dapat mendeteksi penggunaan variabel yang belum terdeklarasikan:
AWAL
{
TULIS b;
}

D:\ayu>ayu email6.ayu
Baris 3: Nama Variabel ‘b’ belum terdeklarasikan, cek sekitar ‘b’

Grammar AYU dipaparkan dalam bentuk syntax graphs. Syntax graphs AYU hanyalah 4 halaman, bukti AYU adalah sebuah simple language. Berdasarkan syntax graphs ini, Anda pun dapat membuat parser-generator versi Anda (contoh: meng-generate program .JAVA).

AYU.EXE ditulis dalam bahasa C, untuk mendapatkan kecepatan parsing & generation yg optimal.
————-
AYU’s future
————-
Saya berpendapat AYU butuh 2 hal lagi:
1. Data type ARRAY.
2. User-defined PROCEDUREs.

Saya sedang memikirkan (language designers love to think hours on how to implement something =) ) bagaimana cara mendeklarasikan ARRAY dan PROCEDURE secara _intuitif_. Karena itu kedua fitur diatas akan bergantung kepada feedback dari komunitas programmer Indonesia.

Saya juga butuh bantuan seorang linguist, seorang yg jago bahasa Indonesia-nya, dan tahu kata-kata terjemahan Inggris yg tepat. Larry Wall, designer Perl, mempunyai background di bidang Linguistics; hasilnya sebuah language yg flexibel yet powerful.

Tinggalkan komentar