Syntax & Semantic

Bahasa pemrograman merupakan notasi formal untuk mendeskripsikan suatu algoritma untuk dieksekusi oleh komputer. Seperti semua notasi formal, bahasa pemrograman mempunyai dua komponan utama, yaitu syntax dan semantic.
Syntax merupakan kumpulan aturan formal yang mendeskripsikan komposisi suatu program yang terdiri dari huruf, setiap angka dan karakter lain. Sebagai contoh, Syntax mengatur bahwa setiap ada kurung buka harus ada kurung tutup dalam suatu ekspresi aritmetika dan antara suatu statemen harus dipisahkan dengan tanda titik koma.
Aturan Semantic akan “mengartikan” sembarang program yang ditulis dalam suatu bahasa dengan benar secara Sintaksis. Dengan kata lain, Semantic memperhatikan arti dan interpretasi suatu bahasa. Syntax dan Semantic sulit dipisahkan.
DESAIN BAHASA PEMROGRAMAN
Untuk merancang suatu bahasa pemrograman yang baik, dibutuhkan beberapa kriteria. Kriteria-kriteria ini biasanya dipicu dari pengalaman merancang dan membuat suatu bahasa pemrograman. Kriteria-kriteria tersebut adalah:
a. Abstraction
Mempunyai kemampuan untuk mengontruksi suatu pola yang berulang-ulang agar lebih sederhana, sebagi contoh adalah subprocedure.
b. Orthogonality
Fitur dasar harus dapt dimengerti secara terpisah dan bebas dari interaksi yang tidak terduga. Prinsip ini dilanggar oleh bahas Pascal, dimana parameter val dan var mengkombinasikan tipe penggunaan parameter (misalnya input atau output) dengan mekanisme passing-parameter (misalnya call-by-value atau call-by-reference).
c. Simplicity
Kesederhanaan dalam bahasa. Semakin sedikit konsep dalam suatu bahasa untuk dapat dimengerti maka semakin baik.
d. Regularity
Keteraturan dalam suatu bahasa. Semakin sedikit melanggar aturan maka semakin baik. Sebagai contoh adalah bahasa FORTRAN yang hanya mempunyai array dengan maksimal tiga dimensi.
e. Konsistensi
Ketetapan atau konsistensi suatu alur atau bentuk bahasa. Suatu bentuk bahasa yang berbeda seharusnya juga terlihat tertulis berbeda. Sebagai contoh, bentuk A(I) di bahasa FORTRAN dapat berarti pemanggiln fungsi A dengan parameter I, dan dapat juga berarti array A dengan elemen I. Bentuk ini tidak konsisten. Akan lebih mudah dibaca dan dimengerti jika dibedakan dengan bentuk tanda kurung yang lain, misalnya denga tanda kurung siku untuk bentuk array, seperti A[I].
f. Translation
Dibutuhkan suatu translator bahasa yang bekerja dengan cepat dan menghasilkan suatu kode tujuan (kode obyek) yang efisien.

SYNTAX
Syntax merupakan kumpulan aturan yang mendefinisikan suatu bentuk bahasa; syntax mendefinisikan bagaimana suatu kalimat dibentuk sebagai barisan/urutan dari pemilihan suatu kata dasar. Kata bukan merupakan sesuatu yang mendasar. Kata dikonstruksikan dengan karakter-karakter alfabet. Dengan menggunakan atauran ini maka suatu kalimat dapat dikatakan legal atau tidak legal. Sebagai contoh, dalam keyword bahasa C (seperti while, do, if dan else). Identifier, angka, operator dan seterusnya merupakan kata dalam suatu bahasa. Syntax dalam bahasa C mengatur cara mengkombinasikan kata-kata tersebut ke dalam suatu statemen dengan bentuk yang benar sehingga dapat disusun suatu program yang dapat berjalan dengan benar. Syntax tidak mengerti apa pun tentang isi atau arti dari suatu kalimat ; aturan semantic yang bisa mengartikan.
Syntax dari bahasa pemrograman didefinisikan dengan dua kumpulan aturan, yaitu aturan, yaitu aturan Lexical dan aturan Syntatic. Aturan Lexical menspesifikasikan kumpulan karakter yang terdapat dalam alphabet dari bahasa dan cara supaya karakter-karakter tersebut dikombinasikan ke dalam kata-kata yang valid dan diterima. Sebagai contoh adalah bahasa Pascal yang tidak memperhatikan huruf besar dan huruf kecil, sedangkan bahasa C dan Ada memperhatikan dan membedakan hal tersebut.
Syntax berfungsi menyediakan bentuk-bentuk notasi untuk komunikasi antara programmer dan pemroses bahasa pemrograman seingga dapat mempermudah pembuatan suatu program. Oleh karena itu, diperlukan suatu kriteria supaya pembuatan program menjadi lebih mudah. Kriteria-kriteria tesebut adalah:
a. Readability
Suatu program dikatakan “mudah dibaca” jika terstruktur algoritma yang mendasari dan data yang direpresentasikan oleh program dapat terlihat dengan jelas pada waktu pemeriksaan teks program. Program yang “mudah dibaca” sering disebut “self-documenting”, yaitu tidak diperlukan suatu dokumentasi tambahan yang terpisah.
b. Writeability
Suatu bahasa pemrograman yang mudah untuk ditulis, belum tentu mudah untuk dibaca. Kemudahan dalam menulis, berarti adalah sedikit mengetik dan banyak singkatan sehingga program yang dihasilkan biasanya leih pendek dan lebih sulit untuk dibaca.
c. Kemudahan Verifiability
Berhubungan erat dengan readability dan writeability karena merupakan konsep dari kebenaran suatu program atau verifikasi program (Program Verification).
d. Kemudahan Translasi
Readability dan writeability merupakan kriteria yang berpengaruh langsung terhadap manusia (programmer). Kemudahan translasi merupakan kebutuhan translator yang memproses program yang sudah ditulis. Kunci kemudahan translasi adalah keteraturan struktur suatu program, artinya suatu bahasa yang mempunyai syntax yang sulit dibaca dan ditulis oleh manusia, umumnya mudah untuk ditranslasikan. Contohnya adalah LISP.
e. Pengurangan Ambiguitas
Ambiguitas merupakan masalah utama pada setiap perancangan suatu bahasa pemrograman. Suatu konstuksi ambiguitas membuat suatu statemen menjadi mempunyai dua arti atau lebih. Sebagai contoh adalah syntax FORTRAN yaitu bentuk A[I,J]. Bentuk ini menunjuk pada bentuk array dua dimensi A dan sekaligus juga berarti bentuk pemanggilan fungsi A dengan parameter I dan J. Hal ini juga banyak dialami oleh banyak bahasa pemrograman yang lain.

