Sunday, November 7, 2010

Sebuah Overview Nusaptel–part 1

image
Merupakan bahasa pemrograman buatan anak bangsa, yang dikembangkan oleh Bernaridho I. Hutabarat bersama dengan Departemen Komunikasi dan Informatika Republik Indonesia. Bagi anda yang berminat mendownload Nusaptel anda dapat mendownloadnya dari : http://www.machung.ac.id/index.php?option=com_content&task=view&id=440&Itemid=77. Nusaptel ditujuakan bagi para pemula dalam dunia pemrograman agar para pemula makin mudah dalam mempelajari algoritma dalam pemrograman, Nusaptel merupakan bahasa yang lebih simple dan lebih mudah dipelajari bagi para pemula daripada bahasa pemrograman lain. Nusaptel, sebagai bahasa pemrograman tentu memiliki banyak perbedaan dengan bahasa pemrograman lain. Langsung saja kita melihat syntax-syntax pemrograman dalam Nusaptel, dibandingkan bahasa-bahasa pemrogramman lain.
image
Tampilan Nusaptel IPT di Ubuntu 9.10
1. The Hello World Program.
Nusaptel cukup sederhana, dan simple mirip seperti C, tetapi PERL masih tetap yang paling simple.

NUSAPTEL writeline(‘Hello World!’);
C printf(“Hello World!\n”);
C# Console.writeline(“Hello World”);
PERL print ‘Hello World!’;
JAVA System.out.println(“Hello World!”);

2. Tinjauan Teknis
image

  •  Type strength (strong typing)
Program yang memiliki type strength berarti, semua fields atau object harus dituliskan/ dideklarasikan typenya, entah integer, long, string ataupun char. Dalam PHP deklarasi type object tidak diperlukan.
  • Type safety
Sebnarnya Type safety juga berhubungan erat dengan type strengh. Semua object harus memiliki type.
  • Error checking
Error checking adalah pengecekan error pada source code yang telah kita tulis.
    • Static berarti pengecekan kesalahan terjadi pada saat compiling. Pada NUSA pengecekan kesalahan terjadi pada saat compiling sehingga NUSA dikategorikan Static Error Checking type, pengecekan juga terjadi apabila source NUSA telah terkompile. Pada C# dan Java, pengecekan kesalahan pada source dilakukan pada saat penulisan program, compiling, dan kadang, kesalahan bisa dideteksi setelah program di-run (throw exception error).
    • Dynamic, berarti penecekan kesalahan hanya terjadi saat program dijalankan, Pada PHP, JavaScript, dan LUA pengecekan dilakukan saat program tengah berjalan.
  • Real Object Oriented Programming
Program yang Object oriented, berarti program dapat memiliki object dan class. Tiap-tiap object memiliki method atau function yang berbeda dan unik tergantung dari definisi class mereka. Setidaknya object pada OOP memiliki fields, method, dan kalau perlu, constructor. Pada C# dan Java misalnya, kita dapat membuat kelas sendiri, menentukan apa saja yang dapat dilakukan oleh object dari kelas itu, atau bahkan membuat kelas yang diturunkan (inheritance) dari kelas lain. Pada NUSA, anda bisa membuat kelas sendiri dengan object bertipe Record :
image
Di NUSA, anda bisa membuat type sendiri ( Kotak ) dan mendefinisikan apa saja member dari class Kotak ini di konstruktornya, tetapi anda tidak bisa membuat inheritance maupun interface dari type ini.
  • Expression of Types
Explisit, berarti type data dari suatu object haruslah jelas (didefinisikan secara explisit), tetapi implisit berarti type data tidak disebutkan atau tidak jelas (tersirat dalam deklarasi). Contohnya, PHP yang tidak menjelaskan apa tipe data suatu object, tetapi programmer dapat mengetahui tipe data suatu object sewaktu pemberian isi/value, maka PHP merupakan bahasa yang expresinya implisit (tersirat).
  • Types compatibility
