自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

以編程方式看待世界:12項(xiàng)值得了解的技術(shù)成果

譯文
開發(fā) 前端 開發(fā)工具
往數(shù)據(jù)庫(kù)里填充字節(jié)確實(shí)很無聊——我們?yōu)槭裁磳?duì)身邊的一切進(jìn)行編程?

每家初創(chuàng)企業(yè)都在談?wù)撊绾胃淖兪澜纾渲写蟛糠指静粫?huì)討論世界本身或者說存在于其中的物理事物。很多企業(yè)只是單純打算交換數(shù)據(jù)庫(kù)中的數(shù)據(jù)包與位置——雖然這一切也很重要,但字節(jié)本身并沒有意義。畢竟這個(gè)世界是由原子組成。

[[163022]]

字節(jié)與原子之間的障礙正在逐漸消失,歸功于物聯(lián)網(wǎng)的迅猛發(fā)展,如今程序員已經(jīng)不再被局限于虛擬世界當(dāng)中。如今,我們能夠超越向磁盤寫入1與0的傳統(tǒng)作法:我們可以切實(shí)通過編寫代碼告訴設(shè)備如何掠奪、剪切、扭曲或者變更原子形態(tài)。現(xiàn)在,我們的軟件能夠開啟燈光、變更室內(nèi)外觀、駕駛汽車以及移動(dòng)墻壁等等。

時(shí)至今日,大量新的市場(chǎng)空間與機(jī)遇允許開發(fā)人員立足于真實(shí)世界。快速發(fā)展的相關(guān)領(lǐng)域包括自動(dòng)駕駛汽車、智能家居、智能辦公環(huán)境等等,而大規(guī)模定制化方案要求程序員們熟悉如何對(duì)數(shù)據(jù)結(jié)構(gòu)做出調(diào)整,從而在對(duì)象之內(nèi)實(shí)現(xiàn)變化。如果“面向?qū)ο缶幊?rdquo;真能名符其實(shí),那么開發(fā)人員的黃金時(shí)代可以算是真正來臨了。

這些任務(wù)需要由新型語(yǔ)言——或者尚未正式誕生的新型語(yǔ)言——以及能夠與陳舊語(yǔ)言相對(duì)接的新型協(xié)議來實(shí)現(xiàn)。改變世界意味著學(xué)習(xí)這些語(yǔ)言與協(xié)議的工作方式以及部署需求。如果大家希望真正改變世界,那么今天的這份語(yǔ)言與協(xié)議清單將成為各位必須掌握的先決性專業(yè)知識(shí)。而一旦大家開始直接改變世界,那么將永遠(yuǎn)無法重新滿足于鼓搗什么數(shù)據(jù)庫(kù)。

Basic

作為經(jīng)典編程語(yǔ)言之一,Basic以部分簡(jiǎn)單硬件控制器為基礎(chǔ)直接推動(dòng)了早期微型計(jì)算機(jī)革命。那些制作出ESP8266控制器主板的技術(shù)人員使用的正是Basic語(yǔ)言,因?yàn)檎缢麄兯?,這是“一款簡(jiǎn)單但卻非常強(qiáng)大的語(yǔ)言,允許大家在無需計(jì)算機(jī)科學(xué)學(xué)位的前提下實(shí)現(xiàn)令人驚嘆的成果。”

其中包含所有經(jīng)典結(jié)構(gòu),包括一些古董級(jí)成果:goto。不過其中也包含一部分用于提取網(wǎng)絡(luò)頁(yè)面或者發(fā)送電子郵件的新命令。但必須承認(rèn),在使用Basic時(shí)我們的大部分時(shí)間都將被用于調(diào)整接口以收集需要被發(fā)送至互聯(lián)網(wǎng)的數(shù)據(jù)。

要獲取更多相關(guān)信息,大家可以參閱ESP8266社區(qū)或者該語(yǔ)言的專門網(wǎng)站。

X10

X10是首款允許程序員擺脫虛擬世界并觸及真實(shí)世界的工具。X10從來不是一種復(fù)雜或者難于理解的協(xié)議,這可能是因?yàn)槠湔Q生時(shí)間為1975年——比沃茲尼亞茨與喬布斯推出Apple I還早一年。盡管已經(jīng)相當(dāng)老邁,但X10仍然具備極高人氣,因?yàn)槟壳斑€有著大量低成本設(shè)備對(duì)其提供支持。

