Selasa, 12 November 2013

SINTAKS, SEMANTIK, DAN PRAGMATIS

 I. SINTAKS

Sintaks merupakan kumpulan aturan yang mendefinisikan suatu bentuk bahasa. Sintaks 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 aturan 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.Sintaks dalam bahasa C mengatur cara mengombinasikan kata-kata tersebut ke dalam suatu statement dengan bentuk yang benar sehingga dapat disusun suatu program yang dapat berjalan dengan benar. Sintaks tidak mengerti apapun tentang isi atau arti dari suatu kalimat, aturan semantik yang bisa mengartikannya.

Sintaks dari bahasa pemrograman didefinisikan dengan dua kumpulan aturan, yaitu aturan lexical dan aturan syntactic. Aturan leksikal menspesifikasikan kumpulan karakter yang terdapat dalam alfabet dari bahasa dan cara supaya karakter-karakter tersebut dikombinasikan ke dalam kata-kata yang valid dan dapat diterima. Sebagai contoh adalah bahasa Pascal yang tidak memperhatikan huruf besar dan huruf kecil, sedangkan bahasa C dan Ada memperhatikan dan membedakan hal tersebut.

Sintaks berfungsi menyediakan bentuk-bentuk notasi untuk komunikasi antar programmer dan pemroses bahasa pemrograman sehingga dapat mempermudah pembuatan suatu program.

Suatu bahasa pemrograman juga dibangun berdasarkan elemen-elemen syntactic, yang dapat membentuk suatu statement-statement dalam bahasa pemrograman. Elemen-elemen tersebut antara lain :

a. Himpunan karakter

Himpunan karakter yang sering dijumpai dan digunakan adalah himpunan karakter ASCII, yang berisi dasar karakter-karakter angka dan huruf. Karakter ASCII secara umum dapat langsung digunakan pada kebanyakan perangkat I/O, namun ada bahasa pemrograman yang tidak menggunakan himpunan karakter ASCII, contohnya bahasa APL. APL menggunakan karakter yang tidak dapat digunakan secara langsung pada kebanyakan pernagkat I/O, tidak seperti bahasa C yang menggunakan himpunan karakter ASCII.

b. Identifier

Sintaks dasar dari identifier yang sering digunakan adalah string dari huruf dan angka yang dimulai dengan huruf. Namun, banyak juga variasi dari bahasa pemrograman yang menggunakan suatu identifier dengan tanda “.” Atau “-“. Hal ini akan berpengaruh pada kemudahan dalam pembacaan program.

c. Simbol untuk operator

Kebanyakan bahasa pemrograman menggunakan karakter “+” dan “-“ untuk merepresentasikan dua buah operasi dasar aritmetika, dan menggunaka kombinasi serta memanfaatkan karakter-karakter spesial untuk suatu operator, atau menggunakan string untuk operator seperti pada FORTRAN dengan .EQ. untuk membandingkan kesamaan dan ** untuk perpangkatan.

d. Keyword dan reserved word

Keyword merupakan merupakan suatu identifier yang digunakan sebagai bagian tetap dari sintaks suatu statement, misalnya IF untuk memulai suatu statement kondisi atau DO untuk memulai suatu perulangan dalam bahasa FORTRAN. Keyword merupakan reserved word jika tidak digunakan sebagai identifier yang dipilih oleh programmer. Misalnya dalam bahasa FORTRAN, identifier IF dan DO dapat dipilih sebagai nama variabel oleh programmer sehingga suatu statemen yang dimulai dengan IF belum tentu merupakan
statement kondisi.

e. Noise word

Merupakan kata pilihan yang disisipkan dalam statemen untuk meningkatkan readibility. Sebagai contoh adalah statemen GO TO label. GO merupakan keyword yang harus ada, sedangkan TO merupakan optional yang akan meningkatkan readibility.

f. Komentar

