Skip to main content
Si Ipung

follow us

Stay home but let your heart should be in a spirit of prayer.

Bahasa Pemrograman adalah bahasa yang rumit ? Yuk pelajari selengkapnya

Bahasa Pemrogramanan adalah bahasa komputer yang sulit dipahami ? yuk pelajari selengkapnya di siipung.com

Pengertian Bahasa Pemrograman

Bahasa pemrograman adalah sekumpulan perintah, instruksi, dan sintaks lainnya yang digunakan untuk membuat program perangkat lunak . Bahasa yang digunakan pemrogram untuk menulis kode disebut "bahasa tingkat tinggi". Kode ini dapat dikompilasi menjadi "bahasa tingkat rendah", yang dikenali langsung oleh perangkat keras komputer.

Bahasa tingkat tinggi dirancang agar mudah dibaca dan dipahami. Ini memungkinkan pemrogram untuk menulis kode sumber secara alami, menggunakan kata-kata dan simbol yang logis. Misalnya, kata-kata khusus seperti function , while , if , dan else digunakan di sebagian besar bahasa pemrograman utama. Simbol seperti < , > , == , dan ! = Adalah operator umum. Banyak bahasa tingkat tinggi yang cukup mirip sehingga pemrogram dapat dengan mudah memahami kode sumber yang ditulis dalam berbagai bahasa.

Contoh bahasa tingkat tinggi termasuk C ++ , Java , Perl , dan PHP . Bahasa seperti C ++ dan Java disebut "bahasa yang dikompilasi" karena kode sumber harus dikompilasi terlebih dahulu agar dapat dijalankan. Bahasa seperti Perl dan PHP disebut "bahasa yang ditafsirkan" karena kode sumber dapat dijalankan melalui penerjemah tanpa harus dikompilasi. Umumnya, bahasa yang dikompilasi digunakan untuk membuat aplikasi perangkat lunak , sedangkan bahasa interpretasi digunakan untuk menjalankan skrip , seperti yang digunakan untuk menghasilkan konten untuk situs web dinamis .

Bahasa tingkat rendah termasuk bahasa perakitan dan mesin. Bahasa assembly berisi daftar instruksi dasar dan jauh lebih sulit dibaca daripada bahasa tingkat tinggi. Dalam kasus yang jarang terjadi, seorang programmer dapat memutuskan untuk membuat kode program dasar dalam bahasa assembly untuk memastikannya beroperasi seefisien mungkin. Assembler dapat digunakan untuk menerjemahkan kode assembly menjadi kode mesin. Kode mesin, atau bahasa mesin, berisi serangkaian kode biner yang dipahami langsung oleh CPU komputer . Tak perlu dikatakan, bahasa mesin tidak dirancang agar dapat dibaca manusia.

Baca juga : Contoh Pseudocode


Sejarah Bahasa Pemrograman

Perkembangan awal 

Sejarah perkembangan awal bahasa pemrograman adalah : Komputer yang sangat awal, seperti Colossus , diprogram tanpa bantuan program yang tersimpan , dengan memodifikasi sirkuitnya atau mengatur bank kontrol fisik.

Beberapa saat kemudian, program dapat ditulis dalam bahasa mesin , di mana programmer menulis setiap instruksi dalam bentuk numerik yang dapat dieksekusi oleh perangkat keras secara langsung. Misalnya, instruksi untuk menambahkan nilai di dua lokasi memori mungkin terdiri dari 3 angka: "opcode" yang memilih operasi "tambah", dan dua lokasi memori. Program, dalam bentuk desimal atau biner, dibaca dari kartu berlubang , pita kertas, pita magnetik , atau sakelar di panel depan komputer. Bahasa mesin kemudian disebut bahasa pemrograman generasi pertama (1GL).

Langkah selanjutnya adalah pengembangan apa yang disebut bahasa pemrograman generasi kedua (2GL) atau bahasa assembly , yang masih terikat erat dengan arsitektur set instruksi dari komputer tertentu. Ini berfungsi untuk membuat program lebih mudah dibaca manusia dan membebaskan programmer dari penghitungan alamat yang membosankan dan rawan kesalahan.