該協(xié)議只提供一部分主要消息收發(fā)功能。大家可以向開關(guān)發(fā)送幾個(gè)字節(jié),并借此實(shí)現(xiàn)開關(guān)開、閉以及亮度調(diào)節(jié)。就這么多。除此之外,大家可以利用其它一些選項(xiàng)輪詢遠(yuǎn)程開關(guān)并嵌入更多數(shù)據(jù),但其大部分功能似乎仍是打開與關(guān)閉之類的簡(jiǎn)單操作。這些數(shù)據(jù)包可上行至家庭環(huán)境下的120伏供電線路,且必須通過由X10制造的FireCracker等獨(dú)立設(shè)備來生成。

包括Flipit與Bottle Rocket在內(nèi)的多種軟件項(xiàng)目致力于簡(jiǎn)化與FireCracker的協(xié)作流程。當(dāng)然,大家也可以直接選擇最為原始的解決方案——X10,該公司自1978年就一直在推出家庭功能控件。

Insteon

2005年,Insteon公司發(fā)布了一項(xiàng)協(xié)議以提供體積更大的消息收發(fā)與更好的傳輸能力,并希望借此取代X10協(xié)議。眾多報(bào)道指出,X10信號(hào)往往會(huì)在大型家居環(huán)境或者線路復(fù)雜的場(chǎng)景下發(fā)生丟失。也有不少人抱怨稱,其信號(hào)會(huì)受到噪音的影響。因此,Insteon添加了一項(xiàng)機(jī)制以確保每個(gè)節(jié)點(diǎn)或者開關(guān)同時(shí)作為中繼器運(yùn)作,從而使得信號(hào)能夠傳遞得更遠(yuǎn)并順利抵達(dá)電路體系中最為幽深的角落。這是一種值得稱道的睿智設(shè)計(jì),也確實(shí)帶來了理想的信號(hào)廣播效果。

除此之外,該協(xié)議也更加豐富、復(fù)雜且具備冗余特性。相較于僅由兩比特構(gòu)成的簡(jiǎn)單命令,Insteon數(shù)據(jù)包能夠承載“高達(dá)”十個(gè)字節(jié)的信息以構(gòu)成兩條完整命令。其主要命令仍然致力于實(shí)現(xiàn)開關(guān)的開啟與關(guān)閉,但其同時(shí)也提供其它選項(xiàng),旨在輪詢傳感器或者創(chuàng)建智能恒溫機(jī)制。

Insteon公司的協(xié)議被廣泛應(yīng)用于各類智能hub以及家庭自動(dòng)化工具當(dāng)中,包括Amazon的Echo以及羅技的Harmony產(chǎn)品。以Linux Home Automation項(xiàng)目與OpenRemote為代表的多款開源工具也將通過發(fā)送數(shù)據(jù)包的方式集成這款供電線路控制器。

Zigbee、Z-Wave以及更多

X10與Insteon所觸及的還僅僅是表面。另有多種解決方案能夠?qū)⑿盘?hào)發(fā)送至設(shè)備——一部分通過供電線路,也有一部分以無線形式傳輸。Zigbee與Z-Wave都屬于設(shè)備間的低功耗無線通信標(biāo)準(zhǔn),尤其適用于需要在企業(yè)或者家庭環(huán)境中相互通信的低功耗嵌入式傳感器及處理器。

舉例來說,Zigbee最近剛剛發(fā)布公告,宣稱開始在超市中實(shí)驗(yàn)溫度傳感器以實(shí)現(xiàn)農(nóng)產(chǎn)品監(jiān)測(cè),從而確保部分水果與蔬菜處于最佳保存環(huán)境。Z-Wave則在其官方網(wǎng)站中介紹了一款能夠通過無線按鈕幫助年老或者體弱用戶遭遇困境時(shí)進(jìn)行呼救的“家庭尊嚴(yán)”設(shè)備。目前這類應(yīng)用方案已有數(shù)百種,其每次執(zhí)行只需發(fā)送數(shù)比特?cái)?shù)據(jù)即可完成任務(wù)。

Zigbee與Z-Wave并非惟一的執(zhí)行標(biāo)準(zhǔn)。這份日漸龐大的名單中還包括Panstamp、AMX、KNX、Lutron以及更多。其中一部分屬于利基型方案:以AMX為例,其專注于音響設(shè)備以強(qiáng)化會(huì)議室效果。Panstamp則面向遍布于世界每個(gè)角落的小型無線控制器。它們都擁有自己的格式,但卻可以通過編程方式實(shí)現(xiàn)交互。標(biāo)準(zhǔn)間的競(jìng)爭(zhēng)可能令程序員們感到困惑,不過這畢竟要比不存在標(biāo)準(zhǔn)好得多。

