Mengapa penting bahwa HTML dan CSS bukan bahasa pemrograman?

158

Contoh di sini:

Bahasa apa yang harus saya ketahui jika saya tertarik membangun aplikasi web?

Ya, saya mengerti bahwa HTML dan CSS tidak lengkap Turing. Ya, saya mengerti bahwa mereka adalah bahasa deklaratif, bukan bahasa imperatif. Tetapi mengapa orang selalu dipukuli di atas kepala dengan fakta pedantic (dan bisa dibilang jelas) ini ketika mereka mengajukan pertanyaan tentang bahasa-bahasa ini?

Robert Harvey
sumber
32
Itu hanya mengganggu saya ketika orang meletakkannya di resume mereka. Yang lebih buruk adalah ketika mereka meletakkan jQuery di sebelah JavaScript di bawah "Language Experience:".
Josh K
19
Tampaknya cukup jelas bagi saya: Jika saya perlu mencari tahu cara mempekerjakan orang, atau siapa yang ditugaskan untuk tugas tertentu, saya perlu tahu keterampilan apa yang mereka miliki. Jika tugasnya melibatkan penerapan algoritma, saya tidak akan memberikannya kepada seseorang yang hanya memiliki latar belakang dalam HTML / CSS. Saya tidak akan menugaskan seseorang yang hanya memiliki program C baris perintah penulisan latar belakang untuk menulis sekelompok halaman web kompleks yang harus bekerja pada beberapa browser. Saya tidak tahu apakah Anda sudah dalam posisi mempekerjakan atau mengelola orang, tetapi Anda bertemu dengan banyak orang yang bersumpah tugas-tugas ini dapat dipertukarkan.
Charles E. Grant
8
Data hanya kode bodoh dan kode hanya data pintar: stackoverflow.com/questions/871833/…
Christoffer Hammarström
14
Orang-orang gagal memahami pertanyaan OP yang dalam istilah yang lebih tumpul adalah: "Mengapa jenis twit tertentu, dalam diskusi tentang 'bahasa' umum, merasa perlu menunjukkan bahwa CSS bukan bahasa pemrograman ? " Pertama-tama, ya. Terima kasih. Siapa pun yang tahu sedikit saja trik JavaScript bodoh akan mendapatkannya. Apakah penguasaan CSS berarti sesuatu bagi seorang programmer yang telah ada dan menguasainya? Oh ya. Ya itu. Saya tidak peduli jika kita sedang memprogram bajak Mars berikutnya, itu adalah pemutus hubungan yang pasti.
Erik Reppen
7
XSLT adalah kasus yang menarik untuk dipikirkan dalam konteks ini ...
Dan Diplo

Jawaban:

300

Apa bedanya, benarkah?

Perbedaan nyata dan penting antara bahasa pemrograman dan bahasa-bahasa lain ini adalah ini:

HTML dan CSS menjelaskan presentasi , sedangkan bahasa pemrograman menjelaskan fungsi

Saya bermaksud mengilustrasikan mengapa perbedaan ini penting, tetapi kesedihan tentang masalah ini kadang-kadang salah tempat.

Kisah nyata :

Saya pernah menghabiskan beberapa bulan mengembangkan sistem manajemen kinerja yang kompleks menggunakan bahasa pemrograman yang "tepat". Itu otomatis proses pengumpulan data dari berbagai sistem lain, melakukan berbagai manipulasi pada data itu dan kemudian disajikan hasilnya dalam tabel sederhana.

Setelah live, seorang manajer senior melihat alat yang ditulis untuk bisnis yang serupa, dan bertanya apakah kami bisa mengganti apa yang saya tulis menggunakan alternatif mereka. Selain itu, dia kesal karena saya menghabiskan waktu berminggu-minggu untuk mengembangkan solusi saya, di mana aplikasi baru ini telah ditulis dalam hitungan hari.

Investigasi lebih lanjut mengungkapkan bahwa opsi yang disukai manajer adalah semua presentasi tanpa substansi: ada banyak warna dan ikon dan grafik, tetapi sama sekali tidak ada logika di belakangnya. Semua data harus dikumpulkan dan dimanipulasi secara manual. Meskipun antarmuka yang cantik, aplikasi ini pada dasarnya tidak berguna.

Saya senang mengatakan bahwa manajer yang dimaksud dibujuk bahwa pendekatan saya adalah yang memenuhi kebutuhan bisnisnya yang sebenarnya.

Pentingnya presentasi :

Seringkali ada implikasi bahwa keterampilan dalam HTML, CSS, dll. Entah bagaimana lebih rendah daripada keterampilan dalam bahasa pemrograman "nyata". Ini adalah kesalahan serius.

