Bismillah...

GENERASI BAHASA PEMROGRAMAN


1. Generasi Pertama (Bahasa Mesin)
Disebut generasi pertama karena merupakan jenis yang paling awal dikembangkan pada tahun 1940-an dan awal 1950-an dan semua program harus dikodekan dalam bahasa mesin sebagai bahasa internal komputer yang mengeksekusi secara langsung tanpa terjemahan (translation). 
 -    Menggunakan kode-kode biner (0 dan 1), dengan basis dasar transistor, rumit, sukar dihafal, dan lama
 -    Dikembangkan dengan bilangan oktal dan heksadesimal
 -    Akan menyita waktu dan kondusif untuk membuat kesalahan
 -    Berbeda untuk setiap jenis komputer, sehingga bergantung pada komputer dan tidak standar Semua program harus ada dalam bahasa mesin agar dapat dieksekusi, sehingga bahasa lain yang ditulis programer perlu diterjemahkan oleh komputer ke bahasa mesin untuk eksekusi.

2. Generasi Kedua (Bahasa Assembly)
Penggunaan komputer secara komersial tahun 1950-an mengakibatkan dikembangkannya bahasa assembly  dengan ciri-ciri:
 -    Kode ditandai dengan nama yang mudah diingat seperti ADD, SUB, dan MULT
 -    Alamat penyimpanan (storage addresses) nyata di mana data ditempatkan dapat didefinisikan dengan nama-nama seperti  AMT1 dan AMT2 untuk memudahkan rujukan.

Bahasa assembly sangat menyerupai bahasa mesin, sehingga untuk menjadi programmer bahasa assembly yang cakap kita harus memahami arsitektur mesin, yakni bagaimana mesin itu secara fisik memproses data. Sama seperti bahasa mesin, bahasa assembly tergantung komputer (tidak portable)dan Untuk menerjemahkan kode-kode diperlukan program khusus yang disebut  ASSEMBLER.
Bahasa assembly masih digunakan karena begitu mirip dengan bahasa mesin dengan kode yang sangat efisien Untuk membuat system software lebih disukai menggunakan bahasa assembly karena sangat efisiean dalam penggunaan komputer (butuh memori yang kecil)
3. Generasi Ketiga (Bahasa Tingkat Tinggi / High Level Language)
Penggunaan komputer dalam bisnis berkembang sangat dramatis pada tahun 1950-an. Bahasa mesin dan assembly terlalu sulit, sehingga muncul third-generation languages (3GLs) yang lebih mudah untuk program dan portable. 
Disebut tingkat tinggi karena mudah dipelajari & program tingkat-tinggi memerlukan proses penerjemahan oleh komputer yang sangat rumit yang disebut  COMPILER atau INTERPRETER
Seperti generasi pendahulunya 1GL dan 2GL, 3GL disebut bahasa prosedural (4GL dan 5GL disebut  bahasa nonprosedural), yakni program harus menentukan kumpulan instruksi yang tepat yang dibutuhkan untuk menyelesaikan tugas yang diberikan Contoh bahasa tingkat-tinggi   : 
- FORTRAN (FORmula TRANslator)
- Cobol
- Pascal
- BASIC
- MODULA-2
- ADA
- Object-oriented programming language
Bahasa C disebut bahasa “tingkat-menengah” karena format instruksinya dengan bahasa tingkat-tinggi sekaligus bisa berinteraksi langsung dengan hardware

4. Generasi Keempat (Bahasa Deklaratif)
Bahasa pemrograman ini jauh lebih mudah ditulis karena instruksinya sudah sangat mendekati bahasa percakapan sehari-hari. misal : LIST NAMA, ALAMAT, NILAI FOR NILAI > 7
Ciri-ciri  :
- Mudah untuk dipelajari dan dipahami
- Tepat untuk pengaksesan database
- Memfokuskan pada memaksimalkan produktivitas manusia dari pada minimisasi waktu computer
- Nonprosedural
- Tersedia dalam software paket yang dapat digunakan untuk mengembangkan aplikasi yang diinginkan
Contoh: 
- Query language seperti SQL (structured query language), QBE (query-by-example) dan INTELLECT
- Report generator

5. Generasi Kelima  (Object-Oriented Language)
Sering digunakan untuk akses database atau membuat sistem pakar (expert system) atau knowledge-based system Dalam konsep, ditujukan untuk bahasa alami (natural languages) yang semirip mungkin dengan hubungan kemanusiaan
Contoh   : LISP dan Prolog
Sekarang ini banyak sistem pakar dikodekan baik dalam LISP  maupun Prolog, meski untuk hal yang sama bisa ditulis dalam C atau C++. Usaha yang sekarang dilakukan adalah memperbaiki bahasa AI (artificial intellegence) dengan mengkombinasikan kemampuan terbaik dari LISP dan Prolog

II.    PERKEMBANGAN COMPAILER
Sejarah Compiler Sejarah perkembangan suatu kompilator sudah dimulai sejak lama, yaitu pada saat mulaiditemukannya komputer pada awal 1950-an. Sejak waktu tersebut teknik dan cara pembentukan suatu kompilator telah berkembang dengan sangat pesat dan pembentukkansuatu kompilator dapat dilakukan makin mudah. Demikian pula program bantu (tools) untuk membuat suatu kompilator sudah dapat diperoleh sehingga pembentukan suatu kompilator dapat dilakukan dengan cepat
Kompilator pertama yang dibuat adalah kompilator untuk bahasa FORTRAN yang pada saat itu dikembangkan dengan memakan sejumlah tenaga ahli yang setara dengan pekerjaan yang dilakukan oleh 18 orang. Dengan adanya program bantu dan tata cara pembentukan yang sistematis dan tertata dengan baik serta pendefinisian struktur bahasa yang cermat, makasuatu kompilator untuk bahasa yang terstruktur seperti PASCAL atau C dapat dikembangkan
Walaupun secara tradisional suatu kompilator dikaitkan denga suatu proses penerjemahan suatu bahasa sumber ke dalam suatu bahasa asembler atau bahasa mesin dari suatu komputer, tetapi ada beberapa proses lain yang secara langsung tidak terkait oleh kerja suatu kompilator, tetapi pengembangannya dapat dilakukan seperti pengembangan suatu kompilator. Berikut ini adalah beberapa proses yang pengembangannya dapat dilakukan sejalan dengan pengembangan suatu kompilator, tetapi penggunaannya bukan untuk penerjemahan dari suatu bahasa ke dalam bahasa lain:

a.    Pemformatan teks
Suatu pemforamt teks mempunyai masukan berupa aliran karakter, dimana sebagian besar dari karakter tersebut akan dicetak, tetapi bagian lainnya digunakan untuk perintah perintah cetakan seperti ganti bari, keterangan gambar, struktur matematika seperti index dan lain sebagainya.

b.Kompilator silikon
Kompilator ini pada dasarnya hanya mengolah sinyal logika (0 atau 1) atau kelompok sinyal dari suatu sirkuit, sedangkan keluarannya adalah suatu rancangan sirkuit yang didefinisikan oleh suatu bahasa tertentu.

c.Interpreter query
Dalam aplikasi basis data suatu bahasa query, yang merupakan suatu predikat yang mengandung operator boolean maupun relasi, diterjemahkan ke dalam suatu proses pencarian suatu record dalam basis data yang memenuhi predikat yang telah diberikan.