HTML5 是一門編程語言嗎?

在個人的印象中,html一直不被算做一門編程語言,也看到過有人將其理解為一門標記語言。

當前html5中出現的一些新特性,則使本人對這個問題越來越感到困惑,希望前輩們指點一二。


HTML 乃至任何置標語言(markup language)都不能算是編程語言(programming language),因為它們只是對於數據的標記,而不能用於對數據進行處理。參見

http://www.cs.tut.fi/~jkorpela/prog.html

哪些 HTML5 的新特性讓你困惑呢?


一套(計算機)語言是制定了一系列特定語法結構所表徵含義的協議。

HTML是人與HTML解析器(解析、呈現)之間的協議,一個特定的HTML文本試圖通過HTML定義的標記規則來表徵一個網頁的布局和內容,裡面可以嵌入也可以從外部引用靜態修飾布局和內容的另一個語言(協議)稱為CSS,也可以嵌入或從外部引用動態設定布局和內容的一個「編程語言」,例如 JavaScript。

編程語言是人與程序編譯器(compiler)或解讀器(intepreter)之間的協議,規定了特定語法結構所表徵的執行過程,對於命令式編程語言(imperative programming language)和函數式編程語言(functional programming language),這種解讀有所不同,但總得是表徵執行性的內容,而非表徵靜態的布局和內容。


HTML 是標記語言,不具備圖靈完備性,應該不算編程語言。HTML5感覺更像一個平台,而不是一個語言。html5 包含 html等基礎標記,有人也把 css3 劃歸到html5裡面,更具劃時代意義的是html5 提供了很多 js 的api,通過 js 調用這些api可以做到很多完備編程語言的事情。

用一個不恰當的比喻,編程語言是廚師,編寫一個程序就是做一道菜。html5 就像一個廚房,js 是一個廚師,css類似各種調料,html5 新的api 就像冰箱和各種廚具。廚房提供原料讓廚師做菜。


這個問題問得很不嚴謹,所以你也很難得到一個滿意的結論。

什麼叫「編程語言」,沒有一個清晰的定義。

如果把編程語言定義為「編程過程中用到的計算機語言」,那麼可以把HTML5視為一種編程語言。

而如果把編程語言定義為「描述邏輯的計算機語言」,則HTML5幾乎不算是。這裡說「幾乎」是因為CSS3還是有一點點邏輯描述能力的 :-)


不具備圖靈完備,不算編程語言


html5 ,上名解

HTML的英文全稱為Hyper Text Markup Language,即超文本標記語言。HTML5是HTML的一個新版本。HTML 不是一種編程語言,而是一種標記語言 (markup language)。

HTML5是萬維網的核心語言、標準通用標記語言下的一個應用超文本標記語言(HTML)的第五次重大修改。

HTML5特性

語義特性(Class:Semantic)

HTML5賦予網頁更好的意義和結構。更加豐富的標籤將隨著對RDFa的,微數據與微格式等方面的支持,構建對程序、對用戶都更有價值的數據驅動的Web。

本地存儲特性(Class: OFFLINE STORAGE)

基於HTML5開發的網頁APP擁有更短的啟動時間,更快的聯網速度,這些全得益於HTML5 APP Cache,以及本地存儲功能。Indexed DB(html5本地存儲最重要的技術之一)和API說明文檔。

設備兼容特性 (Class: DEVICE ACCESS)

從Geolocation功能的API文檔公開以來,HTML5為網頁應用開發者們提供了更多功能上的優化選擇,帶來了更多體驗功能的優勢。HTML5提供了前所未有的數據與應用接入開放介面。使外部應用可以直接與瀏覽器內部的數據直接相連,例如視頻影音可直接與microphones及攝像頭相聯。

連接特性(Class: CONNECTIVITY)

更有效的連接工作效率,使得基於頁面的實時聊天,更快速的網頁遊戲體驗,更優化的在線交流得到了實現。HTML5擁有更有效的伺服器推送技術,Server-Sent Event和WebSockets就是其中的兩個特性,這兩個特性能夠幫助我們實現伺服器將數據「推送」到客戶端的功能。

網頁多媒體特性(Class: MULTIMEDIA)

支持網頁端的Audio、Video等多媒體功能, 與網站自帶的APPS,攝像頭,影音功能相得益彰。

三維、圖形及特效特性(Class: 3D, Graphics Effects)

基於SVG、Canvas、WebGL及CSS3的3D功能,用戶會驚嘆於在瀏覽器中,所呈現的驚人視覺效果。

性能與集成特性(Class: Performance Integration)

沒有用戶會永遠等待你的Loading——HTML5會通過XMLHttpRequest2等技術,解決以前的跨域等問題,幫助您的Web應用和網站在多樣化的環境中更快速的工作。

CSS3特性(Class: CSS3)

在不犧牲性能和語義結構的前提下,CSS3中提供了更多的風格和更強的效果。此外,較之以前的Web排版,Web的開放字體格式(WOFF)也提供了更高的靈活性和控制性。


我依然覺得是一個標記語言, 而不是編程語言,只不過給你編程提供了更多的可能性, 它是一個更基礎的東西。


HTML5不會太大發展, 以後趨勢應該是js框架, 例如flex裡面的mxml是把常用的控制項或功能用mxml的形式來表達,已達到快速入門和代碼簡化. 但目前js還無法做到,所以html5發展會很慢不如直接用js框架.