Dalam cerita saya, manajer senior merasa bahwa desain sangat penting baginya, sejauh ia pada awalnya siap untuk mengabaikan fungsi yang menguntungkannya. Sekarang, jika ini adalah insiden yang terisolasi, saya mungkin menyarankan bahwa manajer itu hanya konyol. Tapi ternyata tidak. Berkali-kali, saya bertemu dengan pengguna yang terkesan dengan grafik yang mencolok dan widget whizzy, tetapi tidak terkesan dengan fungsi mentah dan pencapaian teknis saya. Saya pikir ada beberapa pelajaran untuk dipelajari di sini:

  • Orang mengevaluasi perangkat lunak berdasarkan kriteria yang mereka pahami. Mereka sering memahami perbedaan antara tampan dan jelek, tetapi jarang menghargai nuansa teknis.
  • Orang-orang tertipu oleh penampilan. Ini mungkin bukan hal yang baik, tetapi itu adalah kenyataan bahwa kita harus hidup bersama.
  • Penampilan memengaruhi perasaan orang tentang perangkat lunak. Cara orang merasa tentang perangkat lunak penting bagi mereka. Memang, orang kadang-kadang lebih suka perangkat lunak yang membuat mereka merasa lebih baik daripada perangkat lunak yang secara fungsional unggul. Memang, mereka mungkin lebih produktif dengan alat perasaan-baik daripada dengan alat yang unggul secara teknis. Sejauh ini, pengguna kami tidak dibodohi. Mereka sebenarnya membuat pilihan yang bijaksana dan bijaksana.
  • Sebagai programmer, kita sering mengabaikan peran presentasi karena kita fokus pada fungsi. Dalam batas tertentu, ini benar dan tepat. Namun, penting untuk menyadari bahwa ada dimensi lain dari pekerjaan kami yang penting bagi pelanggan kami.

Jadi, bahasa berorientasi presentasi (HTML, CSS) penting. Nilai tambah oleh mereka yang dapat menggunakan alat-alat ini secara efektif tidak boleh diremehkan.

Pentingnya bahasa pemrograman nyata

Seperti yang ditunjukkan OP, bahasa pemrograman "nyata" adalah Turing Lengkap. Sebagai geek sedih yang tepat, saya menemukan ini sangat menarik. Ini berarti bahwa, untuk setiap program yang ditulis dalam bahasa TC, program yang secara fungsional setara dapat ditulis dalam bahasa TC lainnya . Tentu saja, ini bukan untuk mengatakan bahwa semua bahasa adalah sama. Mereka masing-masing memiliki kekuatan dan kelemahan yang membuat mereka lebih atau kurang cocok untuk tugas-tugas tertentu. Namun, selain I / O, ini berarti bahwa semua program dapat ditulis dalam semua bahasa pemrograman yang sebenarnya.

(Kebetulan, yang penting adalah TC. Deklaratif vs imperatif adalah red-herring di sini. SQL, misalnya, adalah deklaratif tetapi juga merupakan bahasa pemrograman yang tepat karena itu adalah TC.)

Tentu saja, hal yang sama tidak berlaku untuk bahasa markup seperti HTML atau CSS. Faktanya, ada seluruh kelas masalah yang tidak bisa dipecahkan oleh bahasa-bahasa ini . Di mana saya dapat memprogram apa pun yang saya inginkan dalam bahasa pemrograman yang sebenarnya - termasuk mesin tata letak - tidak mungkin mencapai hal yang sama dengan bahasa yang bukan TC.

Seperti yang disorot dalam cerita saya, HTML dan sejenisnya digunakan untuk menghasilkan presentasi. Bahasa pemrograman nyata digunakan untuk menghasilkan fungsionalitas.

Mengapa para programmer sangat teliti tentang itu semua?

  1. Programer menghabiskan banyak waktu, tenaga dan uang untuk mengembangkan keterampilan mereka. Orang secara alami menghargai hal-hal yang mereka investasikan ("hatimu adalah tempat uangmu").
  2. Programmer sering merasa perlu untuk membenarkan jumlah waktu yang dibutuhkan untuk menghasilkan hasil dibandingkan dengan hasil cepat yang dicapai oleh desainer UI. Untuk melakukan ini, mereka perlu membuat perbedaan antara apa yang sebenarnya dilakukan kedua kelompok .
  3. Karena pengusaha perlu menerapkan orang yang tepat ke pekerjaan yang tepat. Kecuali kita mengklarifikasi perbedaan (seringkali teknis), manajer dengan mudah membuat panggilan yang salah.
  4. Karena ada perbedaan nyata dan mendasar , seperti diuraikan di atas.

Apakah selalu pantas menjadi orang yang bertele-tele?

Mari kita hadapi itu, sebagai programmer kami banyak alami bertele-tele . Ini sesuai dengan wilayahnya. Itu tidak membantu bahwa banyak dari kita yang terbakar ketika non-programer gagal memahami apa yang kita lakukan.

Namun demikian (dan jujur, ini bertentangan dengan naluri alami saya), saya tidak berpikir kita perlu memanggil orang-orang setiap kali mereka menyeleweng setiap perbedaan kecil .

Hal-hal penting di sini adalah konteks dan perspektif .

Saya diberitahu bahwa, dari sudut pandang seorang ahli biologi, tomat adalah buah. Tetapi ketika saya membelinya di supermarket, saya mencarinya di antara sayuran. Mengapa? Karena perbedaan teknis tidak penting dalam konteks khusus itu. Terlebih lagi, perbedaannya justru akan menghalangi kegunaannya: jika saya cukup bodoh untuk memasukkan tomat ke dalam salad buah, misalnya.

