Kapan suatu bahasa dianggap sebagai bahasa skrip? [Tutup]

107

Apa yang membuat bahasa menjadi bahasa skrip? Saya pernah mendengar beberapa orang berkata "ketika itu diinterpretasikan daripada dikompilasi". Itu akan membuat PHP (misalnya) menjadi bahasa scripting. Apakah itu satu-satunya kriteria? Ataukah ada kriteria lain?

Lihat juga:

Shog9
sumber
Anda mungkin ingin memperluas pertanyaan Anda sedikit. Saya merasa ini hampir menipu. Orang lain mungkin tidak melihat perbedaannya
Kent Fredric
Penipu untuk pertanyaan lain yang mana?
Sietse
2
stackoverflow.com/questions/98268/… Ada banyak kesamaan. Tidak harus identik, tetapi banyak konteks / opini yang sama.
Kent Fredric
7
... Ketika sebuah bahasa merusak API dan mengubah sintaksnya setiap rilis minor, jika itu membungkus sekitar 100 pustaka C buggy kotor yang tidak terawat, maka itu adalah bahasa skrip. ;)
ivan_ivanovich_ivanoff
1
Di bilah sisi "Terkait", Anda akan menemukan stackoverflow.com/questions/1514206/… yang saya tautkan ke tumpukan duplikat yang ada yang kembali ke stackoverflow.com/questions/101055/… .
dmckee --- kucing bekas moderator

Jawaban:

52

Bahasa scripting adalah bahasa yang "menulis" hal lain untuk melakukan sesuatu. Fokus utamanya bukanlah membangun aplikasi Anda sendiri, melainkan membuat aplikasi yang ada berfungsi seperti yang Anda inginkan, misalnya JavaScript untuk browser, VBA untuk MS Office.

moffdub
sumber
Jadi bagaimana dengan bahasa seperti Python? Tidak mudah untuk mengatakan di mana fokusnya, tapi bisa dikatakan itu lebih fokus pada aplikasi sendiri, masih sering disebut "bahasa scripting". Mungkin karena kompilasi tersembunyi menjadi bytecode dari referensi CPython impl. tidak menimbulkan kesalahan kompilasi terkait "keamanan tipe"? Mungkin jawaban Oded memiliki ini ...
n611x007
Bytecode dan sistem tipe tidak benar-benar ada hubungannya dengan itu. Dengan definisi di atas, jika sebuah aplikasi mengekspos API ke Python, dikatakan menggunakan Python sebagai bahasa skripnya. Jika Anda membangun aplikasi sepenuhnya dengan Python, aplikasi itu menggunakannya sebagai bahasa pemrograman.
bug
"Scripting" bukanlah definisi dari jenis bahasa. Ini adalah karakteristik yang bahasa dapat memiliki . Jadi, Python adalah "bahasa skrip yang baik" karena membuatnya mudah untuk menulis kode yang membuat skrip. Perakitan bukanlah bahasa skrip yang baik karena membuat skrip menjadi sulit. C ada di tengah-tengah, karena meskipun memiliki kata kunci (sistem) untuk memanggil, ia juga membebani pengguna dengan banyak celah sebelum Anda bisa sampai di sana.
nomen
93

Sederhana. Ketika saya menggunakannya, itu adalah bahasa dinamis modern, ketika Anda menggunakannya, itu hanya bahasa skrip!

Martin Beckett
sumber
19
Ya. "Ini bukan 'bahasa mainan', ini 'bahasa tingkat tinggi'": P
Roberto Bonvallet
6
itu tidak menyenangkan dan keluar dari topik, -1
adf88
1
Bahkan dengan - (1 + 1) itu mendapat sekitar 2x +1s dari yang dicentang. : D
anatoly techtonik
Terbaik. Menjawab. EVAR!
iconoclast
41

Secara tradisional, ketika berbicara tentang perbedaan tentang skrip versus pemrograman, skrip ditafsirkan dan program dikompilasi. Sebuah bahasa dapat dijalankan dengan berbagai cara - diinterpretasikan atau dikompilasi (menjadi bytecode atau kode mesin). Ini tidak membuat satu bahasa atau lainnya.

Di beberapa mata, cara Anda menggunakan bahasa menjadikannya bahasa skrip (misalnya, pengembang game yang mengembangkan terutama dalam C ++ akan membuat skrip objek di Lua). Sekali lagi, garis-garisnya kabur - satu bahasa dapat digunakan untuk pemrograman oleh satu orang dan bahasa yang sama dapat digunakan untuk bahasa skrip oleh orang lain.

Ini dari artikel wikipedia tentang bahasa scripting:

Bahasa skrip, bahasa skrip, atau bahasa ekstensi adalah bahasa pemrograman yang memungkinkan kontrol atas satu atau lebih aplikasi perangkat lunak. "Skrip" berbeda dari kode inti aplikasi, karena biasanya ditulis dalam bahasa yang berbeda dan sering dibuat atau setidaknya dimodifikasi oleh pengguna akhir. Skrip sering kali diinterpretasikan dari kode sumber atau bytecode, sedangkan aplikasi yang dikontrol secara tradisional dikompilasi ke kode mesin asli. Bahasa skrip hampir selalu tertanam dalam aplikasi yang mereka kontrol.

Anda akan melihat penggunaan "biasanya", "sering", "secara tradisional" dan "hampir selalu" - ini semua memberi tahu Anda bahwa tidak ada kumpulan atribut berbeda yang membuat bahasa tertentu menjadi "bahasa skrip".

Oded
sumber
1
@Amr: Yah ini disebut java script
sepp2k
1
@Ram Bhat - ini membingungkan, karena perbedaannya dibuat-buat.
Oded
11
@Andrey: Semua implementasi JavaScript modern dikompilasi. Dan ada penerjemah untuk C.
Jörg W Mittag
27
Ini benar-benar salah. Sebenarnya itu bahkan tidak salah , itu jelas tidak masuk akal. Tidak ada yang namanya bahasa yang dikompilasi atau ditafsirkan. Sebuah bahasa tidak dikompilasi, bahasa hanya adalah . Ini sekumpulan aturan matematika abstrak. Interpretasi dan kompilasi adalah ciri mesin eksekusi , bukan bahasa. Setiap bahasa dapat diimplementasikan dengan compiler atau interpreter. Faktanya, semua bahasa yang telah dikutip sebagai "ditafsirkan" di halaman ini, hampir secara eksklusif mengkompilasi implementasi, misalnya JavaScript, PHP, Python, Ruby.
Jörg W Mittag
5
@Andrey: Chakra (IE9), TraceMonkey / JägerMonkey (Firefox), Nitro (Safari), Carakan (Opera) semua mengkompilasi JavaScript ke bytecode dan kemudian beberapa bytecode diinterpretasikan dan beberapa dikompilasi ke kode asli. V8 (Chrome) melewati bytecode dan mengkompilasi JavaScript langsung ke kode asli. IronJS mengkompilasi JavaScript ke bytecode CIL. Rhino mengompilasi JavaScript ke bytecode JVML. BESEN (satu-satunya mesin ECMAScript 5 sejauh ini) mengkompilasi JavaScript ke bytecode BESEN, dan kompiler asli sedang ditambahkan. Beberapa hal di atas juga mengompilasi ekspresi reguler ke kode mesin asli.
Jörg W Mittag
31

"Naskah adalah apa yang Anda berikan kepada para aktor. Sebuah program adalah apa yang Anda berikan kepada penonton." - Larry Wall

Saya benar-benar tidak berpikir ada banyak perbedaan lagi. Yang disebut bahasa "scripting" sering dikompilasi - sangat cepat, dan saat runtime. Dan beberapa bahasa "pemrograman" juga dikompilasi lebih lanjut pada saat runtime (pikirkan JIT) dan tahap pertama "kompilasi" adalah pemeriksaan sintaks dan resolusi sumber daya.

Jangan terpaku pada itu, itu benar-benar tidak penting.

Clinton Pierce
sumber
hmmm .. Saya tidak menutup telepon, tetapi sebagian besar pewawancara dan guru menutup telepon. Dan saya tidak pernah memiliki satu pun dari orang-orang ini yang memberi saya jawaban yang memuaskan!
Laz
1
Dan jika Anda memberikan salah satu jawaban lain di sini, sebagai pewawancara, saya pikir Anda tidak benar-benar memahami pertanyaan itu. Perbedaannya sangat kabur dan tidak ada jawaban yang jelas. Jika Anda mengatakan "Yah, secara tradisional ..." Saya akan menerimanya, tapi kemudian saya berharap Anda membahas hal-hal seperti kompilasi runtime dan JIT juga.
Clinton Pierce
25

Definisi saya adalah bahasa yang biasanya didistribusikan sebagai sumber daripada sebagai biner.

kenny
sumber
5
Jadi menurut Anda php, python, dll adalah bahasa scripting?
Sietse
"Scripting" adalah deskripsi umum untuk Python dan PHP.
S. Lott
22
php dan python - tentu saja itu adalah bahasa scripting!
Antony Carthy
inilah definisi saya sejak permulaan
@Any Carthy ini salah. Python bukan bahasa scripting biasanya, tetapi bisa, seperti bahasa lain, yang digunakan dalam program (seperti Word (VB), Browser (JS))
Joschua
16

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 Filedan Directorykelas, 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 findalih-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.

Jörg W Mittag
sumber
Beberapa dari jawaban ini konyol. Sebuah bahasa "berorientasi objek" ketika berorientasi pada pemrograman dengan objek. Sebuah bahasa "berfungsi" jika memiliki fungsi kelas satu. Itu tidak berarti bahasa tidak bisa menjadi keduanya. Ini adalah karakteristik bahasa, bukan definisi tipe. Skrip serupa. Bahasa adalah "bahasa skrip yang baik" jika membuatnya mudah untuk menulis skrip - bagian interaksi pengguna-aplikasi yang singkat dan sederhana.
nomen
16

Ini seperti pornografi, Anda tahu saat melihatnya. Satu-satunya definisi yang mungkin dari bahasa skrip adalah:

A language which is described as a scripting language.

Agak melingkar, bukan? (Ngomong-ngomong, saya tidak bercanda).

Pada dasarnya, tidak ada yang menjadikan suatu bahasa sebagai bahasa scripting kecuali disebut demikian, terutama oleh penciptanya. Kumpulan utama bahasa scripting modern adalah PHP, Perl, JavaScript, Python, Ruby dan Lua. Tcl adalah bahasa skrip modern besar pertama (itu bukan bahasa skrip pertama, saya lupa apa itu, tetapi saya terkejut mengetahui bahwa itu mendahului Tcl).

Saya menjelaskan fitur bahasa skrip utama dalam makalah saya :

 A Practical Solution for Scripting Language Compilers
 Paul Biggar, Edsko de Vries and David Gregg
 SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)

Sebagian besar diketik dan ditafsirkan secara dinamis, dan sebagian besar tidak memiliki semantik yang ditentukan di luar implementasi referensi mereka. Namun, bahkan jika implementasi utamanya menjadi terkompilasi atau JITed, itu tidak mengubah "sifat" bahasa.

Mereka hanya tersisa pertanyaan adalah bagaimana Anda bisa tahu jika bahasa baru adalah bahasa skrip. Nah, jika itu disebut bahasa scripting, itu adalah salah satunya. Jadi Factor adalah bahasa scripting (atau setidaknya saat itu ditulis), tapi, katakanlah, Java bukan.

Paul Biggar
sumber
1
Itu penjelasan yang sangat bagus, tapi saya yakin beberapa orang memberikan suara positif karena mereka melihat "porno"
HoKy22
Tautan ke kertas rusak.
Quazi Irfan
5

"Bahasa skrip" adalah salah satu konsep fuzzy yang bisa berarti banyak hal. Biasanya ini mengacu pada fakta bahwa terdapat proses satu langkah yang membawa Anda dari kode sumber ke eksekusi.

Misalnya di Perl Anda melakukan: perl my_source.pl

Dengan kriteria di atas, PHP adalah bahasa skrip (meskipun Anda dapat memiliki proses "kompilasi" misalnya saat menggunakan Zend Encoder untuk "melindungi" kode sumber).

PS. Seringkali (tetapi tidak selalu) bahasa skrip ditafsirkan. Juga sering (tetapi sekali lagi, tidak selalu) bahasa skrip diketik secara dinamis.

Cd-MaN
sumber
Perl mengkompilasi menjadi kode byte sebelum dijalankan.
Brad Gilbert
2
Bagaimana dengan Java? Anda memerlukan jvm untuk menjalankan program java tetapi saya tidak akan menyebutnya sebagai bahasa skrip
Eineki
5

Semua bahasa scripting adalah bahasa pemrograman. Jadi tegasnya, tidak ada perbedaan.

Istilah ini tidak mengacu pada sifat dasar bahasa apa pun, ini mengacu pada penggunaan bahasa yang khas . Jika penggunaan tipikal adalah untuk menulis program pendek yang terutama melakukan panggilan ke kode yang sudah ada sebelumnya, dan beberapa pemrosesan sederhana pada hasil, (yaitu, jika penggunaan tipikal adalah untuk menulis skrip ) maka itu adalah bahasa skrip.

Joren
sumber
4

Saya pikir Tuan Roberto Ierusalimschy memiliki jawaban yang sangat bagus atau pertanyaan di 'Pemrograman di Lua':

Namun, fitur pembeda dari bahasa yang diinterpretasikan bukanlah bahwa bahasa tersebut tidak dikompilasi, tetapi bahwa setiap compiler adalah bagian dari runtime bahasa dan, oleh karena itu, dimungkinkan (dan mudah) untuk mengeksekusi kode yang dihasilkan dengan cepat.

Rodrigo Lopez
sumber
Ini tidak menjawab pertanyaan itu sama sekali!
Paul Biggar
Izinkan saya menyatakan kembali bahwa, bahasa scripting adalah bahasa di mana kompiler disertakan dan dimungkinkan untuk mengeksekusi kode yang dihasilkan dengan cepat. Bagaimana itu tidak menjawab pertanyaan itu?
Rodrigo Lopez
Itu adalah bahasa yang ditafsirkan. Jika Anda mencoba mengatakan bahwa bahasa yang ditafsirkan adalah bahasa skrip, katakan itu.
Paul Biggar
Nah, semua bahasa dapat digunakan untuk skrip, item kuncinya bagi saya adalah seberapa cocok mereka. Bagi saya ciri pembeda adalah, ya, mereka ditafsirkan.
Rodrigo Lopez
4
Lisp umum bukanlah yang biasanya saya anggap sebagai bahasa skrip, tetapi memiliki evalfungsi kekuatan penuh .
David Thornley
4

Satu divisi adalah

  • scripting = diinterpretasikan secara dinamis
  • normal = dikompilasi

Bahasa yang ditafsirkan secara dinamis diinterpretasikan pada waktu proses sedangkan bahasa yang dikompilasi dikompilasi sebelum dieksekusi.

Saya harus menambahkan bahwa seperti yang telah ditunjukkan Jörg, perbedaan yang ditafsirkan / dikompilasi bukanlah fitur bahasa, tetapi mesin eksekusi.

Anda mungkin juga tertarik dengan penjelasan Sistem Jenis ini , yang terkait dan lebih berfokus pada aspek bahasa, daripada mesin eksekusi. Kebanyakan bahasa skrip diketik secara dinamis, sedangkan bahasa "normal" sebagian besar diketik secara statis.

Secara umum pembagian bahasa yang diketik secara statis vs bahasa yang diketik secara dinamis lebih baik didefinisikan dan memiliki lebih banyak implikasi pada kegunaan bahasa tersebut.

Timo Westkämper
sumber
Bagaimana dengan Objective-C?
mouviciel
1
Ini mendukung pengetikan dinamis, tetapi saya tidak akan menyebutnya sebagai bahasa skrip.
Timo Westkämper
2
Ini benar-benar salah. Sebenarnya itu bahkan tidak salah , itu jelas tidak masuk akal. Tidak ada yang namanya bahasa yang dikompilasi atau ditafsirkan. Sebuah bahasa tidak dikompilasi, bahasa hanya adalah . Ini sekumpulan aturan matematika abstrak. Interpretasi dan kompilasi adalah ciri mesin eksekusi , bukan bahasa. Setiap bahasa dapat diimplementasikan dengan compiler atau interpreter. Faktanya, semua bahasa yang telah dikutip sebagai "ditafsirkan" di halaman ini, hampir secara eksklusif mengkompilasi implementasi, misalnya JavaScript, PHP, Python, Ruby.
Jörg W Mittag
@ jorg-w-mittag, Silahkan edit jawaban saya agar lebih benar. Poin Anda valid. Biasanya, jika Anda berbicara tentang suatu bahasa, Anda juga berbicara tentang mesin eksekusi default.
Timo Westkämper
3

Bahasa scripting biasanya :

  1. Diketik secara dinamis
  2. Ditafsirkan, dengan sedikit penekanan pada kinerja, tetapi portabilitas yang baik
  3. Membutuhkan lebih sedikit kode boilerplate , yang mengarah ke pembuatan prototipe yang sangat cepat
  4. Digunakan untuk tugas-tugas kecil, cocok untuk menulis satu file tunggal untuk menjalankan beberapa "skrip" yang berguna.

Sedangkan bahasa non-scripting biasanya : 1. Diketik statis 2. Disusun, dengan penekanan pada kinerja 3. Memerlukan lebih banyak kode boilerplate, yang mengarah ke pembuatan prototipe yang lebih lambat tetapi lebih mudah dibaca dan pemeliharaan jangka panjang 4. Digunakan untuk proyek besar, beradaptasi dengan banyak pola desain

Tapi sekarang ini lebih merupakan perbedaan sejarah, menurut saya. Javascript dan Perl ditulis dengan skrip yang kecil dan sederhana, sedangkan C ++ ditulis dengan aplikasi yang kompleks; tetapi keduanya dapat digunakan dengan cara apa pun. Dan banyak bahasa pemrograman, baik modern maupun lama, tetap saja mengaburkan garis (dan awalnya kabur!).

Hal yang menyedihkan adalah, saya mengenal beberapa pengembang yang membenci apa yang mereka anggap sebagai "bahasa skrip", menganggapnya lebih sederhana dan tidak sekuat itu. Pendapat saya adalah klise lama itu - gunakan alat yang tepat untuk pekerjaan itu.

Oak
sumber
2
Tidak ada yang namanya bahasa yang dikompilasi atau ditafsirkan. Sebuah bahasa tidak dikompilasi, bahasa hanya adalah . Ini sekumpulan aturan matematika abstrak. Interpretasi dan kompilasi adalah ciri mesin eksekusi , bukan bahasa. Setiap bahasa dapat diimplementasikan dengan compiler atau interpreter. Faktanya, semua bahasa yang telah dikutip sebagai "ditafsirkan" di halaman ini, hampir secara eksklusif mengkompilasi implementasi, misalnya JavaScript, PHP, Python, Ruby.
Jörg W Mittag
@ Jorg: Poin bagus, saya setuju. Tetapi saya tidak mengatakan itu tidak dapat dikompilasi, hanya mengatakan bahwa jenis bahasa ini biasanya diinterpretasikan daripada dikompilasi, dalam penggunaan umum.
Oak
Apakah mereka? Semua implementasi saat ini dari Python, PHP, Perl dan Lua dikompilasi. Dengan pengecualian MRI, semua implementasi Ruby saat ini dikompilasi. (Dan ada yang benar-benar tidak satu, tapi dua kompiler JIT untuk MRI.) Dengan pengecualian JScript, semua implementasi JavaScript saat dikompilasi. Perhatikan bahwa penerus JScript, Chakra, dikompilasi. Banyak implementasi Skema dikompilasi. ELisp dikompilasi.
Jörg W Mittag
3

Bahasa skrip awalnya dianggap sebagai mekanisme kontrol untuk aplikasi yang ditulis dalam bahasa pemrograman yang keras. Program yang dikompilasi tidak dapat dimodifikasi pada saat runtime, jadi skrip memberi orang fleksibilitas.

Terutama, skrip shell mengotomatiskan proses di kernel OS (biasanya, AppleScript di Mac); sebuah peran yang semakin banyak diberikan ke tangan Perl, dan kemudian keluar ke Python belakangan ini. Saya telah melihat Skema (khususnya dalam implementasi Guile) yang digunakan untuk mendeklarasikan adegan raytracing; dan baru-baru ini, Lua sangat populer sebagai bahasa pemrograman untuk permainan skrip - sampai-sampai satu-satunya hal yang di-hardcode di banyak game baru adalah mesin grafis / fisika, sedangkan logika game secara keseluruhan dikodekan dalam Lua. Dengan cara yang sama, JavaScript dianggap sebagai skrip perilaku browser web.

Bahasa-bahasa yang dibebaskan; tidak ada yang sekarang berpikir tentang OS sebagai aplikasi (atau memikirkannya sama sekali), dan banyak bahasa skrip sebelumnya mulai digunakan untuk menulis aplikasi lengkap mereka sendiri. Nama itu sendiri menjadi tidak berarti, dan menyebar ke banyak bahasa tafsir yang digunakan saat ini, terlepas dari apakah mereka dirancang untuk ditafsirkan dari dalam sistem lain atau tidak.

Namun, "bahasa scripting" jelas tidak sama dengan "bahasa yang ditafsirkan" - misalnya, BASIC ditafsirkan untuk sebagian besar hidupnya (yaitu sebelum kehilangan akronimitasnya dan menjadi Visual Basic), namun tidak ada yang benar-benar menganggapnya sebagai pembuatan skrip.

UPDATE: Bahan bacaan seperti biasa tersedia di Wikipedia .

Amadan
sumber
Sebenarnya, implementasi BASIC asli adalah kompiler. Baru kemudian klon BASIC ditulis sebagai interpreter, karena interpreter seharusnya lebih mudah untuk menulis daripada kompiler.
Jörg W Mittag
1
@ Jörg: Tidak begitu. Sementara implementasi tes pertama Dartmouth BASIC dikompilasi (disebut Card BASIC) implementasi sebenarnya adalah penerjemah. Faktanya, mungkin fitur baru yang paling penting dari BASIC adalah sifatnya yang interaktif. Tidak perlu memasukkan kode sumber ke dalam kartu dan memasukkannya ke kompiler. Pengguna cukup duduk di teletype, menulis program dan kemudian menjalankannya.
PauliL
Menarik bahwa jawaban ini memperkenalkan gagasan tentang bahasa yang 'sulit'. Apakah 'hard' membutuhkan definisi dalam konteks ini?
DA Vincent
@DavidVincent: Saya mungkin seharusnya bermaksud "lebih keras". Tidak ada definisi formal yang diperlukan, pemahaman intuitif sudah cukup: jauh lebih sulit untuk menulis program di Assembly atau C daripada di Ruby atau Python, mengingat yang pertama jauh lebih rendah dan bertingkat daripada yang terakhir.
Amadan
3

Poin pertama, bahasa pemrograman bukanlah "bahasa scripting" atau sesuatu yang lain. Ini bisa menjadi "bahasa scripting" dan sesuatu yang lain.

Poin kedua, pelaksana bahasa akan memberi tahu Anda apakah itu bahasa skrip.

Pertanyaan Anda harus berbunyi "Dalam penerapan apa bahasa pemrograman dianggap sebagai bahasa skrip?", Bukan "Apa perbedaan antara bahasa skrip dan bahasa pemrograman?". Tidak ada diantara keduanya.

Namun, saya akan menganggap suatu bahasa sebagai bahasa skrip jika digunakan untuk menyediakan beberapa jenis perangkat tengah. Misalnya, saya akan menganggap sebagian besar implementasi JavaScript sebagai bahasa skrip. Jika JavaScript dijalankan di OS, bukan di browser, maka itu bukan bahasa scripting. Jika PHP berjalan di dalam Apache, itu adalah bahasa scripting. Jika dijalankan dari baris perintah, tidak.

Marcus Adams
sumber
3

Saya melihat bahasa scripting sebagai sesuatu yang tidak membutuhkan langkah 'kompilasi' perasaan beban berat yang terbuka. Fitur utama dari sudut pandang programmer adalah: Anda mengedit kode dan langsung menjalankannya.

Jadi saya akan menganggap JavaScript dan PHP sebagai bahasa scripting, sedangkan ActionScript 3 / Flex tidak benar-benar.

Peter Mortensen
sumber
Saya tidak ingin merendahkan jawaban Peter, tetapi dapatkah kita menambahkan lebih dari sekedar opini?
DA Vincent
3

Teman saya dan saya baru saja memiliki argumen ini: Apa perbedaan antara bahasa pemrograman dan bahasa scripting.

Argumen populer adalah bahwa bahasa pemrograman dikompilasi dan bahasa skrip ditafsirkan - Namun saya yakin argumen ini sepenuhnya salah ... mengapa?

  1. Chakra & V8 (mesin JavaScript Microsoft dan Google) mengkompilasi kode sebelum eksekusi
  2. QBasic ditafsirkan - apakah ini menjadikan Qbasic sebagai bahasa "scripting"?

Atas dasar itu, inilah argumen saya tentang perbedaan antara bahasa pemrograman dan bahasa scripting:

Bahasa pemrograman berjalan pada level mesin dan memiliki akses ke mesin itu sendiri (memori, grafik, suara, dll).

Bahasa skrip dikotak pasir dan hanya memiliki akses ke objek yang diekspos ke kotak pasir. Itu tidak memiliki akses langsung ke mesin yang mendasarinya.

Matthew Layton
sumber
2

Dalam Opini Saya, saya akan mengatakan bahwa bahasa yang ditafsirkan secara dinamis seperti PHP, Ruby, dll ... masih merupakan bahasa "normal". Saya akan mengatakan bahwa contoh bahasa "scripting" adalah hal-hal seperti bash (atau ksh atau tcsh atau apa pun) atau sqlplus. Bahasa-bahasa ini sering digunakan untuk merangkai program yang ada di sistem menjadi serangkaian perintah yang koheren dan terkait, seperti:

  1. salin A.txt ke / tmp / work /
  2. menjalankan proses pembersihan malam di server database
  3. catat hasilnya dan kirimkan ke sysdamin

Jadi menurut saya perbedaannya (bagi saya) lebih pada cara Anda menggunakan bahasa tersebut. Bahasa seperti PHP, Perl, Ruby dapat digunakan sebagai "bahasa skrip", tetapi saya biasanya melihatnya digunakan sebagai "bahasa normal" (kecuali Perl yang tampaknya berjalan dua arah.

FrustratedWithFormsDesigner
sumber
Terima kasih .. Ini membuat segalanya menjadi lebih jelas. Jadi untuk rekap, bahasa scripting dirancang untuk menggunakan program yang sudah ada bersama-sama secara berurutan. TETAPI bahasa seperti C dapat digunakan untuk melakukan hal yang sama melalui API. Jadi secara teknis semuanya tergantung pada penggunaan
Laz
Tidak, Anda hanya membuat perbedaan artifisial (yaitu ini). Jika Anda dapat membuat sesuatu dengan cepat dengannya, suatu bahasa akan sering disebut bahasa skrip, tetapi itu bukan definisi yang ketat atau semacamnya. Bahasa yang ditafsirkan secara umum sering disebut bahasa skrip juga.
wlangstroth
@ Will: perbedaan apa pun akan dibuat-buat. Ini adalah perbedaan pendapat saya. ;)
FrustratedWithFormsDesigner
ya, tapi "scripting" dalam hal ini adalah penggunaan yang sangat sehari-hari dan tidak jelas. Memutuskan bahwa "menggunakan program yang sudah ada bersama-sama secara berurutan" adalah sangat spesifik, dan kurang tepat. Kedengarannya seperti skrip shell , mungkin, tapi tidak Perl. Kemudian untuk membandingkannya dengan API (?) ... Saya hanya tidak ingin orang itu keluar jalur terlalu jauh.
wlangstroth
2

Saya hanya akan melanjutkan dan memindahkan jawaban saya dari pertanyaan duplikat


Nama "Bahasa skrip" berlaku untuk peran yang sangat spesifik: bahasa yang Anda tuliskan perintah untuk dikirim ke aplikasi perangkat lunak yang ada. (seperti "naskah" TV atau film tradisional)

Misalnya, dahulu kala, halaman web HTML membosankan. Mereka selalu statis. Lalu suatu hari, Netscape berpikir, "Hei, bagaimana jika kita membiarkan browser membaca dan menjalankan perintah kecil di halaman?" Dan seperti itu, Javascript dibentuk.

Perintah javascript sederhana adalah alert()perintah, yang menginstruksikan / memerintahkan browser (aplikasi perangkat lunak) yang membaca halaman web untuk menampilkan peringatan.

Sekarang, apakah alert()terkait, dengan cara apa pun, dengan C ++ atau bahasa kode apa pun yang sebenarnya digunakan browser untuk menampilkan peringatan? Tentu saja tidak. Seseorang yang menulis "alert ()" pada halaman .html tidak memiliki pemahaman tentang bagaimana browser sebenarnya menampilkan alert. Dia hanya menulis perintah yang akan diterjemahkan browser.

Mari kita lihat kode javascript sederhana

<script>
var x = 4
alert(x)
</script>

Ini adalah instruksi yang dikirim ke browser, untuk ditafsirkan oleh browser itu sendiri. Bahasa pemrograman yang digunakan browser untuk benar-benar menetapkan variabel ke 4, dan memasukkannya ke dalam peringatan ... itu sama sekali tidak terkait dengan javascript.

Kami menyebut rangkaian perintah terakhir itu sebagai "skrip" (itulah sebabnya ia diapit dalam <script>tag). Hanya dengan definisi "script", dalam arti tradisional: Serangkaian instruksi dan perintah yang dikirimkan kepada para aktor . Semua orang tahu bahwa skenario (naskah film), misalnya, adalah naskah.

Skenario (skrip) bukanlah aktor, atau kamera, atau efek khusus. Skenario hanya memberi tahu mereka apa yang harus dilakukan.

Sekarang, apa sebenarnya bahasa scripting itu ?

Ada banyak bahasa pemrograman yang seperti alat berbeda di kotak alat; beberapa bahasa dirancang khusus untuk digunakan sebagai skrip.

Javasript adalah contoh nyata; Ada sangat sedikit aplikasi Javascript yang tidak termasuk dalam ranah scripting.

ActionScript (bahasa untuk animasi Flash) dan turunannya adalah bahasa scripting, di mana mereka hanya mengeluarkan perintah ke Flash player / interpreter. Tentu, ada abstraksi seperti pemrograman Berorientasi Objek, tetapi semua itu hanyalah sarana untuk mencapai tujuan: mengirim perintah ke pemutar flash.

Python dan Ruby biasanya juga digunakan sebagai bahasa scripting. Sebagai contoh, saya pernah bekerja untuk sebuah perusahaan yang menggunakan Ruby untuk membuat script perintah untuk dikirim ke browser yang berada di sepanjang baris, "buka situs ini, klik link ini ..." untuk melakukan beberapa pengujian otomatis dasar. Saya tidak "Pengembang Perangkat Lunak" pada pekerjaan itu. Saya baru saja menulis skrip yang mengirim perintah ke komputer untuk mengirim perintah ke browser.

Karena sifatnya, bahasa skrip jarang 'dikompilasi' - yaitu, diterjemahkan ke dalam kode mesin, dan dibaca langsung oleh komputer.

Bahkan aplikasi GUI yang dibuat dari Python dan Ruby adalah skrip yang dikirim ke API yang ditulis dalam C ++ atau C. Ini memberi tahu aplikasi C apa yang harus dilakukan.

Ada garis ketidakjelasan, tentu saja. Mengapa Anda tidak dapat mengatakan bahwa Bahasa Mesin / C adalah bahasa skrip, karena itu adalah skrip yang digunakan komputer untuk berinteraksi dengan motherboard / kartu grafis / chip dasar?

Ada beberapa garis yang bisa kita gambar untuk memperjelas:

  1. Ketika Anda dapat menulis bahasa skrip dan menjalankannya tanpa "kompilasi", itu lebih merupakan semacam skrip langsung. Misalnya, Anda tidak perlu melakukan apa pun dengan skenario untuk memberi tahu aktor apa yang harus dilakukan dengannya. Itu sudah ada, digunakan, apa adanya. Karena alasan ini, kami akan mengecualikan bahasa yang dikompilasi agar tidak disebut bahasa skrip, meskipun bahasa tersebut dapat digunakan untuk tujuan pembuatan skrip dalam beberapa kesempatan.

  2. Bahasa skrip menyiratkan perintah yang dikirim ke aplikasi perangkat lunak yang kompleks ; itulah alasan utama kami menulis skrip - jadi Anda tidak perlu mengetahui kerumitan cara kerja perangkat lunak untuk mengirim perintah ke sana. Jadi, bahasa skrip cenderung menjadi bahasa yang mengirim (relatif) perintah sederhana ke aplikasi perangkat lunak yang kompleks ... dalam hal ini, bahasa mesin dan kode assembly tidak memotongnya.

Justin L.
sumber
2

Izinkan saya menyarankan bahwa bahasa skrip telah menjadi istilah yang banyak orang menjauh. Saya akan mengatakan sebagian besar bermuara pada bahasa yang dikompilasi dan bahasa dinamis saat ini.

Maksud saya, Anda tidak bisa mengatakan sesuatu seperti Python, atau Ruby adalah bahasa "scripting" di zaman sekarang ini (Anda bahkan memiliki hal-hal seperti IronPython dan JIT-bahasa-favorit-Anda , perbedaannya semakin kabur).

Sejujurnya, secara pribadi saya tidak merasa PHP adalah bahasa scripting lagi. Saya tidak berharap orang menyukai mengkategorikan PHP secara berbeda dari kata Java di resume mereka.

Robert Gould
sumber
Meskipun saya banyak bekerja di php, saya akan mengatakan bahwa sampai itu berpindah dari berbasis skrip menjadi memiliki model servlet / real / fcgi yang mengirimkan tugas yang didelegasikan dari server, saya pribadi akan menyebutnya "bahasa skrip yang agak bagus, yang dapat memberikan ilusi aplikasi "
Kent Fredric
Statis / Dinamis, ada bahasa dinamis yang dikompilasi.
Brad Gilbert
Saya ulangi: Maksud saya, Anda tidak bisa mengatakan sesuatu seperti Python, atau Ruby adalah bahasa "scripting" di zaman sekarang ini (Anda bahkan memiliki hal-hal seperti IronPython snd JitYourFavoriteLanguage, perbedaannya semakin kabur).
Robert Gould
1

Bahasa skrip cenderung berjalan dalam mesin skrip yang merupakan bagian dari aplikasi yang lebih besar. Misalnya, JavaScript berjalan di dalam mesin skrip browser Anda.

