Bahasa
pemrograman atau sering
diistilahkan juga dengan bahasa komputer, adalah teknik komando/instruksi
standar untuk memerintah komputer. Bahasa pemrograman ini merupakan
suatu himpunan dari aturan sintaks dan semantik yang dipakai
untuk mendefinisikan program komputer. Bahasa ini memungkinkan seorang
programmer dapat menentukan secara persis data mana yang akan diolah oleh
komputer, bagaimana data ini akan disimpan/diteruskan, dan jenis langkah apa secara persis yang akan diambil
dalam berbagai situasi.
Menurut tingkat kedekatannya dengan
mesin komputer, bahasa pemrograman terdiri dari:
- Bahasa
Mesin, yaitu memberikan perintah kepada komputer dengan
memakai kode bahasa biner, contohnya 01100101100110
- Bahasa
Tingkat Rendah, atau dikenal dengan istilah bahasa rakitan (bah.Inggris Assembly), yaitu memberikan perintah
kepada komputer dengan memakai kode-kode singkat (kode mnemonic),
contohnya MOV, SUB, CMP, JMP, JGE, JL, LOOP, dsb.
- Bahasa
Tingkat Menengah, yaitu bahasa komputer yang memakai campuran instruksi
dalam kata-kata bahasa manusia (lihat contoh Bahasa Tingkat Tinggi di
bawah) dan instruksi yang bersifat simbolik, contohnya {, }, ?,
<<, >>, &&, ||, dsb.
- Bahasa
Tingkat Tinggi, yaitu bahasa komputer yang memakai instruksi berasal dari
unsur kata-kata bahasa manusia, contohnya begin, end, if, for, while, and,
or, dsb.
Sebagian besar bahasa pemrograman
digolongkan sebagai Bahasa Tingkat Tinggi, hanya bahasa C yang digolongkan
sebagai Bahasa Tingkat Menengah dan Assembly yang merupakan Bahasa Tingkat
Rendah.
Pemrograman adalah
proses menulis, menguji dan memperbaiki (debug), dan memelihara kode
yang membangun sebuah program komputer. Kode ini ditulis dalam berbagai bahasa pemrograman. Tujuan dari pemrograman
adalah untuk memuat suatu program yang dapat melakukan suatu perhitungan atau
'pekerjaan' sesuai dengan keinginan si pemrogram (programmer). Untuk dapat
melakukan pemrograman, diperlukan keterampilan dalam algoritma,
logika,
bahasa pemrograman, dan di banyak kasus,
pengetahuan-pengetahuan lain seperti matematika.
Pemrograman
adalah sebuah seni dalam menggunakan satu atau lebih algoritma
yang saling berhubungan dengan menggunakan sebuah bahasa pemrograman tertentu sehingga menjadi
sebuah program komputer. Bahasa pemrograman yang berbeda mendukung gaya
pemrograman yang berbeda pula. Gaya pemrograman ini biasa disebut paradigma pemrograman.
Apakah
memprogram perangkat lunak lebih merupakan seni, ilmu, atau teknik telah
lama diperdebatkan. Pemrogram yang baik biasanya mengkombinasikan tiga hal
tersebut, agar dapat menciptakan program yang efisien, baik dari sisi waktu
berjalan (run time), atau memori.
Pemrograman Kompetitif
Sejarah pemrograman
Mekanisme
Antikythera dari Yunani kuno adalah kalkulator menggunakan persneling dari
berbagai ukuran dan konfigurasi untuk menentukan operasi, [3] yang dilacak
siklus Metonik masih digunakan di bulan-ke-surya kalender, dan yang konsisten
untuk menghitung tanggal olimpiade [4]. Al-Jazari dibangun Automata diprogram
pada tahun 1206. Salah satu sistem yang digunakan dalam perangkat ini adalah
penggunaan pasak dan Cams ditempatkan ke drum kayu di lokasi tertentu, yang
secara berurutan akan memicu tuas yang pada gilirannya dioperasikan instrumen
perkusi. Output dari perangkat ini adalah drumer kecil bermain berbagai ritme
dan pola drum. [5] [6] The Jacquard Loom, Joseph Marie Jacquard yang
dikembangkan pada tahun 1801, menggunakan serangkaian karton kartu dengan
menekan lubang di dalamnya. Pola lubang pola yang mewakili alat tenun harus
mengikuti menenun kain. Alat tenun bisa menghasilkan tenun yang sama sekali berbeda
dengan menggunakan kumpulan kartu yang berbeda. Charles Babbage mengadopsi
penggunaan kartu menekan sekitar tahun 1830 untuk mengendalikan Analytical
Engine. Program komputer pertama ditulis untuk Analytical Engine oleh
matematikawan Ada Lovelace untuk menghitung urutan Bilangan Bernoulli. [7]
Sintesis perhitungan numerik, operasi dan output telah ditentukan, bersama
dengan cara untuk mengatur dan masukan instruksi dengan cara yang relatif mudah
bagi manusia untuk hamil dan menghasilkan, menyebabkan perkembangan modern
pemrograman komputer. Pengembangan pemrograman komputer dipercepat melalui
Revolusi Industri. Pada akhir 1880-an, Herman Hollerith menemukan rekaman data
pada media yang kemudian dapat dibaca oleh mesin. Sebelum menggunakan mesin
dibaca dari media, di atas, telah untuk kontrol, bukan data. "Setelah
beberapa percobaan awal dengan kertas pita, ia menetap di kartu menekan
..." [8] Untuk memproses kartu menekan ini, pertama kali dikenal sebagai
"kartu Hollerith" dia menciptakan tabulator, dan mesin keypunch.
Ketiga penemuannya dasar dari industri pengolahan informasi modern. Pada tahun
1896 ia mendirikan Tabulating Machine Company (yang kemudian menjadi inti dari
IBM). Penambahan panel kontrol (plugboard) ke 1906 Tipe I Tabulator
memungkinkannya untuk melakukan pekerjaan yang berbeda tanpa harus secara fisik
dibangun kembali. Pada akhir 1940-an, ada berbagai mesin panel kontrol
diprogram, disebut catatan unit peralatan, untuk melakukan pengolahan data
tugas.
Data dan
instruksi dapat disimpan pada kartu punched eksternal, yang disimpan dalam
rangka dan disusun dalam deck. Penemuan arsitektur von Neumann memungkinkan
program komputer untuk disimpan dalam memori komputer. Program awal harus susah
payah dibuat dengan menggunakan instruksi (operasi dasar) dari mesin tertentu,
sering kali dalam notasi biner. Setiap model komputer mungkin akan menggunakan
instruksi yang berbeda (bahasa mesin) untuk melakukan tugas yang sama.
Kemudian, perakitan bahasa tersebut dikembangkan yang memungkinkan programmer menentukan
setiap instruksi dalam format teks, singkatan memasukkan kode untuk setiap
operasi, bukan menetapkan sebuah nomor dan alamat dalam bentuk simbolik
(misalnya, ADD X, JUMLAH). Memasuki sebuah program dalam bahasa assembly
biasanya lebih nyaman, lebih cepat, dan kurang rentan terhadap kesalahan
manusia daripada menggunakan bahasa mesin, tetapi karena bahasa assembly adalah
sedikit lebih dari satu notasi yang berbeda untuk bahasa mesin, setiap dua
mesin dengan instruksi yang berbeda set juga memiliki perakitan yang berbeda
bahasa. Pada tahun 1954, FORTRAN diciptakan, melainkan tingkat pertama bahasa
pemrograman tinggi untuk memiliki implementasi fungsional, dibandingkan dengan
hanya desain di atas kertas [9] [10] (Sebuah bahasa tingkat tinggi adalah, dalam
istilah yang sangat umum,. bahasa pemrograman yang memungkinkan programmer
untuk menulis program dalam istilah yang lebih abstrak dari instruksi bahasa
assembly, yaitu pada tingkat abstraksi "lebih tinggi" daripada bahasa
assembly.) Ini memungkinkan programmer untuk menentukan perhitungan dengan
memasukkan formula secara langsung (misalnya Y = X * 2 + 5 * X + 9). Program
teks, atau sumber, diubah menjadi instruksi mesin menggunakan program khusus
yang disebut kompilator, yang diterjemahkan program FORTRAN ke dalam bahasa
mesin. Bahkan, nama FORTRAN adalah singkatan dari "Formula
Translation". Banyak bahasa lainnya dikembangkan, termasuk beberapa
program untuk komersial, seperti COBOL. Program itu sebagian besar masih masuk
menggunakan kartu punched atau pita kertas. (Lihat pemrograman komputer di era
kartu punch). Pada akhir 1960-an, perangkat penyimpanan data dan terminal
komputer menjadi cukup murah bahwa program dapat dibuat dengan mengetikkan
langsung ke dalam komputer. Teks editor tersebut dikembangkan yang memungkinkan
perubahan dan perbaikan harus dilakukan jauh lebih mudah dibandingkan dengan
kartu berlubang. (Biasanya, kesalahan dalam meninju kartu berarti bahwa kartu
harus dibuang dan yang baru menekan untuk menggantikannya.) Ketika waktu telah
berkembang, komputer telah membuat lompatan raksasa di bidang kekuatan
prosesor. Ini telah membawa bahasa pemrograman baru yang lebih disarikan dari
hardware. Meskipun bahasa tingkat tinggi biasanya dikenakan biaya overhead yang
lebih besar, peningkatan kecepatan komputer modern telah membuat penggunaan
bahasa ini jauh lebih praktis daripada di masa lalu. Bahasa ini semakin
disarikan biasanya lebih mudah untuk belajar dan memungkinkan programmer untuk
mengembangkan aplikasi jauh lebih efisien dan dengan kode sumber kurang. Namun,
bahasa tingkat tinggi masih praktis untuk beberapa program, seperti yang di
mana tingkat rendah kontrol perangkat keras diperlukan atau di mana kecepatan
pemrosesan maksimum adalah penting.
Sepanjang paruh
kedua abad kedua puluh, pemrograman adalah karier yang menarik di sebagian
besar negara maju. Beberapa bentuk pemrograman telah lepas pantai semakin
tunduk pada outsourcing (impor perangkat lunak dan jasa dari negara lain,
biasanya dengan upah rendah), membuat keputusan karir pemrograman di negara
maju lebih rumit, sementara meningkatkan peluang ekonomi di daerah kurang
berkembang. Tidak jelas seberapa jauh kecenderungan ini akan berlanjut dan
seberapa dalam dampak akan programmer upah dan kesempatan.
Kata lain
Pemrograman adalah mengubah
suatu masalah yang dapat dimengerti oleh komputer dan dapat dipecahkan oleh
komputer.
Persyaratan kualitas
Apapun
pendekatan pengembangan perangkat lunak mungkin, program akhir harus memenuhi
beberapa sifat mendasar. Properti berikut adalah di antara yang paling relevan:
- Efisiensi / kinerja: jumlah sumber daya sistem
program yang mengkonsumsi waktu proses, ruang memori, perangkat
bawahseperti disk, bandwidth jaringan dan bahkan sampai batas tertentu
interaksi dari pemakai): semakin sedikit, semakin baik. Ini juga termasuk
pembuangan benar beberapa sumber, seperti membersihkan file-file sementara
dan tidak adanya kebocoran memori.
- Reliabilitas: seberapa sering hasil dari sebuah
program sudah benar. Hal ini tergantung pada kebenaran konseptual
algoritma, dan pemrograman minimisasi kesalahan, seperti kesalahan dalam
manajemen sumber daya (misalnya, buffer overflows dan ras kondisi) dan
kesalahan logika (seperti pembagian dengan nol).
- Kekokohan: seberapa baik program masalah
mengantisipasi bukan karena kesalahan programmer. Ini termasuk situasi
seperti salah, tidak pantas atau merusak data, tidak tersedianya sumber
daya yang dibutuhkan seperti memori, sistem operasi layanan dan koneksi
jaringan, dan kesalahan pengguna.
- Kegunaan: yang ergonomi sebuah program:
kemudahan dengan mana seseorang dapat menggunakan program untuk tujuan,
atau dalam beberapa kasus bahkan tujuan tak terduga. Isu-isu tersebut
dapat membuat atau menghancurkan kesuksesan bahkan tanpa masalah lain. Hal
ini melibatkan berbagai tekstual, grafis dan kadang-kadang elemen-elemen
perangkat keras yang meningkatkan kejelasan, intuitif, kekompakan dan
kelengkapan program antarmuka pengguna.
- Portabilitas: kisaran perangkat keras komputer
dan platform sistem operasi yang kode sumber dari program dapat
dikompilasi / ditafsirkan dan lari. Hal ini tergantung pada
perbedaan-perbedaan dalam fasilitas pemrograman yang disediakan oleh
platform yang berbeda, termasuk hardware dan sistem operasi sumber daya,
perilaku yang diharapkan dari hardware dan sistem operasi, dan
ketersediaan platform compiler tertentu (dan kadang-kadang perpustakaan)
untuk bahasa dari source code.
- Kemampu-rawatan: kemudahan dengan sebuah
program yang dapat dimodifikasi oleh pengembang sekarang atau pada masa
mendatang dalam rangka untuk membuat perbaikan atau penyesuaian,
memperbaiki bug dan lubang keamanan, atau disesuaikan dengan lingkungan
baru. Praktek yang baik selama pengembangan awal membuat perbedaan dalam
hal ini. Kualitas ini mungkin tidak secara langsung jelas bagi pengguna
akhir tetapi dapat secara signifikan memengaruhi nasib sebuah program
jangka panjang.
Metodologi
Langkah pertama
dalam sebagian besar proyek-proyek pengembangan perangkat lunak formal adalah
analisis persyaratan, diikuti dengan pengujian untuk menentukan model nilai,
pelaksanaan, dan kegagalan penghapusan (debug). Terdapat banyak pendekatan yang
berbeda untuk masing-masing tugas. Salah satu pendekatan yang populer untuk
analisis kebutuhan adalah Kasus Gunakan analisis.
Teknik model
populer meliputi Object-Oriented Analysis and Design (OOAD) dan Model-Driven
Architecture (MDA). The Unified Modeling Language (UML) adalah sebuah notasi
yang digunakan untuk kedua OOAD dan MDA.
Teknik yang sama
digunakan untuk desain database adalah Entity-Relationship Modeling (ER
Modeling).
Pelaksanaan
teknik termasuk bahasa imperatif (object-oriented atau prosedural), fungsional
bahasa, dan logika bahasa.
Mengukur pemakaian bahasa
Sangat sulit
untuk menentukan apa yang paling populer bahasa pemrograman modern. Beberapa
bahasa yang sangat populer untuk jenis aplikasi tertentu (misalnya, COBOL masih
kuat di pusat data perusahaan, sering pada mainframe besar, FORTRAN dalam
aplikasi teknik, bahasa scripting dalam pengembangan web, dan C dalam aplikasi
embedded), sementara beberapa bahasa teratur digunakan untuk menulis berbagai
macam aplikasi.
Metode untuk
mengukur popularitas bahasa pemrograman meliputi: menghitung jumlah iklan
lowongan pekerjaan yang menyebutkan bahasa [10], jumlah buku-buku pengajaran
bahasa yang dijual (overestimates ini pentingnya bahasa baru), dan perkiraan
jumlah baris yang ada kode yang ditulis dalam bahasa (meremehkan ini jumlah
pengguna bahasa bisnis seperti COBOL).
Debugging
Debugging adalah
tugas yang sangat penting dalam proses pengembangan perangkat lunak, karena
program yang salah dapat memiliki konsekuensi yang signifikan bagi penggunanya.
Beberapa bahasa yang lebih rentan terhadap beberapa jenis kesalahan karena
mereka tidak memerlukan spesifikasi kompiler untuk melakukan pengecekan
sebanyak bahasa lainnya. Penggunaan alat analisis statis dapat membantu
mendeteksi beberapa kemungkinan masalah.
Debug sering
dilakukan dengan IDE seperti Visual Studio, NetBeans, dan Eclipse. Standalone
debugger seperti gdb juga digunakan, dan ini kurang sering menyediakan
lingkungan visual, biasanya menggunakan baris perintah.
Bahasa pemrograman
Bahasa
pemrograman yang berbeda mendukung gaya pemrograman yang berbeda (disebut
paradigma pemrograman). Pilihan bahasa yang digunakan adalah tunduk pada banyak
pertimbangan, seperti kebijakan perusahaan, kesesuaian untuk tugas,
ketersediaan pihak ketiga paket, atau keinginan individunya. Idealnya, bahasa
pemrograman yang paling cocok untuk tugas yang dihadapi akan dipilih. Trade-off
dari ideal ini melibatkan cukup menemukan programmer yang tahu bahasa untuk
membangun sebuah tim, ketersediaan compiler untuk bahasa, dan efisiensi dengan
program-program yang ditulis dalam bahasa tertentu mengeksekusi.
Beberapa bahasa pemrograman adalah:
Banyak bahasa
komputer menyediakan mekanisme untuk memanggil fungsi yang disediakan oleh
perpustakaan. Menyediakan fungsi-fungsi di perpustakaan mengikuti konvensi
runtime yang sesuai (misalnya, metode lewat argumen), maka fungsi-fungsi ini
dapat ditulis dalam bahasa lainnya.