開啟神秘程式設計世界的大門

2021-06-08 22:02:04 字數 2067 閱讀 4021

從 2000 年畢業,我做這行已經超過十二年了。最初接觸電腦程式,還是 dos 下的 qbasic ,那已經離現在有接近二十年了。最初,我只是會照貓畫虎,按照老師的程式抄個素數數列,或者列印個三角形什麼的。初步理解程式的結構和意義,要等到讀大學以後了。那個時候在老師的鼓勵下,自己買書學習 delphi ,才開始慢慢了解一些程式語言的知識。能夠自己設計和開發出有點用途的程式,則要等到工作以後,在實戰中一邊做一邊學。

回頭看看,這條路竟然是意外的漫長。用了至少有七八年,而其中有好幾年,完全就是在很低階的知識層面上獨**索。

當然,對於很多天資聰明,又肯用功的同行,這個過程要短的多。就我身邊朋友的經歷,有不少人是僅僅靠大學四年的學習,就完成了從零基礎到出類拔萃的過程。

大概因為我特別的愚鈍,加上後來做過半年的培訓講師。感覺對那個徘徊的過程記憶特別深刻。有時候就想,能不能為我這樣完全沒有基礎的人,設計一些非常非常容易上手的基礎教程呢?

所以後來我嘗試寫過《emacs 零基礎教程》、《python 零基礎教程》等文章,在企業內部和網際網路上跟同行分享。但是總的來說,並不成功,其中之一的問題是,對於乙個完全沒有基礎的學習者,有太多在老手看來已經天經地義的知識,需要學習和熟悉。要在乙份教程裡解釋各種基礎知識,其實是乙個非常龐大艱鉅的任務。回頭看過來,我自己都有點不可思議,這些問題,當初我也曾經遇到過?我如何弄懂它們的?用了多長時間?

舉個例子,在 python 中文社群,我見到過的新手問題:

- 為什麼用 word 儲存的**不能執行?

- 不明白文字的編碼和字串的編碼是什麼意思,有什麼關係?

- 如何在直譯器中執行**檔案(或系統命令)?

- 為什麼**檔案拿到別人的機器上不能執行?

蔡學鏞老師的《程式設計ing》就是這樣一本書,它耐心的解答了以上的這些基礎問題,以及,傳授了那些真正的程式設計需要的知識。如:

- 什麼是程式語言?

- 什麼是變數?

- 變數的型別是什麼?

- 基礎的程式邏輯——順序、選擇、迴圈等

- 語境(即 context,常見的譯法是「上下文」,但是我認為「語境」這個譯法要好的多)

- 函式

- 模組

書裡用了一種很不常見的程式語言,rebol——這大概會嚇跑不少讀者。《程式設計師》的老讀者應該有印象,蔡學鏞老師幾年前就開始發表一系列的文章,介紹這門語言。今天這本書,可以說是蔡老師的厚積薄發之作。在書中,使用這樣一門「小」語言作為教學工,進一步降低了學習門檻。

比起最初我用來列印三角形的那個還需要寫行號的 basic ,rebol 倒也不失是乙個實用的小工具,例如書中 43 頁,就有乙個用十幾行 rebol **寫成的十六進製制閱讀器。可不是每一本入門書,都能在前50頁教到這個程度。

說到這個,這本書有個很了不起的地方。它每一頁,都有一半以上的內容是**——好吧,這大概又要嚇跑不少追求「文字量」的朋友。每乙個知識點,都彩色的圖例非常認真清楚的解發布來。相信常做幻燈的朋友都知道,好的圖示,工作量比同樣篇幅的文字更大。

正是依靠這樣不厭其煩的詳細解說,我相信這本書真的可以在三百多頁的篇幅內,教會讀者程式設計的基礎知識,讓讀者可以用 rebol 寫出簡單可用的東西,並且也具備進一步學習其它語言的能力。這可是三百多個詳細的**,等於是有一位老師手把手的教學生讀書寫字。我這十幾年的學習和工作生涯中,讀過不少專業教材,有些寫的深入淺出,有些寫的豐富翔實。但是能有耐心把所有初學入門的知識一點一點掰碎了教給讀者的,確實僅此一家,別無分號。

在這份耐心面前,這本書可能給讀這的顧慮,例如 rebol 語言是不是太冷門,學了以後沒有機會用什麼的,真的不重要了。我們這代人,還有幾個用當年的小海龜(logo)工作?還有多少人在用那個需要寫行號的 basic ?我們都成為了所謂的「業內人士」,但是不應該忘記當初起步的過程。感謝有作者還記得當初的不容易,並且致力於幫今天的學習者,找到那種簡單而有樂趣的學習過程。

零基礎的程式設計學習者、想要教這樣的學習者寫程式的朋友,想要了解一下蔡老師多次推薦的 rebol 語言到底有多神奇的朋友,值得閱讀一下這本書,這是一本另類的,有趣的程式設計教材。它解答了我的乙個疑問:

我們到底是怎麼學會寫程式的?那個過程,有沒有可能簡單一點?簡單到即使不是理工、宅男,僅僅是想學習一下「寫程式」,體驗一下這個樂趣,解決一些問題的人,也能學會?

這本書給了我們肯定的答案。

開啟C世界的大門(二)

資料的屬性及組合 前面說到了c世界中的最小單元是資料,而資料又有各種不同的屬性。這節,又又將針對資料的屬性進行詳細的介紹。01 資料的屬性 還引用現實中的例子,人有不同的語言,而不同的語言又有不同的使用範圍,正如大家所知道的,英語的範圍最為廣泛,一些方言使用的範圍很小。c世界中也一樣,資料的屬性也可...

Docker 的神秘世界

上圖就是 docker 的首頁,看了這簡短的解釋,相信你還是不知道它是何方神聖。為了更好的理解 docker 是什麼,先來講個故事 我需要蓋乙個房子,於是我搬石頭 砍木頭 畫圖紙 蓋房子。一頓操作,終於把這個房子蓋好了。結果,住了一段時間,心血來潮想搬到海邊去。這時候按以往的辦法,我只能去海邊,再次...

環簽名 開啟匿名的大門

布萌 一般我們對於支付匿名性的需要滿足以下兩個要求 1 交易不可追蹤 對於任何交易,無法追蹤其付款方是誰 2 交易不可關聯 對於向外傳送的兩筆交易,其他人無法證明其是否發給同乙個收款人 在位元幣的設計中,賬本資訊是完全公開的。由於交易間輸入輸出的關聯關係,以及輸出位址的確定性,可以通過圖形分析等方法...