Itu sama dengan bahasa komputer. Ada kalanya perbedaan antara bahasa pemrograman dan bahasa lain benar-benar penting . Namun, cukup sering, kita semua dapat berkomunikasi dengan sangat efektif ketika hanya menyatukan semuanya. Dalam kasus pertanyaan yang ditautkan oleh OP, benar-benar tidak masalah bahasa apa bahasa pemrograman yang benar dan yang tidak. Menunjukkan perbedaan tidak memajukan diskusi dengan cara apa pun. Untungnya, selain menambahkan sedikit kebisingan (dan menjadi rangsangan untuk diskusi yang menarik!) Keederan yang dihubungkan oleh OP adalah konsekuensi kecil. Paling buruk, bagaimanapun, keeduhan dapat membangkitkan perasaan negatif dan merusak hubungan ... setidaknya menurut istri saya.
:-)

Bagaimana cara berurusan dengan keriaan di antara programmer

Seorang teman pengkhotbah saya pernah menyampaikan khotbah yang berjudul:

apakah ini bukit yang pantas ditakuti?

Dia merujuk pada para jenderal yang membuat penilaian strategis tentang pertempuran mana yang layak diperjuangkan: apakah perolehannya sepadan dengan biayanya?

  • Apakah benar-benar ada gunanya mengganggu alur diskusi untuk membuat perbedaan ini?
  • Apakah keangkuhan saya berasal dari rasa kesombongan atau dari sakit masa lalu?
  • Apakah komentar saya menghargai keterampilan orang lain serta saya sendiri?

Tentu saja, ada saat-saat ketika perbedaan perlu dibuat. Tujuan saya adalah, ketika saya memberikan kontribusi, itu akan menambah nilai bagi upaya kolektif kita.

Lagipula, itulah tugas setiap programmer sejati .

Kramii
sumber
4
Saya tidak berpikir SQL itu Turing-lengkap, kecuali jika Anda berbicara tentang T-SQL atau PL / SQL.
FrustratedWithFormsDesigner
@FrustratedWithFormsDesigner: Anda benar! Terima kasih telah menjemputku untuk itu. (Namun, intinya saya membuat
pendirian
1
Jawaban yang sangat bagus Sebagai seorang pengembang web, saya sering melihat situasi di mana klien lebih terkesan dengan desain "mencolok" daripada oleh fungsionalitas yang diusulkan. Sementara ini mungkin menyinggung insting programmer purist kami (bahwa fungsionalitas harus menjadi raja) itu adalah sesuatu yang kita abaikan pada bahaya kita.
Dan Diplo
4
+1: Joel Spolsky memiliki posting blog yang menarik yang mengambil masalah dengan fungsi vs GUI mencolok. Terutama bahaya menunjukkan GUI 100% selesai dan sangat mencolok ketika fungsionalitas tidak ada. Bacaan yang bagus jika Anda belum membacanya. joelonsoftware.com/articles/fog0000000356.html
Leo
3
"Mereka mungkin lebih produktif dengan alat perasaan-baik daripada dengan alat-alat yang unggul secara teknis" - Benar, benar, benar! Apple telah membangun bisnis mereka berdasarkan hal ini. Jangan salah paham, Mac juga memiliki substansi, tetapi apa yang membuat beberapa orang membayar hampir dua kali lipat untuk mesin Mac dibandingkan Linux atau Windows adalah kelihatannya keren dan rasanya enak digunakan.
GlenPeterson
116

Katakan pada Insinyur Sipil atau Mekanik bahwa Anda mempelajari "Rekayasa Perangkat Lunak" dan mereka akan memberi tahu Anda bahwa "Rekayasa Perangkat Lunak" bukanlah rekayasa nyata .

Katakan pada pilot F-16 bahwa Anda menerbangkan Cessnas untuk bersenang-senang dan dia akan memberi tahu Anda bahwa Anda bukan pilot sungguhan .

Katakan kepada dokter bahwa Anda adalah chiropractor dan dia akan memberi tahu Anda ... yah, jangan pergi ke sana :-)

Saya pikir sebagian besar orang tidak menyukai gagasan bahwa profesi mereka disusupi oleh orang-orang yang berpura-pura atau orang-orang yang tidak benar-benar "layak".

Sekarang, agar adil, cukup jelas bahwa HTML dan CSS bukan bahasa pemrograman . Mereka bukan lagi bahasa pemrograman yang format .docx adalah bahasa pemrograman, dan untuk mengklaim bahwa Anda seorang programmer jika semua yang Anda tahu adalah HTML dan CSS tentu tidak akurat. Tapi saya pikir beberapa kegigihan dalam menjawab dapat dikaitkan dengan apa yang saya katakan di atas.

Juga, dalam pertanyaan yang Anda tautkan, si penanya menyebut HTML dan CSS sebagai "bahasa", bukan "bahasa pemrograman". HTML adalah bahasa markup dan CSS adalah bahasa juga (saya tidak tahu apa jenis bahasa yang Anda sebut CSS?), Jadi saya pikir itu agak tidak adil untuk memanggilnya keluar karena memanggil mereka "bahasa "...

Dean Harding
sumber
7
"Tapi, saya tidak tahu" bahasa "seperti apa yang Anda sebut CSS?" - Pada sedikit "bahasa deskripsi gaya" akan melakukannya.
ocodo
28
@ acidzombie24: Apa arti "L" dalam "HTML"?
Dean Harding
8
Jika memiliki sintaks dan semantik, maka cukup sulit untuk mengklaim itu bukan bahasa. HTML dan CSS keduanya bahasa dengan kriteria ini (seperti bahasa Inggris, Esperanto, Klingon, dan UML). Namun, tidak satu pun dari mereka adalah bahasa "pemrograman".
Zach
6
@Dean Harding - Hyper Text Markup Lego?
VirtuosiMedia
4
CSS adalah DSL (Domain Specific Language) untuk menggambarkan gaya (mis. Domain itu adalah estetika visual)
Paul
9

