地址 / Address
111031台北市士林區福華路180號
No.180, Fuhua Rd., Shihlin Dist., Taipei City 111031
電話 & E-mail / Phone & E-mail
+886-2834-5066
info@dac.taipei
Back

《美學程式設計》

本文節錄自《美學程式設計》,全書內容請見:https://aesthetic-programming.net/zh-tw/

前言

這是一本什麼樣的書?

正如本書副標題所示,這是一本手冊,但不會像傳統技術手冊一樣教導一套既定的操作模式。[1]閱讀本書的目的不單純只是學寫程式,亦非只是對寫程式的實務本身進行批判性反思,本書提供了一些更為混亂,但同時也讓我們覺得更加「實用」的東西:一本關於寫作、編碼和思考之間,更為錯綜複雜的關係的書。[2]

多數程式設計書籍的主要目標,是告訴讀者該如何學習程式語言,以成為一名優秀(或更好)的程式設計師,並著重於最先進的技術,以及經過解釋與設計,以便利用在科技相關或創意產業的實際範例。透過程式設計的文化和美學面向來進行批判性思考和行動的書籍並不多見。[3]與運算技術有關的軟體研究、平台研究,以及部分數位人文學科等新興跨學科領域,都已將程式設計實作納入研究對象,但在如何以批判性觀點切入程式設計研究方面,實際的細節卻很有限,對於研究非科技或非科學學科領域的人而言,這點尤為明顯。人們對「運算式思維」[4]的興趣日益增長,期望將之擴展到電腦科學或軟體工程之外的範疇(甚至超越數位人文學科,因為這個領域最終亦會帶來另一組限制),但現有文獻對這個主題的討論卻相形匱乏,而本書試圖弭平的,正是這兩者之間的落差。在這方面,我們採取的方法與其他這方面的書籍或其他理論書籍迥然不同,在那些書籍中,原始碼會成為程式設計師思維的展現,或是針對隱藏的作業層面過於簡單的類比(若沒有被完全忽略的話)。

廣泛來說,本書不僅呼應了軟體研究的精神[5],同時也在認知到我們的經驗日益程式化的情況下,提供一種注重實務的應用式途徑,來理解程式設計(以軟體閱讀、寫作和思考)作為這個時代的關鍵工具的重要性。本書以最開闊的視角,提供深度學習的「工具」,是一本特別為不熟悉程式設計的人量身打造的手冊,讓你可以隨著技術愈發熟練,發展出程式設計師的概念性技能。

再重申一次,我們的目的是協助讀者掌握關鍵的程式設計技能,以便透過程式碼來閱讀、編寫和思考(稍後我們將回到編碼讀寫能力的議題)。我們認為,進一步探討程式碼的技術和概念面向的交集會是一大重點,藉此我們可以深入反思運算文化的普遍性,以及這種文化的社會和政治性影響,如人機語言、物件抽象化、資料化,和自動化機器智能的最新發展等。換句話說,這本書既涵蓋了程式碼的技術層面和形式特質,也開啟了對程式碼的想像,包括承認程式設計實務操作的物質條件、程式碼本身的非人能動性,以及其在更廣泛的生態系中所固有的內在關係性。

除了協助讀者學習程式設計之外,我們亦希望能消除運算文化、美學和文化研究理論之間的鴻溝。其中,我們對大眾尚未充分認知的權力關係特別感興趣,例如與階級、社會性別和生理性別相關的不平等和不公義,以及種族議題和陰魂不散的殖民主義。[6]這不僅關乎我們自身的主體地位和文化背景(更多相關資訊,請參閱作者簡介)和再現政治(主體與主體再現之間的爭議空間),還關乎權力差異如何隱含在程式碼的二元邏輯、層級、屬性命名、無障礙功能等方面,以及更廣泛的社會不平等情形,又是怎麼透過非再現性的運算,進一步得到強化和延續。簡言之,這本手冊介紹並示範了一種被我們稱為「美學程式設計」的反思式實踐,這種獨特的方法在被我們解釋並執行的同時,也逐漸形塑了我們的主體性。