XBMC、Freebox以及更多

如果說有人能夠坐在沙發(fā)上邊看著白癡電視節(jié)目邊改變世界確實(shí)有些夸張,但可以肯定的是,數(shù)字化圖像、視頻以及音頻確實(shí)打破了傳統(tǒng)娛樂方式的束縛。以XBMC、Freebox以及VLC為代表的各類協(xié)議與框架原本被設(shè)計(jì)將填鴨式視頻提供給躲在沙發(fā)中的無聊人士,但其如今也能夠?yàn)檎麠澐课菽酥两ㄖ镒龀鲐暙I(xiàn)。

這些視聽設(shè)備從表面上看似乎與改變世界沒有任何關(guān)系,因?yàn)樗鼈冊(cè)诤艽蟪潭壬现皇窃谔幚頂?shù)字化內(nèi)容文件——不過必須強(qiáng)調(diào)的是,隨著平板顯示器的普及程度越來越高,它們的作用也在逐步凸顯。舉例來說,時(shí)代廣場(chǎng)周邊的建筑物就能夠根據(jù)屏幕上的顯示內(nèi)容不斷變更外觀。更多屏幕意味著數(shù)字化內(nèi)容絕僅僅是大家手機(jī)上的顯示素材,這同時(shí)也是一種轉(zhuǎn)變建筑物或者室內(nèi)效果的有效途徑。

PostScript

很多人并不理解在PDF文件內(nèi)存儲(chǔ)數(shù)據(jù)或者將文本頁(yè)面內(nèi)容發(fā)送至打印機(jī)時(shí)所使用的數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性水平。事實(shí)上,PostScript文件中的數(shù)據(jù)并非簡(jiǎn)單的數(shù)字排列,而是一整套由字母、線條、數(shù)字以及圖形構(gòu)建而成的頁(yè)面勾勒體系。該語(yǔ)言能夠沿直線或者貝塞爾曲線移動(dòng)筆劃,而后對(duì)生成的圖形進(jìn)行填充。各種字體也不單純屬于位圖,而是復(fù)雜曲線的集合,從而輕松以亞像素精度進(jìn)行縮放或者位移。

該語(yǔ)言本身屬于上世紀(jì)七十年代的神器,其基于堆棧的語(yǔ)法能夠顯著降低括號(hào)的使用頻率。任何曾經(jīng)使用過惠普計(jì)算器的朋友都會(huì)在PostScript中找到熟悉的感覺。該語(yǔ)言由圖靈設(shè)計(jì)完成,而人們則通過編寫PostScript代碼進(jìn)行復(fù)雜的分形計(jì)算及其它古怪的任務(wù)——哦,當(dāng)然還有開發(fā)病毒。

時(shí)至今日,該語(yǔ)言的人氣往往略遜于SVG,這是因?yàn)榇朔NXML變體能夠在Web之上得到廣泛支持。不過二者的底層結(jié)構(gòu)非常相似,而且代碼轉(zhuǎn)換也非常簡(jiǎn)單。這兩款語(yǔ)言都能夠通過PSToEdit等多種軟件包被轉(zhuǎn)換為其它代碼格式,從而驅(qū)動(dòng)激光切割機(jī)以及銑床設(shè)備。

OBD-II

多年以來,汽車只不過是由油箱、活塞、齒輪組外加后輪曲軸共同構(gòu)成的簡(jiǎn)單機(jī)械。然而如今的汽車已經(jīng)成為大量計(jì)算機(jī)制構(gòu)建而成的復(fù)雜網(wǎng)絡(luò),只不過恰好還是配備四條輪胎。ODB-II標(biāo)準(zhǔn)是人類與汽車進(jìn)行互動(dòng),并借此了解當(dāng)前車輛運(yùn)轉(zhuǎn)狀況的重要接口。

大部分游走于計(jì)算機(jī)與汽車之間的代碼都屬于純粹的信息。舉例來說,我們可以向傳動(dòng)輪端口發(fā)送部分字節(jié),從而由其返回當(dāng)前時(shí)速信息。類似的代碼還可以實(shí)現(xiàn)RPM、引擎效率乃至數(shù)十種其它指標(biāo)的查詢。像Torque這樣的多數(shù)基礎(chǔ)應(yīng)用都需要通過OBD-II端口對(duì)車輛進(jìn)行追蹤。