Bahasa pemrograman tingkat tinggi pertama , atau bahasa pemrograman generasi ketiga (3GL), ditulis pada tahun 1950-an. Bahasa pemrograman tingkat tinggi awal yang akan dirancang untuk komputer adalah Plankalk├╝l , dikembangkan untuk Z3 Jerman oleh Konrad Zuse antara tahun 1943 dan 1945. Namun, itu tidak diterapkan sampai tahun 1998 dan 2000. 

John Mauchly 's Kode pendek , diusulkan pada tahun 1949, adalah salah satu bahasa tingkat tinggi pertama yang pernah dikembangkan untuk komputer elektronik. Tidak seperti kode mesin , pernyataan Kode Pendek mewakili ekspresi matematika dalam bentuk yang dapat dimengerti. Namun, program harus diterjemahkan ke dalam kode mesin setiap kali dijalankan, membuat prosesnya jauh lebih lambat daripada menjalankan kode mesin yang setara.

Di University of Manchester , Alick Glennie mengembangkan Autocode pada awal 1950-an. Sebagai bahasa pemrograman , ia menggunakan kompiler untuk secara otomatis mengubah bahasa menjadi kode mesin. Kode dan kompiler pertama dikembangkan pada tahun 1952 untuk komputer Mark 1 di Universitas Manchester dan dianggap sebagai bahasa pemrograman tingkat tinggi yang dikompilasi pertama kali . 

Autocode kedua dikembangkan untuk Mark 1 oleh RA Brooker pada tahun 1954 dan disebut "Mark 1 Autocode". Brooker juga mengembangkan autocode untuk Ferranti Mercury pada 1950-an dalam hubungannya dengan University of Manchester. Versi untuk EDSAC 2 dirancang oleh DF Hartley dari Laboratorium Matematika Universitas Cambridge pada tahun 1961. Dikenal sebagai Autocode EDSAC 2, ini merupakan pengembangan langsung dari Autocode Mercury yang diadaptasi untuk keadaan lokal dan terkenal karena pengoptimalan kode objek dan bahasa sumbernya diagnostik yang maju untuk saat itu. Sebuah utas perkembangan kontemporer tetapi terpisah, Atlas Autocode dikembangkan untuk Universitas ManchesterMesin Atlas 1 .

Pada tahun 1954, FORTRAN ditemukan di IBM oleh John Backus . Ini adalah bahasa pemrograman tujuan umum tingkat tinggi tingkat tinggi pertama yang digunakan secara luas untuk memiliki implementasi fungsional, bukan hanya desain di atas kertas. Bahasa ini masih menjadi bahasa populer untuk komputasi berkinerja tinggi dan digunakan untuk program yang mengukur dan memberi peringkat pada superkomputer tercepat di dunia. 

Bahasa pemrograman awal lainnya dibuat oleh Grace Hopper di AS, yang disebut FLOW-MATIC . Ini dikembangkan untuk UNIVAC I di Remington Rand selama periode 1955 hingga 1959. Hopper menemukan bahwa pelanggan pemrosesan data bisnis merasa tidak nyaman dengan notasi matematika, dan pada awal 1955, dia dan timnya menulis spesifikasi untuk bahasa pemrograman Inggris dan mengimplementasikannya. sebuah prototipe.  Kompiler FLOW-MATIC menjadi tersedia untuk umum pada awal 1958 dan secara substansial selesai pada tahun 1959.  FLOW-MATIC adalah pengaruh besar dalam desain COBOL , karena hanya itu dan keturunan langsungnya AIMACObenar-benar digunakan pada saat itu. 


Persempit 

Meningkatnya penggunaan bahasa tingkat tinggi memperkenalkan persyaratan untuk bahasa pemrograman tingkat rendah atau bahasa pemrograman sistem . Bahasa-bahasa ini, dengan derajat yang berbeda-beda, menyediakan fasilitas antara bahasa rakitan dan bahasa tingkat tinggi. Mereka dapat digunakan untuk melakukan tugas-tugas yang memerlukan akses langsung ke fasilitas perangkat keras tetapi tetap menyediakan struktur kontrol tingkat tinggi dan pengecekan kesalahan.

Periode dari 1960-an hingga akhir 1970-an membawa perkembangan paradigma bahasa utama yang sekarang digunakan:

