大哉問04 - 為什麼要學程式設計?

image
ofollow,noindex">用問題對話虛無 —— HackYourself 大哉問系列
大哉問03 - 什麼是賺錢之道?更新你的個人商業模式工欲善其事,必先鼓其志,然後利其器。 —— 00
很多次失敗的學習經歷告訴我,最終能不能學會一樣東西,跟聰不聰明沒太大關係,而是看這件事到底有多生死攸關,或者有多意義重大。
學程式設計,對大齡、非專業的我來說,更是如此。動機因人而異,不管黑貓白貓,能加滿油箱的就是好動機。
我找出了 5 個比喻,來說服自己為什麼要學程式設計:
- 數字化生存的工具
- 人機互動的語言
- 複雜系統的訓練營
- 創作的可供性源頭
- 心流的容器
1.數字化生存的工具

image
距離尼葛洛龐帝寫出「Being Digital」已經過去 22 年了。我們真的已經生活在數字化的世界中。
世界很複雜。
人們通過「降維」,抽取並控制最基本的單元要素,把事物抽象成數理形式、邏輯,再進一步抽象成 0 和 1,從而獲得了重構/再造世界的能力——這是強大的槓桿,使得效率暴漲、網路成型。
為什麼能夠做到?得益於我們抽象事物、提取共性、找到基本單元的能力。付出的是理解、靈活性和轉化成本。
數字化生存的三個階段
概念和形式的數字化。那些以虛擬概念、形式邏輯為核心的領域,比如金融,比如文字,比如音樂,早已經完成數字化。
實體的數字化。O2O、自動化生產、智慧家居、物聯網,它們不僅僅是網紅概念和風口,也是數字化卷積橫掃物理世界的洶湧程序。物理世界被慢慢馴服的同時,構建虛擬化世界的技術 VR/AR/MR 們也快速發展——畢竟人們渴求對世界的完全「控制」,即便這種控制只停留在視覺層面。
人的數字化。先是 ID 化,完成人與人的互聯。碳基質的人類遲早(已經)意識到肉身的侷限,就會開始去修改自己的出廠設定。基因技術,奈米計算,腦機介面……機器不會毀滅人類,因為人類會率先變成人機融合的可程式設計智慧體。
人能夠擺脫自然的桎梏,成為衣食無憂、沒有天敵的物種,靠建造工具去改造環境,以適應自身的需求。要在越來越數字化的世界中生存,掌握改造周邊環境的能力,或者說手握一本操縱現實和驅動生產的「指南」,確實很有必要。
何況,它還能讓你找到一份工作。因為越來越多的工作內容,都轉變成了建造和管理數字世界。
那麼應該何時完成進化?
比你所在的行業/領域早一步完成。如果它正處在數字化程序的早期,那就趕緊開始吧。
總之
學程式設計,是為了提高數字世界的生存效率。
2.人機互動的語言

image
人機互動是我過去多年的工作內容,希望未來也是。
在人工智慧的前夜,需要很多類似互動設計師、體驗設計師這樣的 AI 清道夫,幫助機器完成它們還比較笨拙的「溝通」工作。黑暗的前夜什麼結束,我們不知道,可以肯定的是,只會越來越快。
當演算法越來越智慧,人與機器的互動大概會沿著兩個方向發展:
- 在機器更擅長的領域,推動自動化 。很多原本需要人干預的、相對機械的事情,都會逐漸自行運轉——比如數字化生產、自動駕駛等等。
- 在人更擅長的領域,推動人機合作 。比如綜合智慧、文藝創作、理解和共情他人、面對面服務這些領域,機器如何幫助人完成工作,人和機器之間的「夥伴式」互動,是我更感興趣的人機互動領域。
「人機互動創作」,應該會成為一個有意思的領域,而且它會讓程式語言改頭換面——又或者是增加其他的方式,比如程式設計手勢,程式設計舞蹈,程式設計表情?
總之
學程式設計,是為了讓人和機器更好地溝通。
3.複雜系統的訓練營

image
如何構造複雜的系統? 運用程式設計的思想,並且在沙盒裡實踐。
再複雜的系統,都可以始於 「Hello world」。然後增加一條運算,增加一個迴圈,增加一個函式, 增加一個物件,增加一個 API,增加一個庫,增加一個邏輯層,增加一個編譯器,增加一個物理模組……處理好的部分就封裝起來,眼不見心不煩,可以專注搭建下一個模組。如果隨著現實需求的增加,發現造出來的「輪子」不好用,還可以拆了輪子重造。
羅馬不是一天建成的,Minecraft 也不是。並非每個人都能承受物理世界推翻重建的高昂成本,但是每個人都能開 Sandbox,調通程式以後再 Git Push。
你看吸金無數的線上遊戲,在虛擬世界的沙盒裡,硬生生地再造了無數個傳奇。
你看橫空出世的比特幣,在虛擬世界的沙盒裡,硬生生地再造了一個金融系統。
學程式設計,是為了訓練構造複雜系統的能力。
4.創作的可供性源頭

image
音樂家以音符為符號,用樂器演奏。畫家以畫筆為工具,在實體材料上作畫。
當我們把思想降維成文字,便擁有了生成新想法的可能;把建築降維成骨架和磚塊,我們擁有了建造形態萬千的建築的可能;把音樂降維為旋律、節奏、音色、和聲,我們擁有了創造新作品的可能。
當然,這都只是「可能」,想要創造出鮮活而有深度的新事物,只有一個途徑: 在實踐中改進,永不停息 。
我想強調的是,一旦把事物拆解到原子/位元層級,就可以完全重組——一生二,二生三,三生萬物,這釋放了多少可供性!
程式碼本身是語言, 是驅動系統為你創作的語言 。音符和樂器合一,紙和筆合一,建築場所和構件合一——這是多麼不可思議的創造環境,表達、構造、呈現的載體合一了!
總之
學程式設計,是為了能操控素材,創造屬於自己的時間晶體。
5.心流的容器

image
再怎麼數字化生存,再怎麼提高效率,也不能被輕易地被物化,這是人要守住的界限。人之為人,還是應該多以自身的福祉為出發點。
幸福是什麼?對我而言,幸福就是「忘我但趨於有序」的狀態,或者說,就是在創作中的心流狀態。
寫作是低成本的心流獲取方式,而且自帶生產屬性。同樣是用語言表達,程式設計也容易產生心流,而且改造現實的能力更強。寫文字和寫程式碼,都是心流體驗的容器。
但是在獲得心流之前,需要大量的練習。

image
via Flow (psychology) - Wikiwand
Csikszentmihalyi 這張心流的圖示,大家可能都很熟悉了。只有當技能水平和任務難度都高的時候,心流才容易產生。 程式設計就是一種需要專注、難度可控、反饋及時的活動。在心流中構建作品,還有什麼事情比這個更值得投入嗎 ?
總之
學程式設計,是為了擁有進行創作的心流容器。
最後
在門口徘徊掙扎了 4、5 年,總算是磕磕碰碰上路了。
00 的程式設計學習筆記和專案都會記錄在 ArtxCode 公眾號上面,歡迎圍觀和一起學習。
先學為敬。