當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 區(qū)塊鏈
[導(dǎo)讀] 在2019年,智能合約無疑是計(jì)算機(jī)編程中的新范式轉(zhuǎn)變。 本指南旨在成為創(chuàng)建在分散式區(qū)塊鏈中部署和運(yùn)行的計(jì)算機(jī)程序的入門途徑。 一段歷史…早在1950年代,在計(jì)算的早期,如果您想編寫一段

在2019年,智能合約無疑是計(jì)算機(jī)編程中的新范式轉(zhuǎn)變。 本指南旨在成為創(chuàng)建在分散式區(qū)塊鏈中部署和運(yùn)行的計(jì)算機(jī)程序的入門途徑。

一段歷史…早在1950年代,在計(jì)算的早期,如果您想編寫一段代碼來執(zhí)行一個(gè)簡單的求和運(yùn)算(考慮到Motorola 6502 8位CPU),您將最終 像這樣:18 A9 01 69 02 85 31 F6

上面的十六進(jìn)制數(shù)字表示CPU可以理解以執(zhí)行操作的機(jī)器語言。

CPU有一個(gè)“指令集”,這意味著每個(gè)數(shù)字都是一個(gè)導(dǎo)致處理器執(zhí)行操作的命令:加,減,除,乘,加載,存儲(chǔ),跳轉(zhuǎn)等。

程序員需要記住操作代碼,從而記住哪個(gè)數(shù)字相當(dāng)于哪個(gè)命令。效率不高。

很快,很明顯,需要一種更人性化的方法。 這是創(chuàng)建高級(jí)語言的運(yùn)動(dòng)的開始,高級(jí)語言看起來更像口頭語言。

因此,首先出現(xiàn)了被稱為助記符的東西:

CLC
LDA #$01
ADC #$02
STA $31F6

對(duì)于每個(gè)計(jì)算機(jī)操作代碼,現(xiàn)在都有一個(gè)相關(guān)的單詞或符號(hào)有助于理解。因此,CLC(清除進(jìn)位)等于18、LDA(負(fù)載累加器)為A9、ADC(加進(jìn)位)為69、STA(存儲(chǔ)累加器)為85。

這種編程方法被稱為匯編語言,它是簡化編程的第一步,使程序員擺脫了繁瑣的任務(wù),例如記住數(shù)字代碼。

上面的程序清除進(jìn)位,將值01加載到累加器中,將02加到累加器中,然后將結(jié)果數(shù)存儲(chǔ)在存儲(chǔ)器地址31F6中。 現(xiàn)在以一種更容易理解的方式供人類理解。

隨著時(shí)間的流逝,新的工具被創(chuàng)造出來以提高編程效率,因此開發(fā)環(huán)境發(fā)生了很大的變化。 高級(jí)語言一詞出現(xiàn)了。

這意味著編程語言的等級(jí)越高,它與人的口頭語言越相似。 同樣底層語言是更接近計(jì)算機(jī)指令集本身的語言。

與計(jì)算機(jī)語言的這種發(fā)展同時(shí),在此過程中發(fā)生了一些范式轉(zhuǎn)換。

首先將計(jì)算機(jī)程序直接注入到內(nèi)存地址中,然后需要告知計(jì)算機(jī)程序?qū)㈤_始執(zhí)行的位置。 這是原始的機(jī)器語言計(jì)算機(jī)代碼,就像本文開頭顯示的那樣。

隨著助記符的出現(xiàn),我們創(chuàng)建了所謂的匯編器-一款負(fù)責(zé)解碼人類可讀助記符,將其轉(zhuǎn)換為機(jī)器語言代碼,將其注入正確的內(nèi)存地址并告訴CPU啟動(dòng)的軟件。

盡管這對(duì)編寫和調(diào)試軟件有很大幫助,但它仍然適得其反。 我們需要一種更簡單的編程方法。

“ BASIC”語言

初學(xué)者的通用符號(hào)指令代碼(BASIC)是發(fā)明于1964年的第一款高級(jí),人性化的計(jì)算機(jī)語言,其目標(biāo)是易于使用。

常見的BASIC程序如下所示:

10 A = 1
20 B = 2
30 SUM = A + B
40 PRINT(SUM)
RUN

在BASIC語言中,由序號(hào)(10,20,30,…)標(biāo)識(shí)的每一行都存儲(chǔ)一個(gè)命令。 這些命令將依次運(yùn)行,一次運(yùn)行一次,然后下一次運(yùn)行。

當(dāng)用戶在計(jì)算機(jī)屏幕上鍵入命令RUN時(shí),程序?qū)?zhí)行。 在這里,我們有了第一個(gè)編程范例轉(zhuǎn)變。

有一種叫做解釋器的東西,它的功能是將代碼的每一行實(shí)時(shí)轉(zhuǎn)換為機(jī)器語言的等效代碼,然后執(zhí)行它。