Bagi saya tidak terlalu penting.

Tetapi saya berasumsi bahwa bagi mereka yang melakukannya, perbedaan antara HTML, CSS, XML, dll. Dan Real Programming Languages ​​™ adalah seperti perbedaan antara kayu dan cat sebagai bahan bangunan. Anda tidak dapat membuat hal-hal dengan cat seperti Anda bisa dengan kayu, dan juga Anda tidak dapat memprogram dengan HTML seperti Anda bisa dengan RPL.

Namun saya beri Anda, untuk beberapa percakapan, membuat perbedaan seperti itu bisa tidak relevan, dan karena itu bertele-tele dan menjengkelkan.

Eric King
sumber
1
XML adalah contoh buruk karena lebih umum daripada HTML / CSS - XSLT adalah XML dan Turing-complete, misalnya. Saya pikir XML tidak benar-benar bahasa hanya sebagai sintaks - itu menentukan bagaimana token didefinisikan tetapi tidak apa artinya.
Tikhon Jelvis
@TikhonJelvis Saya pikir kita pada dasarnya mengatakan hal yang sama, tetapi saat melakukannya Anda membuktikan maksud saya. Memisahkan rambut, apakah XML (eXtensible Markup Language) adalah "bahasa" atau "sintaksis" sebagian besar tidak relevan dengan poin yang saya buat, dan karena itu ...
Eric King
6

Ini mungkin bukan perbedaan "penting", karena bisa dibilang banyak pekerjaan di bagian html / css dari beberapa situs web seperti di bagian pemrograman.

Tetapi ini adalah perbedaan yang signifikan, karena siapa pun yang tidak tahu apa artinya tidak memiliki tempat dalam tim yang melakukan pengembangan web.

Jika seorang desainer percaya HTML adalah pemrograman, biarkan ia tetap mendesain dengan alat Adobe dan melakukan desain yang berhubungan dengan cetak; tapi jangan percaya apa pun yang mungkin dia katakan tentang aplikasi web.

Jika pengembang berpikir dia di atas desainer karena bahasa 'nya' Turing-lengkap, jangan berharap dia bekerja dengan baik dengan desainer, atau bahwa kode-nya dapat 'cantik' setelah selesai.

Javier
sumber
@ Javier: Apa definisi Anda tentang "bahasa pemrograman"?
Christoffer Hammarström
@Christoffer Hammarström: jika ditekan untuk memberikan definisi formal, saya akan menggunakan Turing-completness; tetapi secara informal saya hanya mengatakan bahwa suatu program melakukan sesuatu, dalam menanggapi beberapa masukan. Biasanya, jika tidak ada if ... thenkonstruksi run-time dan beberapa cara untuk mengulangi hal-hal yang sebelumnya tidak diketahui beberapa kali, saya cenderung mengatakan bahwa itu bukan bahasa pemrograman. Tentu saja, ada beberapa bahasa pinggiran yang memperumit definisi; tetapi HTML / CSS jauh dari itu.
Javier
@Javier: Apakah Anda mengatakan bahwa "Hello World" kanonik adalah sebuah program, mengingat tidak membutuhkan input?
Christoffer Hammarström
@Javier: Menurut sebuah diskusi di Wikipedia ( en.wikipedia.org/wiki/... ), versi awal bahasa Pixel Shader tidak lengkap-Turing (tidak ada "kemampuan iterasi umum", yaitu "beberapa cara untuk mengulangi hal-hal yang sebelumnya- tidak diketahui berapa kali "). Ini adalah bahasa yang hanya digunakan oleh programmer dalam memprogram Graphics Processing Unit di game-game populer. Apakah Anda masih mengatakan itu bukan bahasa pemrograman?
Christoffer Hammarström
@Christoffer: Hello world membutuhkan input: Anda harus memulai eksekusi. Pengamatan Anda tentang Pixel Shader sangat menarik.
Robert Harvey
5

Anda memukulnya di kepala ketika Anda mengatakan "deklaratif, bukan imperatif". Markup (baik itu HTML, CSS, atau apa pun) menjelaskan hal-hal. Inti dari pemrograman adalah melakukan sesuatu.

Skill yang diperlukan untuk menggunakan markup benar-benar berbeda dari skill yang diperlukan untuk diprogram.

Jenis masalah yang dipecahkan dengan menulis markup sangat berbeda dari jenis masalah yang dipecahkan oleh pemrograman.