APL memperkenalkan pemrograman array dan mempengaruhi pemrograman fungsional . 

ALGOL menyempurnakan pemrograman prosedural terstruktur dan disiplin spesifikasi bahasa ; "Laporan Revisi pada Bahasa Algoritmik ALGOL 60 " menjadi model bagaimana spesifikasi bahasa selanjutnya ditulis.

Lisp , diimplementasikan pada tahun 1958, adalah bahasa pemrograman fungsional pertama yang diketik secara dinamis .

Pada 1960-an, Simula adalah bahasa pertama yang dirancang untuk mendukung pemrograman berorientasi objek ; pada pertengahan 1970-an, Smalltalk mengikuti dengan bahasa berorientasi objek "murni" pertama.

C dikembangkan antara 1969 dan 1973 sebagai bahasa pemrograman sistem untuk sistem operasi Unix dan tetap populer. 

Prolog , dirancang pada tahun 1972, adalah bahasa pemrograman logika pertama .

Pada tahun 1978, ML membangun sistem tipe polimorfik di atas Lisp , memelopori bahasa pemrograman fungsional yang diketik secara statis .

Masing-masing bahasa ini melahirkan keturunan, dan sebagian besar bahasa pemrograman modern menghitung setidaknya satu dari mereka dalam nenek moyang mereka.

Tahun 1960-an dan 1970-an juga melihat banyak perdebatan tentang manfaat pemrograman terstruktur , dan apakah bahasa pemrograman harus dirancang untuk mendukungnya. Edsger Dijkstra , dalam sebuah surat terkenal tahun 1968 yang diterbitkan di Communications of the ACM , menyatakan bahwa pernyataan Goto harus dihilangkan dari semua bahasa pemrograman "tingkat yang lebih tinggi".


Konsolidasi dan Pertumbuhan

Tahun 1980-an adalah tahun-tahun konsolidasi relatif. C ++ menggabungkan pemrograman berorientasi objek dan sistem. Ada standar pemerintah Amerika Serikat , bahasa pemrograman sistem yang berasal dari Pascal dan dimaksudkan untuk digunakan oleh kontraktor pertahanan. Di Jepang dan tempat lain, sejumlah besar uang dihabiskan untuk menyelidiki apa yang disebut bahasa "generasi kelima" yang menggabungkan konstruksi pemrograman logika. Komunitas bahasa fungsional pindah ke standarisasi ML dan Lisp. Alih-alih menciptakan paradigma baru, semua gerakan ini mengembangkan ide-ide yang ditemukan pada dekade sebelumnya.

Salah satu tren penting dalam desain bahasa untuk pemrograman sistem skala besar selama 1980-an adalah peningkatan fokus pada penggunaan modul atau unit kode organisasi skala besar. Modula-2 , Ada, dan ML semuanya mengembangkan sistem modul penting pada tahun 1980-an, yang sering dikaitkan dengan konstruksi pemrograman generik .

Pertumbuhan pesat Internet pada pertengahan 1990-an menciptakan peluang untuk bahasa baru. Perl , awalnya alat skrip Unix yang pertama kali dirilis pada tahun 1987, menjadi umum di situs web dinamis . Java kemudian digunakan untuk pemrograman sisi server, dan mesin virtual bytecode menjadi populer lagi dalam pengaturan komersial dengan janji mereka " Tulis sekali, jalankan di mana saja " ( UCSD Pascal telah populer untuk sementara waktu di awal 1980-an). Perkembangan ini pada dasarnya tidak baru; sebaliknya, mereka adalah penyempurnaan dari banyak bahasa dan paradigma yang ada (walaupun sintaksnya sering kali didasarkan pada keluarga C bahasa pemrograman).

Evolusi bahasa pemrograman terus berlanjut, baik dalam industri maupun penelitian. Arahan saat ini termasuk verifikasi keamanan dan keandalan , jenis baru modularitas ( mixin , delegasi , aspek ), dan integrasi database seperti Microsoft's LINQ .

