要感謝去年混跡在steemit的日子,當(dāng)時(shí)的我只是一個(gè)干了多年市場(chǎng)類工作,單純想從區(qū)塊鏈中撈一桶金的人,即便在上一家公司時(shí),身邊全都是程序員,我也從未敢想過(guò)有一天我會(huì)走上編程這條路。從未想到我會(huì)對(duì)程序有超越其他所有事情的興趣,也沒(méi)想到什么東西能重燃我學(xué)習(xí)的熱情,但今天看來(lái),這些從未敢想的卻都成為了現(xiàn)實(shí)。
大概是去年七月份,大量的新人涌入steemit,我是其中一員,每天樂(lè)此不疲的寫文章看文章,經(jīng)常會(huì)看到@myfirst的文章,而他也勤快的給每一個(gè)新人的帖子點(diǎn)贊,所以對(duì)他很有好感。他會(huì)在文章中說(shuō)起炒外匯的事,后來(lái)又說(shuō)起自己開發(fā)交易程序的經(jīng)歷。作為每天盯盤的苦逼韭菜,我想如果我也能開發(fā)一個(gè)交易程序,豈不是再也不用盯盤到半夜?這么好的事真是應(yīng)該說(shuō)干就干,只是這程序在印象中是非常高深的事情,到底該從何處開始呢?查了些資料,又嘗試讀了幾本python和c語(yǔ)言的初級(jí)教程,發(fā)現(xiàn)很簡(jiǎn)單,而今天回頭看,那時(shí)是無(wú)知者無(wú)畏,如果拿起書本的第一天就有人告訴我后面這一年要經(jīng)歷什么,我一定立即就放棄了,這可能就是那些21天從入門到精通類書籍唯一的作用,給了人們自信。
這情況持續(xù)了一段時(shí)間,甚至在開發(fā)mt5交易程序的過(guò)程中都很順利,一度讓我以為自己就是天才,九月,我開發(fā)出了自己的mt5指標(biāo),十月拿出了基本的交易程序,至少那個(gè)指標(biāo)還是挺完美的,因?yàn)槲覍?shí)現(xiàn)了纏論的多級(jí)別、線段、中樞、甚至背馳。雖然開發(fā)程序與盈利是兩個(gè)世界的事,不過(guò)要感謝這段順風(fēng)順?biāo)慕?jīng)歷,如果那時(shí)就被挫敗,也就沒(méi)有后來(lái)了。
由于沒(méi)有系統(tǒng)的學(xué)習(xí),我在編程上的知識(shí)儲(chǔ)備都是割裂和片面的,所以當(dāng)我想從mt5這單一的平臺(tái)跳出,去開發(fā)一個(gè)python的用于炒幣的交易程序時(shí),我發(fā)現(xiàn)自己什么都不是。
事情總有幾個(gè)重要的節(jié)點(diǎn),如果第一個(gè)重要節(jié)點(diǎn)是初次嘗試,第二個(gè)節(jié)點(diǎn)便是偶然的一次失眠,半睡半醒間在虛無(wú)的黑色幕布上,畫出了一個(gè)加法器,當(dāng)時(shí)我叫它加法器,其實(shí)只是半加器。什么原理呢?
二進(jìn)制的計(jì)數(shù)方式是:00 01 10 11
如果讓兩個(gè)bit相加,應(yīng)該如下
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0
當(dāng)時(shí)我模糊的聽說(shuō)過(guò),加法是電流通過(guò)與門、或門、非門特定組合得到的結(jié)果,與門代表著語(yǔ)言中的并且,或門代表語(yǔ)言中的或者,非門就是否,但這個(gè)神奇的過(guò)程到底是怎樣的?
由于是加法器,輸入假設(shè)是兩根電線(a ,b),輸出是一根電線(c)表示結(jié)果。
只要我創(chuàng)造的加法器實(shí)現(xiàn)上面列出的那個(gè)加法規(guī)則,無(wú)論我如何完成,那都是加法器。
我發(fā)現(xiàn)當(dāng)希望得到1這個(gè)結(jié)果時(shí),輸入的a,b必須滿足兩個(gè)條件的篩選
1.a或b有一個(gè)是1,篩選掉a=0,b=0
2.a與b的結(jié)果是0 篩選掉a=1,b=1
所以我需要三個(gè)門,或門,與門,非門。非門要用在第二個(gè)條件上,使得結(jié)果0變?yōu)?。最終兩個(gè)條件都輸出1,這時(shí)再讓它們通過(guò)一個(gè)與門,便得到了我要的結(jié)果。
雖然很簡(jiǎn)單,但對(duì)于當(dāng)時(shí)的我卻是巨大收獲,這一是一否的邏輯,經(jīng)過(guò)特定的變換,便能夠衍生出數(shù)理,計(jì)算機(jī)將這兩個(gè)領(lǐng)域聯(lián)系在一起后,改變了世界,而我在明白這個(gè)道理后,再看程序有了另一個(gè)視角。
這樣我獨(dú)自半夜竟然畫出了計(jì)算機(jī)最基本的原器件-半加器,這也確定了我今后的學(xué)習(xí)路線,無(wú)論什么理論,只用自己的方式重新推導(dǎo),如果推導(dǎo)不出就再回到基礎(chǔ)的學(xué)習(xí),而后發(fā)現(xiàn),計(jì)算機(jī)領(lǐng)域的知識(shí)雖然龐雜,但核心的理論都是簡(jiǎn)單而淺顯,只不過(guò)在不斷的高層抽象下,創(chuàng)造了天量的名詞,使后來(lái)者輕易迷失,忘了最初的那些簡(jiǎn)單的理論基石。
最后送給看了這篇文章的朋友一個(gè)思考題,上面的圖是SICP一書中的半加器,通過(guò)我的描述,我們知道S是最終的結(jié)果,c是進(jìn)位。這里用到四個(gè)門電路,我當(dāng)時(shí)還設(shè)計(jì)了另一種加法器,用到了兩個(gè)與門,兩個(gè)非門,一個(gè)或門,也能夠得到希望的結(jié)果,如果喜歡思考,可以嘗試設(shè)計(jì)設(shè)計(jì)這個(gè)電路圖。