Martin OConnor
sumber
Lucu sekali bahwa jawaban yang diterima memiliki dua suara negatif.
Robert S.
1
Harus ada semacam lencana untuk itu. Bagaimana dengan "Tidak bisa menangani kebenaran."? Nah, sedikit terlalu bertele-tele. ;-)
Joseph Ferris
3
Perl, Python, Ruby, Tcl / Tk - untuk menyebutkan tetapi empat bahasa scripting - tidak dibangun pada aplikasi yang lebih besar.
Jonathan Leffler
3
Ergo - mereka bukan bahasa scripting.
Milen A. Radev
3
Uh ya, alangkah baiknya jika ini bisa tidak ditandai sebagai benar.
Noon Silk
1

Bahasa skrip adalah bahasa yang diinterpretasikan setiap kali skrip dijalankan, ini menyiratkan memiliki penerjemah dan sebagian besar sangat mudah dibaca manusia, agar berguna bahasa skrip mudah dipelajari dan digunakan.

Setiap bahasa compilable dapat dibuat menjadi bahasa script dan sebaliknya semuanya tergantung pada implementasi interpreter atau compiler, sebagai contoh C ++ memiliki interpreter sehingga dapat disebut sebagai bahasa script jika digunakan demikian (tidak terlalu praktis secara umum seperti C ++ adalah bahasa yang sangat kompleks), salah satu bahasa skrip yang paling berguna saat ini adalah Python ...

Jadi untuk menjawab pertanyaan Anda, definisinya adalah tentang penggunaan juru bahasa untuk menjalankan program skrip dengan cepat dan mudah, untuk menangani tugas-tugas sederhana atau aplikasi prototipe, penggunaan yang paling kuat yang dapat dilakukan seseorang dari bahasa skrip adalah memasukkan kemungkinan untuk setiap penggunaan untuk memperluas aplikasi yang dikompilasi.

Panik
sumber
1

Saya lebih suka orang tidak menggunakan istilah "bahasa skrip" karena menurut saya itu mengurangi upaya. Ambil bahasa seperti Perl, sering disebut "bahasa skrip".

  • Perl adalah bahasa pemrograman!
  • Perl dikompilasi seperti Java dan C ++. Ini hanya dikompilasi jauh lebih cepat!
  • Perl memiliki objek dan namespace serta closure.
  • Perl memiliki IDE dan debugger serta profiler.
  • Perl memiliki pelatihan dan dukungan serta komunitas.
  • Perl bukan hanya web. Perl bukan hanya sysadmin. Perl bukan hanya selotip Internet.

Mengapa kita perlu membedakan antara bahasa seperti Java yang dikompilasi dan Ruby yang bukan? Apa nilai pelabelan?

Untuk lebih lanjut tentang ini, lihat http://xoa.petdance.com/Stop_saying_script .

Andy Lester
sumber
Tidak ada komputer yang dapat menjalankan perl atau ruby ​​(atau bentuk apapun yang dapat mengkompilasi) secara native. Oleh karena itu perl dan ruby ​​adalah bahasa scripting, diinterpretasikan oleh parser atau VM.
anon6439
@psoul: ya. begitu juga java.
Stefano Borini
Ada beberapa teknik untuk mengkompilasi ruby ​​ke kode mesin meskipun saya tidak yakin apakah salah satunya tidak hanya menggabungkan penerjemah dengan string yang mewakili kode ruby, tetapi bahkan jika itu benar, penerjemah kode ruby ​​ke mesin dapat dibuat. itu ke kode mesin tidak akan membuatnya mendekati kecepatan c karena semua pengiriman dinamis dan gc antara lain. Saya tidak berpikir ada prosesor ruby ​​tetapi telah mesin yang dirancang agar lebih sesuai dengan model cadel dan prosesor yang menjalankan java bytecode.
Roman A. Taycher
1

Perbedaan penting adalah pengetikan yang kuat (versus pengetikan yang lemah ). Bahasa skrip sering kali diketik dengan lemah , sehingga memungkinkan untuk menulis program kecil dengan lebih cepat. Untuk program besar, ini merupakan kerugian, karena menghambat compiler / interpreter untuk menemukan bug tertentu secara mandiri, sehingga sangat sulit untuk melakukan refactor kode.

Dimitri C.
sumber
1

Bahasa skrip adalah bahasa pemrograman di mana program biasanya dikirim ke pengguna akhir dalam bentuk tekstual yang dapat dibaca dan di mana ada program yang tampaknya dapat menjalankan program itu secara langsung. (Program mungkin mengkompilasi skrip secara internal; itu tidak relevan di sini karena tidak terlihat oleh pengguna.)

Bahasa skrip relatif umum untuk dapat mendukung sesi interaktif di mana pengguna dapat mengetikkan program mereka dan menjalankannya segera. Ini karena ini adalah perpanjangan sepele dari persyaratan esensial dari paragraf pertama; Persyaratan ekstra utama adalah penambahan mekanisme untuk mengetahui kapan pernyataan yang diketik sudah lengkap sehingga dapat dikirim ke mesin eksekusi.

Donal Fellows
sumber
1

Untuk pandangan yang sedikit berbeda tentang pertanyaan itu. Bahasa scripting adalah bahasa pemrograman tetapi bahasa pemrograman belum tentu merupakan bahasa scripting. Bahasa skrip digunakan untuk mengontrol atau membuat skrip sistem. Sistem itu bisa menjadi sistem operasi di mana bahasa skripnya adalah bash. Sistem ini dapat berupa server web dengan bahasa skrip PHP. Bahasa skrip dirancang untuk mengisi ceruk tertentu; mereka adalah bahasa khusus domain. Sistem interaktif telah menafsirkan bahasa skrip sehingga memunculkan gagasan bahwa bahasa skrip ditafsirkan; bagaimanapun, ini adalah konsekuensi dari sistem dan bukan bahasa skrip itu sendiri.