Bahasa pemrograman generasi keempat (4GL) adalah bahasa pemrograman komputer yang bertujuan untuk memberikan tingkat abstraksi yang lebih tinggi dari detail perangkat keras komputer internal daripada 3GL. Bahasa pemrograman generasi kelima (5GL) adalah bahasa pemrograman yang didasarkan pada pemecahan masalah menggunakan batasan yang diberikan pada program, daripada menggunakan algoritma yang ditulis oleh pemrogram.


Fungsi Bahasa Pemrograman

Sebuah bahasa pemrograman adalah bahasa yang digunakan untuk menulis program, yang melibatkan perangkat melakukan beberapa jenis perhitungan atau algoritma dan mungkin mengontrol perangkat eksternal seperti printer, disk drive, robot, dan sebagainya. Misalnya, PostScript program sering dibuat oleh program lain untuk mengontrol printer atau layar komputer. Secara lebih umum, bahasa pemrograman dapat mendeskripsikan komputasi pada beberapa, mungkin abstrak, mesin. Secara umum diterima bahwa spesifikasi lengkap untuk bahasa pemrograman mencakup deskripsi, mungkin diidealkan, dari mesin atau prosesor untuk bahasa itu. Dalam kebanyakan konteks praktis, bahasa pemrograman melibatkan komputer; akibatnya, bahasa pemrograman biasanya didefinisikan dan dipelajari dengan cara ini. Bahasa pemrograman berbeda dari bahasa alami karena bahasa alami hanya digunakan untuk interaksi antar manusia, sedangkan bahasa pemrograman juga memungkinkan manusia untuk mengkomunikasikan instruksi ke mesin.


Elemen Bahasa Pemrograman

Sintaks

Sintaks bahasa pemrograman adalah bentuk permukaan dikenal sebagai sintaksnya . Kebanyakan bahasa pemrograman murni tekstual; mereka menggunakan urutan teks termasuk kata, angka, dan tanda baca, seperti bahasa alami tertulis. Di sisi lain, ada beberapa bahasa pemrograman yang lebih bersifat grafis , menggunakan hubungan visual antar simbol untuk menentukan program.

Sintaks bahasa menjelaskan kemungkinan kombinasi simbol yang membentuk program yang benar secara sintaksis. Makna yang diberikan untuk kombinasi simbol ditangani oleh semantik (baik formal atau hard-code dalam implementasi referensi ). Karena sebagian besar bahasa bersifat tekstual, artikel ini membahas sintaks tekstual.

Sintaks bahasa pemrograman biasanya didefinisikan menggunakan kombinasi ekspresi reguler (untuk struktur leksikal ) dan bentuk Backus-Naur (untuk struktur tata bahasa ). Di bawah ini adalah tata bahasa sederhana, berdasarkan Lisp :

ekspresi :: = atom | daftar 

atom        :: = nomor | 

nomor      simbol :: = [+ -]? ['0' - '9'] + 

simbol      :: = ['A' - 'Z''a' - 'z']. * 

list        :: = '(' ekspresi * ')'

Tata bahasa ini menentukan yang berikut:

  • sebuah ekspresi bisa berupa atom atau daftar ;
  • sebuah atom adalah baik nomor atau simbol ;
  • sebuah nomor adalah urutan tak terputus dari satu atau lebih angka desimal, opsional diawali dengan tanda plus atau minus;
  • sebuah simbol adalah surat yang diikuti oleh nol atau lebih karakter (termasuk spasi); dan
  • sebuah daftar adalah sepasang cocok kurung, dengan nol atau lebih ekspresi di dalamnya.


Semantik 

Istilah semantik mengacu pada arti bahasa, sebagai lawan dari bentuknya ( sintaksis ).

Semantik statis 