Penambahan komentar dalam suatu program merupakan hal penting dari dokumentasi suatu program. Bahasa pemrograman mengijinkan komentar dalam beberapa bentuk.
· Baris komentar yang terpisah di dalam program seperti pada FORTRAN.
· Penggunaan karakter khusus yang tidak memedulikan baris seperti /* dan */ di bahasa C.
· Dimulai dari sembarang tempat disuatu baris dengan diawali suatu karakter khusus, seperti
“-“ di Ada, “//” di C++ atau “!” di FORTRAN.

g. Blank

Aturan penggunaan spasi pada bahasa pemrograman sangat beragam. Sebagai contoh adalah bahasa C. Biasanya spasi diabaikan, kecuali jika ada simbol “=+” yang merupakan operator tunggal. Bila dipisahkan dengan spasi maka akan terjadi kesalahan sintaks.

h. Delimiter dan tanda kurung

Delimiter merupakan elemen syntactic yang digunakan untuk menandai suatu awalan atau akhiran dari suatu syntactic unit seperti statemen atau ekspresi. Tanda kurung biasanya berpasangan dengan delimiter, misalnya kurung kurawal atau pasangan kata begin … end. Delimiter berguna untuk meningkatkan readability suatu program dan juga dapat menghilangkan ambiguitas suatu statemen karena dapat digunakan secara eksplisit untuk memisahkan statemen-statemen yang mirip.

i. Ekspresi

Merupakan suatu fungsi yang mengakses data dalam suatu program dan mengembalikan suatu nilai. Ekspresi merupakan dasar dari blok syntactic dari statemen yang dibangun.

II. SEMANTIK

Sintak mendifinisikan suatu bentuk program yang benar dari suatu bahasa. Semantic mendefinisikan arti dari program yang benar secara sintak dari bahasa tersebut. 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, serta mengikuti aturan sintak dan semantic.

Semantic suatu bahasa pemrograman mempunyai banyak potensial / keunggulan, beberapa diantara nya adalah :

a. Standarisasi bahasa pemrograman.

Banyak usaha yang dilakukan untuk menstandarisasi bahasa pemrograman seperti FORTRAN, COBOL, dan PL/1, untuk lebih memudahkan programmer menggunakannya.

b. Referensi untuk user.

Programmer membutuhkan suatu dokumentasi yang pasti supaya user dapat mengoperasikan program yang dibuat dengan baik.

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 kompetibel yang diwujudkan dalam suatu implementasi berbeda walaupun dengan bahasa yang sama.

e. Implementasi otomatis.

Suatu tool/alat dapat secara otomatis membuatu 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 di deskripsikan secara formal maka rumusan semantic tersebut juga akan sulit digunakan oleh programmer.

Teknik semantic :

a. Operational semantic

Pendekatan ini mendefinisikan suatu mesin buatan (abstrak) dengan instruksi-instruksi primitive, tidak perlu realistic, tetapi cukup sederhana supaya tidak muncul kesalahpahaman. Deskripsi semantic dari bahasa pemrograman menentukan suatu translasi ke kode.

b. Detonational semantic.

Pada pendekatan ini, diberikan suatu fungsi yang memetakan program-program computer yang di tunjuk ke dalam bentuk nilai-nilai abstrak secara matematika (angka, nilai kebenaran, fungsi matematika, dsb).

c. Axiomatic semantic.

Pada pendekatan ini di definisikan suatu tindakan program yang di bangun dengan property logika yang menyimpan status computer sebelum dan sesudah dieksekusi.

d. Algebraic semantic.

Pada pendekatan ini dipertimbangkan suatu objek komputasi yang menjadi syarat-syarat dalam aljabar multi stored. Program mengimplementasikan fungsi yang dapat di wujudkan dengan suatu persamaan di antara syarat-syarat tersebut.

e. Structured operational semantic atau natural semantic.

Seperti dalam pengambilan keputusan secara alamiah dengan logika, program di beri suatu arti dari aturan yang diturunkan yang menggambarkan penilaian gagasan suatu bahasa.

