<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      政企安全 正文
      發私信給史中
      發送

      2

      JavaScript 也可以搞定嵌入式開發? | 雷鋒網公開課

      本文作者: 史中 2016-04-25 17:30 專題:雷峰網公開課
      導語:Ruff 可以允許開發者用普及的 JavaScript 語言進行嵌入式開發,他們究竟是怎么做到的呢?


      嘉賓介紹:鄭曄,Ruff CTO,Oracle Duke選擇獎獲獎作品Moco的作者,目前投身于 IoT 領域,致力于簡化 IoT 應用的開發方式。他多次在各種媒體上發表文章,在各種技術大會上做過演講,對敏捷軟件開發、軟件設計、領域特定語言等方面,有著深刻理解,愿意分享自己對于軟件開發的理解,也愿意吸收新的知識,更愿意與人暢聊軟硬件開發。

      JavaScript 也可以搞定嵌入式開發? | 雷鋒網公開課

      【Ruff CTO 鄭曄】

      IoT(Internet of Things)是大家公認的未來。但讓人尷尬的是,這些代表未來的炫酷產品似乎只存在于業內人士的 PPT 中。真正走進普通人生活的,大多只是一些“帶有 Wi-Fi 的普通硬件”。和大多數生態普及過程中遇到的問題相同,IoT 缺少一個關鍵的系統——應用。應用缺失,自然難以營造用戶生態。然而這并不完全是開發者的責任,大多數情況下,開發者都處在臣妾做不到的狀態,因為涉及硬件的“嵌入式開發”需要非常多的底層硬件代碼基礎,這讓廣大的軟件程序猿望而卻步。

      “Ruff”的目標就是解決這個問題。簡而言之,Ruff 可以允許開發者用普及的 JavaScript 語言進行嵌入式開發,他們究竟是怎么做到的呢?且聽 Ruff CTO 鄭曄慢慢道來。

      何謂 Ruff?

      Ruff 是一個硬件應用開發平臺。簡言之,通過 Ruff,開發者可以使用 JavaScript 開發硬件應用。

      從行業發展趨勢可以看到,IoT(Internet of Things)是大家公認的未來。大家也知道,我國目前在生產制造的水準也是世界級的。但是,從趨勢到現實中,中間還欠缺了什么呢?我們看到的是:應用。

      我們都在說智能硬件。實際上,所謂智能硬件是一個“硬件應用”,是把硬件和應用場景結合起來。應用的成功本質上是個概率問題,我們之所以還沒有看到很多成功的硬件應用,主要是應用的總體數量太少。很多人都能看到這是一片藍海,但問題是,并不是每個人都有能力進入到這個領域,因為硬件應用的門檻太高了。

      這一點類似于 Nokia 手機的時代,很多人都想編寫手機應用,但只有很少量的程序員有能力編寫手機應用,我自己就曾經希望買 Nokia 手機來做開發,但最后放棄了,也是因為開發太麻煩。后來有了 iOS 和 Android,開發門檻一下子降了下來,大量的程序員涌了進來,才有了我們看到的移動互聯網的興起,也才有了微信、滴滴等爆款應用。

      所以 Ruff 就是要在硬件應用開發領域解決同樣的問題,降低硬件應用開發的門檻,讓更多有應用開發能力的人進入到這個領域里。

      有一個前端開發者,他拿到 Ruff,很快就寫了一個小應用:用打火機點亮網頁上的一盞燈。因為有了 Ruff,這個從來沒寫過硬件的開發者,就有機會開始編寫硬件應用了。這就是 Ruff 降低門檻起到的作用。總結起來,Ruff 就是要降低硬件應用開發門檻,讓開發者能夠創造出更多有創意的硬件應用。

      硬件應用開發的門檻有多高?

      從現狀來看,硬件和應用完全就是兩套詞匯表,比如,做硬件的人關心的是,GPIO、I2C、時序、驅動等,而做應用的人關心的是,需求、用戶體驗、高可用性、系統架構等。我問過應用開發者什么是 GPIO,他們的表情就像見了鬼一樣;我也曾讓硬件開發者講講什么是 SOLID 設計原則,很少有人能講清楚。

      這就是軟硬件之間的鴻溝,讓一個人同時具備硬件和應用兩套技能,這是很高的要求。其實,即便是只在硬件開發領域,除了應用以外,做系統的和做硬件的也是不同的話語體系,有人關注進程,有人關注晶振;有人關注嵌入式系統,有人關注 PCB。

      讓一個人掌握好所有的東西,難度系數會直線上升。即便有這樣的人,價格也會非常高,而且能找到的人數量也有限。另外,在硬件領域,重復造輪子的現象是很嚴重的。很多東西即便開發者再熟悉,到了一個新的環境可能就要重新做一遍,比如,常見的網絡協議要移植,常見的驅動要編寫。我的這些印象,全部來自一個有20年硬件開發經驗的老法師,他將其稱為血淚史。

      與應用的對接中,硬件開發的過程,基本上是一個瀑布式開發的過程,或者說一個自頂向下的過程,也就是說,把需求確定好了,然后,進入一個開發過程,這個過程往往會持續很長一段時間。從軟件工程的實踐來看,這是一種低效的做法,因為做產品,最重要的是快速反饋,一年前的市場需求和現在的市場需求是不同的。

      所以,在軟件領域有了敏捷、精益等方法論,改善這個過程,最重要的就是迭代的思想,不斷地對產品進行改進。目前市面上很多有想法的人來自互聯網領域,他們習慣了與軟件應用開發者協同工作,所以,他們也更習慣采用迭代的思想進行工作,但同樣的工作邏輯拿到硬件領域幾乎沒辦法行得通。

      舉個例子,

      產品經理希望迭代地看到產品進展,因為他的想法需要反復驗證,而硬件開發者希望確定好需求再來做開發,因為在他的邏輯里,硬件是一旦制成就很難改變了。

      造成這種現象更根本的原因是,是硬件制造商在編寫應用。而應用開發根本就不是硬件制造商擅長的。當我們可以把硬件和應用兩個概念分開之后,我們就會發現,同樣的硬件,在不同的場合下,可以有不同的應用。

      舉例來說,

      • 同樣的飲水機,如果你買了回家,它的應用是統計你家的飲水狀況,提醒你多喝水;

      • 如果把飲水機租回家,它會提醒你按時繳費,保證正常使用。

      硬件上是一樣的,但應用是不同的。解決這個問題最好的辦法就是分工,讓應用開發者只關注應用,硬件制造商只關注硬件。將二者聯系起來,這就是 Ruff 要做的事情。

      為什么是 JavaScript?

      對程序員來說,語言的選擇永遠是宗教戰爭。我們把 Ruff 定位成一個應用開發平臺,所以,選擇做技術選型的時候,盡可能考慮應用開發者熟悉的東西,所以 Ruff 選擇了 JavaScript。 

      首先,我們排除了硬件開發者最熟悉的 C/C++,因為 C/C++在多數程序員眼里是系統語言,一旦使用 C/C++,程序員們就會回到系統開發的思路上。

      再次,我們排除的是目前最流行的語言 Java。從受眾的角度考慮,最該考慮的是 Java,這就是 Android 的做法,但在資源受限的硬件上,Java 太重了。

      JavaScript 是一個恰當的語言,原因如下:

      首先,它是一門真正的全平臺語言,可以運行在所有系統上,包括瀏覽器、手機、服務器、客戶端,都有。

      其次,隨著 Node.js 的流行,JavaScript 的社區越來越活躍,許多新想法都是在這個社區內涌現出來的。

      再次,JavaScript 有很多不錯的運行時實現,方便我們開展工作。套用軟件開發社區里的一個 說法:Atwood 定律,所有能用 JavaScript 寫的應用,最終都會用 JavaScript 寫就。

      然而,根因是受眾面,不需要從頭教育市場。所以,Ruff 選擇了 JavaScript。事實上,很多大廠也下水做這個領域,大部分人的選擇也是 JavaScript。

      JavaScript 比 C 語言更有優勢嗎?

      從個人的角度來說,我更愿意比較的是抽象層次,而非簡單的語法。從技術的發展趨勢,我們已經非常清楚地看到,應用開發的抽象層次是越來越高的。

      比如:最開始大家是用機器碼,因為記憶不方便有了匯編,又因為匯編對于不同機型差異太大,而產生了 C 這樣的程序設計語言,再往后,C++提供了面向對象程序設計,給程序組織提供了一種良好的方案。越高的抽象,意味著編寫同樣多的內容用的代碼越少。

      我曾經對比過一個大廠出的 C/C++的硬件應用開發框架,點亮一個板載燈,它寫了大約50行左右的代碼,用 Ruff,我寫了3行代碼,還有2行是框架代碼。

      $.ready(function() {

        $('#led-r').turnOn();    

      });

      通過這段代碼大家就可以感受到差異,真正的核心代碼只有1行,這就是抽象的價值。

      只使用 JavaScript 能做到怎樣的開發深度?

      JavaScript 語言社區已經提供了許多好的抽象,比如,基于事件的模型。

      Ruff 還建立了自己建立的抽象。比如劃分了驅動開發者和應用開發者,只有驅動開發者需要關心硬件細節,而應用開發者只要關注應用邏輯就好了。

      剛才給大家展示的這段代碼就是一段應用代碼,你根本看不到硬件參數這些東西,這就是分層架構的力量,抽象的力量。此外,Ruff 在設計之初,就考慮了應用測試的問題。用 Ruff 開發的代碼可以在開發機器上把邏輯測試好,再部署到具體硬件板子上。這樣可以防止因為一些低級錯誤,反復燒板子,造成時間上的浪費。

      Ruff 還配套了命令行工具,簡化應用開發和板卡部署,另外還有一個軟件倉庫,可以讓驅動開發者上傳自己的驅動,與社區分享。

      至于實現JavaScript的硬件編程,道理上很簡單:運行一個 JavaScript 引擎,在上面跑 Javascript 的程序。

      從具體的實現上來說,

      第一步:選擇了一個嵌入式 JavaScript 引擎;

      第二部,在一個操作系統上把它運行起來,在其基礎上構建 Ruff,這也是目前對外發行的版本。

      簡單來說,這是從打造最小可行產品(MVP)的思路來做的。Ruff 內部正在研發基于 MCU 的版本,也就是將 JavaScript 引擎直接跑在硬件上。這樣可以更好地解決功耗、實時性等問題。

      Ruff 的未來

      現在,開發者能看到一些開發板,例如:樹莓派、Ardunio 和 Intel Edison。而 Ruff 提供了一個開發框架。另外 Ruff 本身也提供了一套開發套件,這么做的原因是為了讓人盡快上手 Ruff。

      更關鍵的差異在于,這些開發板只能做小應用或是原型,當然,這也是 Ruff 開發套件的現狀。不同的是,我們做 Ruff 的目的不限于此,我們是希望將 Ruff 將來打通到生產環節中。也就是說,一個硬件應用在軟件代碼完全不用修改的情況下,把它用在更真實的設備上,比如 MCU 上。我們很清楚,Ruff 的終點不是開發板,這與其它的開發板目標是截然不同的。

      坦白來講,讓應用開發者意識到自己能夠編寫硬件應用會是比較困難的。很多軟件程序員思考問題的邊界就是硬件,根本不敢想這方面的問題。就像 Android 和 iOS 之前,應用開發者不會覺得自己能寫手機應用一樣。這里面是一個意識的鴻溝,大多數應用開發者并不覺得硬件開發和他們有什么關系。正因為他們覺得硬件應用開發太困難,才會退避三舍。

      對于 Ruff 而言,這是一個教育市場的過程。其實,硬件應用開發其實很簡單:控制你家的電視很簡單,點亮家里的燈也沒那么難。跨越了意識上的鴻溝,再來了解硬件,就不那么困難了。當我們的正式版發布之后,我們會在開發者社區方面投入大量的精力,讓開發者們意識到,他們能做的事情其實更多。


      于Ruff的最新動態

      在1月份,Ruff 推出了少量的公測版套件,定向地發給了一些有興趣的用戶,軟件 SDK 隨公測版發布。大致一個月左右會有一次新的發布。鄭曄表示,正式版在內部的備貨基本上已經完成,五一之后,就會正式開始銷售,更多的開發者就可以嘗試新的開發體驗了。

      Ruff 開發套件購買戳這

      官方網站:ruff.io

      雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知

      分享:
      相關文章

      編輯

      雷鋒網編輯,關注科技人文,安全、黑客及芯片。
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 大黑人交xxxx18视频| 国产AV无码专区亚洲AWWW| 国产精品久久久久9999吃药| 国产黄色免费看| 亚洲日韩中文第一精品| 蜜桃在线视频| 溆浦县| 国产精品爆乳奶水无码视频免费| 久久国产精品电影| 在线中出| 99中文精品7| 中文字幕人妻熟女人妻a片| 亚洲AV成人一区二区三区AV| 色吊丝av中文字幕| 天天看片天天av免费观看| 国产一区二区亚洲一区二区三区| 国产精品香港三级国产av| 亚洲欧美熟妇久久久久久久久| 无码不卡免费一级毛片视频 | 伊人一二三| 国产69精品久久久久久人妻精品| 综合色一色综合久久网| 亚洲制服丝袜无码| 国产熟女在线播放第一页| 人妻少妇av无码一区二区| 性欧美大战久久久久久久| 久久99精品久久久久久婷婷2021| 亚洲中文无码手机永久| 国产午夜无码福利在线看网站 | 久热中文字幕在线| 丰满少妇高潮在线播放不卡| 北宁市| 色色91| jizzjizzjizzjizzjizzjizzjizzjizzjizz| 国产黄色视频大全| 道真| 亚洲无人区一区二区三区| 人人爽人人爽人人片av免费 | 成熟丰满熟妇高潮xxxxx| 国产熟女高潮视频| 中文人妻不卡|