Senin, 28 September 2015

Bahasa Pemrograman Komputer

Bahasa komputer adalah merupakan suatu set pemrograman yang digunakan untuk membuat suatu program komputer. Bahasa komputer biasa dikenal dengan nama bahasa pemrograman. Program komputer atau software sendiri adalah suatu set instruksi yang harus dijalankan oleh komputer pada saat komputer dihidupkan atau ketika diperintahkan oleh pengguna komputer. Bahasa pemograman menggunakan kata-kata unik yang menjadi kode untuk menjalankan perintah tertentu pada komputer. Contoh bahasa pemrograman antara lain adalah Pascal, Fortran, Clipper, dBase, Delphi, Basic, Cobol, C++, C#, Java dan lain-lain.


Sebuah CPU komputer, dalam hal ini prosesor memiliki sejumlah perintah terbatas dan dikenal dengan nama kode mesin. Kode ini adalah bahasa yang digunakan untuk mengkomunikasikan data dalam komputer. CPU dalam komputer hanya mengenal bahasa ini, tidak dengan bahasa lainnya. Semua bahasa pemrograman harus diubah menjadi kode mesin terlebih dahulu supaya CPU dapat mengolah dan menjalankan perintah yang diberikan oleh program yang dibuat.

Jenis-jenis bahasa computer


Bahasa komputer dapat dikelompokkan dalam tiga kelompok besar berdasarkan jenisnya, yakni bahasa mesin (machine language), assembly language dan high level language. Mari kita bahas satu persatu sebagai berikut:
  1. Machine language adalah seperangkat perintah yang dinyatakan dalam bentuk bilangan biner (hanya angka 0 dan 1) yang berfungsi untuk memberikan data dan instruksi bagaimana mengolah data kepada CPU.
Bahasa mesin atau kode mesin merupakan seperangkat instruksi serta data yang dapat dieksekusi secara langsung oleh prosesor komputer. Kode mesin merupakan tingkatan yang paling rendah dari bahasa pemrograman,  dan biasanya digunakan sebagai tujuan kompilasi oleh kompiler pada bahasa-bahasa pemrograman lain dalam tingkatan yang lebih tinggi. Penerjemahan kode pada bahasa pemrograman interpretatif atau bahasa skrip umumnya tidak termasuk dalam kriteria tersebut karena umumnya bahasa skrip menerjemahkan kode sumber menjadi P-Code, kode penjembatan antara kode sumber dan kode mesin. Meski demikian, umumnya bahasa skrip populer yang ada saat ini telah menambahkan kompiler JIT (Just In Time) integratif yang secara hibrida mengkompilasi instruksi-instruksi P-Code yang paling sering dieksekusi menjadi kode mesin. Setiap prosesor ataupun keluarga prosesor memiliki sejumlah set instruksi kode mesin. Instruksi ini merupakan pola bilangan biner yang merepresentasikan perintah-perintah yang dikenali oleh prosesor tersebut. Karenanya sejumlah prosesor spesifik memiliki sejumlah set instruksi spesifik yang hanya dikenali pada prosesor tersebut, sebagai contoh fitur MMX dalam keluarga prosesor X86, atau 3DNow dalam keluarga prosesor AMD. 

Pola instruksi ini biasanya merupakan serialisasi dari sejumlah bilangan biner yang digabungkan hingga membentuk opcode untuk melakukan pemindahan (MOV), lompatan (JMP), operasi aritmatika, penyimpanan (PUSH), ataupun pengambilan nilai (POP), dan lain-lain. Contoh serialisasi tersebut misalnya; kode biner atas instruksi pemindahan adalah 10110 diikuti dengan 3-bit pengenal atas register yang akan digunakan, sedangkan pengenal atas register prosesor AL adalah 000. Dengan demikian perintah untuk memindahkan sebuah nilai ke dalam register prosesor AL adalah 10110000, atau B0 dalam bilangan heksadesimal.
  1. Assembly Language adalah bahasa komputer tingkat rendah yang memiliki banyak kode yang membantu memori untuk “mengingat data (informasi). Assembly language juga mengandung seperangkat simbolis yang berhubungan dengan perintah tertentu pada bahasa mesin.