另外,請注意,命令現(xiàn)在由一個(gè)英語單詞(例如print)表示。CPU寄存器(例如累加器)和存儲(chǔ)器地址被變量替換。 這樣編程變得容易得多!

BASIC盡管是一種功能非常強(qiáng)大的高級(jí)語言,但執(zhí)行起來太慢,因?yàn)榻忉屍餍枰獙⑺袃?nèi)容實(shí)時(shí)轉(zhuǎn)換為機(jī)器語言。

這需要解決。

編譯語言

再次發(fā)生了范式轉(zhuǎn)換,為我們帶來了當(dāng)今我們所知的編譯語言。

編譯意味著我們現(xiàn)在在執(zhí)行計(jì)算機(jī)代碼方面又邁出了一步。編譯器是一款軟件,可以將高級(jí)語言編寫的程序轉(zhuǎn)換為完全機(jī)器語言,但不能實(shí)時(shí)轉(zhuǎn)換(例如BASIC)。

相反,用戶必須等待該過程完成。最后,當(dāng)程序被轉(zhuǎn)換(編譯)并可以運(yùn)行時(shí),用戶要求啟動(dòng)可執(zhí)行文件。

區(qū)別在于它的運(yùn)行速度比舊的解釋程序要快得多-生產(chǎn)率更高且節(jié)省時(shí)間。另一個(gè)潛在的好處是可執(zhí)行文件無需源代碼即可共享,從而避免了版權(quán)問題。



這是一個(gè)新時(shí)代的曙光,許多編譯語言在生態(tài)系統(tǒng)中蓬勃發(fā)展。

一些示例:Ada,ALGOL,SMALL,Visual Basic,PureBasic,C,C ++,Objective-C,Swift,D,C#(to bytecode),Java(to bytecode),CLEO,COBOL,Cobra,Crystal,eC,Eiffel, Sather,Ubercode,Erlang(to bytecode),F(xiàn)#(to bytecode),F(xiàn)actor(更高版本),F(xiàn)orth,F(xiàn)ortran,Go,Haskell,Haxe(to bytecode或C ++),JOVIAL,Julia,LabVIEW,G,Lisp,Common Lisp ,Lush,Mercury,ML,Alice,OCaml,Nim(針對(duì)C,C ++或ObjecTIve-C),Open-URQ,Pascal,Object Pascal,Delphi,Modula-2,Modula-3,Oberon,PL / I,RPG ,Rust,Seed7,SPITBOL,Visual Foxpro,Visual Prolog,W,Zig以及許多其他許多…

軟件繼續(xù)發(fā)展。 并且,正如1960年代初期一些計(jì)算機(jī)科學(xué)家(即艾倫·凱和伊萬·薩瑟蘭德)所建議的那樣,實(shí)施了一種新的系統(tǒng)開發(fā)方法,以便計(jì)算機(jī)程序可以更好地代表我們的現(xiàn)實(shí)世界。

面向?qū)ο缶幊蹋∣OP)誕生了。另一個(gè)范式轉(zhuǎn)移。

現(xiàn)在,我們有了類和方法的概念:

class Math()
{
? ?method sum(op1, op2)
? ?{
? ? ? return op1+op2;
? ?}
? ?method subtract(op1, op2)
? ?{
? ? ? return op1-op2;
? ?}
? ?method mulTIply(op1, op2)
? ?{
? ? ? return op1 * op2;
? ?}
}
Main:?
Math myMath = new Math(); # InstanTIates an object of class Math.
Integer mySum = myMath.sum(1, 2); # Calls a method from Math class.
System.out.println(mySum); # Outputs the result.

盡管我們已經(jīng)看到了所有這些新的,豐富的,不同的軟件交付方法以及如何設(shè)計(jì)體系結(jié)構(gòu),但還是有一樣:在將代碼編譯成機(jī)器語言后,它取決于特定的CPU。

換句話說,在IBM PC上創(chuàng)建的軟件將無法在Apple計(jì)算機(jī)上運(yùn)行,因?yàn)槊總€(gè)人都有一個(gè)帶有不同指令集的不同處理器。

互操作性

另一個(gè)范式轉(zhuǎn)變?yōu)槲覀儙砹怂^的互操作語言,例如Java和.NET。

這背后的想法很簡單:創(chuàng)建一個(gè)中間(虛擬)指令集,并將程序的源代碼編譯為中間指令集。

然后,在每個(gè)計(jì)算機(jī)家族中,您將擁有一個(gè)特定的編譯器/解釋器,從這些中間指令到每個(gè)計(jì)算機(jī)品牌的特定指令集。一種“兩步編譯器”形式,可以共享一組通用指令。

這套中間指令集稱為字節(jié)碼。字節(jié)碼在JVM(Java虛擬機(jī))或CLR(公共語言運(yùn)行時(shí))上運(yùn)行。這樣就可以一次編寫一個(gè)程序,然后在任何地方運(yùn)行它(這是Sun Microsystems for Java創(chuàng)建的口號(hào))。