Semantik statis bahasa pemrograman adalah batasan pada struktur teks valid yang sulit atau tidak mungkin untuk diungkapkan dalam formalisme sintaksis standar. Untuk bahasa yang dikompilasi, semantik statis pada dasarnya menyertakan aturan semantik yang dapat diperiksa pada waktu kompilasi. Contohnya termasuk memeriksa bahwa setiap pengenal dideklarasikan sebelum digunakan (dalam bahasa yang memerlukan deklarasi seperti itu) atau bahwa label pada lengan pernyataan kasus berbeda. Banyak batasan penting dari jenis ini, seperti memeriksa bahwa pengenal digunakan dalam konteks yang sesuai (misalnya tidak menambahkan integer ke nama fungsi), atau subrutin itupanggilan memiliki jumlah dan jenis argumen yang sesuai, dapat diterapkan dengan mendefinisikannya sebagai aturan dalam logika yang disebut sistem tipe . Bentuk lain dari analisis statis seperti analisis aliran data juga dapat menjadi bagian dari semantik statis. Bahasa pemrograman yang lebih baru seperti Java dan C # memiliki analisis tugas yang pasti , suatu bentuk analisis aliran data, sebagai bagian dari semantik statisnya.


Semantik dinamis 

Setelah data ditentukan, mesin harus diinstruksikan untuk melakukan operasi pada data. Misalnya, semantik dapat menentukan strategi yang digunakan untuk mengevaluasi ekspresi ke nilai, atau cara struktur kontrol mengeksekusi pernyataan secara bersyarat . Dinamis semantik (juga dikenal sebagai semantik eksekusi ) dari mendefinisikan bahasa bagaimana dan kapan berbagai konstruksi dari bahasa harus menghasilkan perilaku program yang. Ada banyak cara untuk mendefinisikan semantik eksekusi. Bahasa natural sering digunakan untuk menentukan semantik eksekusi bahasa yang biasa digunakan dalam praktek. Sejumlah besar penelitian akademis masuk ke semantik formal bahasa pemrograman, yang memungkinkan semantik eksekusi ditentukan secara formal. Hasil dari bidang penelitian ini telah melihat penerapan terbatas pada desain dan implementasi bahasa pemrograman di luar akademisi.


Ketik sistem 

Sistem tipe bahasa pemrograman adalah mendefinisikan bagaimana bahasa pemrograman mengklasifikasikan nilai dan ekspresi ke dalam tipe , bagaimana ia dapat memanipulasi tipe tersebut dan bagaimana mereka berinteraksi. Tujuan dari sistem tipe adalah untuk memverifikasi dan biasanya menegakkan tingkat kebenaran tertentu dalam program yang ditulis dalam bahasa tersebut dengan mendeteksi operasi yang salah. Setiap decidable jenis sistem melibatkan trade-off: sementara itu menolak banyak program yang salah, ia juga bisa melarang beberapa yang benar, meskipun program yang tidak biasa. Untuk melewati sisi negatif ini, sejumlah bahasa memiliki celah jenis , biasanya cast yang tidak dicentang dapat digunakan oleh pemrogram untuk secara eksplisit mengizinkan operasi yang biasanya tidak diizinkan di antara jenis yang berbeda. Dalam kebanyakan bahasa yang diketik, sistem tipe hanya digunakan untukprogram pemeriksaan tipe , tetapi sejumlah bahasa, biasanya yang fungsional, menyimpulkan tipe , membebaskan programmer dari kebutuhan untuk menulis anotasi tipe. Desain formal dan studi sistem tipe dikenal sebagai teori tipe .


Bahasa yang diketik versus yang tidak 

Bahasa diketik jika spesifikasi setiap operasi menentukan jenis data yang dapat diterapkan operasi tersebut. Misalnya, data yang direpresentasikan oleh "this text between the quotes"adalah string , dan dalam banyak bahasa pemrograman, membagi angka dengan string tidak memiliki arti dan tidak akan dieksekusi. Operasi yang tidak valid dapat dideteksi ketika program dikompilasi (pemeriksaan tipe "statis") dan akan ditolak oleh kompilator dengan pesan kesalahan kompilasi, atau dapat dideteksi saat program berjalan (pemeriksaan tipe "dinamis"), mengakibatkan dalam pengecualian waktu proses . Banyak bahasa mengizinkan fungsi yang disebut pengendali pengecualian untuk menangani pengecualian ini dan, misalnya, selalu mengembalikan "-1" sebagai hasilnya.

Kasus khusus bahasa yang diketik adalah bahasa yang diketik tunggal . Ini sering berupa bahasa skrip atau markup, seperti REXX atau SGML , dan hanya memiliki satu tipe data [ meragukan - diskusikan ] –— paling umum string karakter yang digunakan untuk data simbolik dan numerik.

