Tugas Bahasa Pemrograman I

Tugas Bahasa Pemrograman I

Resume Chapter 1 OVERVIEW – Tucker & Noonan

Bahasa pemrograman dan bahasa alami sama-sama berfungsi untuk memfasilitasi komunikasi antar manusia, tetapi pada bahasa pemrograman yang difasilitasi adalah komunikasi ide-ide algoritmanya, baik antar manusia maupun manusia dengan mesin komputasi (yang tidak bisa dilakukan oleh bahasa alami). Dalam merancang sebuah bahasa pemrograman, perancang bahasa harus memiliki vocabulary dasar tentang struktur bahasa, arti dan hal-hal pragmatis lainnya dan memahami empat prinsip dasar perancangan bahasa pemrograman. Empat prinsip tersebut adalah:

  1. Sintaks, menjelaskan bagaimana struktur program yang benar.
  2. Tipe sistem dan semantik, menunjukkan tipe nilai yang dapat dimanipulasi oleh program dan arti(semantik) dari program, mencakup juga aturan penamaan entitas (variabel,fungsi,class,parameter,dll).
  3. Manajemen memori, menunjuk kepada sekumpulan teknik yang membantu kita untuk memahami pemetaan letak dari nilai, struktur data, dan struktur program di dalam memori.
  4. Exception handling, mengenai penanganan exception (hal-hal yang tak terduga yang terjadi ketika kita menjalankan sebuah program seperti kesalahan input yang tak terduga) .

Dalam perancangan bahasa, para perancang bahasa mengikuti paradigma-paradigma tertentu yang merupakan bentuk pemecahan masalah mengikuti aliran atau “genre” tertentu dari program dan bahasa. Berikut ini merupakan paradigma-paradigma pemograman yang utama:

  • Imperative programming-> program terdiri dari instruksi yang membentuk perhitungan, menerima input dan menghasilkan output. Contoh bahasa: Fortran, C, dan C++.
  • Object-oriented (OO) programming-> program adalah kumpulan objek yang saling berinteraksi melalui pesan yang mengubah state mereka. Contoh bahasa: Java, C++.
  • Functional programming-> program merupakan kumpulan fungsi matematika dengan input (domain) dan hasil (range). Fungsi-fungsi saling berinteraksi dan berkombinasi mengggunakan komposisi fungsional, kondisional, dan rekursif. Contoh bahasa: Lisp, Scheme,ML
  • Logic (declarative) programming -> memodelkan masalah menggunakan bahasa deklaratif, yang terdiri dari fakta dan aturan. Contoh bahasa : Prolog
  • Event-driven programming-> program merupakan sebuah loop yang secara kontinu  merespon event yang timbul oleh perintah yang tidak terduga.  Event ini berasal dari aksi user pada layar atau sumber lainnya. Contoh bahasa: Visual Basic dan Java.
  • Concurrent programming-> program merupakan sekumpulan proses yang bekerjasama, saling berbagi informasi dari waktu ke waktu tapi biasanya beroperasi secara tidak serempak. Contoh bahasa : SR, Linda, dan HPF.

Beberapa bahasa dirancang mendukung lebih dari satu paradigma. Contoh: C++ (imperative dan OOP), Leda(imperative, OOP, functional, logic).

Bahasa pemrograman telah mengalami perkembangan yang pesat sejak pertama kalinya ditemukan. Bahasa pemrograman yang pertama adalah bahasa mesin yang dirancang pada tahun 1940-an. Sejak saat itu ratusan bahasa pemrograman telah berkembang. Cobol dan Fortran adalah contoh bahasa yang berkembang sangat pesat sejak kemunculannya di akhir tahun 50-an dan telah memberikan pengaruh besar pada perkembangan bahasa lain selama lebih dari 40 tahun. Algol juga merupakan bahasa yang memiliki pengaruh sangat besar kepada para penerusnya seperti C++ dan Java. Java merupakan bahasa yang memberikan dukungan kuat pada paradigma OO, concurrent dan event-driven sehingga merupakan bahasa yang menarik bagi para perancang bahasa. Di wilayah functional programming Lisp merupakan bahasa yang dominan pada masa-masa awal dan masih terus mempengaruhi perkembangan bahasa sekarang seperti Scheme, ML, dan Haskell. Sedangkan di wilayah logic programming, Prolog menjadi satu-satunya pemain utama walaupun tidak banyak mempengaruhi desain bahasa di luar wilayahnya. Pada wilayah event-driven dan conccurent programming yang masih dalam masa awal evolusinya hanya menghasilkan sedikit bahasa yang menonjol, salah satunya adalah HPF.

Perbedaan domain aplikasi dan paradigma serta bahasa yang digunakan, menciptakan komunitas-komunitas programming yang berbeda-beda pula. Komunitas programming itu antara lain : Scientific Computing, Management Information System (MIS), Artificial Intelegence, System, dan Web-centric. Masing-masing komunitas tersebut tidak hanya menggunakan salah satu paradigma saja, tapi mengombinasikannya sesuai dengan kebutuhan domain aplikasi mereka.

Dalam merancang bahasa pemrograman, ada beberapa kendala yang harus diatasi para perancangnya, yakni:

  • Arsitektur komputer.  Bahasa pemrograman dirancang untuk komputer: well-match atau tidak dengan arsitektur komputer yang ada.
  • Kontekstual. Bahasa pemrograman juga harus mampu mengatasi kendala yang timbul akibat  konteks dimana mereka digunakan: wilayah aplikasi, sistem operasi, jaringan dan pilihan komunitas programmingnya.
  • Virtual machines dan Intrepreter. Bahasa pemrograman dianalis untuk selanjutnya diterjemahkan ke dalam bentuk yang dapat dipahami oleh mesin, apabila dijalankan oleh komputer (“real machine”) maka disebut proses compiling. Sedangkan apabila dijalankan oleh sebuah intrepreter (sebuah software yang menyimulasikan “virtual machine” dan menjalankannya dalam “real machine”) maka disebut sebagai proses intrepreting. Virtual machine, secara umum adalah model abstrak dari sebuah komputer yang diimplementasikan dalam software, tapi tidak di dalam hardware. Perancang bahasa harus memutuskan mana yang lebih sesuai untuk bahasa yang sedang dirancang, apakah menggunakan konsep virtual machines atau intrepreter , menurut tujuan dari pengembangan bahasa itu sendiri.
  • Standar. Memenuhi standar yang ditetapkan oleh ANSI (American National Standards Institute),atau ISO (International Standards Organization).
  • Legacy systems atau sistem pendahulu. Agar bahasa yang lama masih tetap bisa di-maintain, bahasa yang lebih baru harus tetap mempertahankan kompatibelitasnya dengan pendahulunya itu.

Selain mengatasi kendala-kendalan yang ada, untuk menciptakan bahasa pemrograman yang elegan, terdapat sejumlah kriteria yang harus dipenuhi oleh bahasa tersebut:

  • Simplicity and Clarity, program harus mudah ditulis dan dimengerti serta dipelajari oleh programmer pada umumnya.
  • Binding, memiliki batasan definisi dan waktu yang jelas, misalnya reserved words, ukuran memori suatu tipe data, run time, dsb.
  • Orthogonality, simbol atau reserved word memilki makna yang sama apapun konteks yang digunakan.
  • Realibility, program akan melakukan hal yang sama ketika memperoleh input data yang sama.
  • Applicability, bahasa tsb menyediakan dukungan yang tepat sesuai dengan domain aplikasi yang digunakan.
  • Abstraction, mendukung abstraksi data dan prosedural sehingga menjadi alat yang disukai dalam proses memprogram.
  • Implementasi yang efisien.

2 thoughts on “Tugas Bahasa Pemrograman I

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