CSS創始人之一Bert Bos:CSS只是進化的一部分(圖靈訪談)

盼盼姐發表於2015-03-17

Bert Bos是一位電腦科學家,他也是CSS的創始人之一。在CSS的發展過程中,Bos是最早與Håkon Wium Lie(CSS之父)合作的人之一。在1996年,他加入了World Wide Web Consortium(W3C)負責CSS的開發。他曾任CSS工作組的主席,現在是工作組的W3C代表。

在此之前,Bert在格羅寧根大學研究期間獨立開發了Argo瀏覽器,這是為他的樣式表提案而開發的測試應用。Argo瀏覽器可以處理其自帶的SSP樣式表語言,利用這種新瀏覽器語言,他創造了一種CSS標準。隨後Lie和Bos合作,一起把CSS發展成為了W3C Recommendation。

問:Bert先生,您曾多次來過中國。您感覺近來中國的Web開發者正在發生哪些變化?

我2008年的時候來過北京,我之前也去過香港和深圳。雖然中國起步較晚,但是現在越來越多的公司加入了W3C,其中有瀏覽器公司,也有搜尋公司。雖然相比於美國、歐洲、澳大利亞來說中國開始得晚,但是現在來看中國的開發者已經和世界各地的開發者們沒有什麼區別了,他們做同樣的修補、問類似的問題,擁有同樣的佈局困擾。

問:您認為中國的開發者雖然起步晚,但是現在已經趕上了?

是的。從各家公司來看,雖然中國的開發者在起步時落後了一段時間,但是現在已經趕上了,技術上已經同步。

問:現在CSS已經變成了Web開發不可或缺的一部分,但是其實CSS的概念卻並不是一開始就必然有的(已經有了HTML描述內容,有了JavaScript描述行為和互動),可以說它是從無到有地被人為發明出來的,您作為CSS的創始人之一,是否能告訴我們在早期發展階段是如何產生需要一套樣式表的想法?早期開發過程中又有什麼樣的故事?

Håkon Wium Lie和我發明了CSS,但是我們並沒有發明樣式表這個概念,這個概念很早以前就存在。我們發明的只是讓網頁開發更加簡單的具體語言而已。但是,用樣式表記錄和構造內容的概念要比這個早得多。在一本書上,你想要什麼樣的字型,什麼樣的圖畫,多大的邊緣,都是樣式表要做的,這些概念已經存在了很久。而用計算機語言表述的電子化樣式表也已經在上世紀80年代中期就出現了。

這麼說吧,ML是在HTML之前出現的,HTML是在XML基礎上構建的,而XML很早以前就有了樣式表。我們研究了XML早期的樣式表概念,也研究了當時仍然在發展中的樣式表的概念,從中吸取了很多好的創意。另外,我們在一場大會上遇到了HTML的發明者,在那裡我們聽到了很多人對樣式表的需求。雖然這些人我們以前從沒打過交道,但是從他們身上,我們獲得了很多關鍵想法。

可以說,對於我們,這並不是一個發明出來的概念,但是對於很多其他人來說,一切都是從HTML和CSS開始的。但是我知道,它們只是進化的一部分。

問:CSS的全稱是cascading style sheet(層疊樣式表),請問為什麼是cascading(層疊),而不是其他的詞,比如combining(組合)?

Håkon Wium Lie有一個主張,檢視由兩部分組成,一部分是提供者所認為人們應該看到的樣子,一部分是接收者在螢幕上實際閱讀的文件。從最開始,我們的設計理念就是:接收者也需要對檢視的結果有影響。即在得到內容之後,你可以自己把它調成想要的樣子。內容和樣式從提供者那來,提供者可以規定具體的顏色和大小。但是接收者可以根據螢幕的特殊性,使用不同的字型或顏色。這就是我們的理念:多重影響、多重樣式表整合在一起,這也就是層疊樣式表概念的基礎。層疊的意思就是一樣東西疊加在另一樣之上,層疊就像瀑布,互相疊加最終得出結果,這是一個比喻。

問:您的背景是數學專業,請問這樣的背景在您創造CSS的時候是否有什麼幫助和影響?