Proses analisa sintak dan analisa semantic merupakan 2 proses yang sangat erat kaitannya dan sulit untuk dipisahkan.
Contoh :
A:= (A+B) * (C+D)
Parser hanya akan mengenali symbol-simbol „:=”, “+”, “*”, parser tidak mengetahui makna dari symbol-simbol tersebut. Untuk mengenali makna dari symbol-simbol tersebut maka compiler memanggil routin semantics.

Untuk mengetahui makna, maka routin ini akan memeriksa :
• Apakah variable yang ada telah didefinisikan sebelumnya.
• Apakah variable-variabel terserbut tipenya sama.
• Apakah operand yang akan di operasikan terserbut ada nilainya, dst.
• Menggunakan table symbol.
• Pemeriksaan bisa dilakukan pada table identifier, table display, dan table block.

 III. PRAGMATIKS

Pragmatiks adalah cabang ilmu bahasa yang mempelajari struktur bahasa secara eksternal, yakni bagaimana satuan kebahasaan itu digunakan dalam komunikasi. Menurut Leech (1993), pragmatik adalah studi mengenai makna ujarandalam situasi tertentu. Sementara Levinson (dalam Siregar 2002) men-definisikan pragmatik sebagai telaah mengenai relasi antar bahasa dan konteks yang merupakan dasar bagi suatu catatan atau laporan pemahaman bahasa. Dengan demikian ia merupakan telaah mengenai kemampuan pemakai bahasa dalam menghubungkan serta menyerasikan kalimat-kalimat dan konteks secara tepat.

Pragmatik dan tindak tutur memandang konteks sebagai pengetahuan bersama antara pembicara dan pendengar dan pengetahuan tersebut mengarah pada interpretasi suatu tuturan. Pengetahuan atau konteks tertentu dapat mengakibatkan manusia mengidentifikasi jenis-jenis tindak tutur yang berbeda. Berbicara tentang pragmatik di dalam mangupa berarti berbicara tentang penggunaan perangkat tindak tutur dalam tuturan. Kehadiran perangkat tindak tutur ini ada yang wajib dan ada pula yang bersifat opsional bergantung kepada kepentingannya.

Searle (dalam Wijana 1969) mengatakan bahwa secara pragmatis setidak-tidaknya ada tiga jenis tindakan yang dapat diwujudkan oleh seorang penutur, yaitu tindak lokusi, tindak ilokusi dan tindak perlokusi. Tindak lokusi adalah tindak tutur yang digunakan untuk menyatakan sesuatu, tindak ilokusi adalah tindak yang digunakan selain untuk menyatakan sesuatu juga digunakan untuk melakukan sesuatu sedangkan tindak perlokusi adalah tindak tutur yang pengutaraannya dimaksudkan untuk mempengaruhi lawan tutur. Berkaitan dengan hal ini untuk memahami metafora dalam upacara mangupa harus terikat dengan konteks. Misalnya dalam masyarakat Mandailing ditemukan ungkapan metaforis ulos na so ra buruk yang bermakna adat yang tidak akan pernah punah. Adat itu dilambangkan kepada ulos yang tidak akan rusak sampai kapanpun.
  •  Konsep dari pragmatics adalah : 
1. Logic Programming dan Software Engineering
2. Variabel Logika
3. Arithmetik
  • Contoh dari Pragmatiks adalah : 
contoh :
– Pemanfaatan dan Alokasi memori yang tepat
– Kecepatan pemrosesan
– Pada bahasa pemograman JAVA atau C++
  •  Kelebihan Penggunaan Pragmatiks 
• Heap & Pointer
a. free-space list
b. allocator
c. dealocator
d. garbage
e. danlling references
f. references count
g. garbage collection

 Fungsi pragmatics :

Sementara, itu pragmatik adalah Menguraikan derajat dengan suatu bahasa pemrograman kepada model perhitungan dalam fungsi dan kegunaannya masing-masing, dengan kemudahan implementasi, efisiensi atau efektifitas aplikasi, metodelogi pemograman yang terdapat di dalamnya. Pragmatik berhubungan dengan kemudahan implementasi dan efisiensi.

4 komentar: