Teman pemrograman saya selalu memberi tahu saya bahwa HTML adalah bahasa markup dan C ++ adalah bahasa pemrograman. Ketika saya bertanya kepada mereka apa bedanya, mereka tidak pernah memberi saya jawaban yang masuk akal.
Apa yang bisa membuat satu panggilan C ++ bahasa pemrograman, dan HTML tidak?
programming-languages
terminology
markup
Lucas - Akademi Pengkodean yang Lebih Baik
sumber
sumber
Jawaban:
Bahasa pemrograman adalah notasi yang dirancang untuk meneruskan instruksi ke mesin. Dengan definisi itu baik C ++ dan HTML adalah bahasa pemrograman, seperti notasi Joseph Marie Jacquard yang digunakan pada 1801 untuk memprogram alat tenunnya .
Namun dengan menjamurnya bahasa yang digunakan untuk menyusun dan / atau mendeskripsikan data, definisi bahasa pemrograman bergeser untuk memasukkan hanya bahasa yang mampu mengekspresikan algoritma. Ini adalah definisi yang lebih umum saat ini dan tidak termasuk bahasa seperti HTML atau XML.
Inti dari definisi saat ini adalah konsep kelengkapan Turing . Sebagian besar bahasa pemrograman Turing lengkap, dan kelengkapan Turing sering dikutip sebagai satu sifat kritis yang memisahkan bahasa pemrograman dari bahasa komputer lainnya. Ini cukup baik sebagai aturan umum, tetapi tidak sepenuhnya akurat:
Tergantung pada konteksnya, Anda dapat memilih definisi yang Anda inginkan.
Edit:
Lebih jauh diketahui, implementasi bahasa tidak memberikan karakteristik ke bahasa itu sendiri, misalnya: Spesifikasi bahasa dapat menentukan bahasa lengkap turing, seseorang dapat mengimplementasikannya dengan sembarangan meninggalkan kelengkapan turing. Implementasi ini menjadi non-turing complete tidak berarti bahasa itu sendiri tidak turing lengkap (melainkan kemungkinan implementasi itu tidak sesuai). Detail suatu bahasa dan detail implementasi tertentu dari suatu bahasa harus diakui sebagai hal yang terpisah, inilah mengapa tidak akurat untuk menyebut bahasa yang ditafsirkan atau dikompilasi dll.
sumber
- "Saya tahu ketika saya melihatnya" Artikel Wikipedia
Seperti kecabulan, saya pikir kita semua tahu bahasa pemrograman ketika kita melihatnya. Jelas OP melakukannya, karena Anda sudah menilai C ++ sebagai bahasa pemrograman, dan HTML bukan menjadi bahasa pemrograman.
Jadi apa sebenarnya tujuan mengejar definisi formal? Yannis telah memberikan ringkasan yang bagus tentang mengapa definisi paling populer, kelengkapan Turing, cacat: mengarah ke kategorisasi yang menentang tes "Saya tahu kapan saya melihatnya".
Saya katakan kepada Anda bahwa definisi apa pun yang dapat Anda buat akan mengarah ke beberapa bahasa yang kita semua anggap bukan bahasa "pemrograman" akan dikategorikan demikian; atau untuk beberapa bahasa yang kita semua rasakan sebagai "pemrograman" bahasa akan dikategorikan tidak begitu.
Mengapa tidak pergi saja dengan naluri Anda? Saya menggunakan heuristik sederhana: bahasa pemrograman adalah bahasa yang tujuan utamanya, menurut pendapat saya dan menurut pengamatan saya, adalah menulis program. Tidak menandai konten. Tidak mengubah XML. Untuk menulis program tujuan umum. Saya lebih suka mengetahuinya ketika saya melihatnya daripada mencoba untuk mendefinisikan definisi formal, dan saya tidak melihat nilai asli yang dapat datang dari mencoba definisi tersebut.
sumber
Bahasa markup terutama berurusan dengan bagaimana informasi ditampilkan dan mereka umumnya kurang dalam infrastruktur pemrograman variabel, matematika, perbandingan, pengambilan keputusan (jika ... maka), loop (untuk, sementara), dll.
HTML dengan sendirinya statis; artinya, seperti pengolah kata, ini dimaksudkan untuk menyajikan informasi apa adanya. Hanya dengan penambahan semacam bahasa pemrograman (biasanya bahasa scripting seperti JavaScript, PHP, dll) halaman web HTML dapat memiliki konten yang "berubah". Bahasa scripting menyediakan kemungkinan "pemrograman" dengan variabel, matematika, perbandingan, pengambilan keputusan, loop, dll.
sumber
HTML adalah bahasa deklaratif. Itu tidak berbuat banyak dengan sendirinya, itu hanya menggambarkan dokumen dan kontennya (menggunakan tag yang memiliki makna semantik).
C ++ di sisi lain melakukan sesuatu. Itu mendefinisikan fungsi dan kelas, tetapi juga menjelaskan bagaimana fungsi-fungsi ini harus bekerja bersama, bagaimana input dan output mereka diikat bersama-sama dengan cara yang bermakna dan bagaimana aplikasi harus berjalan secara keseluruhan.
sumber