HedgeMage
sumber
16
Bahasa pemrograman fungsional murni pada dasarnya bersifat deklaratif. Demikian juga Linq, pemahaman daftar Python, XAML, XSLT, SQL dan Prolog. Kesemuanya adalah bahasa dan / atau konsep pemrograman yang bonafid. Meskipun sebagian besar bahasa pemrograman sangat penting, ini bukan fitur penentu. Sama sekali.
Konrad Rudolph
@KonradRudolph - Jika Anda berpikir bahasa pemrograman murni fungsional dalam segala hal bersifat deklaratif, Anda tidak boleh memahaminya dengan baik.
Jonathan Cast
@cast Sangat mungkin bahwa saya salah mengerti sesuatu. Tapi kemudian begitu juga para ahli di lapangan, rupanya; Untuk referensi umum, Wikipedia mengklasifikasikan (murni) bahasa pemrograman fungsional sebagai deklaratif. Sebagai contoh spesifik, seorang Paul Bone, yang memiliki gelar PhD untuk pekerjaan bahasa deklaratif murni, juga mengikuti definisi ini. Saya ingin tahu untuk alasan apa Anda tersinggung dengan definisi tersebut.
Konrad Rudolph
5

Ini penting bagi orang-orang tertentu karena tidak ada ilmu roket di permukaan tetapi ada banyak arcana di sekitar mereka karena fakta bahwa mereka menerapkan secara berbeda dalam 5 hingga puluhan lingkungan yang berbeda yang Anda benar-benar pedulikan. Ketidakpastian dan perhatian terhadap kerajinan semacam itu menakut-nakuti berbagai profesional teknologi tertentu yang ngeri dengan risiko yang tidak dapat dikenali dan bahkan lebih ngeri dengan mempelajari apa pun lebih dari yang harus mereka lakukan setelah mendapatkan gelar.

Jika seseorang bertanya kepada saya bahasa apa yang saya tahu dan saya melempar CSS ke luar sana dan mereka berkata "tapi itu bukan bahasa NYATA" Saya akan bertanya kepada mereka bagaimana mereka akan menangani div centering secara vertikal di IE 5, IEs 6-8 dan IE9 +. Lalu kita bisa beralih ke sudut-sudut bulat, masalah transparansi alfa, penyebab NYATA di balik semua argumen tabel-as-layout konyol yang baru saja mulai menjadi benar-benar tidak relevan dan puluhan topik lagi untuk kata uber-coder yang mungkin tahu satu Bahasa dan mengklaim satu atau dua bahwa dia hampir tidak bisa melek secara fungsional karena kelas yang terpaksa dia ambil di perguruan tinggi 10 tahun yang lalu.

Mereka pasti adalah 'bahasa.' Saya tidak akan menyebut mereka 'bahasa pemrograman.' Saya akan merasa nyaman menggambarkan proses penulisan dalam bahasa-bahasa ini 'coding'.

Sejauh yang saya ketahui, siapa pun yang telah berhasil menguasai grand CSS memiliki chutzpa dan etos kerja untuk menjadi programmer yang hebat, sudah memiliki latar belakang dalam pemikiran berorientasi objek, dan tidak diragukan lagi telah belajar untuk berpikir tentang bagaimana apa yang ia lakukan. menulis sekarang dapat mempengaruhi 25 karyanya proyek ke masa depan

Erik Reppen
sumber
2
+1. Saya tidak tahu berapa kali saya mendengar "programmer" meletakkan HTML / CSS sebagai pemrograman yang sederhana dan tidak nyata. Kemudian, ketika mereka tidak tahu bagaimana mengapa daftar berbutir mereka hanya berbaris dengan benar di Firefox, mereka mengangkat tangan dan menyatakan bahwa seluruh Web tidak cocok untuk perangkat lunak modern :(
Graham
3

HTML dan CSS bukan bahasa pemrograman. Lupakan saja.

Namun: JavaScript adalah bahasa pemrograman. Mesinnya adalah browser. PHP adalah bahasa pemrograman. Mesin adalah mesin virtual di server.

Jadi, jika Anda hanya menggunakan HTML dan CSS, Anda tidak melakukan pemrograman apa pun (meskipun Anda mungkin melakukan beberapa rekayasa).

Tetapi jika Anda menggunakan JavaScript, PHP, atau bahasa skrip lain. Anda sedang melakukan pemrograman.

Adapun bahasa pemrograman NYATA. Jika Anda beroperasi pada mesin (yang asli, atau virtual). Dan menggunakan algoritma ANDA SENDIRI untuk memberitahu mesin untuk melakukan sesuatu. Kemudian Anda menggunakan bahasa pemrograman NYATA.

Ricardo Santos
sumber
6
Jadi saya kira kita bisa membuang HTML, CSS dan SQL karena, bagaimanapun, mereka bukan bahasa pemrograman nyata . Bahkan, kita mungkin juga membuang IDE, karena setiap programer yang bernilai garam dapat dilakukan dengan editor baris perintah.
Robert Harvey
4
Saya belum menurunkan jawaban ini secara pribadi (saya pikir -6 sudah cukup!) Tapi saya kira alasan untuk downvotes adalah karena ini sebenarnya tidak menjawab pertanyaan. Pertanyaannya bukan "apakah bahasa pemrograman HTML & CSS?", Pertanyaannya adalah "mengapa itu penting?"
Dean Harding
6
@ Robert Itu benar-benar tipuan. "X tidak berharga" tidak mengikuti argumen Ricardo bahwa "X bukan Y".
Matius Baca
4
@Lennart Regebro @Robert Harvey: Posisi @Matthew Read adalah inti pembicaraan di sini - Anda menyamakan perasaan superioritas dengan penolakan kepalsuan. HTML / CSS adalah sangat sulit, saya mempekerjakan orang yang dapat melakukannya untuk saya karena saya ada di mana dekat cukup baik dalam hal itu, saya tidak memiliki keterampilan. Ini adalah keterampilan desain teknis, bukan pemrograman .
Orbling
3
Membuat kata "pemrograman" begitu luas berarti membuatnya hampir tidak berarti. Maknanya lebih sempit dari itu, dan Anda mungkin memiliki pendapat yang berbeda tetapi ternyata bahasa itu berarti apa yang digunakan mayoritas.
Matius Baca
3

Bahasa pemrograman adalah sedikit istilah yang tidak tepat karena merupakan istilah umum yang digunakan oleh para praktisi dan orang awam juga. Praktisi memiliki makna berbeda dari istilah itu di mana orang awam biasanya tidak. Biasanya definisi mereka adalah jika memiliki kata-kata / sintaks lucu yang saya tidak segera mengerti dan programmer menggunakannya maka itu harus menjadi bahasa pemrograman. Tidak sepenuhnya melenceng, tapi kita bisa setuju itu tidak tepat.

Kata-kata seperti deklaratif, imperatif, dan turing lengkap adalah istilah yang lebih tepat dengan makna yang sangat spesifik. Ketika Anda mengajukan pertanyaan seperti mengapa HTML / CSS bukan bahasa pemrograman, Anda meminta definisi yang lebih tepat tentang apa sebenarnya bahasa pemrograman itu. Kami tidak bertele-tele, tetapi mencoba menjawab pertanyaan Anda. Apakah mereka istilah terbaik untuk digunakan ketika bahkan jika Anda google mereka sulit untuk memahami apa artinya? Tergantung. Apakah Anda menginginkan jawaban pendek atau panjang. :-)

