Dear All,

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 saya:
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 dan menghasilkan .EXE melalui bantuan C#
Compiler.

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.


--------------
AYU's Website
--------------
Parser-Generator AYU.EXE dan syntax graphs AYU dapat didownload di:
http://www.zedilabs.com/ayu

Saya juga akan menyimpan FAQ disana.


Begitulah, persembahan saya untuk perkembangan IT di Indonesia.
Salam,

Zeddy Iskandar.
http://www.zedilabs.com
http://blogs.netindonesia.net/zeddy





-- 
www.ITCENTER.or.id - Komunitas Teknologi Informasi Indonesia 
Info, Gabung, Keluar, Mode Kirim : [EMAIL PROTECTED] 
::: Hapus bagian yang tidak perlu (footer, dst) saat reply! ::: 
## Jobs: ITCENTER.or.id/jobs ## Bursa: ITCENTER.or.id/bursa ##

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/ITCENTER/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Kirim email ke