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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ini adalah jawatan ke -3 dalam siri kecil yang kami lakukan dalam kebolehcapaian bentuk. Jika anda terlepas jawatan kedua, lihat "Menguruskan Fokus Pengguna dengan: Fokus-Visible". Dalam

Tutorial ini menunjukkan mewujudkan bentuk JavaScript yang berpandangan profesional menggunakan rangka kerja pintar (nota: tidak lagi tersedia). Walaupun kerangka itu sendiri tidak tersedia, prinsip dan teknik tetap relevan untuk pembina bentuk lain.

CSS box-shadow dan garis besar sifat mendapat tema.json Sokongan dalam WordPress 6.1. Let ' s melihat beberapa contoh bagaimana ia berfungsi dalam tema sebenar, dan pilihan apa yang kita perlu gunakan gaya ini ke blok dan elemen WordPress.

Artikel ini meneroka skrip pembina bentuk PHP teratas yang terdapat di Envato Market, membandingkan ciri -ciri, fleksibiliti, dan reka bentuk mereka. Sebelum menyelam ke dalam pilihan tertentu, mari kita faham apa pembina bentuk PHP dan mengapa anda menggunakannya. Borang PHP

Sekiranya anda baru -baru ini mula bekerja dengan GraphQL, atau mengkaji semula kebaikan dan keburukannya, anda tidak akan ragu -ragu mendengar perkara seperti "Graphql tidak menyokong caching" atau

API Peralihan Svelte menyediakan cara untuk menghidupkan komponen apabila mereka memasuki atau meninggalkan dokumen, termasuk peralihan svelte adat.

Berapa banyak masa yang anda habiskan untuk merancang persembahan kandungan untuk laman web anda? Semasa anda menulis catatan blog baru atau membuat halaman baru, adakah anda memikirkan

Dalam artikel ini kita akan menyelam ke dunia scrollbars. Saya tahu, ia tidak terdengar terlalu glamor, tetapi percayalah, halaman yang direka dengan baik