Bahasa pemrograman biasanya dianggap Turning-complete oleh programmer, tetapi apa artinya itu? Ini berarti bahasa dapat menggambarkan perilaku atau cara melakukan sesuatu. Kami secara resmi menyebutnya logika. HTML / CSS dapat menggambarkan ada tombol yang terletak di sudut kanan atas, atau ada tabel dengan 4 kolom 5 baris, dua baris pertama berwarna kuning, dan baris bawah memiliki teks hijau, dan setiap sel dalam tabel memiliki 5 piksel ruang kosong di sekitar konten.

Apa yang tidak bisa dilakukan oleh HTML / CSS adalah mengekspresikan perilaku atau logika dari apa yang terjadi ketika Anda mengklik tombol. Tidak dapat mengatakan kapan saya mengklik tombol itu untuk mendapatkan nilai dari tabel itu dan menambahkannya, dan menulis nilai itu ke baris baru di bagian bawah tabel. Menggambarkan perilaku kira-kira sama dengan Turning-complete tanpa menjadi terlalu berlebihan.

Lebih tepatnya, Turing-complete berarti Anda dapat mengimplementasikan bahasa itu sendiri. Itu berarti saya bisa menulis program javascript yang mengambil string javascript dan bisa menjalankannya (dan tidak menggunakan fungsi eval ()). Bahkan, saya bisa menulis program javascript yang bisa mengambil program yang ditulis dalam bahasa lengkap Turing dan mengevaluasinya. Itulah artinya menjadi Turing lengkap. Semua bahasa yang Turning complete sama dengan program apa yang bisa diekspresikan. Wahyu yang luar biasa jika Anda memikirkannya.

chubbsondubs
sumber
Turing-complete berarti bahwa bahasa tersebut dapat digunakan untuk mensimulasikan mesin Turing (atau, dapat menghitung fungsi Turing-computable).
mipadi
3
@pipadi - Sebuah definisi yang sangat benar dan tepat yang akan saya berikan kepada Anda, tetapi seseorang yang mengajukan pertanyaan seperti ini akan mengatakan "Yah, WTF adalah mesin Turing? WTF adalah fungsi yang dapat dihitung-Turing?" Jika mereka tidak mengerti Turing Lengkap, apakah mereka akan memahami Turing Machine atau fungsi Turing-computable? Ini seperti mencari kata retorika dalam kamus dan berbunyi "tentang, berkaitan dengan, atau berkaitan dengan retorika." Definisi itu tidak memberi tahu Anda apa arti retorik sebenarnya dan hanya mengarahkan Anda ke kata lain yang tidak Anda mengerti.
chubbsondubs
1

Ini dua sen saya. HTML dan CSS jelas bukan bahasa pemrograman. Untuk alasan itu, ketika saya melihat HTML atau CSS pada resume seseorang di bawah "Bahasa Pemrograman", itu hanya memberitahu saya bahwa orang ini tidak tahu apa yang dia bicarakan.

Selain itu, tidak, tidak masalah.

Ngomong-ngomong, programmer umumnya cenderung jagoan. Itu hanya datang dengan pekerjaan.

