[Live Coding: A User’s Manual | Books Gateway | MIT Press](https://direct.mit.edu/books/oa-monograph/5495/Live-CodingA-User-s-Manual) By: Alan F. Blackwell, Emma Cocker, Geoff Cox, Alex McLean, Thor Magnusson Publisher: The MIT Press Published: 2022 >Chappie: ChatGPT 翻譯,大部分段落未校稿。 So what do we mean by calling this book “a user’s manual”? This is no arbitrary choice of terminology. A manual is a handbook, traditionally small enough to hold in the hand (manus being the Latin word for “hand”), a support for action. The manual can be repeatedly referred to—it is a source of information that can be applied or performed. We hope that this book can serve as a source and inspiration for live coders and for wider users of code. When it comes to computing (not least), the term user seems at first to be rather limited and functionary, even when describing well-meaning notions such as user-centered or user-friendly, which are both part of a more general shift toward seemingly inclusive and participatory forms. However, as much as it is clear that the user is open to subtle forms of exploitation,1 we argue that the user might also be a force for reinvention. 那麼,當我們稱這本書為「使用者手冊」時,我們指的是什麼呢?這不是任意選擇術語。手冊是一本手冊,傳統上足夠小可以放在手裡(「manus」是拉丁詞,意思是「手」),它是一種行動的支援。手冊可以被反覆參考,是一個可以應用或執行的信息來源。我們希望這本書可以成為現場編碼者和更廣泛的程式碼使用者的資訊來源和靈感來源。當涉及到計算(尤其是)時,使用者這個詞似乎起初相當有限和功能性,即使描述良善的概念,例如以使用者為中心或使用者友好,這些都是更普遍的趨勢之一,似乎是包容性和參與性形式的一部分。然而,正如使用者可能會受到微妙形式的剝削的影響一樣,我們認為使用者也可能是重塑的力量。 If you are expecting a conventional user’s manual, then put this book down. As the title suggests, live coding is there to be used, not least to make visible the materiality of the computer and the varied experience of its usage. It is a user’s manual of sorts, but not in any conventional technical sense of being a prescribed set of instructions or a how-to recipe book on how to do live coding. Indeed, there can be no conventional user’s manual for live coding because there can be no universal way to understand or practice live coding.2 There is no universal language to code in, to start with. It is this pluriversal capacity of live coding to resist or trouble any easy classification, categoriza- tion, or explanation that we take as our provocation for (the impossibility, or at least challenge of) writing this book. 如果你期望一本傳統的使用者手冊,那麼就把這本書放下吧。正如書名所示,現場編碼是用來使用的,至少可以使電腦的物質性和其使用的多樣性變得可見。這是一種使用者手冊,但不是在傳統的技術意義上,不是一套預定指令的指導書,也不是關於如何進行現場編碼的食譜。事實上,對於現場編碼來說,沒有傳統意義上的使用者手冊,因為沒有普遍理解或實踐現場編碼的方式。首先,沒有通用的編碼語言。正是現場編碼的這種多元能力,可以抵制或打擾任何簡單的分類、歸類或解釋,這就是我們撰寫這本書的挑戰所在(或者說是不可能性的挑戰)。 Certainly, there is something perverse in writing a book about live coding. On the one hand, books are not particularly well suited for registering the dynamic processes of how writing and coding operate as distinctive cognitive practices, unfolding in time. Even static code is poorly expressed once printed on the pages of a book—although it is common enough for programming manuals and textbooks to do just this, encouraging the reader to read and doggedly type out the program in order to execute it. On the other hand, the very constraints of the printed form allow for other critical reflections to take place, while the textual qualities of writing code can be understood in the broader context of linguistic form, both on the syntactic and semantic levels. Perhaps the disjunction allows certain kinds of thinking to emerge that register how writing and coding are particular technologies that generate particular readings and contin- gencies. Accordingly, this first chapter operates as a broad introduction to live coding alongside speculation on the inherent reflexivity of technological form, in which the process of writing a book on live coding registers its own particular temporality. 毫無疑問,在寫一本關於現場編碼的書時,有些反常。一方面,書籍並不特別適合於註冊寫作和編碼作為獨特的認知實踐在時間上展開的動態過程。即使是靜態代碼,一旦印在書頁上,表達得也很差 - 雖然編程手冊和教科書經常這樣做,鼓勵讀者閱讀和堅持打出程序以執行它。另一方面,印刷形式的限制允許其他批判性反思的發生,而書寫代碼的文本特性可以在更廣泛的語言形式上下文中理解,包括句法和語義層面。也許這種不一致使某些思維得以浮現,註冊寫作和編碼是特定技術,產生特定的閱讀和情勢。因此,本章作為現場編碼的廣泛介紹,並推測技術形式的固有反身性,其中編寫一本關於現場編碼的書籍過程註冊其自身特定的時間性。 ## What Is Live Coding? Live coding has been described in terms such as writing software in real time, changing a program while it is running, projecting the screen for the audience to participate in, writing as an improvisatory practice, composing live using textual notation, changing rules while following them, conversational programming (conversing with the computer in its own native language), thinking in public, and creating and using bespoke systems tailored for on-the-fly or just-in-time performance. However, as live coder David Ogborn states, “To define something is to stake a claim to its future, to make a claim about what it should be or become. This makes me hesitate to define live coding.”3 Live coding is a performance practice that operates as an adventure and exploration, deliberately rejecting fixed definitions, remaining heterogeneous in nature, continually challeng- ing its self-understanding through the practice of writing and rewriting—defining and redefining—as a public performance. With no formal definition (or at least only one that includes the possibility of its own redefinition) also comes some resistance to hier- archical control—live coding cannot really become owned by established practitioners or institutions. In asking “What is live coding?,” our intention is not to fix or define but rather to explore how live coding opens up. Live coding is about people interacting with the world, and each other, in real time, via code.4 Live coding is about making software live. 現場編碼被描述為即時編寫軟體、在運行軟體時更改程序、投影屏幕供觀眾參與、作為即興練習的書寫、使用文本符號即時創作、在遵循規則的同時改變它們、以電腦的本地語言進行對話式編程、公開思考、創建並使用量身定制的系統以進行即時表演。然而,現場編碼者David Ogborn表示:“定義某物就是要對其未來做出主張,對其應該成為什麼或成為什麼做出主張。這讓我猶豫是否要定義現場編碼。”現場編碼是一種表演實踐,作為冒險和探索,故意拒絕固定的定義,保持異質性,通過寫作和重寫的實踐,不斷挑戰自我理解,作為公共表演定義和重新定義。沒有正式的定義(或者至少只有一個包括自我重新定義可能性的定義),也會產生一些對階層控制的抵抗 - 現場編碼不能真正地成為已確立的實踐者或機構所擁有。我們提出“什麼是現場編碼?”的問題,意圖不是固定或定義,而是探索現場編碼如何開放。現場編碼是關於人們通過代碼實時與世界和彼此互動。現場編碼是關於使軟體實時運行。 To make software live is not a brand-new proposition,5 as over the past two decades a worldwide live coding movement has emerged within a performance context that throws new light on code-as-interface through an explosion of new tools and practices. Live coding asks questions about liveness, inviting us to reflect on what it means to be live—to have bodies, to communicate, to act. When we write code live, we adapt it to our needs, and it adapts us in return. In this book we consider how the performance practice of live coding has been enabled by an increased capacity for liveness within computer programming more broadly and in turn how the performance of live cod- ing proposes new ways of operating, posing questions and challenges to some of the underpinning values and ideologies of a wider computational culture. 讓軟體實時運行並不是一個全新的提議,因為在過去的二十年中,一個全球性的現場編碼運動已經在表演背景下興起,透過爆炸性的新工具和實踐,為代碼作為界面帶來新的光芒。現場編碼提出了關於現場性的問題,邀請我們反思何謂“現場”-擁有身體、溝通、行動的意義。當我們現場編碼時,我們將其適應到自己的需求中,同時它也適應著我們。在本書中,我們考慮了現場編碼的表演實踐是如何由於電腦編程更廣泛的實時性能力而得以實現,並進一步探討現場編碼表演提出了新的操作方式,對更廣泛的電腦文化的基本價值觀和意識形態提出了問題和挑戰。 Live coding involves a critical orientation toward the otherwise conventionalized work of programming and software engineering.6 For live coder Sarah Groff Hennigh- Palermo, “This way of computing . . . helps me ‘unthink’ the engineering I do as my day job. It allows for a relationship with computers where they are more like plants, rewarding cultivation and experimentation.”7 Live coding gives us a way to think oth- erwise about coding—what it can be, rather than what it is. We might consider this capacity of live coding as a technique of making strange (or defamiliarization), in the sense first intended by the Russian literary theorist Viktor Shklovsky, as presenting familiar things in a strange way in order to enhance apperception.8 Live coding makes software strange,9 allowing us to see beyond routine practices and interpretations of code. This book explores the wider context within which the performance practice of live coding emerges while inviting reflection on the potential of what it might become. 現場編碼涉及對程式設計和軟體工程等常規化工作的批判取向。對於現場編碼者Sarah Groff Hennigh-Palermo來說,“這種計算方式……幫助我‘反思’我作為日常工作的工程工作。它允許與電腦建立一種更像植物的關係,獎勵耕耘和實驗。”現場編碼讓我們以不同的方式思考編碼,關注它可以成為什麼,而不僅僅是它現在的形態。我們可以將現場編碼的這種能力視為一種使異化的技巧(或是使熟悉的事物變得陌生),這是俄羅斯文學理論家維克多·舒克洛夫斯基首次提出的概念,它可以通過以陌生的方式展示熟悉的事物來提高感知。現場編碼使軟體變得陌生,讓我們看到編碼的日常實踐和解釋之外的更多可能性。本書探討了現場編碼表演實踐出現的更廣泛背景,同時邀請人們反思它可能成為什麼。 Toward the end of the twentieth century, computers were becoming omnipresent across many areas of arts practice, and communities of musicians and artists were begin- ning to form around specific programming languages (notable are audio programming languages such as Max/MSP, SuperCollider, Pure Data, and CSound). Artists were begin- ning to use code as a creative material to express music, visuals, choreography, robotics, video, and computer games. With code as the material and the laptop as a studio, the traditional divisions between art, music, architecture, design, and game development blurred, and educational institutions began to respond with new interdisciplinary approaches to learning how to program computers. By the year 2000, prototypical live coders began to arrive on the scene with a distinct approach to live programming, straddling performance and creative computing. These coders asked: Why not simply use the technology to show what we are doing? Why not show the screen and be more transparent about how we are conversing with our machines in our own languages? 到了二十世紀末,電腦在藝術實踐的各個領域變得無所不在,並且形成了圍繞特定編程語言的音樂家和藝術家社區(特別是音頻編程語言如Max/MSP、SuperCollider、Pure Data和CSound)。藝術家開始使用代碼作為創意材料來表達音樂、視覺效果、舞蹈、機器人、視頻和電腦遊戲。以筆記本電腦為工作室,以代碼為材料,傳統上的藝術、音樂、建築、設計和遊戲開發之間的界限變得模糊,教育機構開始采取新的跨學科方法來學習如何編程電腦。到了2000年,原型的現場編碼人員以一種独特的現場編程方式登場,跨越表演和創意計算。這些編碼者問道:為什麼不直接使用技術來展示我們在做什麼?為什麼不展示屏幕,更透明地展示我們如何以自己的語言與機器對話呢? Live coding involves showing the screen or making visible the coding process as part of a live performance. Broadly speaking, it describes the improvisatory real-time composition of predominantly computer-generated audiovisual material, in which the writing of code itself (or other executable instructions) is presented as a live event for an audience. Alongside witnessing the coder engaged in the live act of coding (laboring at their laptop), the code itself is also presented—typically projected—in real time as it is being worked on as a visible part of the performance. In one sense the imperative to show the screen might be considered a response to the audience’s frustration or need to see something during coding performances, or even a way of foregrounding the technical credibility (even virtuosity) of creative coders. However, for many live coders the practice of showing the screen is a critical gesture in its own right. 即時編碼涉及顯示螢幕或將編碼過程展示為現場演出的一部分。廣泛來說,它描述了主要由電腦生成的音視頻材料的即興實時創作,其中編寫代碼本身(或其他可執行指令)作為現場演出的一部分呈現給觀眾。觀眾除了見證編碼者現場編碼的過程(在筆記型電腦上努力工作),代碼本身也通常以投影方式實時展示在現場表演中。從某種意義上說,顯示螢幕的必要性可以被視為是對觀眾在編碼表演中的沮喪或需求的回應,甚至是顯示創意編碼者的技術可信度(甚至是技術優秀表現)的一種方式。然而,對於許多即時編碼者來說,顯示螢幕的做法本身也是一個批判性的姿態。 Despite reluctance to be constrained by definitions, one popularly cited formulation is that live coding is best characterized as thinking in public, a phrase derived partly from the etymology of programming as writing in public (Greek programma, from prographein, “write publicly”). For some live coders, making these private intellectual and creative activities publicly visible has a liberating effect, while at the same time introducing an imperative of clarity within coding and turning each algorithm into artwork accessible through simplicity of purpose and expression. Live coding unveils the underlying oper- addtional layer of activity beneath the more familiar, readable gestures of computational performance. Commitment to a mode of thinking that is open and creative, especially when made public, can thus acquire the status of a political act. 儘管對於被限制於定義有所猶豫,但是其中一個被廣泛引用的表述是,live coding 最適合得描述為公共思考,這個詞語部分源自於程式設計的詞源「寫作為公共活動」(希臘文 programma,源自 prographein 的「公開寫作」)。對於一些 live coders 來說,將這些私人的智力和創造性活動公開可見具有解放作用,同時在編碼中引入了清晰度的要求,將每個算法轉化為通過目的和表達的簡單性而可以藝術化的作品。Live coding 顯示了計算表演更熟悉且易讀的動作背後的操作層活動。承諾一種開放和創造性的思維模式,特別是在公共場合進行,因此可以成為一種政治行為的地位。 When interpreted in the context of cultural experience, live coding is not only fun- damentally an “open work”10—inasmuch as constituents of it are left open to the laws of improvisation, chance, or intervention by the public—promising an aesthetic expe- rience that matches the networked online community aspirations of the internet era (specifically free software principles) but, significantly, a broader DIY, punk, and post- punk ethos. The ambitions of such work are far-reaching for technologies that support new styles of conversational programming—that are nonlinear and routinely interac- tive, with software infrastructures that are not static monuments to the achievements of the past but dynamic processes of engagement with the future. The temporality that is implicit in technologies of control becomes subverted by software in the present tense. The distinction between human action in the moment and systems-based plan- ning has been a constant tension for the theorists of human-computer interaction. As we explore in the later chapters of this book, the intersection of these modes of think- ing with the socioeconomic and corporate infrastructure of the software industry is unavoidably political. 當將live coding解釋為文化經驗時,它不僅是一種「開放式作品」(open work),因為其中的元素會被留給即興、機會或公眾的干預,承諾著與網絡社區的抱負相匹配的審美體驗(特別是自由軟體原則),但更重要的是,它蘊含著更廣泛的DIY、龐克和後龐克的精神。這樣的工作雄心勃勃,支持新風格的對話式編程,這種編程是非線性和常規交互式的,軟體基礎設施不再是過去成就的靜態紀念碑,而是與未來動態接觸的過程。控制技術中隱含的時間性被軟體在當下顛覆。人類在當下行動和系統規劃之間的區別是人機交互理論家一直存在的緊張關係。正如本書後幾章所探討的,這些思維模式與軟體行業的社會經濟和企業基礎設施的交叉不可避免地是政治的。 The capacity of live coding for making visible counters the smart paradigm in which coding and everyday life are drawn together in ways that become imperceptible. The invisibility here operates like ideology, where lived experience appears increasingly programmed, and we hardly notice how ideology is working on us.11 If we follow this logic, then we do not use computers; they use us. Along with the disappearance of the computer, as one of the tenets of contemporary interface design established through technical programs of pervasive and ubiquitous computing,12 artist Olia Lialina identi- fies that the user is disappearing as well—both the phenomenon and the term.13 This is a problem for her (and us) inasmuch as Big Tech wants computers to be invisible so our experience of using them becomes seemingly natural.14 live coding 的能力讓軟體編寫變得可見,反制了現今程式編寫與日常生活被不可察覺地結合在一起的智慧範式。這種隱形的操作就像意識形態一樣,讓人的生活經驗似乎越來越被程式化,而我們卻很難注意到意識形態是如何影響我們的。如果我們遵循這種邏輯,那麼我們並不是在使用電腦,而是電腦在使用我們。藝術家Olia Lialina在技術上普及和普遍計算的程式設計中,除了電腦之外,使用者也在消失——無論是現象還是詞語。對於她(和我們)來說,這是個問題,因為大型科技公司希望讓電腦隱形化,讓我們使用它們的體驗看起來似乎很自然。 Against received wisdom that would tend to be skeptical of the term user,15 Lialina reclaims the possibility of what she calls the Turing Complete User, referring to users who have more autonomy over computer use regardless of the primary purpose of an application or device. As Lialina states: “Being a User is the last reminder that there is, whether visible or not, a computer, a programmed system you use.”16 It is in this sense, too, that we invoke the user in the title of this book. 本書標題中提到的「使用者」一詞,與一般傳統上對此詞持懷疑態度的觀點相反。Olia Lialina重新提出「圖靈完備使用者」(Turing Complete User)的概念,指的是使用者能夠不論應用程式或裝置的主要目的,仍能對電腦使用擁有更多自主權的使用者。正如Lialina所言:「成為使用者是最後的提醒,提醒我們,不論是否明顯,都存在一台電腦,一個經過程式設計的系統,我們在使用它。」因此,在本書的標題中,我們也借用了「使用者」這一詞彙。 ## Critical-Creative Contexts 批判性創意的背景 Live coding emerges through a critical relation to the wider programming and software- engineering context. However, it has also evolved in dialogue with the various creative practices that find new expression in and through live coding, including choreography, the visual arts, poetry, and especially music. In one sense, in the context of live coding, music often becomes a metonym for other performance practices. However, this is not meant to reduce or homogenize all other art forms, and within this book we explore how ideas, practices, and theories emerging from wider interdisciplinary contexts open up new ways of conceiving live coding’s distinctiveness. Still, the musical analogy war- rants attention, for it invites particular consideration of the specific things that live coding does. 現場編碼透過對更廣泛的編程和軟體工程背景的批判關係而浮現。然而,它也通過與各種創意實踐對話而進化,這些實踐透過現場編碼找到了新的表達方式,包括編舞、視覺藝術、詩歌和尤其是音樂。在某種意義上,在現場編碼的背景下,音樂往往成為其他表演實踐的代名詞。然而,這並不意味著要簡化或同質化所有其他藝術形式,本書探討了從更廣泛的跨學科背景中出現的思想、實踐和理論如何開啟了新的方式來理解現場編碼的獨特性。然而,音樂的比喻值得關注,因為它引發了對現場編碼具體行為的特殊考慮。 For musicians in the classical notated tradition, every note they play is predeter- mined by the composed score, to which live performance adds expressive adjustments. In contrast, performers of jazz, folk, and rock music might follow a chord sheet but often have the freedom to choose notes within those chords. Free jazz improvisers have even more freedom. But a live coding musician is like an improvising composer, able to transform the whole structure of the piece with a few keystrokes. The code is the score, and the computer performs the music (in a sense) as the audience watches it being written. The live coder breaks down and works outside the established dichotomies of score/performance, composer/performer, and composition/improvisation. 對於傳統樂譜的音樂家來說,他們演奏的每個音符都是預先由樂曲創作而定的,現場演出僅會添加表現性的調整。相比之下,爵士、民謠和搖滾樂的表演者可能會遵循和弦樂譜,但通常可以在這些和弦之內自由選擇音符。自由爵士即興演奏者甚至擁有更多的自由。然而,現場編碼音樂家就像是即興創作的作曲家,能夠通過一些按鍵轉換整個樂曲的結構。程式碼就是樂譜,而電腦在觀眾觀看下將其表演出來(在某種意義上)。現場編碼者打破了寫譜/演出、作曲家/演奏家、以及作曲/即興演奏等既定的二元對立。 The technologies of music-making are diverse in their acoustic, electronic, and digi- tal forms. Established genres of recorded music control many layers of adjustment, from basic acoustic vibrations to electronic filtering, sampling, mixing, and remixing using tape loops, turntables, or disk drives. As digital alternatives have become available at all of these different layers of sound production and manipulation, all are accessible via code, turning the laptop into a kind of universal instrument whose own capabilities and boundaries can in turn be redefined. 音樂創作的技術在聲學、電子和數字形式上非常多樣。錄製音樂的各種已確立的類型可以控制從基本聲學振動到電子過濾、採樣、混音和混音再創作等多個調整層面。隨著數位替代品在這些聲音產生和操縱的不同層面上變得可用,透過程式碼可以取得所有這些材料,使筆記型電腦成為一種通用樂器,其自身的功能和界限也可以重新定義。 The capacity of live coding to have an impact on the production of music is clearly evi- dent. However, we argue that all performance practices (including music) offer a special way of understanding software and that this has radical potential for all software—not only for artists, their audiences, and art theorists but also for engineers, philosophers, and activists. Scripting a performance is like programming a computer because both involve ordering events in time. Music and dance are art forms concerned with move- ment over time, from fluctuating waveforms or movements making up individual actions to sequences of actions and the rhythmic patterns in which they play out. Everybody knows that performances can be captured digitally, but it is not so widely understood (or even accepted by computer scientists) that computers and algorithms are fundamentally concerned with time or that using computers and making software is a kind of performance in itself. In these terms, live coding helps us to gain new insights about what software can be. Live coding具有對音樂製作產生影響的能力是顯而易見的。然而,我們認為所有表演實踐(包括音樂)都提供了一種特殊的理解軟體的方式,這對所有軟體都具有激進的潛力——不僅僅是對藝術家、他們的觀眾和藝術理論家,也包括工程師、哲學家和活動家。編寫表演腳本就像編程一台電腦,因為它們都涉及將事件按時間排序。音樂和舞蹈是關注時間上的運動的藝術形式,從構成個別行動的波形或運動到行動序列和它們演奏的節奏模式。每個人都知道表演可以以數位形式捕捉,但電腦科學家很少理解(甚至接受)電腦和演算法基本上關注時間,或者使用電腦和製作軟體本身就是一種表演。從這些方面來看,現場編碼幫助我們獲得關於軟體可能性的新見解。 Programming languages, like languages in general, offer ways to describe things compositionally, through a structured system of communication. Programming lan- guages are often used to describe algorithms, but we can also describe algorithms with human languages. Language comes alive through the body, through communication with others, and through writing systems. In this book we argue that live coding can transform human experiences of technology through these same connections. 程式語言與其他語言一樣,透過一個有結構的通訊系統以組合的方式來描述事物。程式語言常被用來描述演算法,但我們也可以用人類語言來描述演算法。語言透過身體、與他人的溝通以及書寫系統而變得生動。在本書中,我們認為透過這些相同的連接,live coding 可以轉變人類對科技的體驗。 ## Open Potential and Interdisciplinary Perspectives 開放潛能和跨學科觀點 As stated at the outset, this book is not a conventional user’s manual. The title bor- rows from the combinatory literature of Georges Perec and his 1978 book Life: A User’s Manual, a collection of interwoven stories based on the lives of the inhabitants of a fictitious Parisian apartment block.17 More than a passing reference to Perec, the experi- mental writers group OuLiPo (Ouvroir de Littérature Potentielle, of which Perec was part) draws attention to the careful, even programmatic, use of language and in turn has helped us better understand our own endeavor of writing this book on live coding. For example, the French term ouvroir refers to a place where people work together on a difficult task, deriving new techniques; more precisely, the example is given of a sewing circle, which we believe is a good metaphor for the practice of live coding. The lit- térature potentielle of OuLiPo speaks of a search for new forms of writing, as Perec states: “We call potential literature the search for new forms and structures which may be used by writers in any way they see fit.”18 如本書一開始所述,本書不是一本傳統的使用手冊。書名借用了喬治·佩雷克的組合文學作品《生命:使用者手冊》(Life: A User's Manual),該書是以一個虛構的巴黎公寓為背景,編織出一系列互相交織的故事。與佩雷克有著密切關聯的 OuLiPo 實驗作家群體(Ouvroir de Littérature Potentielle),引起了我們對於語言使用的特別注意,也幫助我們更好地理解本書關於探討現場編程的企圖。例如, OuLiPo 的法語術語 "ouvroir" 指的是一個人們一起在困難任務上共同努力的地方,並從中衍生出新的技巧;更明確地說,可以舉出縫紉團體的例子,我們認為這是現場編程實踐的一個好比喻。 OuLiPo 的"potentielle literature"指的是尋找新的寫作形式和結構的探索,正如佩雷克所說:"我們稱之為潛在文學,是指尋找作家可以隨意運用的新形式和結構。" We see live coding (and our attempt to write with it as much as about it) operating in this spirit, as a search for new arrangements of form and structure while staying mind- ful of the formal rules and constraints associated with computing in dialogue with creative practices such as music, choreography, and the visual arts. By appropriating Perec’s title, we indicate our ambition to open up the forms and structures of live cod- ing to close description, analysis, and experimentation, revealing it to be in a perpetual state of potential transformation into something else. For us, live coding has some- thing of this sense of reinvention, an ability even to unsettle the relationship between code and life—and that is what this book is about. 我們認為,藉由以live coding為寫作素材,我們試圖在這個精神中進行創新尋求,尋找新的形式和結構,同時保持對與創意實踐(如音樂、舞蹈和視覺藝術)對話時所涉及的計算形式規則和限制的敏感度。通過借用Perec的書名,我們表明了將live coding的形式和結構開放進行詳細描述、分析和實驗的抱負,揭示它正處於一種持續的潛在轉變的狀態,並有能力顛覆代碼和生活之間的關係 - 這就是本書的主旨。 The composition of the authorship of this book also reflects OuLiPo’s interdisciplin- ary perspective (which in its case included mathematics, computer science, and literature) by bringing together different disciplines and orientations within a shared project. Our own writer’s group embraces diverse practices and theories, as well as conventions and histories, drawn from music, interdisciplinary design and software development, software studies, and network culture alongside areas of artistic research, contemporary art, and performance. Live coding operates at the threshold of these different practices and disci- plinary perspectives, and we wanted to reflect that in the style of the book itself. We write from within the field of live coding, as practitioner-scholars writing from the insider’s perspective, from the viewpoint of live coding performers and software innovators, as well as through wider interdisciplinary scholarship that considers how live coding relates to a wider contextual field, including situating live coding within philosophical, political, and performance-based practices. Our interdisciplinary exchanges have not only happened on the page and in the process of writing the book. Rather, over several years (and through- out the duration of the book’s development) we have talked, discussed, and explored live coding in dialogue with various research projects, networks, and conferences, as well as through live encounters within numerous festivals and algoraves.19 本書的作者組合也反映了 OuLiPo 的跨學科觀點(其例子包括數學、電腦科學和文學),將不同的學科和取向融合在一個共同的項目中。我們自己的作家小組涵蓋了來自音樂、跨學科設計和軟體開發、軟體研究和網絡文化以及當代藝術和表演領域的不同實踐、理論、傳統和歷史。現場編碼在這些不同的實踐和學科觀點的門檻上運作,我們希望在書本風格中反映出來。我們從現場編碼領域的內部實踐者和軟體創新者的角度出發撰寫,從現場編碼表演者和軟體創新者的視角,以及通過更廣泛的跨學科學術研究來考慮現場編碼如何與更廣泛的背景領域相關聯,包括將現場編碼置於哲學、政治和基於表演的實踐中。我們的跨學科交流不僅發生在書面上和撰寫書籍的過程中。多年來(並且在書籍的開發過程中),我們通過與各種研究項目、網絡和會議的對話、討論和探索,以及通過在無數的節日和現場編碼派對中進行現場交流,來探索現場編碼。 Each and every chapter has been coauthored in various ways. Certainly, this has been a complex undertaking. At times, different contributing voices become tangible through a perceived shift in style or semantics or through the meeting of different— even seemingly incompatible—references or ideas. Over many years we have gradually gathered fragments of thoughts and ideas. In places, the transition from one voice to another might appear smooth and seamless; elsewhere, the reader might notice the sudden break or change in tack. Through this approach to coauthoring the book, we draw attention to the etymological relation of text to textile: from the Latin textus, liter- ally “a thing woven,” or from texere, meaning to weave or interweave, to braid or fit together.20 In doing so we reflect the collaborative principles of live coding itself and the desire and potential therein for bringing different systems into dialogue. In writing together we have also become attuned to the potential of writing the book itself as an improvised, collaborative performance. 每一章節都是透過多種方式共同撰寫而成的。當然,這是一個複雜的任務。有時,不同的貢獻聲音通過風格或語義的感知轉變,或通過不同(甚至看似不相容的)參考或想法的交融變得明顯。多年來,我們逐漸收集了思想和想法的碎片。在某些地方,從一個聲音到另一個聲音的轉換可能看起來是平滑和無縫的;在其他地方,讀者可能會注意到突然的斷裂或改變方向。透過這種共同撰寫的方式,我們引起了將文本與紡織品相關聯的注意:從拉丁語textus,字面上意為“編織的東西”,或從texere,意思是編織,交織,編織或配合在一起。在這樣做的過程中,我們反映了live coding本身的協作原則以及其中帶來的不同系統進行對話的渴望和潛力。通過共同撰寫,我們也開始注意到將書寫本身作為即興協作表演的潛力。 Live coding necessarily draws attention to the writing machine—including laptops, source code editors, and so on—and the material production of text or code, book, or even computer hardware.21 It is also connected to the body of the author and reader (producer, worker), and it becomes clear that writers, readers, texts, coders, machines, and codes all have bodies and that these become operative under particular sociotech- nical conditions. Informed by the practice of live coding—and our skepticism about some of the conventions of academic writing and its singular authoritative voice—in the process of writing this book we began to explore some aspects of liveness, experimentality, and reflexivity within our collaboration.22 To focus attention on the performative dimension of live writing as analogous to live coding calls into question some of the static assumptions of communicative forms and instead foregrounds material conditions and their effects, as well as the wider sociotechnical infrastructures through which they are served. It is also worth remembering that all writing is technology, and live writing, like live coding, is able to activate slippages of meaning and ultimately demonstrate how writing subjects and objects become thoroughly entangled.23 Live coding 讓人注意到文字編輯機器,包括筆記型電腦、原始碼編輯器等,以及文字或程式碼、書籍,甚至電腦硬體的物質產出。它也與作者和讀者的身體(生產者、工作者)有關,並清楚地表明,作者、讀者、文本、編碼者、機器和代碼都有身體,在特定的社會技術條件下變得有效。受到現場編碼實踐的啟發,以及對學術寫作及其單一權威性聲音的某些傳統的懷疑,在撰寫本書的過程中,我們開始探索協作中的一些活躍性、實驗性和反思性方面。聚焦於類比於現場編碼的現場書寫的表演維度,質疑了某些傳播形式的靜態假設,並突顯了物質條件及其影響,以及更廣泛的社會技術基礎設施。此外,值得記住的是,所有的寫作都是技術,而現場寫作,就像現場編碼一樣,能夠啟發意義上的滑動,最終展示寫作主體和客體如何完全糾纏在一起。 In writing this book, we also reflected on the jumbled experience of time that the writing of books conduces.24 By writing about writing as we write, we identify a parallel to the way that live coders edit code as it runs. In this way, examining live coding and live writing together usefully confuses any strict definitions between them, as well as between the act of writing and its execution, allowing us to rethink some of our preex- isting notions of notation, liveness, temporality, and knowledge production, which in turn become the focus for the various chapters (4–7, respectively) of this book. While we have only gestured toward this experimental and reflexive attitude toward writing about live coding, it does suggest another book yet to be written (and one at times we thought we were writing here). For now, the book that you are reading takes a more conventional form. 在撰寫本書時,我們也反思了寫書所帶來的時間混亂的經驗。透過在寫作時寫作,我們找到了一種類似於現場編碼者在編輯運行中的代碼的方式。這樣,將現場編碼和現場寫作一起檢視有助於混淆它們之間的嚴格定義,以及撰寫和執行寫作的行為之間的界線,讓我們重新思考一些先前對符號、即時性、時間性和知識生產的觀念,並成為本書的不同章節(分別是第四到七章)的焦點。儘管我們只是暗示了這種對於寫作實驗性和反思性的態度,但它確實暗示了另一本書有待寫作(有時我們甚至認為我們正在寫這本書)。現在,你正在閱讀的書採用了一種較為傳統的形式。 ## Navigating the Book 導覽 The structure of the book is broadly bipartite. The first part is more practice focused, offering an account of the origins, development, and aspirations associated with the evolution of live coding alongside presenting documentation and examples of live coding practice. The second part is more speculative and conceptual in its register, allowing space for discussion of the many ways live coding reflects and informs wider cultural and political concerns. In this sense we identify live coding as a critical techni- cal and aesthetic practice, able to activate sensemaking across interdisciplinary fields.25 本書的架構大致分為兩個部分。第一部分聚焦於實踐,提供了一個關於現場編碼的起源、發展和理念的說明,同時展示了現場編碼實踐的文件和例子。第二部分則更多地關注概念和思想,為討論現場編碼如何反映和影響更廣泛的文化和政治議題提供了空間。在這個意義上,我們將現場編碼視為一個關鍵的技術和美學實踐,能夠在跨學科領域啟動感知。 Chapter 2, “Partial Histories,” informed by research interviews and primary sources, focuses on the history of live coding, taking our point of departure from the TOPLAP manifesto of 2004.26 Far from the intention of establishing a canon here, we take live coding to be a way of addressing some of the assumptions of historicism more broadly and of the progressive technological development that we develop in later chapters. It highlights some of the wider conditions from which live coding has evolved, including the recent history of computer-based music (since the 1980s) and the interest in digital culture within art schools around the mid-1990s, alongside an increased wider cultural interest in creative coding (since the turn of the millennium). We acknowledge various technological catalysts and precursors to live coding, the influence and significance of specific individuals and collaborations, and the importance of receptive and proactive venues and festivals in creating a context for the emerging practice of live coding. We chart the arc of this burgeoning practice from its inception and instituting moments to its becoming established within various institutional frames while arguing how the insurgent and irreverent imperative of live coding has continued to thrive through the new genre of algorave. 第二章「部分歷史」以研究訪談和一手資料為依據,聚焦於現場編碼的歷史,起點為2004年的TOPLAP宣言。我們不打算在此建立一個正典,而是將現場編碼視為一種處理歷史主義和技術發展進步主義等更廣泛假設的方式。本章強調了現場編碼演化的廣泛背景,包括自20世紀80年代以來的電腦音樂歷史,以及自1990年代中期起藝術學院對數位文化的興趣增加,再到自千禧年轉折點以來,廣泛文化對創意編程的關注不斷提升。我們承認各種技術催化劑和現場編碼的先驅者的影響和重要性,以及為新興現場編碼實踐創造了背景的開放性和積極性場所和節日的重要性。我們描述了從現場編碼的起點和開始時刻到它在各種制度框架中的確立,以及如何通過新型態的演算音樂派生出來的不敵而下和不恭敬的精神,現場編碼已經成為不斷發展的實踐。 The third chapter, “Expositions,” presents live coding in its singularity, exposing the specific approaches through which live coding manifests within a diversity of different practices. Forming a parallel history of the field, it includes diverse voices from live cod- ers themselves as reflective performers and innovators. Occupying a central position within the book, the focus on distinctive practices spans the different waves of live cod- ing, from the more tentative explorations preceding the formation of TOPLAP in 2004 to the focused campaigns of popularizers and the cultural transformation of live coding as it has spread around the world.27 It includes both the creators of new live coding tools and those who have developed artistic practices through using those tools. We do not attempt to synthesize a single narrative for this chapter but provide an opportunity for the diversity of the field of live coding to be represented through individual voices, through rich accounts of practice itself. We refer to these presentations of practice as expositions, a term from the field of artistic research for describing how the epistemo- logical contribution of a given practice is exposed, often through a combination of the practice, its documentation, and writing.28 The epistemological dimension of live coding and the question of “what live coding knows” is further explored in chapter 7. 第三章「展示」呈現了即興編程的獨特性,揭示了即興編程在各種不同實踐中展現的特定方法。作為本書的核心,重點介紹了不同的即興編程浪潮,從2004年TOPLAP成立前的探索到普及者的專注宣傳和即興編程作為一種藝術形式在全球的傳播和文化轉型。章節包括創造新即興編程工具的人和那些通過使用這些工具發展藝術實踐的人。我們不嘗試綜合一個單一的敘事,而是提供了一個機會,讓即興編程領域的多樣性通過個人聲音、實踐本身的豐富描述得到代表。我們稱這些實踐的呈現為「展示」,這是藝術研究領域的一個術語,用於描述如何通過實踐、文件和寫作來展示特定實踐的認識貢獻。在第七章中,我們進一步探討即興編程的認識論維度和「即興編程知道什麼」的問題。 Following the practice-based expositions is a shift in orientation toward the wider issues that live coding raises in relation to notation, liveness, time, and knowledge, as well as its future. Chapter 4, “Notation,” focuses specifically on the notational nature of the live coding performance. The generative relationship between a notation and what is notated is what drives generative creativity in the live coding field. The percep- tual gap between the notational map and the generated territory allows the live coder to reach beyond their imagination and work with notation not to efficiently realize a ready-made idea but to follow an idea to see where it takes them. The function of notation in live coding can be seen as threefold: it is the syntactic structure read by the language interpreter that executes the program, it is the action or movement of the performer that is projected to the live audience, and it is the music itself as notated by the live coder. This chapter unpacks these ideas further, exploring how the momentary nature of a live coder’s notation might be closer to speech than to text. Or rather, live coding practice finds itself caught between two worlds, as it is too ephemeral to be score- based culture and yet too centered on text to be oral culture. The focus is therefore not only on the notation but what is notated and the activity of notation—the nature of the deterministic algorithms that live coders work with and the dynamic ways in which they are crafted. By examining how live coding challenges tensions and dichotomies such as those between determinism and liveness, between musical improvisation and composition, and between oral and written culture, we find new approaches to notation as a dynamic, live medium. 第四章「符號學」專注於探討現場編碼表演的符號學特質。在現場編碼的領域中,符號與所表達的內容之間的生成關係驅動著創造力的產生。符號圖譜和所產生的領域之間的知覺差異使得現場編碼者能夠超越自己的想像力,使用符號圖譜不僅僅是為了有效地實現預先設計好的想法,更是為了跟隨想法,看看它們會帶來什麼。符號在現場編碼中的功能可以被看作是三重的:它是由語言解釋器讀取的句法結構,也是表演者向現場觀眾投射的動作或移動,同時也是由現場編碼者創作的音樂本身的符號。本章進一步拆解了這些概念,探索現場編碼者的符號圖譜具有瞬時性,更接近於口語而非文本。或者說,現場編碼的實踐被困在兩個世界之間,它太短暫了,不足以成為樂譜文化,但是過於聚焦於文本,不足以成為口頭文化。因此,本章不僅關注符號本身,還關注被符號表達的內容和符號活動的本質——現場編碼者所使用的確定性演算法的性質以及它們被製作的動態方式。透過研究現場編碼如何挑戰決定性和實時性、音樂即興和作曲之間、口頭和書面文化之間的張力和二元對立,我們可以找到符號作為一種動態、現場的媒介的新方法。 This quality of liveness is explored further in the chapter 5, “Live Coding’s Liveness(es).” It explores the implications of live coding for our understanding of live- ness by asking: What kinds of liveness are produced within live coding, and with what effects? What does this indicate about the relations between technology, performance, and even life that live coding suggests? The chapter draws on different theoretical ideas of liveness and performativity to demonstrate that live coding does not sit easily within any singular theoretical framework: its liveness must be apprehended from more than one epistemological and ontological perspective in which the hierarchy of liveness con- ceived in computational terms collides with a wider discourse on embodiment, vitality, and performativity. The chapter explores how complex conceptualizations of liveness are negotiated through the human-machine relations central to live coding, in turn raising wider contemporary concerns about what it means to be alive, operative, and actively present in the world. Live coding presents a direct challenge to the conventional under- standing of liveness and to the lived experience of time, both with respect to the role of the programmer and user and, crucially, through the way the machine understands time, whether in a wiki edit, a keystroke log, a page render, or a print queue. 第五章“現場編碼的現場感(s)”進一步探討了這種現場感的特質。它通過提出以下問題,探討現場編碼對我們對現場感的理解的影響:現場編碼產生了哪些類型的現場感,以及具有什麼影響?這暗示了現場編碼所提示的技術、表演甚至生命之間的關係是什麼。該章節借鑒了現場感和表演性的不同理論觀點,以證明現場編碼並不容易符合任何單一的理論框架:它的現場感必須從超過一種認識論和本體論的角度來理解,在其中,計算中所構想的現場感的等級與更廣泛的關於具體化、活力和表演性的論述相衝突。本章探討了如何通過現場編碼的人機關係來協商現場感的複雜概念,從而引發關於在世界上存在、運作和積極存在的含義的更廣泛的當代關注。現場編碼對傳統對現場感的理解以及對時間的生活經驗提出了直接挑戰,尤其是對於程序員和用戶的角色以及通過機器理解時間的方式,不論是在wiki編輯、按鍵記錄、頁面呈現還是列印佇列中。 Chapter 6, “Time Criticality in Live Coding,” explores how live coding activates the present in all its complexity. The time criticality we speak of points to this inher- ent processuality of the computer and programming to perform and express dynamic operations in the present: it is both critical on a technical level and on a conceptual level and moves toward criticality in the sense that we emphasize practices that actual- ize potentialities in real time rather than simply expose problems. Across the chapter as a whole, live coding offers a complex multitemporal human and more-than-human experience of time—human and machine times become entangled, both in and out of what we conventionally understand as time. In exemplifying the coming together of multiple temporalities and different types of time, the practice of live coding contrib- utes toward new understanding about our contemporary temporal experience. More- over, how does live coding itself temporalize and actively produce—activate, intervene in, invent, and reorganize—as much as reflect different experiential temporalities? Thus, we not only acknowledge that time plays a crucial role in live coding in terms of the unfolding of time in its performance—as in a timeline or score—but also demonstrate how time can be manipulated, and indeed produced, through such means. 第六章「即時編碼中的時間性」探討了即時編碼如何啟動當下的複雜性。所謂的時間性扣緊了電腦和編程在當下中執行和表現動態操作的本質:它在技術層面和概念層面上都是關鍵的,也朝向關鍵性,強調了實現潛力的實時性而不僅僅是暴露問題。整章闡述了即時編碼提供了一個複雜的多時間人與非人的體驗,人類和機器時間相互交織,既在我們通常理解的時間範疇內,也不在其中。透過實例說明多重時間性和不同類型時間的結合,即時編碼有助於我們對當代時間體驗的新理解。此外,即時編碼本身如何時間化並積極地生產-啟動,介入,發明和重新組織,而不僅僅是反映不同的時間體驗?因此,我們不僅承認時間在即時編碼中在表演中的展開方面扮演了至關重要的角色,例如時間軸或樂譜,同時還演示了如何通過這種方式操作時間,甚至生產時間。 In asking “What Does Live Coding Know?,” chapter 7 explores the engineering con- texts in which the necessary technical knowledge has been generated and applied and the contexts of creativity where know-how from several perspectives crosses the bound- aries of computer science, craft practices, and artistic research, as well as the sense of indeterminacy that is inherent to the medium. Our intention is to explore beyond the knowledge needed to practice live coding, extending to the knowledge that is acquired or that emerges, or is even assumed, in and through that practice. Live coding comprises technical, artistic, and philosophical inquiry, for it not only draws on and from specific fields of knowledge but, as a practice, asks specific epistemological questions. Here, we can draw on the interdisciplinary work of Philip Agre, whose concept of a critical techni- cal practice pertains to the philosophical enterprise of artificial intelligence as pursued through technical work,29 where critical and cultural theories intervene in engineering practices as a way of inviting reflection on the underlying assumptions and ideologies within technological design. Live coding presents a challenge to our categories of knowl- edge, in both its scholarly and technical-professional realizations. Of specific interest for us is the way in which it operates at the threshold of different species of knowledge, troubling its classification. In posing the question “What does live coding know?,” the intention is to expand beyond an anthropocentric and culturally specific understand- ing. Here, what live coding knows is not synonymous with what the live coder knows but rather refers to the epistemological potential of the practice itself, including the multiple knowledges arising in and through the collaboration with machines. Our sug- gestion is that the live intra-actions of programmer, program code, and the practice of coding defamiliarize knowledge production and expose how making and thinking might escape familiar forms and normative applications of inscription practices.30 在第七章「即興編程知道什麼?」中,探索了即興編程所產生的必要技術知識以及其生成和應用的工程背景,以及跨越電腦科學、手工藝實踐和藝術研究等多個角度的知識交叉和創造性的背景,以及這種媒介固有的不確定性。我們的意圖是超越實踐即興編程所需的知識,延伸到通過這種實踐所獲得、產生或假定的知識。即興編程涉及技術、藝術和哲學探究,因為它不僅依賴於特定領域的知識,而且作為一種實踐,還提出了特定的認識論問題。在這裡,我們可以借鑒Philip Agre的跨學科工作,他的「關鍵技術實踐」的概念涉及藉助技術工作追求人工智能的哲學企圖,其中關鍵和文化理論介入工程實踐,以邀請人們對技術設計中的基本假設和意識形態進行反思。即興編程對我們的知識類別提出了挑戰,無論是在學術還是技術專業實現上。我們特別感興趣的是它在不同知識類型的閾值上運作,並擾亂了它的分類。問題“即興編程知道什麼?”的意圖是擴大超越人類中心和文化特定的理解。在這裡,即興編程知道的不是即興編程師所知道的,而是指這種實踐本身的認識潛力,包括與機器協作產生的多種知識。我們的建議是,編程師、程序代碼和編程實踐之間的生動互動疏遠了知識生產,並揭示了製造和思考如何逃離熟悉的形式和規範應用的銘記實踐。 The final chapter, “What Does Live Coding Want?,” shifts the focus from what live coding knows to the question of what it wants—inviting dual reflection on both the agency of code and the future of live coding. This chapter initially draws out some of the political implications relating to the operations of algorithms. Algorithms, which increasingly manipulate and control our social systems, are not as fixed or as deterministic as they might first appear but rather are emergent and reactive phe- nomena, subject to constant live updates. They are also part of larger sociotechnical assemblages and infrastructures that are constantly evolving and subject to variable conditions and contingencies that include the lively contributions of coding or writ- ing. Perhaps what is at stake here is a deeper exploration into the ways that space and time are constructed when coding and writing and maintaining the best practices of the arts and the academy in the face of corporate data infrastructures. Live coding is an open-ended performative process that attempts to reject deterministic or previously held certainties over the ways that meanings are generated and disseminated. This provides a counterspace for agency in human and nonhuman entities that is produced through a fuller understanding of the operations of the material-discursive systems that we are written and coded into. In the case of writing this book, we acknowledge that to some extent it also writes us.31 最後一章「即興編碼想要什麼?」將焦點轉向即興編碼的主體,探討它的代理能力和未來。本章首先探討與算法操作相關的政治影響。算法越來越多地操縱和控制我們的社會系統,但它們並不像表面上看起來那麼固定或決定性,而是 emergent 和反應性的現象,受到不斷的實時更新的影響。它們也是不斷發展和受到變量條件和偶然事件影響的更大的社會技術裝置和基礎設施的一部分,包括編碼或編寫的生動貢獻。也許,此處的關鍵是更深入地探討編碼和寫作時如何構建時空,以及在企業數據基礎設施面前如何保持藝術和學術的最佳實踐。即興編碼是一個開放式的表演過程,試圖拒絕先前關於生成和傳播意義的確定性或先前的確定性。這提供了一個反面的空間,可以產生人類和非人類實體的代理,這是通過對我們被編寫和編碼進入的物質-話語系統的操作的更全面理解產生的。在撰寫本書的情況下,我們承認它在某種程度上也在編寫我們。 Live coding conceives of technology as fluid phenomena open to transforma- tion and exploration, including through the live redesign of instruments or the live rewriting of scores. Live coding rejects easy definition, continually challenging its self-understanding through the practice of defining and redefining itself as a public performance—in the way a Wikipedia entry invites rewriting. Such a mode of writing— done with “shaky hands”32—expresses the ability to move, change, and explore the unknown. Writing has no beginning or end in this way as it opens itself up to its relations with existing works and its future extensions. The issues that we engage in this book in reference to live coding continue to be developed through ongoing work, inasmuch as all books are provisional and open to multiple interpretations as well as further modification.33 Thus, any sense of a beginning or end to this introductory chap- ter (and the book more broadly) is only a temporary holding position in lieu of further thoughts and future developments, which ultimately serves to demonstrate how read- ers might become writers. 即興編碼把技術看作是開放的流動現象,可以透過重新設計樂器或改寫樂譜來進行轉化和探索。即興編碼拒絕簡單的定義,不斷通過定義和重新定義自己作為公開表演的方式挑戰其自我理解 - 就像Wikipedia條目邀請重寫一樣。這種模式的寫作 - 用“顫抖的手”進行 - 表達了移動、改變和探索未知的能力。以這種方式,寫作沒有開始或結束,因為它打開了與現有作品和未來延伸的關係。本書中關於即興編碼所涉及的問題將繼續通過持續的工作進行開發,因為所有書籍都是臨時的,並且開放給多種解釋以及進一步修改。因此,對於本章介紹(以及整本書)的任何開始或結束的感覺僅是一個暫時的保持位置,代替進一步思考和未來發展,最終展示了讀者如何成為作家。