盡管在每個(gè)計(jì)算機(jī)都是孤立的世界中,計(jì)算機(jī)語言和軟件體系結(jié)構(gòu)的這種演變是有意義的,但我們很快就開始通過網(wǎng)絡(luò)連接設(shè)備。

網(wǎng)絡(luò)協(xié)議的誕生是為了允許機(jī)器之間通過電子通信通道進(jìn)行通信。

1989年,TIm Berners-Lee發(fā)明了萬維網(wǎng)。 現(xiàn)在該軟件需要通過網(wǎng)絡(luò)分發(fā),我們不知道連接了哪種類型的計(jì)算機(jī)。

創(chuàng)建了解決該問題的新標(biāo)準(zhǔn),并將客戶端-服務(wù)器體系結(jié)構(gòu)引入了編程語言。這種方法認(rèn)為計(jì)算機(jī)軟件現(xiàn)在將駐留在服務(wù)器上,該服務(wù)器將根據(jù)某些請求將信息傳遞給客戶端。

這種新的范式轉(zhuǎn)變完全改變了我們使用軟件和編程的方式。我們必須注冊在線托管服務(wù)才能發(fā)布我們的軟件。然后,將該軟件每天24小時(shí)上傳到服務(wù)器,以響應(yīng)用戶的請求。

上面的段落描述了Internet和客戶端服務(wù)器軟件的最新時(shí)代。它完全改變了我們所知道的世界,并由此改變了我們生產(chǎn),分發(fā)和使用計(jì)算機(jī)程序的方式。

盡管好處是毋庸置疑的,但它仍然是基于集中化的環(huán)境,容易受到攻擊,檢查和失敗的影響。 該軟件取決于服務(wù)器是否始終在線。

即使通過使用計(jì)算機(jī)網(wǎng)絡(luò)云解決了性能和可伸縮性問題,它仍然存在中間人的問題–中間人。

中介通常會(huì)給您帶來障礙,并給通用共享解決方案的用戶帶來麻煩。 這可以是高額費(fèi)用,執(zhí)照,地區(qū)規(guī)則,政府審查制度的形式; 總會(huì)以某種方式傷害消費(fèi)者。

為了一個(gè)自由的世界,越分散越好。盡管區(qū)塊鏈本身的成本和可擴(kuò)展性仍然遠(yuǎn)遠(yuǎn)低于其對(duì)應(yīng)的區(qū)塊鏈,但通常在出現(xiàn)破壞性技術(shù)時(shí),消費(fèi)者獲得解決方案的成本會(huì)急劇下降。

舉個(gè)例子,想想現(xiàn)在用比特幣給另一個(gè)國家的親戚匯款是多么便宜和容易。

新時(shí)代

我們正處于一個(gè)新時(shí)代的開始–分散式區(qū)塊鏈時(shí)代。 有人可能將其稱為Internet 3.0。

這是我們最近的模式轉(zhuǎn)變,隨著智能合約的出現(xiàn),為我們帶來了一種創(chuàng)建計(jì)算機(jī)軟件的新方式。

智能合約是在分散環(huán)境中運(yùn)行的程序。它們是破壞性技術(shù),因?yàn)樗鼈兿四承┈F(xiàn)實(shí)世界過程中對(duì)中間人(中間人)的需求,從而使其更便宜,更易訪問且更高效。

適用于被智能合約取代的常見應(yīng)用:保險(xiǎn),遺囑,定期付款時(shí)間表,醫(yī)療保健計(jì)劃,自動(dòng)駕駛汽車經(jīng)濟(jì),游戲,財(cái)產(chǎn)交換,資產(chǎn)代幣化,抵押,投票等。

發(fā)布智能合約時(shí),其副本將駐留在世界各地的每個(gè)區(qū)塊鏈服務(wù)器上。而且正如程序員在引入面向?qū)ο蟮捏w系結(jié)構(gòu)時(shí)曾經(jīng)不得不改變他們創(chuàng)建軟件的方式一樣,我們現(xiàn)在必須再次適應(yīng)這種新方法。

您將無法在智能合約中進(jìn)行股票期權(quán)Black-Scholes公平價(jià)格計(jì)算,這不是要進(jìn)行的事情。

結(jié)論

本文是該系列文章的第一部分,旨在通過一個(gè)完全在線的環(huán)境IDE,使用基于Python的語言來講解智能合約編程的基礎(chǔ)知識(shí),該IDE允許在區(qū)塊鏈中編輯,測試,調(diào)試和運(yùn)行智能合約。

在本系列的第二部分中,我們將針對(duì)那些已經(jīng)具有計(jì)算機(jī)編程經(jīng)驗(yàn)但有逐步的簡單示例的用戶,開始一種務(wù)實(shí)的方法。

最后,您將能夠有能力對(duì)智能合約進(jìn)行編碼。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