Apakah CSS adalah Bahasa Pemrograman?

Saya benar-benar tidak menyukai pertanyaan ini. Ini mungkin tampak seperti pertanyaan yang menyenangkan untuk digali di permukaan, tetapi cara itu memasuki wacana publik tampaknya jarang dilakukan dengan itikad baik. Ada motif tersembunyi yang berperan yang melibatkan rasa hormat, emosi pelindung, dan keinginan untuk menghancurkan atau mempertahankan status quo.

Jika seseorang entah bagaimana dapat membuktikan bahwa CSS bukanlah bahasa pemrograman (ini adalah area abu-abu sehingga jika itu adalah tujuan Anda, itu tidak akan terlalu sulit untuk dilakukan) maka mereka akan terus merasa superior dalam "nyata" mereka keterampilan pemrograman dan merasionalisasi fakta bahwa mereka (kemungkinan) dibayar lebih dari sekadar front-of-the-front-ender yang berspesialisasi dalam CSS. Ini untuk mempertahankan status quo.

Kebalikannya juga bisa benar. Jika Anda dapat membuktikan bahwa CSS adalah bahasa pemrograman, mungkin Anda dapat mengubah perusahaan Anda sendiri atau industri pada umumnya menuju rasa hormat yang sama dan membayar kepada pengembang front-of-the-front-end. Ini melanggar status quo.

Katakanlah kita semua bisa menyetujui boolean true atau false jika CSS adalah bahasa pemrograman. Apa sekarang? Jika true , apakah gaji dinormalisasi di antara semua pekerja web? Jika false , apakah spesialis CSS berhak mendapatkan pemotongan gaji? Jika true , apakah setiap orang mulai menghormati satu sama lain dengan cara yang tidak mereka lakukan sekarang? Jika false , apakah orang CSS harus makan siang di ruang ketel? Saya ragu apa pun akan berubah; karena itu saya sama sekali tidak menyukai diskusi ini.

Apapun faktanya, tidak mungkin kebanyakan orang akan menerima bahkan kemungkinan bahwa CSS adalah bahasa pemrograman. Maksud saya, program dijalankan , bukan? Tidak ada yang meragukan bahwa JavaScript adalah bahasa pemrograman, karena dijalankan. Anda menulis kode dan kemudian menjalankan kode itu. Mungkin Anda membuka jendela terminal dan menulis:

 > node my-program.js

Tentu karena telur adalah telur, program itu akan dijalankan. Anda dapat membuat "Halo, Dunia!" mencetak ke terminal dengan console.log("Hello, World!"); .

CSS tidak bisa melakukan itu! Hmm, kecuali Anda menulis body::after { content: "Hello, World!"; } di style.css dan buka halaman web yang memuat file CSS itu. Jadi CSS dieksekusi, dengan caranya yang khusus. Ini adalah bahasa khusus domain ( DSL ) daripada bahasa tujuan umum ( GPL ). Dalam konteks browser tersebut, cara CSS diperintahkan untuk dijalankan ( <link> , biasanya) bahkan tidak jauh berbeda dari bagaimana JavaScript diperintahkan untuk dijalankan ( <script> , biasanya).

Jika Anda mencari perbandingan sintaks CSS dengan konsep pemrograman, saya pikir Anda akan menemukannya. Apa itu selector jika bukan tipe if yang menjalankan loop over match? Apa calc() jika bukan implementasi langsung dari matematika? Apa kelompok kueri media jika bukan sebuah switch ? Apa properti khusus jika bukan tempat menyimpan negara? Apa itu :checked jika bukan boolean? Eric baru-baru ini menunjukkan bahwa CSS diketik , dan sebelumnya, CSS penuh dengan fungsi .

Baik atau buruk, memiliki jawaban apakah CSS adalah bahasa pemrograman mempengaruhi orang atau tidak. Seorang profesor perguruan tinggi telah membuat poin untuk memberi tahu siswa bahwa CSS tidak lengkap Turing, tetapi sekarang mempertimbangkan kembali posisi itu setelah mengetahui bahwa itu. Apa pun maksudnya, menurut saya industri ini dipengaruhi oleh apa yang dikatakan profesor ilmu komputer kepada siswa ilmu komputer dari tahun ke tahun.

Lara Schenck telah menggali sudut Turing-complete . Jika Anda mencoba menyelesaikan ini, kelengkapan Turing adalah proxy yang baik. Ternyata CSS pada dasarnya adalah Turing lengkap (dengan menetapkan sudut otomat seluler Aturan 110), hanya saja tidak sepenuhnya dengan sendirinya. Ini melibatkan penggunaan selektor yang agak rumit dan :checked (kejutan, kejutan). Lara membuat poin yang cerdik:

Sendiri, CSS belum selesai Turing. CSS plus HTML plus input pengguna Turing selesai!

Tetap saja, katakan Anda tidak membelinya. Anda mendapatkannya dan bahkan mengakui, OK baik, CSS pada dasarnya Turing lengkap, tapi itu hanya tidak merasa seperti CSS (atau HTML dalam hal ini) adalah bahasa pemrograman untuk Anda. Itu terlalu deklaratif. Terlalu spesifik untuk aplikasi. Apapun itu, sejujurnya saya tidak menyalahkan Anda. Yang saya harap adalah bahwa apa pun kesimpulan yang Anda dapatkan, jawabannya tidak memengaruhi hal-hal yang benar-benar penting 1 , seperti gaji dan rasa hormat.

Rasa hormat ada dalam aturan, tidak peduli apa pun di antara kita yang datang untuk mendapatkan jawaban. Saya tidak menganggap CSS sebagai bahasa pemrograman, tetapi itu tidak berarti menurut saya itu sepele atau rekan kerja spesialis saya kurang berharga daripada rekan kerja spesialis Python saya. Bukankah itu bagus? Saya rasa ada perbedaan yang menarik antara bahasa markup deklaratif dan jenis bahasa lainnya, tetapi semuanya adalah kode. Oh hentikan, Anda tahu bagaimana jawaban yang bijaksana membuat saya tersipu.

Saya ingin melihat lebih banyak komentar bernuansa, hormat, dan tanpa agenda seperti itu saat diskusi ini terjadi.


  1. Sama seperti "situs web" vs "aplikasi web". Terlepas dari apakah menurut Anda ada perbedaan atau tidak, saya berharap orang-orang tidak membuat keputusan yang memengaruhi pengguna berdasarkan keranjang taksonomi yang menurut Anda digunakan untuk hal Anda.

Postingan Apakah CSS adalah Bahasa Pemrograman? muncul pertama kali di CSS-Tricks .

Anda dapat mendukung CSS-Tricks dengan menjadi Supporter MVP .

May 7, 2021

codeorayo

Ampuh! Ini rahasia mengembangkan aplikasi secara instan, tinggal download dan kembangkan. Gabung sekarang juga! Premium Membership [PRIVATE] https://premium.codeorayo.com

Leave a Reply

Your email address will not be published. Required fields are marked *