這類應(yīng)用在業(yè)余賽車手以及汽車愛好者群體中極具人氣,但它們也完全能夠服務(wù)于普通民眾。ArduinoOBD庫(kù)就是一種很好的選項(xiàng),可以幫助大家將自己的計(jì)算機(jī)與車輛相對(duì)接。

G

計(jì)算機(jī)數(shù)字控制,簡(jiǎn)稱CNC,最初于上世紀(jì)五十年代出現(xiàn)在銑機(jī)設(shè)備之上,而工程師們隨后很快開發(fā)出G語(yǔ)言——專門用于操控切割工具的移動(dòng)方式。整個(gè)流程在初次接觸時(shí)可能有點(diǎn)反直覺的意味,因?yàn)閺拇a控制角度出發(fā),其實(shí)現(xiàn)的是從當(dāng)前材料上切掉某些部分而非添加某些部分。不過一旦我們習(xí)慣了立足于最終結(jié)果逆向?qū)徱曉O(shè)計(jì)思路,大家就可以想象出如何移動(dòng)切割刀并去除不需要的部分。

大部分編碼工作涉及選定坐標(biāo)系,同時(shí)安排切割刀移動(dòng)到特定位置。這些設(shè)備往往能夠“插補(bǔ)”并計(jì)算直線或者圓的中位點(diǎn),從而簡(jiǎn)化簡(jiǎn)單形狀的創(chuàng)建方式。不過對(duì)于復(fù)雜的形狀,我們?nèi)匀恍枰扇∫恍┨囟ㄒ?guī)劃。

隨著多年以來各家制造商向其中添加強(qiáng)化元素,G語(yǔ)言的性質(zhì)也出現(xiàn)了顯著變化。很多目前被廣泛使用的現(xiàn)代化宏以及面向?qū)ο髮佣紩?huì)經(jīng)過編譯為原始G代碼并發(fā)送至設(shè)備當(dāng)中。

目前,G語(yǔ)言的一類變體將用于驅(qū)動(dòng)多種3D打印機(jī)。雖然變體與本體所使用的具體代碼有所區(qū)別,但其核心語(yǔ)言卻從未發(fā)生改變。

STL

這種用于描述3D對(duì)象的標(biāo)準(zhǔn)格式已經(jīng)成為3D打印領(lǐng)域的通用語(yǔ)言。在線商店通過交付STL文件出售虛擬對(duì)象,大家可以對(duì)其進(jìn)行編輯或者直接發(fā)送至3D打印機(jī)。

這種語(yǔ)言本身可以說相當(dāng)基礎(chǔ)。文件的大部分內(nèi)容為用于覆蓋物體表面的刻面三角形角部三維坐標(biāo)。雖然該格式似乎能夠支持更為復(fù)雜的多邊形,但文件本身傾向于使用傳統(tǒng)三角形。另外,盡管與構(gòu)建3D對(duì)象的基本要求有所沖突,但這種文件格式本身并不強(qiáng)制要求三角形完全覆蓋對(duì)象或者定義所述表面的每個(gè)部分。

STL文件能夠容納點(diǎn)或者二進(jìn)制版本的ASCII表達(dá)內(nèi)容,不過大多數(shù)文件都選擇使用二進(jìn)制版本——因?yàn)槠涓鼮榫o湊。

Slicer

STL文件并不能容納充足的信息以驅(qū)動(dòng)3D打印機(jī),因此其中包含的三角形需要被轉(zhuǎn)換成一份指令列表,從而移動(dòng)3D打印機(jī)噴頭并控制擠壓機(jī)開關(guān)。打印機(jī)本身通常使用GCode,也就是Slicer,其在本質(zhì)上相當(dāng)于將GCode交付至CNC銑機(jī)設(shè)備。二者之間最大的不同在于Slicer代碼屬于添加型描述,即以從無到有的方式進(jìn)行對(duì)象構(gòu)建——相比之下,數(shù)控機(jī)床為消減型描述,將多余部分去除以雕刻對(duì)象輪廓。二者用于驅(qū)動(dòng)打印噴頭位置的指令大多相同,但Slicer新增了用于控制素材擠壓的指令。

