Rumah > hujung hadapan web > tutorial css > HTML bukan bahasa pengaturcaraan?

HTML bukan bahasa pengaturcaraan?

William Shakespeare
Lepaskan: 2025-03-21 09:52:13
asal
432 orang telah melayarinya

HTML bukan bahasa pengaturcaraan?

HTML bukan bahasa pengaturcaraan.

Saya telah mendengar ayat ini banyak kali, ia membosankan. Sering kali, ia diikuti dengan kata-kata seperti "ia tidak mempunyai logik" atau "ia bukan Turing-lengkap" ... Jadi, jelasnya ia bukan bahasa pengaturcaraan. Ia seolah -olah seolah -olah perkara berakhir dan perbincangan harus berhenti.

Tetapi adakah ia benar -benar seperti ini?

Saya ingin meneroka hujah -hujah yang sering saya dengar untuk menurunkan nilai HTML dan membuat penolakan saya sendiri untuk menunjukkan bahawa kenyataan ini tidak sepenuhnya betul.

Matlamat saya adalah untuk tidak membuktikan bahawa HTML adalah atau bukan bahasa pengaturcaraan , tetapi untuk menunjukkan bahawa tiga hujah utama yang digunakan untuk mendakwa bahawa ia bukan bahasa pengaturcaraan adalah cacat atau tidak betul, dengan itu membatalkan kesimpulan dari sudut pandang logik.

"HTML adalah bahasa markup, bukan bahasa pengaturcaraan"

Kenyataan itu sendiri terdengar baik ... tetapi ia salah: bahasa markup boleh menjadi bahasa pengaturcaraan. Tidak semua bahasa markup adalah (kebanyakannya tidak), tetapi mereka boleh. Jika kita melukis gambarajah Venn bahasa pengaturcaraan dan bahasa markup, ia tidak akan menjadi dua kalangan berasingan, tetapi dua bulatan yang sedikit bersilang:

Bahasa markup yang menggunakan pembolehubah, mempunyai struktur kawalan, gelung, dan lain -lain, atau mungkin bahasa pengaturcaraan. Mereka bukan konsep yang saling eksklusif.

Tex dan LaTeX adalah contoh bahasa markup dan bahasa pengaturcaraan. Membangun dengan mereka mungkin tidak praktikal, tetapi mungkin. Kami dapat mencari beberapa contoh dalam talian, seperti jurubahasa asas atau pengawal Mars Rover (yang memenangi anugerah juri dalam pertandingan pengaturcaraan ICFP 2008).

Walaupun sesetengah bahasa markup boleh dianggap sebagai bahasa pengaturcaraan, saya tidak mengatakan HTML adalah salah satu daripada mereka. Kuncinya ialah pernyataan awal adalah salah: bahasa markup boleh menjadi bahasa pengaturcaraan . Oleh itu, mengatakan HTML bukan bahasa pengaturcaraan kerana ia adalah bahasa markup, berdasarkan pernyataan palsu, dan apa -apa kesimpulan yang anda ambil dari premis ini akan benar -benar salah.

"HTML tidak mempunyai logik"

Kenyataan ini menghendaki kami menjelaskan makna "logik" kerana definisi itu mungkin mengejutkan anda.

Seperti kesempurnaan Turing (yang pasti akan kita bicarakan tidak lama lagi), orang yang membuat hujah ini seolah -olah salah faham makna yang tepat. Saya telah meminta orang untuk memberitahu saya apa yang mereka maksudkan dengan "logik" dan mendapat beberapa jawapan yang menarik di bawah:

Logik adalah cara pemikiran atau pemikiran yang munasabah.

Ini baik -baik saja jika kita mencari definisi logik kamus. Tetapi kita bercakap mengenai logik pengaturcaraan , bukan hanya logik sebagai istilah umum. Saya juga menerima jawapan seperti ini:

Bahasa pengaturcaraan termasuk pembolehubah, keadaan, gelung, dll. HTML bukan bahasa pengaturcaraan kerana anda tidak boleh menggunakan pembolehubah atau syarat. Ia tidak mempunyai logik.

