Ada banyak kemungkinan jawaban untuk ini.
Pertama: sebenarnya bukan pertanyaan tentang perbedaan antara bahasa skrip dan bahasa pemrograman, karena bahasa skrip adalah bahasa pemrograman. Ini lebih merupakan pertanyaan tentang sifat apa yang membuat beberapa bahasa pemrograman menjadi bahasa skrip sementara bahasa pemrograman lain bukan bahasa skrip.
Kedua: sangat sulit untuk mengatakan apa bahasa XYZ itu, apakah XYZ itu "scripting", "pemrograman fungsional", "pemrograman berorientasi objek" atau apa pun yang Anda miliki. Definisi dari apa itu "pemrograman fungsional", cukup jelas, tetapi tidak ada yang tahu apa itu "bahasa pemrograman fungsional".
Pemrograman fungsional atau pemrograman berorientasi objek adalah gaya pemrograman ; Anda dapat menulis dalam gaya fungsional atau gaya berorientasi objek di hampir semua bahasa. Misalnya, Switch Sistem File Virtual Linux dan Model Driver Linux sangat berorientasi objek meskipun ditulis dalam C, sedangkan banyak kode Java atau C # yang Anda lihat di web sangat prosedural dan tidak berorientasi objek sama sekali . OTOH, saya telah melihat beberapa kode Java yang sangat berfungsi.
Jadi, jika pemrograman fungsional dan pemrograman berorientasi objek hanyalah gaya yang dapat dilakukan dalam bahasa apa pun , lalu bagaimana Anda mendefinisikan "bahasa pemrograman berorientasi objek"? Bisa dikatakan bahwa bahasa pemrograman berorientasi objek adalah bahasa yang memungkinkan pemrograman berorientasi objek. Tapi itu bukan definisi yang tepat: semua bahasa memungkinkan pemrograman berorientasi objek, oleh karena itu semua bahasa berorientasi objek? Jadi, Anda katakan, baiklah bahasa itu berorientasi objek, jika itu memaksa Anda untuk memprogram dalam gaya berorientasi objek. Tapi itu juga bukan definisi yang tepat: semua bahasa memungkinkan pemrograman fungsional, oleh karena itu tidak ada bahasa yang berorientasi objek?
Jadi, bagi saya, saya telah menemukan definisi berikut:
Bahasa adalah bahasa skrip (bahasa berorientasi objek / bahasa fungsional) jika keduanya
- memfasilitasi scripting (pemrograman berorientasi objek / pemrograman fungsional), yaitu tidak hanya memungkinkannya tetapi membuatnya mudah dan alami dan berisi fitur-fitur yang membantunya , DAN
- mendorong dan memandu Anda menuju scripting (pemrograman berorientasi objek / pemrograman fungsional).
Jadi, setelah lima paragraf, saya sampai pada: "bahasa skrip adalah bahasa untuk skrip". Definisi yang sangat bagus. TIDAK.
Jelas, sekarang kita perlu melihat definisi "scripting".
Di sinilah masalah ketiga masuk: sedangkan istilah "pemrograman fungsional" didefinisikan dengan baik dan hanya istilah "bahasa pemrograman fungsional" yang bermasalah, sayangnya dengan skrip, baik istilah "skrip" dan istilah "bahasa skrip "tidak jelas.
Nah, scripting pertama adalah pemrograman. Itu hanya jenis pemrograman khusus. IOW: setiap skrip adalah program, tetapi tidak setiap program adalah skrip; himpunan semua skrip adalah himpunan bagian yang sesuai dari himpunan semua program.
Menurut pendapat pribadi saya, hal yang membuat scripting scripting dan membedakannya dari jenis pemrograman lainnya adalah bahwa…
Skrip sebagian besar memanipulasi objek itu
- tidak dibuat oleh skrip,
- memiliki seumur hidup independen dari skrip dan
- tinggal di luar domain skrip.
Juga, tipe data dan algoritma yang digunakan umumnya tidak ditentukan oleh skrip tetapi oleh lingkungan luar.
Pikirkan tentang skrip shell: skrip shell biasanya memanipulasi file, direktori, dan proses. Mayoritas file, direktori, dan proses di sistem Anda mungkin tidak dibuat oleh skrip yang sedang berjalan. Dan mereka tidak menghilang saat skrip keluar: masa hidup mereka benar-benar independen dari skrip. Dan mereka juga bukan bagian dari skrip, mereka adalah bagian dari sistem. Anda tidak memulai skrip Anda dengan menulis File
dan Directory
kelas, tipe data itu bukan urusan Anda: Anda hanya menganggapnya ada, dan Anda bahkan tidak tahu (juga tidak perlu tahu) cara kerjanya. Dan Anda juga tidak mengimplementasikan algoritme Anda sendiri, misalnya untuk traversal direktori yang hanya Anda gunakan find
alih-alih menerapkan pencarian luas-pertama-pertama Anda sendiri.
Singkatnya: skrip menempel pada sistem yang lebih besar yang ada secara independen dari skrip, memanipulasi beberapa bagian kecil dari sistem dan kemudian keluar.
Sistem yang lebih besar itu dapat berupa sistem operasi dalam kasus skrip shell, DOM browser dalam kasus skrip browser, permainan (misalnya World of Warcraft dengan Lua atau Second Life dengan Linden Scripting Language), aplikasi (misalnya AutoLisp bahasa untuk makro AutoCAD atau Excel / Word / Office), server web, paket robot, atau sesuatu yang sama sekali lain.
Perhatikan bahwa aspek scripting benar-benar ortogonal untuk semua aspek lain dari bahasa pemrograman: bahasa scripting dapat diketik dengan kuat atau lemah, diketik dengan ketat atau longgar, diketik secara statis atau dinamis, diketik secara nominal, terstruktur atau bebek, sih bahkan bisa tidak diketik . Ini bisa bersifat imperatif atau fungsional, berorientasi objek, prosedural atau fungsional, ketat atau malas. Implementasinya dapat diartikan, dikompilasi atau dicampur.
Misalnya, Mondrian adalah bahasa skrip fungsional malas yang diketik dengan kuat secara statis dengan implementasi terkompilasi.
Namun, semua ini diperdebatkan, karena cara istilah bahasa skrip benar - benar digunakan di dunia nyata, tidak ada hubungannya dengan semua hal di atas. Ini paling sering digunakan hanya sebagai penghinaan, dan definisinya agak sederhana, bahkan sederhana:
- bahasa pemrograman sebenarnya : bahasa pemrograman saya
- bahasa scripting: bahasa pemrograman Anda
Tampaknya inilah cara istilah yang paling sering digunakan.