在電腦科學中我學習了語法,另外我還學習了一些人工智慧,語法解析對我也有很大的幫助。在語言設計上,我們儘量做出容易閱讀和解析的語法。所以說,計算機方面的學習對我的幫助比數學要多。

問:您曾經創造了一個名叫Argo的瀏覽器,並在上面測試CSS,是這樣嗎?

不是這樣,Argo並不是為了測試樣式表,而是為了讓大學中非技術學院的師生(比如藝術學院,歷史學院)可以自由上網,為了讓他們能夠在網上交換檔案,閱讀館藏目錄,收發郵件等等。所以我的目的是要創造一個非常好用的瀏覽器,它要支援HTML同時也要支援XML,因為在某些學院中XML的使用率更高。比如有人在研究《聖經》,他們需要比對不同版本的《聖經》,這些檔案都是通過XML呈現的。他們也需要樣式表,所以我的瀏覽器裡就要有樣式表語言。樣式表中有一些有趣的概念,但是在當時他們並沒有注意語法,並不是每個人都想寫程式碼。Håkon Wium Lie這時候也發表了自己的想法,我覺得我們的想法可以結合起來。

問:作為CSS的創造者之一,您可能是回答這個問題的最好人選,CSS最根本的目的是什麼?是什麼目的可以跨越時間?這個目的將如何影響未來的開發?

有幾個目標,它們隨著時間也在進化。第一個最主要的原因就是要保護HTML。當時我們看到有一些公司,包括Mozilla,為了讓呈現效果更好,開始在HTML上面加東西。我們認為內容和樣式應該區別開來,因為在不同裝置和螢幕上,你想看到不同樣式但是相同的內容。為了保護HTML的穩定性,有很多人,不只是Håkon Wium Lie和我,也在嘗試做相同的事情。我們知道我們需要另外一種語言來保護HTML,這就是我們創造CSS的直接原因。

另外一個理由就是,一旦你有一個專業的用來佈局的語言,可以做的事就更多了。這些事如果只用HTML很難完成,而對於專門的語言則是小菜一碟。另外,如果你完成了一個樣式之後,你可以反覆利用,這樣效率也更高。同時,因為這是專門處理樣式表的語言,所以它也更緊湊。用HTML+CSS比單純使用HTML程式碼更少,更簡潔。 這些就是我們早期創造CSS的理由。但是隨著時間推移,其他的理由浮出水面。比如團隊編寫文擋,一些人可以專門寫文件,另一些可以專注於樣式。這就是傳統出版的概念,書就是這樣出版的。有人寫書,但是他們並不負責排版,這個概念很傳統,在Web上也同樣適用。

晚些時候又有一些概念出現了,比如說執行效率。從某個時刻開始,我們可以實現動畫了,你可以用其他語言比如JavaScript或者外掛來完成動畫,但是我們注意到,採用CSS做這件事更容易。CSS是陳述式的,所以你不需要寫專門的程式就能實現。你可以陳述從一個物件的動作哪裡開始,到哪裡結束,中間採用什麼路徑。如果用JavaScript的話需要執行迴圈,電腦可能無法預測該如何執行。但是你用CSS在瀏覽器中執行的話,它們就能看到事情是如何進展的,應該在哪裡結束。所以你就可以做優化,可以預測動畫。這也讓動畫變得更有效率,在螢幕上的效果也更好。執行效率也是CSS將在HTML上完成更多應用的最重要的原因。

問:如今PC上的流量已經被移動端所侵蝕,您認為CSS將如何助力這場Web應用和本地應用之戰?

我不認為這是一場戰爭,兩者都有生存的空間。但是我們確實想要Web平臺變得和本地平臺一樣強大。因為Web應用一旦寫成可以在任何地方任何裝置上執行,效率更高也更便宜。所以我們確實希望Web平臺能完成本地平臺那些功能。CSS也一直在努力尋找邊界:什麼是屬於CSS的,什麼是屬於SVG的,其中有一些很難界定。但是我們認為CSS還有更大的空間,我們想要在CSS裡做的更多。因為人們發現就算他們在SVG裡面做某些事比在CSS中更容易,但是還有很多工作他們願意使用SVG和CSS並行開發。我也和JavaScript API的工作組一起工作,JavaScript是對接GPS、動作感應這些功能的介面,這些設計也連線了不同裝置的API介面。