Ini baik (dan pastinya lebih baik daripada pergi ke benar/palsu/dan/atau dll), tetapi ia juga salah. HTML mempunyai pembolehubah -dalam bentuk atribut -dan pembolehubah/atribut dan struktur kawalan ini boleh digunakan untuk menentukan apa yang dipaparkan.

Tetapi bagaimana anda mengawal pembolehubah ini? Anda memerlukan JavaScript!

Ralat sekali lagi. Sesetengah elemen HTML mempunyai logik kawalan dalaman dan tidak memerlukan JavaScript atau CSS berfungsi . Saya tidak bercakap mengenainya<link> atau Sesuatu seperti itu -mereka adalah struktur kawalan asas yang telah menjadi sebahagian daripada standard selama beberapa dekad. Saya maksudkan unsur -unsur yang bertindak balas terhadap input pengguna dan melaksanakan operasi bersyarat berdasarkan keadaan semasa elemen dan nilai pembolehubah. oleh <details>/<summary></summary></details> Tuple atau<dialog></dialog> Elemen adalah contoh: apabila pengguna mengkliknya, mereka akan ditutup jika atribut terbuka wujud; Tiada JavaScript diperlukan. Jadi hanya mengatakan HTML bukan bahasa pengaturcaraan kerana ia tidak mempunyai logik yang mengelirukan. Kami tahu bahawa HTML sememangnya dapat membuat keputusan berdasarkan input pengguna. HTML mempunyai logik, tetapi ia pada dasarnya berbeza daripada logik bahasa lain yang direka untuk memanipulasi data. Kami memerlukan hujah -hujah yang lebih kuat daripada ini untuk membuktikan bahawa HTML bukanlah satu bentuk pengaturcaraan.

"HTML bukan 'Turing-Complete'"

Ok, inilah hujah yang paling kita lihat dalam perdebatan ini. Secara teknikal (jenis yang terbaik), adalah betul untuk mengatakan bahawa HTML tidak lengkap-lengkap, tetapi ini harus mencetuskan perdebatan yang lebih besar daripada hanya menggunakannya sebagai pernyataan akhir.

Saya tidak akan masuk ke dalam makna kesempurnaan Turing, kerana terdapat banyak sumber mengenai topik ini. Malah, Lara Schenck merangkum ini dengan baik dalam salah satu artikelnya yang berpendapat bahawa CSS adalah Turing lengkap:

Ringkasnya, untuk bahasa atau mesin, kesempurnaan Turing bermakna ia boleh melakukan apa yang boleh dilakukan oleh mesin Turing: melakukan apa -apa pengiraan, iaitu pengiraan umum . Lagipun, pengaturcaraan dicipta untuk melakukan operasi matematik, dan tentu saja, kami melakukan lebih banyak lagi dengannya sekarang!

Kerana kebanyakan bahasa pengaturcaraan moden adalah Turing-lengkap, orang menggunakannya sebagai definisi bahasa pengaturcaraan. Tetapi kesempurnaan Turing tidak berlaku. Ia adalah standard untuk mengenal pasti sama ada sistem (atau peraturannya) boleh mensimulasikan mesin Turing. Ia boleh digunakan untuk mengklasifikasikan bahasa pengaturcaraan; Ia tidak berfungsi hanya dalam bahasa pengaturcaraan. Sebagai contoh, permainan Minecraft (memenuhi standard ini) atau sihir permainan kad (juga memenuhi standard ini). Kedua-duanya adalah Turing-Complete, tetapi saya ragu-ragu ada yang akan mengklasifikasikannya sebagai bahasa pengaturcaraan.

Kesempurnaan Turing kini popular, sama seperti sesetengah orang biasa berfikir bahawa perbezaan antara bahasa yang disusun dan ditafsirkan adalah standard yang baik. Ya. Kami tidak perlu bimbang mengenainya apabila pemaju (terutamanya backends) meremehkan pengaturcaraan front-end (termasuk JavaScript dan PHP) bukan "pengaturcaraan sebenar". Anda masih mendengarnya kadang -kadang, walaupun kini pudar, samar -samar, berbisik.