phreed
sumber
1

Bahasa skrip adalah bahasa yang mengkonfigurasi atau memperluas program yang ada.
Bahasa Scripting adalah bahasa Pemrograman.

Romain Hippeau
sumber
1

Definisi "bahasa skrip" cukup kabur. Saya akan mendasarkannya pada pertimbangan berikut:

  1. Bahasa skrip biasanya tidak memiliki langkah-langkah kompilasi yang dapat dilihat pengguna. Biasanya pengguna hanya dapat menjalankan program dalam satu perintah mudah.

  2. Program dalam bahasa skrip biasanya diedarkan dalam bentuk sumber.

  3. Bahasa skrip biasanya memiliki waktu proses yang ada di banyak sistem, dan waktu proses dapat diinstal dengan mudah di sebagian besar sistem.

  4. Bahasa skrip cenderung lintas platform dan tidak khusus mesin.

  5. Bahasa skrip memudahkan untuk memanggil program dan antarmuka lain dengan sistem operasi.

  6. Bahasa skrip biasanya mudah disematkan ke sistem yang lebih besar yang ditulis dalam bahasa pemrograman yang lebih konvensional.

  7. Bahasa skrip biasanya dirancang untuk kemudahan pemrograman, dan dengan lebih sedikit memperhatikan kecepatan eksekusi. (Jika Anda ingin eksekusi cepat, saran yang biasa adalah membuat kode bagian yang memakan waktu seperti C, dan menyematkan bahasa ke C atau memanggil bit C dari bahasa tersebut.)

Beberapa karakteristik yang saya sebutkan di atas adalah benar dari implementasi, dalam hal ini saya mengacu pada implementasi yang lebih umum. Ada penerjemah C, dengan (AFAIK) tidak ada langkah kompilasi yang jelas, tetapi itu tidak berlaku untuk sebagian besar implementasi C. Anda pasti bisa mengkompilasi program Perl ke kode asli, tapi itu tidak biasanya digunakan. Beberapa karakteristik lainnya bersifat sosial. Beberapa kriteria di atas agak tumpang tindih. Seperti yang saya katakan, definisinya tidak jelas.

David Thornley
sumber
0

Saya akan mengatakan bahasa scripting adalah entitas yang sangat memanipulasi yang tidak didefinisikannya sendiri. Misalnya, JavaScript memanipulasi objek DOM yang disediakan oleh browser, PHP mengoperasikan perpustakaan fungsi berbasis C yang sangat besar, dan seterusnya. Tentu bukan definisi yang tepat, lebih merupakan cara berpikir jika itu.

Michael Pliskin
sumber
Mmm, PHP menggunakan pustaka C yang mendasari, tetapi ini adalah kasus untuk sebagian besar bahasa, termasuk Java (pada level terendah). Dan itu tidak memanipulasi fungsi-fungsi ini ...
PhiLho
0

Jika tidak / tidak mau berjalan di CPU, itu skrip bagi saya. Jika juru bahasa perlu dijalankan pada CPU di bawah program, maka itu adalah skrip dan bahasa skrip.

Tidak ada alasan untuk membuatnya lebih rumit dari ini?

Tentu saja, di sebagian besar (99%) kasus, jelas apakah suatu bahasa adalah bahasa skrip. Tetapi pertimbangkan bahwa VM dapat meniru set instruksi x86, misalnya. Bukankah ini akan menjadikan x86 bytecode sebagai bahasa skrip saat dijalankan di VM? Bagaimana jika seseorang menulis kompiler yang akan mengubah kode perl menjadi executable asli? Dalam hal ini, saya tidak tahu lagi harus menyebut bahasa itu apa. Itu akan menjadi keluaran yang penting, bukan bahasanya.

Kemudian lagi, saya tidak mengetahui hal seperti ini telah dilakukan, jadi untuk saat ini saya masih nyaman menyebut bahasa yang ditafsirkan sebagai bahasa skrip.

anon6439
sumber
1
Anda memanggil hampir semua bahasa kecuali yang mengkompilasi ke biner asli untuk bahasa skrip? Saya yakin pengembang-Java akan senang disebut scripters;)
truppo
1
Mereka. Scripters, itu dia.
anon6439
0

Sebuah naskah adalah relatif kecil program yang. Sebuah sistem yang relatif besar program, atau suatu koleksi dari program yang relatif besar.

Beberapa bahasa pemrograman dirancang dengan fitur-fitur yang oleh desainer bahasa dan komunitas pemrograman dianggap berguna saat menulis program yang relatif kecil. Bahasa pemrograman ini dikenal sebagai bahasa scripting , misalnya PHP.

Demikian pula, bahasa pemrograman lain dirancang dengan fitur-fitur yang oleh desainer bahasa dan komunitas pemrograman dianggap berguna saat menulis program yang relatif besar. Bahasa pemrograman ini dikenal sebagai bahasa sistem , misalnya Java.

Sekarang, program kecil dan besar dapat ditulis dalam bahasa apa pun. Program Java kecil adalah skrip. Misalnya, program Java "Hello World" adalah skrip, bukan sistem. Sebuah program besar, atau kumpulan program, yang ditulis dalam PHP adalah sebuah sistem. Misalnya, Facebook, yang ditulis dalam PHP, adalah sebuah sistem, bukan skrip.

Mempertimbangkan fitur bahasa tunggal sebagai "uji lakmus" untuk memutuskan apakah bahasa tersebut paling cocok untuk skrip atau pemrograman sistem patut dipertanyakan. Misalnya, skrip dapat dikompilasi menjadi kode byte atau kode mesin, atau dapat dieksekusi dengan interpretasi pohon sintaksis abstrak (AST) langsung.

Jadi, bahasa adalah bahasa skrip jika biasanya digunakan untuk menulis skrip . Bahasa skrip mungkin digunakan untuk menulis sistem, tetapi aplikasi semacam itu cenderung dianggap meragukan.

Greg Mattes
sumber