Named-based berarti object-object dengan tipe berbeda dapat dilakukan operasi. Misal, float dapat dikalikan dengan integer selama type-type tersebut sesuai (sama-sama menunjukan angka,dll) atau named-based. Ada juga property based, tetapi jarang digunakan. Dalam PHP type tidak terdefinisi sehingga types compatibility tidak diketahui. Di bawah ini adalah contoh Types Compatibility dalam NUSA :
image
3. Primitive Types
image
4. Collection
Dalam bahasa NUSA, sebuah object bertipe collection dapat ditulis sebagai berikut :
Tipe_data[panjang_collection] nama_ObjectColletion := {value1,value2,……};
int[3] daftar := {0,2,3};
Tetapi ada beberapa hal yang perlu diperhatikan :
a. Index array dimulai dari 1 bukan 0 jadi index terkecil dalam array di NUSA adalah satu
b. NUSA masih belum mendukung array 2 maupun multi dimensi
c. Untuk menyatakan array character tidak perlu ditulis :
char[3] kata := {‘a’,’b’,’c’};
Tetapi cukup,
char[] kata := ‘HALLLO DUNIA!!!’;
5. Operator –operator di Nusaptel
image
6. Percabangan
C dan semua bahasa turunannya memiliki bentuk keyword percabangan (branching) yang mirip ataupun sama. Berikut di C:
if ( a > 100 )
printf(‘A lebih besar dari 123’);
else if ( a > 90)
printf(‘A lebih besar dari 90 tetapi lebih kecil dari 100’);
else
printf(‘A dibawah 90’);
switch ( angka )
{
case 0 : printf(“Angka adalah nol”);break;
case 1 : printf(“Angka adalah satu”);break;
default : printf(“Ini Default”);break;
}
Berikut di Nusaptel :
integer a := 91;
if( a > 100 )
writeline('A lebih besar daripada 100!!');
else if( a > 90)
writeline('A berada di antara 100 dan 90!!');
else
writeline('A dibawah 90');
case ( angka )
{
0 : {writeline(‘angka adalah nol’);}
1 : {writeline(‘angka adalah satu);}
else : {writeline(‘INI DEFAULT’);}
}
7. Perulangan
Contoh berikut dalam bahasa pemrogramman Nusaptel, akan menghasilkan 3 bilangan berpasangan yang memenuhi syarat segitiga siku-siku :
(Sisi A)2 + (sisi B)2 = (sisi C)2
image
8. Prosedur dan fungsi
imagepenulisan prosedur di Nusaptel, hampir sama dengan penulisan prosedur di C, secara resminya penulisan prosedur dan pemanggilannya dilakukan seperti gambar di samping, dengan perkecualian, bahwa tulisan retun() dapat tidak ditullis
 
Sama seperti prosedur, penulisan fungsi juga tidak jauh berbeda dengan C.
image
Contoh program di bawah ini akan menghasilkan output sebuah bilangan integer yang menunjukkan index dari suatu abjad :
image
9. Beberapa  kelemahan dan kekurangan Nusaptel
Tak ada sesuatu yang betul-betul sempurna di dunia ini terutama dunia IT, karenanya saya menulis bagian kekurangan ini bukan bertujuan untuk menjatuhkan melainkan sebagai bahan masukan bagi para pengembang bahasa Nusaptel agar menjadi lebih baik.
 
  • Memiliki bug,
Seperti peribahasa tidak ada gading yang tak retak, Nusaptel pun juga tidak luput dari peribahasa ini. Salah satu bug yang saya temukan adalah :
image
Berdasarkan pesan dari Nusaptel IPT, program ini telah berhasil tercompile dan link, tetapi saat di-run, file run tidak terbentuk.
  • Nusaptel tidak dapat melakukan rekursi
Rekursi merupakan suatu cara dimana, sebuah function dapat memanggil dirinya sendiri. Di bawah ini merupakan contoh program yang menggunakan rekursi untuk menghasilkan bilangan-bilangan segitiga Pascal :
C#.Net :
image
C :
image
Tetapi, di Nusaptel, program akan terlihat berhasil dicompile, tetapi saat dijalankan akan terjadi error seperti gambar di bawah :
image
Berikut juga merupakan contoh rekursi untuk menghitung bilangan-bilangan faktorial (notasi Matematika : 8! )
C:
image
Nusaptel :
image
  • Penggunaan variabel byte sebagai parameter For()
image
Nusaptel mewajibkan penggunaan varibel byte untuk proses perulangan, tetapi dalam prakteknya sering terjadi error. Seperti proses perkalian di bawah
image
Jadi, penggunaan variabel byte cukup menyulitkan, terutama apabila kita akan melakukan manipulasi terhadap parameter di dalam for(), seperti program sederhana ini :
image

4 comments:

  1. yeah,, so good...

    ReplyDelete
  2. kelemahan nusaptelnya sangat mengena.... good job!!!

    ReplyDelete
  3. bagus den
    tapi km ga salah a for e 7. Perulangan , kok isa ga ono kurung e

    ReplyDelete