只是一種標記而已,不算做語言


&
計算
&
&
&
結果:表達式為真哦
&
&
結果:表達式為假哦
&
&
&

&

從來沒有人規定html不能這麼寫對吧(你妹上面是xml吧)。啥,你問我他怎麼執行?有js啊親。

等等,你說用到了js所以html本身不是語言?那我們來談談用到了C++編譯器的C++是不是語言的問題吧?

PS:不管怎麼說我還是認為html[5]不是語言。


標記語言,不過,廣義的HTML5包括了js API+CSS3,這就算是編程語言了?


ML -- mark language 標記語言,是一種描述性的語言。

編程語言一般要實現條件分支,循環,變數運算等,所以從此角度看,不算編程語言。


HTML5叫做一種代碼規範標準更合適


我也不知道答案,說點我的想法,權當拋磚引玉。

維基百科上這麼說編程語言:

編程語言(programming language),又稱程序設計語言(program design language,簡稱PDL),是一組用來定義計算機程序的語法規則。它是一種被標準化的交流技巧,用來向計算機發出指令。一種計算機語言讓程序員能夠準確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當採取的行動。

單說定義語法規則的話,我覺得標記語言也可以算作編程語言,解釋器會把它轉換成計算機指令;但是「讓程序員準確定義計算機所需要使用的數據」這一句我也不太理解其確切含義,私下猜測是應當包含變數或者類似變數這樣的東西,那麼HTML里的id和class這類東西可不可以算是這個範疇呢?我也不知道。


最基本的一個問題是,編程語言是為了解決一個問題,通過給計算機處理問題的邏輯指令從而得到相應結果的一種人機交互語言,html5是標記語言,其本質是信息載體,並不具備處理問題邏輯的能力,所以不是編程語言。


對於HTML5很多人不了解,為了能幫助大家認識,我們從一個程序員的角度,為大家解說一下HTML5是什麼!

我要說明的就是HTML5 不是一門編程語言!有一些朋友誤把HTML5理解為一種編程語言.

在狹義上HTML5不具備圖靈完備,不算編程語言,html5 包含 html等基礎標記。

而在廣義上,HTML5感覺更像一個平台,而不是一個語言。有人也把 css3 劃歸到html5裡面,更具劃時代意義的是html5 提供了很多 js 的api,通過 js 調用這些api可以做到很多完備編程語言的事情。

對於HTML5包括了js API+CSS3,這就算是編程語言了?

html5提供了介面,不能算編程語言,操作的是javascript。

而對於HTML5 是一門編程語言嗎?「HTML5」這個稱謂的確也包含了對一些JS API 的定義,雖然本身不是編程語言,但「HTML5 Programming」的說法我認為還是可以說通的。就像「iOS Programming」這樣。否則「Programming」前的名詞就只能是編程語言了。

當然從英語角度,可以解釋為 programming via HTML5!

HTML5叫做一種代碼規範標準更合適。html作為一門標記語言,更重要的作用是作為信息的呈現載體,注重信息的呈現形式。而html5中出現了很多的新特性,但總體還是更偏重於信息的呈現方式,而不是對信息本身的處理。

當然,這只是對開發者來說。對於用戶來說,究竟html5是不是編程語言無關緊要。因為HTML對開發者來講,是嫁衣不是新娘。

最後,HTML5 是一門編程語言嗎?最基本的一個問題是,編程語言是為了解決一個問題,通過給計算機處理問題的邏輯指令從而得到相應結果的一種人機交互語言,html5是標記語言,其本質是信息載體,並不具備處理問題邏輯的能力,所以不是編程語言。


HTML5其實是一堆技術的集合,不光是在原先的HTML4.01的基礎上加幾個標籤而已。包括新的標籤,Javascript,CSS3,本地存儲,WebGL……等等等。


html作為一門標記語言,更重要的作用是作為信息的呈現載體,注重信息的呈現形式。

而編程語言的作用更多的在於對信息的收集,篩選和整理這個邏輯過程。

html5中出現了很多的新特性,但總體還是更偏重於信息的呈現方式,而不是對信息本身的處理。

當然,這只是對開發者來說。對於用戶來說,究竟html5是不是編程語言無關緊要。

而且,不能因為現狀就保證它會始終如此,畢竟它是在不斷發展的,標記語言和編程語言的界限也會越來越模糊。誰說的清楚明天會變成什麼樣子。


HTML是標記語言嘛,HTML5就應該也是唄~不過意外過一次,早知道JAVA是一種語言~後來才知道JAVAscript和JAVA沒關係~呵呵。


樓主所說的「編程語言」應該是指「通用編程語言」(generic programming language),即可以執行任何計算,理論上就是要看該編程語言是否是「圖靈完備」(Turing completeness)的,圖靈完備是指可以完全模擬圖靈機。

註:所謂「計算」即定義為圖靈機所能執行的計算,圖靈完備即保證編程語言可執行任何計算。

回到問題本身,HTML是一個標記語言,本身並不執行計算,如果把JavaScript也算作HTML一部分的話當然是圖靈完備的。


推薦閱讀:

在IDLE上寫Python, low嗎?
怎樣在bison里構造一組語法產生式,使得C語言的結構體聲明變數時不用加上struct關鍵字?
如何自學《C++ Primer》和《Thinking in C++》?
為什麼Delphi的編譯速度如此之快?

TAG:編程語言 | 計算機 | HTML5 |