Bahasa rakitan mengimplementasikan representasi atas kode mesin, dalam bentuk simbol-simbol yang secara relatif lebih dapat dipahami oleh manusia. Berbeda halnya dengan bahasa-bahasa tingkat tinggi yang berlaku umum, bahasa rakitan biasanya mendukung secara spesifik untuk suatu ataupun beberapa jenis arsitektur komputer tertentu. Dengan demikian, portabilitas bahasa rakitan tidak dapat menandingi bahasa-bahasa lainnya yang merupakan bahasa pemrograman tingkat tinggi. Namun, bahasa rakitan memungkinkan programmer memanfaatkan secara penuh kemampuan suatu perangkat keras tertentu yang biasanya tidak dapat ataupun terbatas bila dibuat dengan menggunakan bahasa pemrograman tingkat tinggi.

Pada bahasa rakitan, programmer umumnya menggunakan sebuah program utilitas yang disebut sebagai perakit (bahasa Inggris: assembler) yang digunakan untuk menerjemahkan kode dalam bahasa rakitan tersebut ke dalam kode mesin untuk perangkat keras tertentu. Sebuah perintah dalam bahasa rakitan biasanya akan diterjemahkan menjadi sebuah instruksi mnemonic dalam kode mesin, berbeda halnya dengan kompiler pada bahasa pemrograman tingkat tinggi yang menerjemahkan sebuah perintah menjadi sejumlah instruksi dalam kode mesin. 

Beberapa perangkat lunak bahasa rakitan terkenal biasanya menyediakan tambahan fitur untuk memfasilitasi proses pengembangan program, mengontrol proses perakitan, dan alat bantu pengawakutuan (debugging). Ada beberapa dasar alasan menggunakan bahasa rakitan dilihat dari sudut pandang penggunaannya:

·         Bahasa rakitan dibandingkan dengan bahasa mesin, bahasa rakitan merupakan representasi atas bahasa mesin yang dirancang agar lebih mudah dipahami oleh manusia. Dengan menggunakan bahasa rakitan, seorang programmer dapat lebih mudah mengingat instruksi-instruksi dengan menggunakan simbol yang lebih dimengerti dibandingkan bila menggunakan simbol mnemonic kode mesin secara langsung. Demikian halnya pula dengan mekanisme lompatan yang umum terdapat dalam bahasa mesin yang biasanya menggunakan alamat memori, programmer dapat lebih mudah menggunakan fasilitas pelabelan yang terdapat pada bahasa rakitan dibandingkan menggunakan alamat memori tertentu dalam kode mnemonic.

·         Bahasa rakitan dibandingkan dengan bahasa tingkat tinggi, bahasa rakitan memungkinkan programmer untuk mengontrol serta memanfaatkan secara penuh kapabilitas yang terdapat atas suatu perangkat keras, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang memiliki banyak keterbatasan dalam pemanfaatan secara penuh suatu perangkat keras. Bahasa rakitan menjanjikan tingkat unjuk kerja yang maksimum karena sifatnya yang menerjemahkan secara langsung instruksi rakitan menjadi instruksi mesin, berbeda halnya dengan bahasa pemrograman tingkat tinggi yang biasanya menerjemahkan sebuah instruksi menjadi sejumlah kode mesin. 

Representasi kode mesin
Bahasa rakitan menerjemahkan sebuah instruksi rakitan menjadi instruksi mesin, umumnya mekanisme penerjemahan ini bersifat 1-1, karenanya dapat disebutkan pula bahwa setiap instruksi dalam bahasa rakitan merupakan representasi dari instruksi kode mesin. Sebagai contoh, berikut adalah instruksi yang digunakan pada prosesor x86 untuk memindahkan nilai 97 sebesar 8-bit ke dalam register prosesor AL. Kode biner atas instruksi pemindahan adalah 10110 diikuti dengan 3-bit pengenal atas register yang akan digunakan. Pengenal atas register AL dalam hal ini adalah 000. Kemudian, nilai 97 dalam kode biner adalah 01100001, sehingga kode mesin yang digunakan untuk memindahkannya adalah sebagai berikut:

10110000 01100001
 
Kode biner ini dapat diubah agar lebih mudah dibaca manusia dengan mengkonversikannya dalam bilangan heksadesimal sebagai berikut: 

B0 61
 
Pada instruksi diatas, B0 berarti: 'Pindahkan nilai berikut ke register AL', dan 61 adalah representasi bilangan heksadesimal untuk nilai 01100001, atau 97 dalam bilangan desimal. Bahasa rakitan untuk prosesor Intel menyediakan simbol mnemonic MOV (yang merupakan singkatan dari move) untuk instruksi serupa sehingga kode mesin sebelumnya dapat ditulis dalam bahasa rakitan sebagai berikut: 

MOV AL, 61h       ; Isi register AL dengan nilai 97 (61 hex 

Bahasa rakitan memungkinkan programmer menambahkan komentar atas setiap instruksi yang ditulis untuk mempermudah pembacaan dan lebih mudah pemahaman.
  1. High level language disebut sebagai bahasa komputer tingkat tinggi karena berisi perintah yang dirancang mendekati bahasa manusia. Bahasa ini lebih mudah dipahami dan dipelajari oleh manusia dan digunakan untuk pembuatan program komputer tertentu. Macam bahasa pemrograman sudah kami sebutkan diatas.


Dalam ilmu komputer, bahasa pemrograman tingkat tinggi adalah bahasa pemrograman dengan abstraksi yang kuat dari rincian komputer. Dibandingkan dengan bahasa pemrograman tingkat rendah, mungkin menggunakan unsur-unsur bahasa alami, lebih mudah untuk menggunakan, atau mungkin mengotomatisasi (atau bahkan menyembunyikan seluruhnya) daerah yang signifikan dari sistem komputasi (misalnya manajemen memori), membuat proses pengembangan program sederhana dan lebih dimengerti dibandingkan dengan bahasa tingkat rendah. Jumlah abstraksi disediakan mendefinisikan bagaimana "tingkat tinggi" bahasa pemrograman. Pada tahun 1960, bahasa pemrograman tingkat tinggi menggunakan kompiler yang biasa disebut autocodes.  Contoh autocodes yang COBOL dan Fortran.  

Bahasa pemrograman pertama tingkat tinggi yang dirancang untuk komputer adalah yakni Plankalkül, diciptakan oleh Konrad Zuse.
 

Namun, itu tidak dilaksanakan dalam waktu, dan kontribusi aslinya adalah (karena Perang Dunia II) sebagian besar terisolasi dari perkembangan lain, meskipun itu dipengaruhi bahasa Heinz Rutishauser ini "SUPERPLAN" (dan untuk beberapa derajat juga Algol). Pertama benar-benar luas bahasa tingkat tinggi adalah Fortran, mesin pengembangan independen dari sistem IBM sebelumnya AUTOCODE. Algol, didefinisikan pada tahun 1958 dan 1960, oleh komite ilmuwan komputer Eropa dan Amerika, memperkenalkan rekursi serta fungsi bersarang di bawah lingkup leksikal. Itu juga merupakan bahasa pertama dengan perbedaan yang jelas antara nilai dan nama-parameter dan semantik yang sesuai mereka. Algol juga memperkenalkan beberapa konsep pemrograman terstruktur, seperti saat-do dan if-then-else konstruksi dan sintaks adalah pertama yang digambarkan dengan metode formal, Backus Naur Form-(BNF). Selama kira-kira periode yang sama Cobol diperkenalkan catatan (juga disebut struct) dan Lisp memperkenalkan lambda abstraksi sepenuhnya umum dalam bahasa pemrograman untuk pertama kalinya.

"Bahasa tingkat tinggi" mengacu pada tingkat yang lebih tinggi dari abstraksi dari bahasa mesin. Daripada berurusan dengan register, alamat memori dan tumpukan panggilan, bahasa tingkat tinggi menangani variabel, array, objek, aritmatika kompleks atau ekspresi boolean, subrutin dan fungsi, loop, benang, kunci, dan konsep ilmu komputer abstrak lainnya, dengan fokus pada kegunaan lebih efisiensi program yang optimal. Tidak seperti bahasa perakitan tingkat rendah, bahasa tingkat tinggi memiliki sedikit, jika ada, unsur-unsur bahasa yang diterjemahkan langsung ke opcodes asli mesin ini. Fitur lain, seperti rutinitas penanganan string, fitur bahasa berorientasi objek, dan file input / output, juga dapat hadir.

"Bahasa Tingkat Tinggi" mengacu pada Tingkat Yang LEBIH Tinggi Dari abstraksi Dari bahasa mesin. Daripada berurusan DENGAN daftar, Alamat Memori Dan Panggilan tumpukan, bahasa Tingkat Tinggi menangani variabel, array, objek, aritmatika Kompleks ATAU Ekspresi boolean, subrutin Dan fungsi fungsi, lingkaran, Benang, kunci, Dan KONSEP Ilmu Komputer abstrak lainnya, with Fokus PADA kegunaan LEBIH Efisiensi Program Yang optimal. TIDAK seperti bahasa Perakitan Tingkat Rendah, Tingkat Tinggi bahasa memiliki sedikit, jika ADA, bahasa Unsur-unsur Yang diterjemahkan Langsung KE opcodes asli mesin inisial. Fitur Lain, seperti rutinitas penanganan tali, fitur bahasa berorientasi objek, Dan file input / output, JUGA DAPAT Hadir.

Ada tiga mode umum eksekusi untuk bahasa tingkat tinggi yang modern:
 
·         Ditafsirkan
    Ketika kode yang ditulis dalam bahasa ditafsirkan, sintaks dibaca dan kemudian dieksekusi langsung, tanpa tahap kompilasi. Sebuah program yang disebut juru membaca setiap pernyataan program mengikuti alur program, kemudian memutuskan apa yang harus dilakukan, dan apakah hal itu. Sebuah hibrida seorang penerjemah dan kompilator akan mengkompilasi pernyataan ke dalam kode mesin dan menjalankan itu; kode mesin kemudian dibuang, harus ditafsirkan lagi jika baris dijalankan lagi. Penafsir umumnya implementasi sederhana dari perilaku bahasa, dibandingkan dengan dua varian lainnya yang tercantum di sini.

Ketika kode yang ditulis dalam bahasa dikompilasi, sintaks ditransformasikan menjadi bentuk yang dapat dijalankan sebelum menjalankan. Ada dua jenis kompilasi:

·         Kode mesin generasi
Beberapa compiler mengkompilasi kode sumber langsung ke kode mesin. Ini adalah modus asli dari kompilasi, dan bahasa yang secara langsung dan benar-benar berubah ke kode mesin-pribumi dengan cara ini dapat disebut "benar-benar disusun" bahasa. Lihat bahasa assembly.

·         Representasi menengah
Ketika kode yang ditulis dalam bahasa dikompilasi untuk representasi menengah, representasi yang dapat dioptimalkan atau disimpan untuk eksekusi nanti tanpa perlu membaca ulang file sumber. Ketika representasi menengah disimpan, mungkin dalam bentuk seperti kode byte. Representasi menengah kemudian harus ditafsirkan atau lebih disusun untuk melaksanakannya. Mesin virtual yang mengeksekusi kode byte langsung atau mengubahnya lebih lanjut ke kode mesin telah mengaburkan perbedaan yang jelas antara sekali representasi intermediate dan bahasa yang benar-benar disusun.

Sumber-to-sumber Diterjemahkan atau Trans-dikompilasi

Kode yang ditulis dalam bahasa dapat diterjemahkan ke dalam istilah dari bahasa pemrograman tingkat rendah yang kompiler kode asli yang sudah banyak tersedia. Bahasa pemrograman C adalah target umum untuk penerjemah tersebut. Lihat Skema ayam dan Eiffel sebagai contoh. Secara khusus, yang dihasilkan C dan C ++ kode dapat dilihat (seperti yang dihasilkan dari bahasa pemrograman Eiffel bila menggunakan EiffelStudio IDE) di direktori EIFGENs dari setiap proyek Eiffel disusun. Dalam Eiffel, "Diterjemahkan" proses ini disebut sebagai Trans-kompilasi atau Trans-dikompilasi, dan kompilator Eiffel sebagai Transcompiler.

Perhatikan bahwa bahasa tidak ketat "ditafsirkan" bahasa atau "dikompilasi" bahasa. Sebaliknya, implementasi perilaku bahasa menggunakan interpretasi atau kompilasi. Misalnya, Algol 60 dan Fortran memiliki keduanya telah ditafsirkan (meskipun mereka lebih biasanya disusun). Demikian pula, Jawa menunjukkan sulitnya mencoba menerapkan label ini untuk bahasa, bukan untuk implementasi; Java dikompilasi ke bytecode dan bytecode tersebut kemudian dieksekusi oleh salah interpretasi (di JVM) atau kompilasi (biasanya dengan compiler just-in-time seperti HotSpot, lagi dalam JVM). Selain itu, kompilasi, trans-kompilasi, dan interpretasi tidak terbatas hanya ketat deskripsi artefak compiler (executable biner atau IL perakitan).

Pembuat program atau programmer dewasa ini banyak yang menggunakan bahasa komputer tingkat tinggi untuk membuat program-program yang diinginkan karena sangat mudah dipahami. Namun sebelum bisa dijalankan di komputer, program tersebut haruslah diterjemahkan menjadi bahasa mesin terlebih dahulu. Maka dari itu pada perangkat pembuatan program dengan bahasa tingkat tinggi ada bagian yang bernama compiler. Tugas bagian ini adalah menerjemahkan perintah pada bahasa tingkat tinggi menjadi bahasa mesin, sehingga CPU dapat mengolah data berdasarkan perintah tersebut.

Sejarah singkat bahasa komputer
Perkembangan bahasa komputer tentu tak lepas dari perkembangan komputer itu sendiri. Bahasa komputer mulai dikembangkan pada saat penemuan komputer digital pertama, sekitar tahun 1940-an.Bahasa komputer yang termasuk dalam assembly language dikembangkan pada tahun 1950-an karena komputer mulai merambah ranah komersial. Contoh bahasa yang termasuk dalam golongan Assembly ini adalah ForTran (Formula Translation) yang dibuat oleh John Backus pada sekitar 1950-an hingga 1960-an.


Kemudian bahasa komputer dengan banyak penyempurnaan mulai dikembangkan seperti COBOL (Common Business Oriented Language) oleh Grace Hopper, LISP (List Proccesing) oleh John McCarthy.
Pada akhir tahun 1960-an muncul sebuah bahasa komputer yang diberi nama SIMULA dan setelah itu perkembangan bahasa komputer semakin pesat. Pada tahun 1970-an muncul banyak bahasa pemrograman yang terkenal, yakni ALOGOL, BASIC, PASCAL, C dan ADA. Perkembangan bahasa komputer semakin berkembang pesat seiring berkembangnya ilmu pengetahuan dan teknologi. Bahasa yang berkembang adalah BASIC, JAVA, C++ dan PASCAL. Pada awal 1990-an, diperkenalkan istilah IDE (Integrated Development Environment) yang menyatukan bahasa pemrograman dan GUI sehingga membuat program menjadi lebih mudah. Beberapa IDE yang terkenal adalah Visual Basic (bahasa BASIC), Borland Delphi (bahasa PASCAL) dan Eclipse (Bahasa Java).

Tidak ada komentar:

Posting Komentar