為何要探討美學程式設計?

本書依循的論點是,運算文化不僅是用來提升解決問題和分析能力的熱門科目,或是一種了解更多關於運算過程中所發生之事的方法,更是一種透過親身參與程式設計,從而質疑現有技術典範,並進一步改變技術系統的手段。因此,我們認為程式設計是一種動態的文化實踐和現象、一種在世界上思考和做事的方法,以及一種理解某些複雜程序的手段,這些程序支持並建構了我們的生活現實,藉由理解它們,我們便能根據這些現實採取行動。

在我們看來,「美學程式設計」這個詞可以妥適地描述這種方法。我們聲稱自己在這方面具備一定的獨特性,不過美學程式設計當然也與近年來相關文獻中引介的其他術語,例如「創意編碼」和「探索式程式設計」相當接近,都是在強調電腦程式設計超越了實用性和功能性,人們可以從藝術與人文的廣闊視角,透過程式設計的實踐發展出文化生產或批判性思維。[7]在此我們應該說明一下,「美學程式設計」這個名稱,其實源自於丹麥奧胡斯大學(Aarhus University)的一門數位設計學士學程,該課程自2013年起,便一直與軟體研究課程並行授課。按照設計,綜合這兩門課程,便可以學到一些與軟體共同思考的方式,從而理解更廣泛的政治和美學現象。[8]本書所遵循的原則是,由於軟體的重要性日益顯著,我們需要一種新的文化思維和課程,來解釋並從內部更清楚地理解演算法程序、資料處理和抽象模型的政治和美學。本書的架構主要來自教授這些課程的經驗,而我們要在此感謝所有學生和教授一路以來的寶貴貢獻和指教反饋。[9]

延續關於美學的討論,我們應該澄清,此處所指涉的美學不是一般常被誤解的美的觀念(又名資產階級美學),而是政治性美學,若引用賈克·洪席耶(Jacques Rancière)的《美學與政治》(The Politics of Aesthetics,本書的主要參考資料之一),並以我們的方式重述,就是一種將自己呈現在意義建構經驗和身體感知中的東西。[10]我們在此種政治意義上看待世界的方式並非恆常固著,而是不斷變化,就像軟體本身一樣,受制於更廣泛的條件和生態。

第二章:變數幾何

setup()
學習複雜的新事物有其困難之處,但撇開這點,我們希望學習程式設計可以讓您感到愉快和有所回報。許多相關書籍的書名,都明白地告訴讀者,寫程式可以很有趣,像由林納斯・托瓦茲(Linus Torvalds)與大衛・戴蒙德(David Diamond)合寫,半為自傳性質,半為 Linus 發展故事的《只是為了好玩:一個偶然成為革命者的故事》(Just for Fun: The Story of an Accidental Revolutionary)便是一例。[11]在這種情況下,樂趣和開放原始碼,以供人們進一步修改的努力結合在一起。就如同分享或一則笑話或一份食譜,程式設計是一種社會活動,要「懂得」程式設計,必須仰賴集體的理解。

強調「樂趣」概念的例子還有很多,而這似乎是想要表達,只要這樣便足以說服使用者持續學習程式設計,而不被潛在的困難所擊倒。接續上一章的橢圓繪製,我們鼓勵您在接下來的內容裡繼續享受幾何的樂趣。這裡的想法,是希望讀者進一步探索各種形狀、大小、位置、空間和長度,上述在數學的定義中被視為「幾何」要素,並且在日常生活中有著多種應用方式,包括但不限於排版、標示、平面設計和建築,以及其他組織形式。更具體來說,物件是由點、線、面構成,因此這三者被視為設計的基本元素,而世界又是由具有特定屬性的各種物件組成的。幾何學的樂趣便是來自於這些屬性的操弄與重新建構,從而創造不同的認識和理解模式。[12]正如奧爾加・葛路諾瓦(Olga Goriunova)在其主編的《樂趣和軟體》(Fun and Software)中所言,電腦的樂趣被視為一種思考模式[13],此外,在這個過程中出現的悖論也可以帶來樂趣。經由創造新的運算物件,你可以操縱學習的程序邏輯,並探索如何調整和重新繪製這些邏輯。在這層意義上,變數幾何關乎形狀的轉換,亦即重新想像各種新的形狀、組合形式和空間關係,從而挑戰幾何慣例。[14]

