Sampai sekarang saya tidak tahu perbedaan KUNCI antara ketiganya. Ketika seseorang bertanya kepada saya tentang ini, saya hanya memberi tahu mereka bahwa C # adalah bahasa pemrograman, HTML dan XML adalah Bahasa Markup, dan JavaScript serta VBScript adalah bahasa scripting. Tetapi apa perbedaan utama yang membedakan mereka dari satu sama lain?
38
Jawaban:
Biarkan saya mencoba menemukan garis pemisah antara ketiga jenis bahasa ini. Tentu saja, akan ada banyak pengecualian dan contoh tandingan, karena ini hanya pendapat saya.
Bahasa markup digunakan untuk mengontrol penyajian data, seperti "mewakili nama pengguna ini sebagai daftar peluru atau sebagai tabel".
Bahasa scripting digunakan untuk memediasi antar program untuk menghasilkan data. Ini khususnya berlaku untuk bahasa skrip shell seperti bash, tetapi jika Anda merenungkannya, Python atau Perl juga berasal dari kebutuhan untuk menyelesaikan tugas di UNIX tanpa menulis program dalam C. Program yang Anda kontrol sebagian besar waktu dalam bahasa tersebut adalah penerjemah bahasa itu sendiri , yang menyelesaikan tugas-tugas umum untuk Anda. Program khas lain yang berinteraksi dengan Anda adalah server basis data, atau server web.
Kembali ke metafora daftar pengguna, dalam bahasa skrip Anda meminta database "beri saya semua nama pengguna", lalu minta server web "kirim daftar pengguna ini ke pemohon ini".
Bahasa pemrograman digunakan untuk mengubah data . Ia melakukannya dengan membuat instruksi CPU yang menulis ulang data input ke dalam output; semoga output yang diinginkan . Contoh transformasi data adalah menghitung jumlah dari sejumlah penambahan, atau menyelesaikan sistem persamaan diferensial dari serangkaian kondisi, atau menulis dan membaca dari struktur mirip pohon dengan cara yang konsisten diberikan urutan kemungkinan pertanyaan simultan .
Kembali ke metafora daftar pengguna, dalam bahasa pemrograman Anda menulis cara melintasi tabel catatan, ekstrak dari setiap rekaman bidang "nama", dan kembalikan semuanya ke pemohon.
Perhatikan bahwa bahasa scripting adalah subset dari bahasa pemrograman yaitu bahasa dapat berupa "scripting" dan "pemrograman": Python secara teratur digunakan untuk "memediasi antar program", dan juga untuk "mengubah data". Ada bahasa lain seperti Java yang jarang digunakan untuk "memediasi antara program", bukan karena ini tidak mungkin tetapi karena mereka tidak dirancang untuk membuatnya mudah. Fitur utama dari bahasa scripting adalah bahwa ia dapat mengatur program lain, seperti halnya skrip memberikan isyarat kepada aktor untuk memulai bagiannya.
sumber
Bahasa markup adalah bahasa yang digunakan untuk mewakili data terstruktur. Sebagai contoh, HTML memungkinkan untuk menentukan bahwa beberapa bagian dari dokumen adalah judul atau bagian lain adalah daftar, dengan perbandingan dengan dokumen teks datar.
Bahasa markup tidak dianggap sebagai bahasa pemrograman¹.
Perbedaannya dengan bahasa pemrograman tidak selalu jelas. Misalnya, XSLT adalah bahasa Turing-complete², tetapi didasarkan pada XML yang merupakan bahasa markup.
Wikipedia sendiri melakukan upaya penting untuk menghindari kualifikasi XSLT sebagai bahasa pemrograman atau bahasa markup. Itu hanya mengatakan itu adalah bahasa deklaratif, dan itu menggunakan "teknik optimasi yang ditemukan dalam bahasa pemrograman fungsional dan bahasa query database".
Bahasa scripting adalah bahasa pemrograman yang ditafsirkan, bukan dikompilasi, yang berarti bahwa bahasa scripting mewakili subset dari semua bahasa pemrograman.
Tidak selalu jelas apakah suatu bahasa pemrograman adalah bahasa scripting, seperti tidak selalu jelas apakah suatu bahasa dikompilasi atau ditafsirkan. Sebagai contoh, PHP dapat dikompilasi ke bytecode antara dan kemudian diubah menjadi kode mesin oleh kompiler JIT, sementara masih dianggap sebagai bahasa scripting⁴.
Lihat juga: Memisahkan Meta-Rambut oleh Steven Lott.
¹ “XML bukan bahasa pemrograman”. Lihat XML dalam 10 poin .
² "XSLT adalah bahasa lengkap Turing" Lihat XSLT di Wikipedia
³ “HHVM mengkompilasi Hack dan PHP menjadi bytecode perantara. Bytecode ini kemudian diterjemahkan ke dalam kode mesin x64 secara dinamis saat runtime oleh kompiler just-in-time (JIT). ”Lihat HHVM .
⁴ Bahasa skrip dalam Daftar bahasa pemrograman berdasarkan jenis di Wikipedia.
sumber
TypeError
! Setiap bahasa dapat diimplementasikan oleh penerjemah, setiap bahasa dapat diimplementasikan oleh kompiler.Untuk menghasilkan taksonomi apa pun, Anda harus terlebih dahulu bertanya pada diri sendiri beberapa pertanyaan:
Biasanya, ketika seseorang mendengar pertanyaan seperti yang Anda ajukan, jawaban yang diharapkan membuat beberapa asumsi. Sebagai contoh, adalah wajar untuk mengasumsikan bahwa karena semua ini adalah bahasa, mereka harus membentuk hierarki di bawah konsep bahasa yang lebih umum, atau mereka membagi ruang semua bahasa, atau mereka adalah himpunan bagian dari satu sama lain.
Bahasa pemrograman
Sayangnya, tidak satu pun di atas yang tampaknya benar. Mungkin hanya bahasa pemrograman yang memiliki definisi paling disetujui. Bahasa pemrograman adalah bahasa yang menyandikan program. Pengkodean berarti bahwa suatu kata dalam bahasa dapat diartikan sebagai suatu program (suatu urutan tindakan). Bahasa pemrograman komputer adalah bagian dari ini. Contoh bahasa pemrograman non-komputer: daftar belanjaan, ditafsirkan sebagai petunjuk bagi pembeli di supermarket, DNA ditafsirkan dengan menyalin peptida, rekaman musik analog yang berfungsi sebagai program untuk perekam kaset.
Bahasa pemrograman komputer dengan demikian yang memprogram komputer.
Bahasa scripting
Tidak terdefinisi dengan baik. Ini terbuka untuk interpretasi apa arti istilah ini. Secara historis, akan terlihat bahwa bahasa pemrograman yang tidak memiliki kompiler untuk menghasilkan kode mesin telah dipanggil dengan cara ini. Dengan standar saat ini, ini akan menempatkan setiap bahasa pemrograman populer dan Assemblers ke dalam kategori ini. Bahkan yang disebut bahasa tingkat rendah seperti C memerlukan runtime dengan prosedur yang sudah ada sebelumnya, sehingga binari yang diperoleh dengan mengkompilasi program C tidak sepenuhnya kode mesin, tetapi juga memanggil ke runtime setiap saat dan kemudian.
Bahasa markup
Tidak terdefinisi dengan baik. Setiap kali istilah ini digunakan, maksudnya adalah untuk menggambarkan bahasa pemrograman dengan leksikon yang sangat terbatas, terutama digunakan untuk menghasilkan gambar visual atau audio. Mungkin sulit untuk melihat XML sebagai pemrograman sesuatu, tetapi jika Anda melihat Man atau markup TexInfo, Anda akan melihat bahwa karakter "spesial" sebenarnya adalah instruksi dari penerjemah.
Dimungkinkan juga untuk memberikan interpretasi "pemrograman" untuk bahasa XML, sesuatu yang bisa seperti ini:
Intinya: pembagian ini mulai hari ini, sepertinya tidak terlalu berarti, itu hanya dapat memberi Anda beberapa intuisi tentang jenis bahasa apa yang Anda hadapi, tetapi itu tidak akan memberi Anda definisi yang ketat.
sumber
Ketiga konsep agak tumpang tindih, sehingga Anda bisa mendapatkan argumen tanpa akhir apakah XSLT adalah bahasa pemrograman atau apakah Python adalah bahasa scripting atau tidak.
Sebuah bahasa markup adalah bahasa yang mewakili terstruktur data dalam format tekstual , HTML adalah yang paling terkenal, tetapi ada berbagai format untuk berbagai keperluan, seperti SVG untuk grafis, WSDL untuk menggambarkan antarmuka layanan web, resx untuk file resouce di. bersih dan sebagainya. Aturan praktisnya adalah bahwa bahasa markup tidak menggambarkan proses atau algoritma (seperti bahasa pemrograman) tetapi merupakan data murni. Tapi itu juga merupakan CS wawasan mendasar yang ada adalahtidak ada perbedaan mendasar antara kode dan data. Beberapa bahasa markup seperti XSLT memiliki loop dan kondisional seperti bahasa pemrograman "nyata", dan beberapa bahasa pemrograman seperti Prolog hampir merupakan data murni tanpa proses yang ditentukan dalam kode. Dan Lisp mengaburkan garis sehingga memperlakukan kode sendiri sebagai format data terstruktur.
Adapun perbedaan antara bahasa pemrograman dan bahasa scripting , ini adalah perbedaan historis yang hampir usang saat ini. Di masa lalu kami telah menyusun program yang berdiri sendiri ditulis dalam katakanlah C, dan kemudian kami memiliki bahasa scripting seperti mengatakan skrip shell atau Word Basic, yang ditafsirkan dan dirancang untuk memanipulasi program dan alat lain. Saat ini jalurnya cukup kabur dengan banyak jalan tengah, karena kami memiliki berbagai tingkat kompilasi dan interpretasi (kompilasi bytecode, kompilasi JIT, dll.), Dan berbagai API independen-bahasa. Jadi perbedaannya tidak begitu berguna.
sumber
Bahasa markup digunakan untuk menggambarkan data dan bukan logika. Penggunaan tipikal dari mereka adalah untuk menggambarkan format dokumen, HTML dirancang untuk ini misalnya. Tapi mereka kadang-kadang digunakan sebagai format data umum juga, XML adalah bahasa markup yang sering digunakan untuk hanya menggambarkan data.
Perbedaan antara bahasa pemrograman dan skrip sangat kabur, keduanya cenderung lengkap karena Anda dapat memecahkan masalah yang dapat dikomputasi dengan mereka. Ada beberapa 'petunjuk' umum yang dapat Anda cari untuk melihat apakah suatu bahasa adalah bahasa pemrograman atau tidak.
Tetapi pada akhirnya, jika suatu bahasa adalah bahasa scripting atau bahasa pemrograman lebih merupakan masalah konvensi daripada kriteria ketat. Bahkan petunjuk di atas hanyalah tren, Anda akan menemukan bahasa pemrograman yang memenuhi semua kriteria untuk bahasa scripting namun masih dianggap bahasa pemrograman.
sumber
TypeError
! Setiap bahasa dapat diimplementasikan oleh penerjemah, setiap bahasa dapat diimplementasikan oleh kompiler. Bahkan dimungkinkan untuk membuat kompiler secara otomatis dari juru bahasa dan sebaliknya.