很多時候我們也會根據人們和裝置的互動而改變樣式,所以我們認為可以有更多東西出現在CSS中。經常會有人提議CSS裡應該有什麼,但是我們覺得有些東西應該在其他地方完成比較好。所以我們需要具體分析,人們的需求是什麼,而我們能提供的是什麼。

問:可以看出CSS是一個好的答案,但並不是所有問題的答案。很多人對前處理器這個話題很感興趣,他們對於使用這些前處理器有一些顧慮,對此您有什麼觀點?

我很驚訝前處理器出現得這麼晚,我還以為Sass,LESS會出現得更早一些呢。因為CSS是一種簡單的基於文字的語言,寫前處理器並不難。人們確實也利用前處理器完成了更加專業的設計,但並不是每個人都需要前處理器,你必須首先是個程式設計師才能使用它。但是如果你是個程式設計師的話,那麼Sass這樣的工具就對你就很有幫助。 工具的出現對於我們工作組來說也是一件好事,前處理器減輕了CSS的壓力。我們可以專注於功能,字型,以及佈局,不需要再考慮諸如變數之類的程式設計師喜歡的功能了,因為這件事已經在前處理器中完成了。另外,人們還可以選擇他們喜歡的前處理器,如果我們在CSS中預置了前處理器的話,那就只有一種方式。但是現在大家可以選擇,Sass,LESS,甚至你可以選擇使用PHP。我認為前處理器是對於專業設計師來說是非常重要的。

問:CSS中加入自定義屬性的原因是什麼?

變數對於程式設計師來說很重要,如果你要寫大量樣式表的話,所有這些都可以在Sass和LESS中完成。我並不認為W3C工作組應該來定義來如何完成工作,我們只負責創造核心語言,屬性和值,而其他人可以來決定該如何寫CSS。但是現在我們有變數了,加入變數的原因就是我們發現可以通過自定義屬性和值讓CSS變得更加常規。在自定義屬性方面,我們利用CSS自己的機制cascading(層疊),這意味著你可以把變數附加在元素上,這樣你不僅可以附加樣式屬性,還可以在檔案上附加任意屬性。對於應用來說這很方便,比如你有檔案和結構,你需要把某些東西發展為高等級元素,你可以用CSS來附加這些值,你可以在HTML中這樣做,但是用CSS更簡單。這就是我們現在有自定義屬性和值的原因。

如果你想用變數的話,那就用Sass就可以了。但是越來越多的人會開始使用自定義屬性,自定義屬性在未來有很多可能性,還有很多值得期待的有趣的功能可能會出現。

問:模組化似乎和CSS的思想相悖,能談談引入如此設計的緣由嗎?

有兩種模組化。在工作組中,我們分頭制定更細化的規格,這是模組化的一種。我們這麼做的原因在於這麼一來規格的制定過程更簡化,也可以在更小的規模上測試。但這和CSS中的模組化結構幾乎沒有什麼關係,在這種意義下,我們並不是在模組化CSS而是在模組化我們的內部流程。因為我們不可能在同一時間做所有的事,我們需要聚焦在某個屬性上,然後再研究下一個。

另外一種模組化是人們寫樣式表的方式,你可以寫很多樣式表,然後把它們融合起來,多重輸入可以幫你把自己工作變成自己的樣式表。

甚至還有第三種意義,雖然還沒有開始,但是在工作組中已經開始討論。我們開始討論讓其他制訂人在CSS中加入特性,我們需要有另一種方式來模組化CSS,所以我們需要某種語法,JavaScript或其他語言的介面,讓人們可以在CSS中加入特性,同時也符合CSS語法。你可以用自己的樣式表,也可以插入擴充套件。雖然這件事還不存在,但是已經在討論中了。雖然目前有兩種模組形式,但是未來有可能模組化會有第三種意義。

問:CSS正在努力趕上XSL,到那一天XSL是否就成為多餘的了?

要預言未來很難。現在XSL在出版行業的應用仍然很廣,人們出版書籍使用的依然是XSL。但是正如我說過的,我們現在已經不再開發XSL了,因為找不到足夠的人來組成工作組。雖然我們也希望能有新版本的XSL(現在仍然是版本1),但是我們目前沒有計劃開發下一個版本。也許我們很快能元件一個工作組,也許我們永遠都不會,這些事都說不準。

現在我們的精力都集中在CSS上,人們希望能用CSS完成XSL能夠完成的工作。XSL的功能都是為了出版而設計,生成索引、目錄等等。我們未來會實現這些功能,但是並沒有明確的日期。

除此之外,我們還有一大堆的事兒要做。在我們停止XSL工作組之前,已經有了一些為XSL版本2提交的需求,這些都是使用者向工作組提出希望XSL能實現的功能。這些需求仍然存在,我們可能會在CSS中一併實現這些功能,但是這就是再下一步的事兒了。

問:CSS已經快20歲了,您從一開始就參與了開發工作,這麼多年下來回頭看看,哪些功能是您最喜歡的?哪些是您最不喜歡的?

我最喜歡CSS的一點就是,幾乎所有人都能寫CSS。任何人都可以找一些例子,在網上看看其他人是怎麼做的,然後就可以寫自己的樣式表了。這一點現在反而不那麼強烈了,因為語言越來越大,樣式表變得越來越複雜。但是我仍然認為要寫CSS並不難。你不需要是一位專業人士就可以寫一些Web檔案,一些HTML,再來一點CSS。但是當然,為了完成更高階更完善的展示,我們也需要專業人士。相對來說XSL就不具備這樣的品質,XSL是為專業人士而設計的。

最不滿意的……可能就是我們沒能做好的功能,比如定位。這個功能讓你可以在CSS中把一個元素通過橫縱座標放到螢幕上特定的一點上。在1996年CSS最開始的時候,我們就想要做這個功能。當時的一個文件解釋了我們將如何佈局、修改螢幕,以及如何寫在任何位置。我們把其稱為frame,這比HTML的frame出現時間還要早。我們現在把這個概念稱為regions,瀏覽器和工作組的概念都是同樣的,但是96年對於這個概念來說太早了。那個時候的瀏覽器無法完成今天所能完成的工作。當時HTML只有兩歲,記錄的只是一個序列,從第一個字母開始到最後一個字母結束。所以 “在螢幕上製造一個事件”這樣的概念過於先進了。但是另一個概念應運而生,就是額外幀,它從一個非常小的概念出發逐漸發展成一個非常靈活的概念,這也就是現在flex box出現的原因。這是我們現在盡最大努力能做到的了。

問:除了W3C工作組之外的時間您是否還做一些其他的專案?您是否考慮過自己寫一個框架?

我是想過要寫一個框架,但是從來都沒有時間來做這件事。除了W3C工作組之外,我還有一個MathML工作組,但是工作基本已經結束了,我們已經完成了MathML第3版,暫時還沒有建立下一個版本的計劃。

其餘的時間我自己也在做一些專案,但是和CSS完全無關,是關於網路安全的。在歐洲,歐盟會對相關研究予以補貼,每個人都可以申報研究專案,但是專案必須以合作形式完成,個人和單獨機構都無法申請。W3C和比利時魯汶大學、都柏林大學、SAP德國公司聯手一起申請了網路安全方面的研究。我們的研究涵蓋了很多廣為人知的網路問題,但是也包含了一些鮮為人知的問題,這是個很有趣的專案。很多研究工作在大學中進行,而執行工作在公司中進行,兩邊的工作需要互相協調,標準化的工作在W3C以及其他一些機構中進行。這個專案佔據了我很多時間,但是我從中學到了很多。

問:非常感謝您抽出寶貴時間接受採訪,希望您下次來中國時帶來更多精彩內容。

enter image description here
Bert Bos(右二)與採訪者高博(右一)、李盼(左一)


更多精彩,加入圖靈訪談微信!

相關文章