目前市面上存在著相當(dāng)數(shù)量的Slicer程序,一部分為開源、一部分屬于專有性質(zhì)。其中一些擁有復(fù)雜的IDE,用于在打印之前對(duì)對(duì)象進(jìn)行編輯。舉例來說,KISSlicer就提供一套免費(fèi)版本,其能夠與單頭打印機(jī)對(duì)接; 而其Pro版本則支持更為復(fù)雜的多頭打印機(jī)。

Python

Python語(yǔ)言在生物實(shí)驗(yàn)室、社交科學(xué)中始終牢牢占據(jù)人氣榜首,甚至在Raspberry Pi社區(qū)中被稱為“官方語(yǔ)言”。后面這種說法有點(diǎn)夸張,因?yàn)镽aspberry Pi單片機(jī)通常直接引導(dǎo)Linux,而大多數(shù)Linux代碼庫(kù)也都能夠運(yùn)行在該單片之上,不過需要直接面向ARM(v6或者7)架構(gòu)進(jìn)行編譯。

不過,Python仍然擁有諸多既有優(yōu)勢(shì)。它作為一種高級(jí)語(yǔ)言擁有簡(jiǎn)潔的語(yǔ)法與相當(dāng)寬松的數(shù)據(jù)傳遞規(guī)則。程序員們并不需要深陷抽象的泥潭,例如面對(duì)復(fù)雜的指針規(guī)則。相反,他們只需要編寫一套指令集以處理數(shù)字,并利用這些值以指示Raspberry Pi進(jìn)行哪些操作。

Raspberry Pi社區(qū)提供豐富的說明文檔以幫助大家從零開始學(xué)習(xí)Python。

Processing

機(jī)器人與真實(shí)世界當(dāng)中充滿了使用Arduino語(yǔ)言——屬于C與C++子集——的單片機(jī)。不過很多程序員希望事件能夠更為簡(jiǎn)單,這也是該語(yǔ)言Processing這一名稱的由來。這是一套經(jīng)過簡(jiǎn)化的Java子集,保留了相當(dāng)一部分較為粗放的類細(xì)節(jié)規(guī)則,同時(shí)添加了部分標(biāo)準(zhǔn)方法以幫助獲取結(jié)果及切換開關(guān)。Java程序員們可能會(huì)對(duì)Processing在陳舊AWT Applet以及Frame上的表現(xiàn)非常滿意,不過大多數(shù)人只是單純希望編寫幾個(gè)循環(huán)并變更代碼。

Processing代碼通常運(yùn)行在主機(jī)計(jì)算機(jī)之上,并由其向Arduino發(fā)送指令——Arduino則運(yùn)行Firmata等本地解釋器。開發(fā)工作立足于主機(jī)設(shè)備,不過具體任務(wù)則在Arduino之上完成。

Processing亦在移動(dòng)應(yīng)用開發(fā)場(chǎng)景中發(fā)揮著巨大作用,并憑借著利用JavaScript編寫而成的Processing衍生版本而在Web應(yīng)用開發(fā)領(lǐng)域站穩(wěn)了腳跟??ǘ鲗W(xué)院目前正使用其進(jìn)行計(jì)算機(jī)編程授課。

原文標(biāo)題:Program the world: 12 technologies you need to know

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:王雪燕 來源: 51CTO
相關(guān)推薦

2016-02-23 14:41:37

移動(dòng)周刊

2018-02-27 08:51:09

技術(shù)Web應(yīng)用程序

2018-10-09 14:34:58

開源KubernetesGit

2014-08-19 14:12:47

Windows

2019-12-09 16:18:08

程序員數(shù)據(jù)庫(kù)技術(shù)

2013-05-27 10:46:05

移動(dòng)互聯(lián)網(wǎng)自動(dòng)化物聯(lián)網(wǎng)

2019-07-17 13:31:34

VLAN集中管理協(xié)議VCMP

2021-01-04 09:00:00

JavaScript開發(fā)Web

2017-12-19 08:50:56

UIJavaAWS Lambda

2016-01-12 09:49:35

AndroidiOSWindows Pho

2014-10-13 11:30:14

2019-12-12 10:46:15

Kubernetes容器系統(tǒng)

2011-10-09 12:36:43

甲骨文OOW

2016-09-28 16:04:16

Linux服務(wù)器發(fā)行版

2021-06-07 07:01:43

js關(guān)鍵字運(yùn)行

2018-09-19 22:35:25

2015-10-29 09:11:00

特性Ubuntu 15.1Linux

2017-01-16 15:12:36

Linuxwatch命令命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)