Sebaliknya, bahasa tanpa tipe , seperti kebanyakan bahasa assembly , memungkinkan operasi apa pun dilakukan pada data apa pun, umumnya urutan bit dengan berbagai panjang.  Bahasa tingkat tinggi tanpa tipe termasuk BCPL , Tcl , dan beberapa jenis Forth .

Dalam praktiknya, sementara beberapa bahasa dianggap diketik dari teori tipe (memverifikasi atau menolak semua operasi), sebagian besar bahasa modern menawarkan tingkat pengetikan.  Banyak bahasa produksi menyediakan cara untuk melewati atau menumbangkan sistem tipe, perdagangan tipe-keamanan untuk kontrol yang lebih baik atas eksekusi program (lihat casting ).


Pengetikan statis versus dinamis 

Dalam pengetikan statis , semua ekspresi memiliki tipenya yang ditentukan sebelum program dijalankan, biasanya pada waktu kompilasi. Misalnya, 1 dan (2 + 2) adalah ekspresi integer; mereka tidak bisa diteruskan ke fungsi yang mengharapkan string, atau disimpan dalam variabel yang ditentukan untuk menyimpan tanggal. 

Bahasa yang diketik secara statis dapat diketik secara nyata atau disimpulkan . Dalam kasus pertama, programmer harus secara eksplisit menulis tipe pada posisi tekstual tertentu (misalnya, pada deklarasi variabel ). Dalam kasus kedua, kompilator menyimpulkan jenis ekspresi dan deklarasi berdasarkan konteks. Kebanyakan bahasa utama yang diketik secara statis, seperti C ++ , C # dan Java , diketik secara nyata. Jenis inferensi lengkap secara tradisional dikaitkan dengan bahasa yang kurang umum, seperti Haskell dan ML . Namun, banyak bahasa yang diketik secara nyata mendukung inferensi tipe parsial; sebagai contoh,C ++ , Java dan C # semua tipe menyimpulkan dalam kasus terbatas tertentu. Selain itu, beberapa bahasa pemrograman memungkinkan beberapa jenis secara otomatis dikonversi ke jenis lain; misalnya, int dapat digunakan di mana program mengharapkan float.

Pengetikan dinamis , juga disebut pengetikan laten , menentukan jenis-keamanan operasi pada waktu proses; dengan kata lain, tipe dikaitkan dengan nilai run-time daripada ekspresi tekstual .  Seperti halnya bahasa tipe-inferensi, bahasa yang diketik secara dinamis tidak memerlukan pemrogram untuk menulis anotasi tipe eksplisit pada ekspresi. Antara lain, ini memungkinkan satu variabel untuk merujuk ke nilai dari tipe yang berbeda pada titik yang berbeda dalam eksekusi program. Namun, kesalahan jenistidak dapat dideteksi secara otomatis hingga sepotong kode benar-benar dijalankan, berpotensi membuat debugging menjadi lebih sulit. Lisp , Smalltalk, Perl , Python , JavaScript , dan Ruby adalah contoh bahasa yang diketik secara dinamis.


Pengetikan lemah dan kuat 

Pengetikan yang lemah memungkinkan nilai dari satu jenis diperlakukan sebagai jenis lainnya, misalnya memperlakukan string sebagai angka. Ini kadang-kadang dapat berguna, tetapi juga dapat memungkinkan beberapa jenis kesalahan program tidak terdeteksi pada waktu kompilasi dan bahkan pada waktu berjalan .

Pengetikan yang kuat mencegah kesalahan program ini. Upaya untuk melakukan operasi pada jenis nilai yang salah menimbulkan kesalahan.  bahasa Sangat mengetik sering disebut jenis-aman atau safe .

Definisi alternatif untuk "weakly typed" merujuk ke bahasa, seperti Perl dan JavaScript , yang mengizinkan konversi jenis implisit dalam jumlah besar. Dalam JavaScript, misalnya, ekspresi 2 * ximplisit mengkonversi xke nomor, dan konversi ini berhasil bahkan jika x adalah null, undefined, seorang Array, atau serangkaian huruf. Konversi implisit seperti itu sering kali berguna, tetapi dapat menutupi kesalahan pemrograman. Kuat dan statis sekarang umumnya dianggap sebagai konsep ortogonal, tetapi penggunaannya dalam literatur berbeda. Beberapa menggunakan istilah yang diketik dengan kuat untuk mengartikan dengan kuat, diketik secara statis , atau, yang lebih membingungkan lagi, berarti sederhanadiketik secara statis . Jadi C disebut diketik kuat dan diketik lemah, diketik statis.