Dima
sumber
4
Jadi dalam pikiran Anda, tidak ada ruang untuk seseorang hanya perkiraan tentang hal itu karena mereka tidak ingin membuang-buang ruang memiliki bagian bahasa mark up lain? Bagi saya itu jauh melampaui apa yang berguna.
Jon Hopkins
1
+1 ketika saya melihat CV dengan HTML / CSS di bawah 'pemrograman', saya tidak membaca lebih lanjut. entah dia tidak tahu bedanya (jadi dia tidak berguna untukku), atau berharap aku tidak tahu bedanya (jadi aku tidak mau bekerja dengannya)
Javier
2
@ Jon Hopkins: Perhatian terhadap detail adalah kualitas yang diperlukan dalam seorang programmer. Menempatkan HTML di bawah bahasa pemrograman bukan merupakan perkiraan, sedang ceroboh. Itu membuat kesan pertama yang sangat buruk jika Anda melamar pekerjaan sebagai programmer.
Dima
1
@Dima: tentu saja. informalitas baik-baik saja, kadang-kadang bahkan secara tertulis, ketidaktepatan dalam konsep perdagangan yang sangat mendasar tidak dapat diterima.
Javier
1
Ini konyol. Resume dan wawancara adalah salah satu bagian paling bermasalah dari industri kami saat ini. Anda tidak pernah tahu apakah seseorang yang mengetahui perbedaannya masih menempatkan "HTML" di bawah "Bahasa Pemrograman" karena mereka takut beberapa drone SDM tidak akan melihatnya di bawah "markup / desain / dll" dan memulai resume mereka. Anda setidaknya harus memanggil mereka atau membawanya. Jika mereka memberitahu Anda bahwa mereka "memprogram dalam HTML," yah ... itu benar-benar tanda bahaya. Tetapi sekali lagi, pikirkan apa yang dapat Anda capai sekarang dalam HTML 5 saja! Apakah ini benar-benar peregangan?
Graham
0

Itu tidak masalah. Dan itu juga masalah definisi. Apa itu bahasa pemrograman? Beberapa berarti bahwa itu harus Turing-lengkap. Yang lain memiliki definisi lain, yang menjadikan HTML sebagai bahasa pemrograman. (Dan dalam contoh Anda, mereka bahkan tidak disebut bahasa pemrograman, hanya bahasa, yang jelas mereka).

Rekomendasi saya: Cobalah untuk mengabaikan orang-orang yang menunjukkan klaim-klaim yang tidak berguna dan bahkan dalam banyak hal bahkan salah. Itu hanya variasi tata bahasa nazi-isme. Memanggil HTML sebagai bahasa pemrograman tidak salah dalam arti yang berarti.

Lennart Regebro
sumber
7
-1 Ini bermakna karena HTML bukan bahasa pemrograman, itu tidak memiliki elemen dasar hal seperti itu - itu hanya menggambarkan tata letak pada halaman, dengan ekstensi yang sama buku tentang gambar teknik adalah bahasa pemrograman.
Orbling
1
@Orbling: Mereka adalah bahasa pemrograman deklaratif spesifik domain sesuai dengan definisi paling umum tentang apa artinya itu. Lihat misalnya: en.wikipedia.org/wiki/... Jadi, maaf, Anda gagal. Menurut definisi yang sangat umum dan masuk akal, mereka adalah bahasa pemrograman. Dan menurut definisi yang sama sekali berbeda, tetapi sama-sama masuk akal dan umum mereka bukan bahasa pemrograman. Kedua pandangan itu benar. Tetapi orang-orang yang memukul pendapat mereka di atas kepala orang lain tidak aman dan perlu merasa lebih unggul dari orang-orang HTML.
Lennart Regebro
8
Kata "program" memiliki arti tertentu yang secara umum disepakati. Anda tidak dapat membuat program dengan HTML, karena itu membuat sesuatu dengan HTML bukanlah "pemrograman". Siapa pun yang membantah secara berbeda berpendapat bahwa kata-kata yang mereka gunakan dalam argumen mereka dapat mengubah maknanya secara sewenang-wenang, dan dalam hal ini saya akan secara sewenang-wenang menetapkan kata-kata mereka untuk tidak berarti apa-apa.
Matius Baca
4
@Orbling: Apakah "Saya bekerja dengan orang-orang HTML" yang baru "salah satu teman saya adalah {masukkan grup minoritas di sini}"?
Anon.
2
@Lennart Regebro, setiap definisi standar bahasa pemrograman (bahkan di Wikipeida) mengatakan bahwa bahasa pemrograman dapat menggambarkan suatu algoritma. Bagaimana Anda bisa menggambarkan suatu algoritma dalam HTML dan CSS?
Charles E. Grant
0

Saya pikir ini sampai ke sini - HTML & CSS, sementara cukup rumit untuk memerlukan beberapa pengetahuan, adalah bahasa presentasi, paling cocok sebagai format untuk laporan yang dihasilkan. Oleh karena itu, orang yang hanya dapat melakukan ini tidak dianggap sebagai pembuat kode. Ingatlah bahwa beberapa coders telah berkomputasi cukup lama untuk mengingat ketika pengolah kata rata-rata mengambil sintaks perintah lebih banyak untuk gaya teks daripada HTML.

Apa yang oleh sebagian orang disebut bahasa 'nyata' adalah yang akan memproses data dengan cara tertentu untuk menghasilkan laporan. Atau sesuatu yang bisa digunakan untuk menulis game. Mengetahui HTML & CSS dalam dan luar adalah keterampilan yang berharga, tetapi lebih dari itu dikombinasikan dengan pengetahuan JS untuk front end, dan Java, PHP, Perl, Ruby, Python, C / C ++ atau C # di bagian belakang.

Sebaliknya, seseorang yang hanya tahu salah satu dari bahasa 'nyata' itu tanpa teknologi ujung depan web, sangat membatasi fleksibilitas mereka sendiri sebagai pembuat kode.