Takrif pengaturcaraan (atau tidak) berubah dari masa ke masa. Saya yakin seseorang menyusun kad menindik akan mengadu bahawa kod menaip dalam bahasa pemasangan bukan pengaturcaraan sebenar. Tidak ada universal atau ditulis di atas batu. Tiada definisi sebenar.

Kesempurnaan Turing adalah kriteria yang adil, saya mesti katakan, tetapi ia adalah berat sebelah dan subjektif - bukan dalam bentuknya, tetapi dalam cara memilih. Kenapa satu bahasa yang boleh menjana mesin lengkap Turing dianggap sebagai "bahasa pengaturcaraan", sementara bahasa lain yang dapat menjana mesin negara terhingga tidak? Ini subjektif . Ini adalah alasan yang sama bagi orang lain untuk membezakan antara "pemaju sebenar" (mereka yang membuat kenyataan ini) dan mereka yang tidak sebaik mereka.

Untuk membuat keadaan lebih teruk, jelas bahawa ramai orang yang mengulangi ejaan "HTML bukanlah Turing-lengkap" tidak tahu atau memahami apa yang dimaksudkan dengan kesempurnaan. Ia bukan anugerah atau tanda kualiti. Ia bukan lencana kehormatan. Ia hanya satu cara untuk mengklasifikasikan bahasa pengaturcaraan- kumpulan mereka dan bukannya menentukannya. Bahasa pengaturcaraan boleh menjadi Turing-Complete atau tidak, sama seperti ia boleh ditafsirkan atau dikumpulkan, penting atau deklaratif, prosedur atau berorientasikan objek.

Jadi, adakah bahasa pengaturcaraan HTML?

Sekiranya kita dapat menurunkan hujah -hujah utama yang menuntut HTML bukan bahasa pengaturcaraan, adakah ini benar -benar bermakna bahawa HTML adalah bahasa pengaturcaraan? Tidak, itu tidak bermakna. Oleh itu, perdebatan ini akan berterusan sehingga pembangunan piawaian HTML atau "definisi semasa" perubahan bahasa pengaturcaraan.

Tetapi sebagai pemaju, kita mesti berhati -hati dengan isu ini kerana dalam banyak kes ia tidak digunakan untuk memberi inspirasi kepada perdebatan yang serius, tetapi untuk menggerakkan kontroversi sambil menyembunyikan motif bawah tanah: daripada mendapatkan respons internet yang santai untuk mengurangkan sekumpulan sumbangan orang kepada ekosistem pembangunan.

Atau, seperti Ashley Kolodziej menyimpulkan dengan cemerlang dalam ode ke html:

Mereka mengatakan bahawa anda bukan bahasa pengaturcaraan sebenar seperti bahasa lain, anda hanya markup bahasa, dan secara teknikal, saya rasa itu betul. Secara teknikal, JavaScript dan PHP adalah bahasa skrip. Saya masih ingat bahawa pemahaman JavaScript tidak sejuk pada masa itu, dan ia bukan bahasa "sebenar" sama ada. Kadang -kadang, saya dapati perbezaan ini tidak bermakna, seperti kita mencipta perbendaharaan kata untuk menghalang anda (dan diri kita sebagai pemaju). Anda, sebagai bahasa markup, mempunyai nilai dan kelebihan unik anda. Mengetahui cara terbaik menggunakan anda adalah kepakaran sebenar yang sering diabaikan.

Apa pun kedudukan kami dalam perbincangan tentang "HTML adalah/bukan bahasa pengaturcaraan", mari kita meraikannya tanpa menafikan kepentingannya: HTML adalah tulang belakang Internet. Ia adalah bahasa yang indah dengan banyak dokumentasi dan tatabahasa yang luas, tetapi ia sangat mudah untuk belajar pada waktu petang dan begitu kompleks yang diperlukan bertahun -tahun untuk menguasai. Sama ada bahasa pengaturcaraan atau tidak, yang benar -benar penting ialah kita mempunyai HTML.

Atas ialah kandungan terperinci HTML bukan bahasa pengaturcaraan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan