Mengapa ada banyak sekali bahasa pemrograman?
Lebih dari 250 bahasa pemrograman tersedia. Beberapa banyak digunakan di dunia bisnis, seperti C ++, Java, JavaScript, Ruby, dan Python. Yang lainnya terutama bersifat akademis, seperti Lisp. Namun, yang lainnya tidak jelas dan esoteris. Anda mungkin bertanya “mengapa ada begitu banyak bahasa pemrograman?”
Itu seperti bertanya, “Mengapa ada begitu banyak bidang matematika? Kita memiliki aljabar. Mengapa kita membutuhkan geometri, kalkulus, dan mekanika fluida?” Setiap bahasa pemrograman bertujuan untuk menyelesaikan suatu masalah tertentu. Lebih dari satu bahasa mungkin dapat menyelesaikan masalah yang sama, tetapi masing-masing akan melakukan pendekatan yang berbeda.
Berikut adalah beberapa perbedaan utama dalam bahasa pemrograman.
Keterbacaan dan pemeliharaan
Beberapa bahasa lebih mudah dibaca oleh manusia, yang memudahkan satu programmer untuk berkolaborasi pada kode programmer lain. Python, misalnya, memiliki reputasi yang mudah dibaca. Ini memberlakukan lekukan baris yang ketat untuk menentukan blok kodenya, yang membuatnya mudah untuk melihat sekilas program dan mencari tahu strukturnya. Bahasa lain memungkinkan indentasi juga, tetapi sebagai pilihan gaya, bukan sebagai persyaratan.
Sebaliknya, Perl adalah bahasa yang memungkinkan pemrogram untuk menulis program yang sama dengan berbagai cara. Namun, tujuan program mungkin tidak langsung jelas bagi pembaca lain. Program semacam itu mungkin nyaman untuk ditulis, tetapi sulit bagi orang lain untuk memahami dan mengeditnya.
Performa
Beberapa bahasa ditafsirkan, dan beberapa dikompilasi. Program yang dikompilasi harus diproses oleh preprocessor, compiler, dan linker sebelum dapat dijalankan oleh komputer. Perangkat lunak perantara khusus ini melakukan analisis leksikal, menerjemahkan program ke dalam bahasa mesin. Ini juga dapat mengoptimalkan instruksi yang dihasilkan, mencari cara cerdas untuk membuat program berjalan lebih cepat.
Program yang dikompilasi biasanya bekerja lebih baik daripada program yang diterjemahkan. Misalnya, C, C ++, dan Objective-C adalah bahasa yang dikompilasi menjadi kode mesin yang sangat cepat. Permainan video dan perangkat lunak sistem sering kali dibuat dalam bahasa ini, untuk memeras setiap kinerja dari CPU.
Di sisi lain, program bahasa yang diinterpretasikan dijalankan oleh perangkat lunak yang disebut interpreter, yang mengeksekusi instruksi program tanpa terlebih dahulu mengkompilasinya ke kode mesin. Meskipun interpreter terkadang mengurai program ke bahasa perantara, menghasilkan beberapa pengoptimalan, performanya tidak pernah secepat kode mesin yang dikompilasi.
Salah satu manfaat utama dari bahasa yang ditafsirkan adalah potensinya untuk pengembangan interaktif. Karena seluruh program tidak perlu dikompilasi sebelum dapat dijalankan, kode dapat berjalan secara interaktif. Anda sudah familiar dengan ini jika Anda pernah menggunakan baris perintah sistem operasi Anda: Anda memasukkan perintah dan melihat hasilnya. Antarmuka seperti itu disebut REPL, atau “read-eval-print-loop.” REPL memungkinkan Anda untuk menjalankan perintah (atau blok perintah) secara individual, dan melihat hasilnya. Lisp, Perl, Python, NodeJS, Ruby, dan JavaScript adalah contoh bahasa yang diinterpretasikan yang dapat dijalankan dalam REPL.
Antarmuka perintah interaktif, seperti Windows Command Prompt dan bash, juga memenuhi syarat sebagai bahasa yang ditafsirkan. Program dalam “bahasa” ini disebut file batch, atau skrip shell.
Kasus penggunaan khusus
Seringkali, bahasa sangat bagus dalam menulis jenis program tertentu. Misalnya, NodeJS dirancang untuk menulis aplikasi single-threaded untuk web. I / O file non-pemblokirannya memungkinkan program untuk terus beroperasi (“tidak diblokir”) sementara mereka menunggu data yang diperlukan untuk dikirim.
Contoh lain adalah bahasa pemrograman R, yang berspesialisasi dalam analisis statistik. Program yang ditulis dalam R mendapatkan keuntungan dari model dan pengujian analitik bawaan, dan alat untuk memanipulasi data dalam jumlah besar secara efisien.
Kemudahan pembuatan prototipe
Beberapa bahasa memungkinkan pembuatan prototipe cepat: pemrogram dapat “mulai menulis”, dan membangun komponen demi komponen hingga program sepenuhnya terbentuk.
Misalnya, situs web Reddit awalnya ditulis dalam Lisp. Setelah Reddit diluncurkan, seluruh situs ditulis ulang dengan Python karena berbagai alasan, baik teknis, maupun logistik. Meskipun refactoring semua kode adalah usaha besar, pemilik situs tidak menyatakan penyesalan. Dalam sebuah posting blog tahun 2005, mereka mengatakan bahwa Lisp mengizinkan mereka untuk membuat sesuatu tanpa mengetahui secara pasti akan menjadi apa.
Perpustakaan yang tersedia
Biasanya, ketika Anda memulai proyek pemrograman baru, Anda tidak ingin menemukan kembali roda. Artinya, Anda tidak ingin menulis fungsi untuk tugas umum seperti menghitung akar kuadrat, atau menemukan kemunculan pertama karakter dalam sebuah string. Untuk alasan ini, hampir setiap bahasa pemrograman menyediakan satu set pustaka standar fungsi umum. Pemrogram mungkin lebih memilih bahasa karena pustaka yang disediakannya.
Misalnya, pustaka standar C menyediakan fungsi berkinerja tinggi untuk banyak operasi sistem tingkat rendah. Perl menyediakan banyak pustaka yang kuat, dan juga repositori modul CPAN untuk diunduh dan digunakan dalam program Anda. Python menyediakan beragam fungsi dan modul bawaan untuk hampir semua hal di bawah matahari. Clojure, bahasa mirip Lisp yang berjalan di JVM, mendapatkan keuntungan dari kemampuannya untuk menjalankan kode dari pustaka objek dan metode Java yang sudah ada.
Keamanan
Tidak semua bahasa cocok untuk menulis kode aman. Bahasa pemrograman C, misalnya, terkenal karena memiliki fitur (atau ketiadaan) yang menyebabkan kerentanan yang menghancurkan seperti dereferensi penunjuk nol. Bahasa lain mencoba mengatasi masalah ini dengan aturan yang lebih ketat.
Misalnya, beberapa bahasa membatasi operasi yang dapat dilakukan pada berbagai jenis data. Bahasa yang paling ketat terkadang disebut “sangat diketik”, dan dapat menawarkan ketenangan pikiran bagi pemrogram yang memprioritaskan keamanan dan stabilitas dalam pengembangan perangkat lunak. Contoh bahasa yang diketik dengan kuat termasuk Rust, Nim, Ocaml, dan Haskell.
Bahasa juga dapat membatasi “mutabilitas”, kemampuan objek data untuk mengubah status. Alih-alih objek yang nilainya ditimpa, bahasa-bahasa ini mendukung objek “tidak berubah”: nilai dalam memori yang tidak dapat diubah tanpa pengecualian eksplisit. Objek yang tidak dapat diubah telah menarik minat karena CPU multi-core telah tersebar luas, karena kecenderungannya untuk mempromosikan “keamanan thread”. Dalam program thread-safe, lebih dari satu prosesor dapat beroperasi pada satu set data dengan risiko kesalahan yang sangat berkurang. Bahasa yang memprioritaskan objek yang tidak dapat diubah termasuk Rust dan Clojure.
Dukungan komunitas
Saat membuat program dalam bahasa baru, ada baiknya untuk mengakses komunitas pengembang yang aktif dan bersemangat yang secara aktif menggunakan dan berkontribusi pada pekerjaan satu sama lain. Sebelum memilih bahasa pemrograman, cari tahu lebih lanjut tentang komunitas bahasa tersebut. Beberapa bahasa memiliki basis pengguna yang menarik, dinamis, dan dinamis yang mungkin Anda inginkan untuk menjadi bagiannya dan bahasa lain mungkin memiliki sedikit atau tidak memiliki komunitas.
Ekspresi
Saat menulis program, pemikiran programmer dan kemampuan pemecahan masalah “berbicara” melalui bahasa itu. Akibatnya, pemrogram cenderung memilih bahasa yang nyaman untuk mengekspresikan diri mereka. Namun, apa yang membuat bahasa dan programmer bekerja sama dengan baik sulit untuk didefinisikan. Pada akhirnya, satu-satunya cara untuk mengetahui bahasa mana yang Anda sukai adalah dengan menggunakan bahasa yang berbeda untuk proyek yang berbeda dan membandingkannya sendiri.