Mungkin tampak aneh bagi beberapa programmer profesional bahwa C dapat "diketik dengan lemah dan statis". Namun, perhatikan bahwa penggunaan pointer generik, void * pointer, memungkinkan untuk mentransmisikan pointer ke pointer lain tanpa perlu melakukan cast eksplisit. Ini sangat mirip dengan mentransmisikan array byte ke jenis data apa pun di C tanpa menggunakan pemeran eksplisit, seperti (int)atau (char).


Perpustakaan standar dan sistem run-time 

Sebagian besar bahasa pemrograman memiliki pustaka inti terkait (kadang-kadang dikenal sebagai 'pustaka standar', terutama jika disertakan sebagai bagian dari standar bahasa yang diterbitkan), yang secara konvensional tersedia oleh semua implementasi bahasa. Pustaka inti biasanya menyertakan definisi untuk algoritme yang umum digunakan, struktur data, dan mekanisme untuk input dan output.

Garis antara bahasa dan pustaka intinya berbeda dari bahasa ke bahasa. Dalam beberapa kasus, desainer bahasa mungkin memperlakukan perpustakaan sebagai entitas terpisah dari bahasa. Namun, pustaka inti suatu bahasa sering kali diperlakukan sebagai bagian dari bahasa oleh penggunanya, dan beberapa spesifikasi bahasa bahkan mengharuskan pustaka ini tersedia di semua implementasi. Memang, beberapa bahasa dirancang sedemikian rupa sehingga makna dari konstruksi sintaksis tertentu bahkan tidak dapat dijelaskan tanpa mengacu pada pustaka inti. Misalnya, di Java , string literal didefinisikan sebagai turunan dari java.lang.Stringkelas; Demikian pula, di Smalltalk , ekspresi fungsi anonim ("blok") membuat instance kelas perpustakaan BlockContext. Sebaliknya,Skema berisi beberapa subset yang koheren yang cukup untuk membangun sisa bahasa sebagai makro perpustakaan, dan desainer bahasa bahkan tidak repot-repot mengatakan bagian bahasa mana yang harus diimplementasikan sebagai konstruksi bahasa, dan mana yang harus diimplementasikan sebagai bagian dari sebuah Perpustakaan.

Baca juga : XAMPP mudahnya membuat web server

 

Level Bahasa Pemrograman

1. Bahasa tingkat rendah

Level tingkat rendah bahasa pemrograman adalah bahasa pemrograman yang tidak menyediakan abstraksi dari perangkat keras, dan direpresentasikan dalam bentuk 0 atau 1, yang merupakan instruksi mesin. Bahasa yang termasuk dalam kategori ini adalah bahasa level Mesin dan bahasa Assembly.


Bahasa tingkat mesin

Tingkat mesin bahasa pemrograman adalah bahasa yang terdiri dari sekumpulan instruksi yang berada dalam bentuk biner 0 atau 1. Seperti yang kita ketahui bahwa komputer hanya dapat memahami instruksi mesin saja yang berada dalam digit biner yaitu 0 dan 1, sehingga instruksi yang diberikan ke komputer hanya dapat dalam kode biner. Membuat program dalam bahasa level mesin adalah tugas yang sangat sulit karena tidak mudah bagi pemrogram untuk menulis program dalam instruksi mesin. Rawan kesalahan karena tidak mudah dipahami, dan pemeliharaannya juga sangat tinggi. Bahasa tingkat mesin tidak portabel karena setiap komputer memiliki instruksi mesinnya sendiri, jadi jika kita menulis program di satu komputer tidak akan berlaku lagi di komputer lain.

Arsitektur prosesor yang berbeda menggunakan kode mesin yang berbeda, misalnya, prosesor PowerPC berisi arsitektur RISC, yang memerlukan kode berbeda dari prosesor intel x86, yang memiliki arsitektur CISC.


