Hallo sobat, Informatics pada tutorial c++ yang pertama kita harus tahu terlebih dahulu mengenai bahasa pemrograman, sebelum kita belajar c++ lebih lanjut. Pada era modern saat ini komputer sangat cepat, dan akan semakin cepat setiap saat. Akan tetapi, komputer memiliki beberapa masalah yang signifikan. Mereka hanya memahami serangkaian perintah yang terbatas dan harus diberitahu dengan tepat apa yang harus dilakukan.
Sebuah program komputer (juga biasa disebut aplikasi) merupakan kumpulan instruksi yang komputer dapat melakukan beberapa tugas. Proses pembuatan program disebut pemrograman. Pemrograman biasanya membuat program dengan menghasilkan kode sumber (biasanya disingkat menjadi kode) yang merupakan daftar perintah yang diketik ke dalam satu atau lebih file teks.
Kumpulan bagian fisik komputer yang membentuk komputer dan menjalankan program disebut dengan perangkat keras. Ketika sebuah program komputer dimuat ke dalam memori dan perangkat keras secara berurutan mengeksekusi setiap instruksi, ini disebut menjalankan atau mengeksekusi program.
Bahasa Mesin
CPU komputer tidak mampu berbicara C++. Serangkaian instruksi terbatas yang dapat dipahami CPU secara langsung disebut kode mesin (atau bahasa mesin atau set instruksi).
Berikut adalah contoh instruksi bahasa mesin: 10110000 0110001
Kilas balik pada saat komputer pertama kali ditemukan, programmer harus menulis program secara langsung dalam bahasa mesin, yang merupakan hal yang sangat sulit dan memakan waktu untuk dilakukan.
Bagaiamana instruksi ini diatur berada di luar cakupan pendahuluan ini, tetapi sangat menarik untuk dicatat dua hal tersebut. Pertama, setap instruksi terdiri dari urutan 1 dan 0. Setiap individu 0 atau 1 disebut digit biner, atau bit untuk jangka pendek. Jumlah bit yang membentuk satu perintah bervariasi, misalnya, beberapa CPU memproses instruksi yang selalu sepanjang 32bit, sedangkan beberapa CPU lain (seperti keluarga x86) memiliki instruksi yang dapat berupa panjang variabel.
Kedua, setiap set digit biner ditafsikan oleh CPU menjadi perintah untuk melakukan pekerjaan yang sangat spesifik, seperti membandingkan dua angka ini, atau meletakkan angka ini di lokasi memori tersebut. Namun, karena CPU yang berbeda memiliki set instruksi yang berbeda, instruksi yang ditulis untuk satu jenis CPU tidak dapat digunakan pada CPU yang tidak berbagi set instruksi yang sama. Ini berarti program umumnya tidak portabel (dapat digunakan tanpa pengerjaan ulang besar-besaran) untuk berbagai jenis sistem, dan harus ditulis dari awal lagi
Bahasa Assembly
Karena bahasa mesin sangat sulit untuk dibaca dan dipahami manusia, bahasa assembly diciptakan. Dalam bahasa assembly, setiap instruksi diidentifikasi dengan singkatan (bukan satu set bit), dan nama dan nomor lain dapat digunakan.
Berikut adalah instruksi yang sama seperti di atas dalam bahasa assembly: mov al, 061h
Ini membuat perakitan lebih mudah dibaca dan ditulis daripada menggunakan bahasa mesin. Namun, CPU tidak dapat memahami bahasa assembly secara langsung. Sebaliknya, program assembly harus diterjemahkan ke dalam bahasa mesin sebelum dapat dieksekusi oleh komputer. Ini dilakukan dengan menggunakan program yang disebut assembler. Program yang ditulis dalam bahasa assembly cenderung sangat cepat, dan assembly masih digunakan sampai sekarang ketika kecepatan sangat penting.
Namun, assembly memiliki beberapa kelemahan. Pertama, bahasa assembly masih memerlukan banyak instruksi untuk melakukan tugas-tugas sederhana sekalipun. Sementara instruksi individu itu sendiri agar dapat dibaca manusia, memahami apa yang dilakukan seluruh program dapat menjadi tantangan (seperti mencoba memahami kalimat dengan melihat setiap huruf satu per satu). Kedua, bahasa assembly masih belum terlalu portabel, program yang ditulis dalam bahasa assembly untuk satu CPU kemungkinan besar tidak akan bekerja pada perangkat keras yang menggunakan set instruksi yang berbeda, dan harus ditulis ulang atau dimodifikasi secara ekstensif.
Bahasa Tingkat Tinggi
Untuk mengatasi permasalahan keterbacaan dan portabilitas, bahasa pemrograman baru seperti C,C++, Java, Javascript, PHP dan lain sebagainya. Bahasa ini disebut bahasa tingkat tinggi, karena dirancang untuk memungkinkan pemrograman untuk menulis program tanpa harus khawatir tentang jenis komputer yang menjalankan program.
Sama seperti program assembly, program yang ditulis dalam bahasa tingkat tinggi harus diterjemahkan ke dalam format yang dapat dipahami komputer sebelum dapat dijalankan. Ada dua cara utama untuk melakukan ini: Kompilasi dan Interpretasi.
Sebuah compiler adalah sebuah program yang membaca kode sumber dan menghasilkan program executable yang berdiri sendiri yang kemudian dapat dijalankan. Setelah kode anda diubah menjadi executable, Anda tidak memerlukan compiler untuk menjalankan program. Pada awalnya, kompiler primitif menghasilkan kode yang lambat dan tidak dioptimalkan. Namun, selama bertahun-tahun, kompiler menjadi sangat baik dalam menghasilkan kode yang cepat dan dioptimalkan, dan dalam beberapa kasus dapat melakukan pekerjaan yang lebih baik daripada yang dapat dilakukan manusia dalam bahasa assembly.
Berikut adalah representasi sederhana dari proses kompilasi:
Sebuah interpreter adalah program yang langsung mengeksekusi instruksi dalam kode sumber tanpa mengharuskan mereka untuk dikompilasi ke dalam executable pertama. Interpreter cenderung lebih fleksibel dibandingkan compiler, namun kurang efisien saat menjalankan program karena proses interpreting perlu dilakukan setiap kali program dijalankan. Artinya interpreter dibutuhkan setiap kali program dijalankan. Berikut adalah representasi sederhana dari proses interpretasi:
Sebagian besar bahasa dapat dikompilasi atau diinterpretasi, namun, bahasa tradisional seperti C,C++, dan pascal dikompilasi, sedangkan bahasa “scripting” seperti PHP dan Javascript cenderung ditafsirkan. Beberapa bahasa, seperti Java, menggunakan campuran keduanya.
Bahasa tingkat tinggi memiliki banyak properti yang diinginkan
Pertama, bahasa tingkat tinggi jauh lebih mudah dibaca dan ditulis karena perintahnya lebih dekat dengan bahasa alami yang kita gunakan setiap hari. Kedua, bahasa tingkat tinggi memerlukan lebih sedikit instruksi untuk melakukan tugas yang sama seperti bahasa tingkat rendah, membuat program lebih ringkas dan lebih mudah dipahami. Di C++ Anda dapat melakukan sesuatu seperti a = b * 2 + 5;
dalam satu baris. Dalam bahasa assembly, ini akan membutuhkan 5 atau 6 instruksi berbeda.
Ketiga, program dapat dikompilasi (atau diinterpretasikan) untuk banyak sistem yang berbeda, dan Anda tidak perlu mengubah program untuk berjalan pada CPU yang berbeda (Anda cukup mengkompilasi ulang untuk CPU tersebut). Sebagai contoh:
Ada dua pengecualian umum untuk portabilitas. Yang pertama adalah bahwa banyak sistem operasi, seperti Microsoft Windows, berisi kemampuan khusus platform yang dapat Anda gunakan dalam kode Anda. Ini dapat membuatnya lebih mudah untuk menulis program untuk sistem operasi tertentu, tetapi dengan mengorbankan portabilitas.
Perbedaan Bahasa Yang Dikompilasi dan Diinterpretasi
Secara umum , kompiler menawarkan keuntungan sebagai berikut:
- Karena mereka dapat melihat semua kode di awal, mereka dapat melakukan sejumlah analisis dan pengoptimalan saat membuat kode yang membuat versi final kode dieksekusi lebih cepat daripada hanya menafsirkan setiap baris satu per satu.
- Kompiler sering dapat menghasilkan kode tingkat rendah yang melakukan setara dengan ide tingkat tinggi seperti “dynamic dispatch” atau “inheritance” dalam hal pencarian memori di dalam tabel. Ini berarti bahwa program yang dihasilkan perlu mengingat lebih sedikit informasi tentang kode asli, menurunkan penggunaan memori dari program yang dihasilkan.
- Kode yang dikompilasi umumnya lebih cepat daripada kode yang ditafsirkan karena instruksi yang dieksekusi biasanya hanya untuk program itu sendiri, daripada program itu sendiri ditambah overhead dari interpreter.
Secara umum, compiler memiliki kelemahan sebagai berikut:
- Beberapa fitur bahasa, seperti pengetikan dinamis, sulit untuk dikompilasi secara efisien karena kompilator tidak dapat memprediksi apa yang akan terjadi sampai program benar-benar dijalankan. Ini berarti bahwa kompiler mungkin tidak menghasilkan kode yang sangat baik.
- Kompiler umumnya memiliki waktu “start-up” yang lama karena biaya untuk melakukan semua analisis yang mereka lakukan. Ini berarti bahwa dalam pengaturan seperti browser web di mana penting untuk memuat kode dengan cepat, kompiler mungkin lebih lambat karena mereka mengoptimalkan kode pendek yang tidak akan dijalankan berkali-kali.
Secara umum , interpreter memiliki keuntungan sebagai berikut:
- Karena mereka dapat membaca kode seperti yang tertulis dan tidak perlu melakukan operasi mahal untuk menghasilkan atau mengoptimalkan kode, mereka cenderung memulai lebih cepat daripada kompiler.
- Karena interpreter dapat melihat apa yang dilakukan program saat berjalan, interpreter dapat menggunakan sejumlah optimisasi dinamis yang mungkin tidak dapat dilihat oleh kompiler.
Secara umum , interpreter memiliki kelemahan sebagai berikut:
- Interpreter biasanya memiliki penggunaan memori yang lebih tinggi daripada compiler karena interpreter perlu menyimpan lebih banyak informasi tentang program yang tersedia saat runtime.
- Interpreter biasanya menghabiskan waktu CPU di dalam kode untuk interpreter, yang dapat memperlambat program yang sedang dijalankan.
Cukup sekian materi tentang “Mengenal Bahasa Pemrograman” semoga dapat dipahami, dan apabila ada yang ingin ditanyakan silahkan untuk bertanya di kolom komentar. Terimakasih
Leave a Reply