以表情符號(一種表意符號,通常是笑臉形式)為例,這是一種可用以呈現面部表情的文字排列,比如開心便可用「:D」表示。這些符號在溝通上愈來愈普及,不再是簡單的文字排列,而是變成了實際的圖像,有時候,這些圖像作為表情符號看起來可能相當有趣,但與之相關,潛在的再現政治問題也隨之而來。下文將更深入討論這一點,但就目前而言,表情符號是一個很好的例子,因為它們是由幾何形狀組成,包含點、線、面和顏色。本章將從這些表情符號中獲得樂趣(即使一些潛在的問題根本不好玩),進而探索表情符號的情感維度,以及我們在日常溝通上會遇到的不同呈現形式。

已有許多評論家針對表情符號標準化與再現政治之間的關連進行探索。由羅耶・羅斯卡姆·亞彬(Roel Roscam Abbing)、佩姬・皮耶洛(Peggy Pierrot)和芬穆珂・史奈爾汀(Femke Snelting)所撰寫,研究表情符號「通用性」政治的文章〈修改通用性〉(Modifying the Universal)便是一個很好的例子。[15]自一九八七年以來,Unicode 計畫設定了運算產業的標準,讓所有主要操作系統和書寫應用程式有了一致的編碼、文字再現和處理方法,從而推動軟體國際化,表情符號也隨之出現。有趣的是,在技術層面上,Unicode 提供了一個獨特的編碼點(數字),以抽象方式表示字符,視覺呈現的任務(大小、字體、形狀、幾何)則留給其他軟體,例如網頁瀏覽器或文字處理器等。在這裡,我們感興趣的是關於再現的問題。

正如開發一種世界上大多數人都可以言說和理解的通用語言(例如世界語)這種烏托邦式理想,Unicode 對於國際/多語言系統的溝通運作顯然很重要。截至本書撰寫時的最新版本 Unicode 12.1 於二〇一九年五月發佈時,一共有 137,994 個字符,涵蓋 150 部腳本(scripts),以及多個符號集和表情符號。[16]然而,隨著這項標準從基本字符,一路擴大適用到符號集和表情符號,標準的通用性愈來愈成問題。相關批評毫無意外地圍繞在再現政治上,例如公然展現的性別刻板印象和種族歧視,舉例而言,女性的表情符號在某些行業中明顯欠缺[17],表情符號的膚色也有所侷限,另外,「通用修飾符號」也無法於所有裝置和作業系統上「通用」顯示。

我們的觀點是,表情符號的使用或許既有趣又能表現情緒,但表情符號也容易過度簡化並抹消差異,從而延續了已經很「暴力的權力結構」中的規範意識形態[18],例如只選擇呈現具有特定膚色的人,而忽略其他人。關於人如何被再現這點,存在著明顯的不平等,因此我們必須質疑是誰為這些再現設定了標準。此處的問題,有一部分在於為何這種操作能被塑造為「好玩」的形象,以及這如何掩蓋了監控我們情緒狀態的其他過程,尤其是在工作場所之中(我們將在第四章〈資料擷取〉中回頭討論這個問題)。Process Studio 的 AIMoji 計畫運用深度學習的技術,並訓練現有的表情符號資料[19],進而擾亂化約的再現邏輯、提供介於各式形狀、表情和情緒之間的多種突變,從而拒絕通用主義,並突顯了前述這些問題。以上是一些本章想要探討的議題,我們將透過介紹幾何變量,來學習如何產生有別於此(也許更為政治正確)的替代方案。我們將從平面設計師大衛・萊因福特(David Reinfurt)的作品《Multi》開始,來示範幾何的基礎,並協助讀者了解如何從簡單的排版元素產生不同的面部表情和構圖。

                                   