SEMANTIC
Syntax mendefinisikan suatu bentuk program yang benar dari suatu bahasa. Semantic mendefinisikan arti dari program yang benar secara syntax dari bahasa tersebut. Sebagai contoh adalah deklarasi dalam bahasa C berikut ini:
int vector [10];
Semantic akan menentukan bahwa deklarasi di atas menyebabkan ruang sebanyak sepuluh elemen integer diberikan kepada variabel bernama vector. Elemen-elemen array akan ditunjukan dengan index i dari 0 sampai 9. Elemen pertama array vector adalah vector [0].
Sebenarnya tidak semua program yang ditulis dengan benar secara syntax dapat diartikan dengan secara semantic. Semantic suatu bahasa membutuhkan semacam ekspresi untuk mengirimkan suatu nilai kebenaran (TRUE, FALSE, NOT, atau nilai integer). Dalam banyak kasus, program hanya dapat dieksekusi jika benar dan mengikuti aturan syntax dan semantic.
Dalam banyak hal, semantic atau suatu bahasa pemrograman mempunyai banyak potensial, beberapa diantaranya adalah:
a. Standarisasi Bahasa Pemrograman
Banyak usaha yang dilakukan untuk menstandarisasikan bahasa pemrogramanseperti FORTRAN, COBOL, dan PL/I untuk lebih memudahkan programmer menggunakannya.
b. Referensi Untuk User
Programmer membutuhkan suatu dokumentasi yang pasti, supaya user dapat mengoperasikan program yang dibuat dengan baik. Hal ini tidak akan menjadi masalah ketika User diberi kesempatan untuk bereksperimen dengan program tersebut dan mengetahui apa yang dikerjakan oleh program.
c. Pembuktian dari Program yang Benar
Secara matematis, program tidak mungkin bekerja dan berjalan jika tidak ada semantic.
d. Referensi untuk Implementor
Semantic akan mencegah suatu gaya bahasa yang tidak kompatibel yang diwujudkan dalam suatu implementasi berbeda walaupun dengan bahasa yang sama.
e. Implementasi Otomatis
Suatu tool dapat secara otomatis membuat translasi bahasa yang melebihi parsing. Hal ini dapat dilakukan jika semantic sudah dirumuskan.
f. Pemahaman yang Lebih Baik Dari Desain Bahasa
Jika suatu rumusan semantic sulit untuk dideskripsikan secara formal maka rumusan semantic tersebut juga akan sulit digunakan oleh programmer. Dari pandangan programmer, terdapat dua alasan mengapa perlu memahami suatu desain bahasa pemrograman dengan lebih baik, yaitu:
1. Memahami dengan lebih baik sutu desain bahasa pemrograman berarti membantu menguasai dan menggunakan bahasa tersebut.
2. Memahami dengan lebih baik suatu desain bahasa pemrograman secara detail membantu programmer untuk memperbaiki proses pengembangan program menjadi lebih baik. Selain itu, ada banyak aplikasi pemrograman yang melibatkan desain bahasa pemrograman.

Iwan Binanto

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s