Bahasa campuran

Bahasa campuran dalam bahasa pemrograman adalah bahasa assembly berisi beberapa perintah yang dapat dibaca manusia seperti mov, add, sub, dll. Masalah yang kami hadapi dalam bahasa tingkat mesin dikurangi sampai batas tertentu dengan menggunakan bentuk bahasa tingkat mesin yang diperluas yang dikenal sebagai bahasa assembly. Karena instruksi bahasa assembly ditulis dalam kata-kata bahasa Inggris seperti mov, add, sub, sehingga lebih mudah untuk ditulis dan dipahami.

Seperti yang kita ketahui bahwa komputer hanya dapat memahami instruksi level mesin, maka dibutuhkan penerjemah yang mengubah kode assembly tersebut menjadi kode mesin. Penerjemah yang digunakan untuk menerjemahkan kode tersebut dikenal sebagai assembler

Kode bahasa assembly tidak portabel karena data disimpan di register komputer, dan komputer harus mengetahui set register yang berbeda.

Kode assembly tidak lebih cepat dari kode mesin karena bahasa assembly berada di atas bahasa mesin dalam hierarki, jadi itu berarti bahasa assembly memiliki beberapa abstraksi dari perangkat keras sementara bahasa mesin memiliki abstraksi nol.


2. Bahasa Tingkat Tinggi

Level tingkat tinggi bahasa pemrograman adalah bahasa pemrograman yang memungkinkan programmer untuk menulis program yang tidak tergantung pada jenis komputer tertentu. Bahasa tingkat tinggi dianggap sebagai bahasa tingkat tinggi karena lebih dekat dengan bahasa manusia daripada bahasa tingkat mesin.

Saat menulis program dalam bahasa tingkat tinggi, maka seluruh perhatian perlu diberikan pada logika masalah.

Kompiler diperlukan untuk menerjemahkan bahasa tingkat tinggi ke bahasa tingkat rendah.

Keuntungan dari bahasa tingkat tinggi

Bahasa tingkat tinggi mudah dibaca, ditulis, dan dipelihara karena ditulis dalam bahasa Inggris seperti kata-kata.

Bahasa tingkat tinggi dirancang untuk mengatasi keterbatasan bahasa tingkat rendah, yaitu portabilitas. Bahasa tingkat tinggi bersifat portabel; yaitu, bahasa-bahasa ini tidak bergantung pada mesin.

Lihat juga : Framework dalam pemrograman web


Contoh Bahasa Pemrograman

Bahasa Pemrograman sangatlah banyak jenisnya dengan berbagai kelebihan serta kekurangannya masing-masing, disini siipung.com akan berikan contoh bahasa pemrograman yang umum digunakan beserta rangkingnya.

Jan 2021 Jan 2020 Programming Language Ratings Change
1 2 C 17.38% +1.61%
2 1 Java 11.96% -4.93%
3 3 Python 11.72% +2.01%
4 4 C++ 7.56% +1.99%
5 5 C# 3.95% -1.40%
6 6 Visual Basic 3.84% -1.44%
7 7 JavaScript 2.20% -0.25%
8 8 PHP 1.99% -0.41%
9 18 R 1.90% +1.10%
10 23 Groovy 1.84% +1.23%
11 15 Assembly language 1.64% +0.76%
12 10 SQL 1.61% +0.10%
13 9 Swift 1.43% -0.36%
14 14 Go 1.41% +0.51%
15 11 Ruby 1.30% +0.24%
16 20 MATLAB 1.15% +0.41%
17 19 Perl 1.02% +0.27%
18 13 Objective-C 1.00% +0.07%
19 12 Delphi/Object Pascal 0.79% -0.20%
20 16 Classic Visual Basic 0.79% -0.04%

Sekian artikel dari siipung.com tentang bahasa pemrograman, semoga bermanfaat dan jangan lupa bagikan artikel ini.

You Might Also Like:

Comment Policy: Silahkan tuliskan komentar Anda yang sesuai dengan topik postingan halaman ini. Komentar yang berisi tautan tidak akan ditampilkan sebelum disetujui.
Buka Komentar