[1] 許多電腦教學書籍經常會使用「傻瓜書」(for dummies)這個輕鬆的詞彙來稱呼,但這個詞帶有一點學習障礙的貶義。
[2] 本書希望提供的「實用知識」是一種非標準式的讀寫能力,參見:Marilyn M. Cooper, “Really Useful Knowledge: A Cultural Studies Agenda for Writing Centers,” The Writing Center Journal 14, N°2 (Spring 1994): 97-111, https://jstor.org/stable/43441948.
[3] Mark Guzdial 認為,程式設計除了常規關注的經濟效益以及軟體產業的專業人才發展外,還有其他的目的,這為學習和教授程式設計開拓了多種可能性。參見:Mark Guzdial, “Computing for Other Disciplines,” in The Cambridge Handbook of Computing Education Research, Sally A. Fincher and Anthony V. Robins, eds. (Cambridge: Cambridge University Press, 2019), 584, https://doi.org/10.1017/9781108654555.020.
[4]Seymour Papert 在 1980 年出版頗具影響力的著作《Mindstorms》,他將運算導入兒童的學習。創造「運算式思維」一詞,利用早期程式設計語言 Logo(該語言並不只將軟體當作工具使用)強調流程的建構,試圖弭平數學、科學與教育文化以及社會批判之間的斷層。Donald Knuth 在《Literate Programming》一書中更釐清了讀寫能力的概念,並納入一種程式設計相關文獻,其中涉及將程式語言視為人類讀者所使用的自然語言。近年來,軟體研究領域的學者亦採納運算式思維的概念,如 David Berry、Matthew Fuller、Nick Montfort 和 Annette Vee 等人。參見:Seymour Papert, Mindstorms; Children, Computers and Powerful Ideas(New York: Basic Books, 1980); Donald Ervin Knuth, Literate Programming CSLI Lecture Notes, N°27 (Stanford, CA: Center for the Study of Language and Information, 1992); Jeannette M. Wing, “Computational Thinking,”  ACM 49, N°3 (March 2006): 33–35; Michael, Mateas, “Procedural Literacy: Educating the New Media Practitioner,” Horizon 13, N°2 (June 1, 2005): 101–11; David M. Berry, and Anders Fagerjord, Digital Humanities: Knowledge and Critique in a Digital Age (Hoboken, NJ: John Wiley & Sons, 2017); Matthew Fuller, How to be a Geek: Essays on the Culture of Software (Cambridge: Polity Press, 2017); Nick Montfort, Exploratory Programming for the Arts and Humanities (Cambridge, MA: MIT Press, 2016); Annette Vee, Coding Literacy: How Computer Programming Is Changing Writing (Cambridge, MA: MIT Press, 2017); Ole Sejer Iversen, Rachel Charlotte Smith and Christian Dindler, “From computational thinking to computational empowerment: a 21st century PD agenda,” Proceedings of the 15th Participatory Design Conference Full Papers – Volume 1, N°7 (August 2018): 1-11. 