Danny Staple
sumber
Saya akan menyarankan bahasa yang sepenuhnya dieksekusi dan dijalankan oleh komputer. Saya telah men-debug kode C, dan men-debug gaya CSS. Saya dapat mengatakan dengan pasti bahwa yang terakhir dapat memakan waktu lebih lama (jika tidak lebih lama) daripada yang pertama (tergantung pada hal mengerikan apa yang dilakukan seseorang dengan sebuah pointer vs yang mengaburkan bagian dari spek yang Anda coba untuk bekerja dan * & ^ % $ @ browser kelihatannya salah). HTML saja tidak benar-benar mengatakan banyak, tetapi ditambah dengan ekspresi penuh dari CSS, itu bisa sangat menarik.
Danny Staple
2
Tidak ada yang lebih buruk daripada berurusan dengan CSS dan markup oleh dev yang pergi ke sana berpikir itu akan menjadi permainan anak-anak.
Erik Reppen
0

Pigeonhole / stereotip logis "otak kiri" atau "otak kanan" kreatif secara akurat menggambarkan serangkaian keterampilan banyak orang. Dalam pengalaman saya, "adalah HTML / CSS bahasa pemrograman" lebih tentang apakah orang yang pandai HTML / CSS juga bisa pandai dalam tugas pemrograman lain.

Sebagian besar perancang web yang bekerja dengan saya dalam 13 tahun terakhir. Saya telah melakukan pengembangan web telah mampu membuat HTML dan CSS yang berfungsi, tetapi tidak mampu menangani tantangan pemrograman yang lebih menuntut (apa pun selain dari cut-and- termudah) disisipkan JavaScript). Sebagian besar programmer dan perancang basis data hot-shot tidak cukup peduli dengan presentasi visual untuk melakukan pekerjaan yang baik dengan HTML / CSS atau presentasi secara umum. Sebagian besar sebenarnya menolak untuk mencoba.

HTML dan CSS memerlukan beberapa keterampilan pemrograman: eksperimen, pemecahan masalah, pengujian yang cermat, pemahaman tentang warisan ... Tetapi mereka membutuhkan setidaknya jumlah keterampilan desain yang sama: kepekaan terhadap warna, garis, jarak, keseimbangan - hampir sama macam keterampilan komposisi visual yang menghasilkan foto yang bagus.

Karena HTML / CSS adalah bahasa tata letak atau presentasi, ia berada di akhir diagram alir data. Tidak ada kode lain di hilirnya. Keterampilan desain tingkat yang lebih besar yang dibutuhkan seseorang untuk merancang API, layanan, atau skema basis data yang baik tidak digunakan dalam HTML dan CSS. Pada umumnya tidak perlu memodulasi apa pun yang terkait dengan HTML atau CSS, atau jika ada, tidak tergantung pada desainer grafis untuk melakukannya. Jarang fungsionalitas dibuat dengan HTML / CSS . Menu drop-down mungkin pengecualian yang paling umum, tetapi mereka dapat dibuat dengan memotong dan menempelkan resep dari web daripada dengan mendesain kode.

Ini tidak biasa, tetapi bukan tidak mungkin bagi seorang programmer untuk memiliki beberapa desain visual atau keterampilan tata letak atau bagi seorang desainer untuk memiliki beberapa keterampilan pemrograman. Orang-orang ini sangat berharga di tim web karena mereka membantu menjembatani kesenjangan yang sebagian besar dari kita miliki. Tetapi mereka sering tunduk pada stereotip, bahwa mampu melakukan HTML / CSS tidak mungkin untuk "programmer nyata," atau sebaliknya. Tetapi kombinasi keterampilan ini tidak lebih mustahil daripada bagi programmer yang sama untuk menjadi pelaut, pelukis, koki yang baik, atau untuk memiliki keterampilan lain yang mereka praktikkan di waktu luang mereka.

Seperti yang dikatakan orang lain, perbedaan ini menjadi fokus paling saat mempekerjakan. Karena orang-orang dengan bakat crossover jarang terjadi, sebagian besar lowongan pekerjaan harus menargetkan satu keahlian atau lainnya. Jika seorang programmer mencantumkan HTML / CSS di bawah "Bahasa Pemrograman" itu menimbulkan tanda merah bahwa mereka tidak dapat menyelesaikan tugas pemrograman umum, atau bahwa mungkin definisi pemrograman mereka sangat sempit. Mungkin mereka bisa, itu hanya menimbulkan pertanyaan. Jika seorang desainer mencantumkan HTML / CSS Anda pasti ingin melihat portofolio mereka untuk melihat bahwa mereka memiliki kemampuan artistik untuk menciptakan efek visual yang diinginkan.

HTML / CSS mungkin berulang kali dibuang sebagai bukan bahasa pemrograman nyata karena lebih aman dan lebih dapat diterima secara sosial daripada mencemari orang-orang yang tidak dapat melintasi belahan bumi yang mereka wakili. Tentu saja, beberapa orang mungkin tidak memiliki penghambatan itu. Saya sebenarnya bekerja dengan satu manajer yang sering berkata, "Dia menulis [menyisipkan fungsi backbone departemen di sini]? Saya pikir dia baru saja membuat HTML?"

Pertanyaan bagus!

GlenPeterson
sumber