[5] 軟體研究是跨學科的研究領域,研究軟體及其社會和文化影響,參見:Matthew Fuller, ed. Software Studies: A Lexicon (Cambridge, MA: MIT Press, 2008).
[6] 舉例而言,請參閱:Syed Mustafa Ali, “A Brief Introduction to Decolonial Computing,” XRDS: Crossroads, The ACM Magazine for Students 22, N°4 (2016): 16–21.
[7] 這裡我們指的是:John Maeda, Creative Code: Aesthetics + Computation (London: Thames & Hudson, 2004); Kylie A. Peppler and Yasmin B. Kafai, “Creative coding: Programming for personal expression,” The 8th International Conference on Computer Supported Collaborative Learning (CSCL) 2 (2009): 76-78; Montfort, Exploratory Programming for the Arts and Humanities; Noah Wardrip-Fruin, Expressive Processing: Digital Fictions, Computer Games, and Software Studies (Cambridge, MA: MIT Press, 2012).
[8] 我們將形式化邏輯和概念式思維融合在一起,從而開拓進一步反思的空間。就如同我們的一位學生在2018年所說:「美學程式設計不僅只是程式設計入門,而是一門更富反思和批判的課程。」根據某位學生對2019年課程的回饋,課程結構提供了「將編碼做為實作和理論方法的實務經驗(中略)。能夠一窺程式碼幕後情況,並嘗試在數位文化脈絡下以宏觀視角進行解碼,是一件很棒的事。」
[9] 在此應特別感謝負責課程教學的Magda Tyżlik-Carver和Christian Ulrik Andersen兩人,以及包括 Frederik Westergaard、Nils Rungholm Jensen、Tobias Stenberg、Malthe Stavning Erslev、Ann Karring、Simone Morrison、 Nynne Lucca Christianen、Ester Marie Aagaard和Noah Aamund等各位助教。
[10] 賈克.洪席耶的《美學與政治》(The Politics of Aesthetics)(London: Continuum, 2006) 探討了美學和政治的共通之處:根據洪席耶的說法,兩者都為可思考與不可思考、可能與不可能劃定了界限。
[11] Linus Torvalds and David Diamond, Just for Fun: The Story of an Accidental Revolutionary (Knutsford: Texere Publishing, 2001),參見 http://en.wikipedia.org/wiki/Just_for_Fun。其他範例包括:Jeremy Gibbons and Oege de Moor, The Fun of Programming (London: Palgrave Macmillan, 2003)。
[12] 請參見童書 Vicky Owyang Chan, Geometry Is Fun For Me (Indianapolis, IL: Dog Ear Publishing, 2017)。
[13] Olga Goriunova, Fun and Software: Exploring Pleasure, Paradox and Pain in Computing (New York, London: Bloomsbury, 2014), 4.
[14] Femke Snelting, “Other Geometries,” transmediale journal 3 (October 31, 2019, https://transmediale.de/content/other-geometries.
[15] Roel Roscam Abbing, Peggy Pierrot and Femke Snelting, “Modifying the Universal,” Executing Practices, Helen Pritchard, Eric Snodgrass & Magda Tyżlik-Carver, eds. (London: Open Humanities Press, 2018), 35-51, http://www.data-browser.net/db06.html. 此外,針對類似主題,芬穆珂・史奈爾汀有一個時長一小時十五分鐘的演講影片,請見:https://www.youtube.com/watch?v=ZP2bQ_4Q7DY。其他參考資料包括:Crystal Abidin and Joel Gn, “Between Art and Application: Special Issue on Emoji Epistemology,” First Monday 23, no. 9 (September 3, 2018); Luke Stark, “Facial recognition, emotion and race in animated social media,” First Monday 23, no. 9 (September 2018), 3; Miriam E Sweeney and Kelsea Whaley, “Technically White: Emoji Skin-tone Modifiers as American Technoculture,” First Monday 24, no. 7 (1 July 1, 2019).
[16] 請見https://en.wikipedia.org/wiki/Unicode#Origin_and_development
[17]請見https://www.telegraph.co.uk/technology/2016/07/15/new-gender-equality-emoji-to-show-women-at-work/
[18] Abbing, Pierrot and Snelting, Modifying the Universal, 210.
[19] 該計畫採機器學習演算法,並以內含 3145 個現有表情符號的資料集作為輸入資料,來產生各種不可思議的表情符號模型。請參閱 https://process.studio/works/aimoji-ai-generated-emoji/。該計畫是 2019 年維也納雙年展「不可思議的價值觀」(Uncanny Values)展覽的一部分,https://process.studio/works/uncanny-values/。我們將在第十章更詳細地討論機器學習。

《美學程式設計》台灣版工作小組
我們是一群背景各異的計畫參與者——藝術家、軟體工程師、編輯、策展人、譯者、大學教授等,我們目前正在進行《美學程式設計》(Aesthetic Programming)這本書的台灣版。追隨著自由及開源的精神,我們希望透過共同翻譯與編輯這本書,開闢一些不同的可能性,反思運算文化的普遍性及其對社會和政治影響。