整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          WebAssembly能不能取代JavaScript

          WebAssembly能不能取代JavaScript?15張卡通圖給你答案

          切能用JavaScript實現的,終將用JavaScript實現。

          一切能編譯為WebAssembly的,終將編譯為WebAssembly。

          前端er們,WebAssembly用上了嗎?在瀏覽器中快速運行非JavaScript語言,比如C、C++、Rust,是不是很香?今天,我們就來用15張小畫圖說WebAssembly

          有必要先介紹一下小畫的創作者。她叫Lin Clark,曾是Mozilla公司的首席研究工程師,精通WebAssembly和Rust。值得一提的是,她的母親曾為阿波羅登月任務編寫匯編語言。如今,Lin是WebAssembly社區響當當的人物,是不是有傳承那味兒了?

          WebAssembly能做什么?


          有了WebAssembly,JavaScript不再是瀏覽器端的唯一語言。WebAssembly讓你能夠在網頁中快速運行C、C++、Rust等。

          再見JavaScript?


          WebAssembly并不是要取代JavaScript,二者絕非水火不容。實際上,許多應用程序同時使用WebAssembly和JavaScript。不過,如果硬要對比二者的速度,那么WebAssembly顯然是增強型。

          JavaScript的性能瓶頸在哪里?


          JavaScript的一些根本特性使它速度受限,比如動態類型。直到2008年,JIT(即時編譯器)出現,才讓JavaScript的性能有了飛躍式提升。

          性能提升使得JavaScript開始被用于服務器端。WebAssembly的出現有望使性能曲線再次實現飛躍。

          時間都去哪兒了?


          JIT出現之前,JavaScript花在各任務上的相對時長是這樣的。

          有了JIT,JavaScript花在各任務上的相對時長變成了這樣。

          相比之下,WebAssembly竟然是這樣的!

          如何讓計算機聽我發號施令?


          想象有機星人來到地球,你被派去和機星人談判。要怎么交流呢?

          你或許需要一位口譯官,抑或需要一位筆譯官。

          口譯官可以當場逐字逐句地翻譯,這其實就是解釋器所做的事情。

          筆譯官則會將內容寫下來,讓雙方自己理解。這其實就是編譯器所做的事情。

          解釋器剛運行起來時速度較快,但是效率不高,因為同樣的代碼可能需要重復解釋。編譯器則恰恰相反。正因為兩者各有千秋,所以JIT結合了二者各自的優勢。

          那么,WebAssembly是如何做到與機星人交流的呢?我們來分析一下機星人的大腦構成。

          • ALU是算術邏輯單元,相當于機星人大腦負責思考的部分。
          • register是寄存器,相當于機星人大腦的短時記憶區。
          • RAM是內存,相當于機星人大腦的長期記憶區。

          如果給機星人發送二進制指令,它就會這樣解讀。

          問題是,機星人的大腦構造可能不一樣,比如既有可能是x86結構,又有可能是ARM結構。而我們也會使用不同的語言,比如C、C++或者Rust。要兩兩匹配地進行翻譯,工作量實在太大!

          為此,人們增加了IR,即中間表示。編譯器的前端先將高級語言變成IR,編譯器的后端則負責將IR變成匯編碼。

          那么,WebAssembly的位置在哪里呢?

          每一類計算機處理器都有自己的機器碼類型。在取得IR代碼后,通過一個專門的編譯器來運行,這個編譯器將IR代碼轉換為一種專用字節碼并放入后綴為.wasm的文件中。

          .wasm文件中的字節碼還不是機器碼,它只是支持WebAssembly的瀏覽器能夠理解的一組虛擬指令。當加載到支持WebAssembly的瀏覽器中時,瀏覽器會驗證該文件的合法性,然后這些字節碼會繼續編譯為機器碼。

          如今,各大主流瀏覽器都已支持WebAssembly。現在就嘗試使用WebAssembly吧!

          本文中的插圖由Lin Clark創作,源網址如下:

          https://hacks.mozilla.org/2017/02/a-cartoon-intro-to-webassembly/

          本文對插圖的使用經Lin Clark同意,且遵守CC BY-SA 3.0協議。

          https://creativecommons.org/licenses/by-sa/3.0/

          (文章由@喜歡機星人的@圖靈教育編輯發布)

          今 日 薦 書

          C. 杰勒德?加倫特 著
          單業 譯

          想在瀏覽器中使用非JavaScript語言?
          WebAssembly幫你做到!


          馬的條紋、手指的排列、向日葵的螺紋……為何自然界中會出現這些圖案,這是我們一直以來都試圖回答的問題?,F在,科學家通過數學模型和基因組科學試圖揭示這些圖案是如何在活體組織中形成的。然而,事實卻證明,我們很難得到一個完整的答案。

          對于尋求在實驗室中研發生物組織的生物工程師來說,了解圖案在生物系統中的形成機制極為重要。工程化組織在醫學應用上具有無限的潛能,但為了合成生物組織,科學家需要了解生命系統中圖案形成的起源。

          最近的一項新研究,讓我們朝著在分子水平上理解活體組織形態的形成邁進了一步。被研究人員工程化過的細菌在培養和生長過程中,表現出隨機的圖靈結構:在培養皿中的一片綠色背景下,合成細菌形成了不規則的點狀圖案,釋放出紅色的熒光。

          ○ 左:在正向工程化過的大腸桿菌細胞生物膜上,信號分子的隨機圖靈結構熒光圖像,視場約橫跨300微米。右:使用與實驗環境相應的參數模擬出的隨機圖靈結構,模擬區域小于實驗區域,但模擬結構的統計屬性與實驗結果相符。| 圖片來源:D. Karig, K. M. Martini, T. Lu, N. DeLateur, N. Goldenfeld, R. Weiss.

          經典圖靈結構

          圖靈結構是在均勻狀態下自然出現的圖案,它們可以是條紋、斑點或螺旋。1952年,著名的英國計算機科學家圖靈(Alan Turing)提出了一種圖案的形成機制,并用數學推論出這些圖案是由一種非常普遍的不穩定性所致。他認為,生物形態可能是源自于反應系統中的一種動態過程,即快速擴散的抑制劑和緩慢擴散的激活劑。那時,生物學還沒有揭示出基因調控的復雜性,但現在我們很清楚,在圖靈提出的模型里,眾多在動物皮膚圖案形成過程中起作用的參數都被過度簡化。因此圖靈結構雖然在某些化學反應中出現過,但這些結構在自然的生物有機體中卻很難出現。

          為了更好地說明生物學中經典圖靈結構形成的局限性,我們可以借用生物學中的捕食者-獵物來作類比。

          他解釋道:“圖靈模型的問題在于,它取決于一種大多數生物系統都無法滿足的條件,也就是說抑制劑必須比激活劑移動得更加快速。我們可以舉一個化學之外的例子,例如生態系統中的兩種生物——狼和羊:若要得到經典的圖靈結構,那么狼的移動速度就必須比羊快得多。這看起來會是什么樣子呢?首先,羊的數量增加,狼由于得到飼養從而數量也隨之增加。并且狼群會跑來跑去將羊群圍住,這樣就會在某些區域產生一片片被狼環繞的羊群。這就是以動物為例來解讀圖靈的發現?!?/p>

          隨機圖靈模型

          在新的研究中,研究人員從實驗和理論方面都證明了圖靈結構確實發生在活體組織中。在圖靈模型中,產生圖案的不穩定性被定義為激活劑和抑制劑這兩種化學物質之間的高擴散比。而在新的項研究中,研究人員證明它實際上是一種由隨機性(在大多數實驗中會被認為是背景噪音)產生的圖靈結構。

          大約10年前,伊利諾伊大學香檳分校的物理學家Nigel Goldenfeld開始發展隨機圖靈結構的理論,在這種理論中的圖靈結構不是源自于高的抑制劑-激活劑比,而是來自隨機的基因表達噪音。Goldenfeld說:“隨機圖靈結構理論并不需要獵物與捕食者、激活劑與抑制劑之間存在很大的速度差異,它們可以大致相同,并仍讓你得到一個圖案。但它不會是的常規的圖案,總會有某種程度的混亂?!?/p>

          生物工程實驗

          大約在Goldenfeld對理論進行研究的同一時期,其他研究人員在進行細菌圖案實驗。麻省理工學院的物理學家Ron Weiss領導了這項研究的實驗與模擬工作。開展體內研究的最初目的是為了檢測細菌是否能被設計以產生圖靈不穩定性。基于圖靈的激活-抑制思想,研究人員用合成生物學來工程化細菌。他們將細菌注入了能使細菌發送并接收兩種不同分子信號的基因,并在這些分子上附上了熒光標記,從而創建了一個可通過信號分子來查看基因電路是開還是關的系統,其中激活劑會發出紅色熒光,抑制劑呈綠色熒光。研究人員觀察到,一片均勻的生物膜在經過一段時間的培養后,工程化的細菌就形成了被一片綠色領域包圍的紅點——但細菌形成的圖靈結構是不規則的,正如隨機理論所預測的那樣。

          驗證隨機圖靈理論

          為了檢測這些實驗是否真的如新理論所描述,科學家花費了數年的時間進行測試。他們創建了一個非常詳細的隨機模型,以研究這些在合成的能形成圖案的基因電路中到底發生了什么,并對其結果進行計算,然后再將理論預測與生物工程師在培養皿中觀察到的結果進行比較。

          證明隨機圖靈理論的有效性非常困難,理論所作出的預測有很多,它們都需逐一在實驗中被驗證。而由于描述這些圖案的數學中參數眾多,所以研究人員必須逐個探索這些參數的影響。這涉及對參數進行大量調整工作,以揭示圖案形成的機制。

          而這項新的研究能表明的是,即使在一些我們認為不能出現圖靈結構的情況下,也可以出現圖靈結構。但它們是種無序結構,即所謂的隨機圖靈結構。這里的隨機性不是指羊或狼的出生與死亡,而是生與死、蛋白質的創造與吸收。這是一種有違常理的預測——產生這些隨機圖案的是隨機基因表達的噪音。而通常我們認為噪音會干擾信號,例如在收聽廣播時,噪音會將廣播信號淹沒。但在隨機圖靈結構的情況下,有的是被噪音穩定的圖案。

          這些研究結果為一個古老的問題提供了新的線索,并開始為生物醫學工程領域在未來的發展開拓了道路。

          或許我們可以肯定的是,這是真正意義上首次證明了在體內研究中得到隨機圖靈結構的原理。所以現在我們知道這種機制確實可行,并且這些波動也可以驅動圖案。最終,生物工程師會用這種技術,在經典圖靈結構無法企及的領域,制造新的組織和新的功能性生物系統。

          文:Siv Schwink

          譯:二宗主

          參考來源:

          https://phys.org/news/2018-06-bacteria-stochastic-turing-patterns.html

          .wxpy庫介紹

          • wxpy 在 itchat 的基礎上,通過大量接口優化提升了模塊的易用性,并進行豐富的功能擴展。
          • 文檔地址:https://wxpy.readthedocs.io
          • 從 PYPI 官方源下載安裝:
          pip install -U wxpy
          
          • 從豆瓣 PYPI 鏡像源下載安裝,推薦國內用戶選用:
          pip install -U wxpy -i "https://pypi.doubanio.com/simple/"
          

          2.圖靈機器人

          • 首先注冊一個賬號:http://www.turingapi.com/ ,然后可以創建一個自己的圖靈機器人;
          • 要使用圖靈機器人可以先看一下幫助中心,里面有接入教程,比如說圖靈機器人的接口地址、請求方式、請求參數等,這些在接入圖靈機器人的時候會用到;

          3.使用微信接入圖靈機器人

          • 使用微信接入圖靈機器人需要用到wxpy庫,先導入這個庫,然后創建一個接口函數;
          • 然后在這個函數中配置請求參數(json格式),比如: reqType:輸入類型,0表示文本(默認)、1表示圖片、2表示音頻;
          • perception:輸入信息,inputText(text)表示文本信息、inputImage(url)表示圖片信息、inputMedia(url)表示音頻信息、selfInfo(location)表示客戶端屬性;
          • userInfo:用戶參數,apiKey機器人標識(進入創建的機器人就能看到)、userId用戶ID(在用戶頭像旁邊)、groupId群聊ID、userIdName群內用戶昵稱;
          • 接口地址:http://openapi.tuling123.com/openapi/api/v2 ,在文檔幫助中心的接入教程中有;
          • 通過requests.post()方法傳遞請求地址和配置請求參數,配置請求參數可以通過json.dumps()方法轉化為json格式,然后會返回一個response響應對象;
          • 然后將返回的response響應對象使用json.loads()方法加載到內存轉換為字典,然后將之作為函數的返回值;
          • 接著就可以通過python操作微信,需要先初始化機器人,如bot=Bot(),然后根據需求針對好友或者群聊回復消息;
          from wxpy import *
          import requests
          import json
          
          def tuling_robot(text):
           url="http://openapi.tuling123.com/openapi/api/v2"
           # 自己的key
           apiKey=""
           # 自己的id
           userID=""
           payload={
           "reqType": 0,
           "perception": {
           "inputText": {
           "text": text
           }
           },
           "userInfo": {
           "apiKey": apiKey,
           "userId": userID
           }
           }
           r=requests.post(url,data=json.dumps(payload))
           ret=json.loads(r.text)
           return ret['results'][0]['values']['text']
          
          bot=Bot(console_qr=2, cache_path="botoo.pkl")
          # 也可以針對某個群發送消息
          @bot.register()
          def send_all(msg):
           print('收到數據' + str(msg))
           if (msg.type !='Text'):
           ret='這個我回答不了你'
           else:
           ret=tuling_robot(msg.text)
           print('發送數據' + str(ret))
           return ret
          embed()
          

          4.wxpy.Bot()

          • 語法:wxpy.Bot(cache_path=None, console_qr=False, qr_path=None, qr_callback=None, login_callback=None, logout_callback=None);
          • 機器人對象,用于登陸和操作微信賬號,涵蓋大部分 Web 微信的功能;
          • cache_path:設置當前會話的緩存路徑,并開啟緩存功能(默認不開啟),開啟緩存后可在短時間內避免重復掃碼,緩存失效時會重新要求登陸,設為 True 時,使用默認的緩存路徑 ‘wxpy.pkl’;
          • console_qr:在終端中顯示登陸二維碼,需要安裝 pillow 模塊;
          • qr_path:保存二維碼的路徑;
          • qr_callback :獲得二維碼后的回調,可以用來定義二維碼的處理方式,接收參數: uuid, status, qrcode;
          • login_callback:登陸成功后的回調,若不指定,將進行清屏操作,并刪除二維碼文件;
          • logout_callback:登出時的回調;

          5.Bot.register()

          • 語法:Bot.register(chats=None, msg_types=None, except_self=True, run_async=True, enabled=True);
          • 可以作為函數的裝飾器,用于注冊消息配置,參數chats表示消息所在的聊天對象,單個或列表形式的多個聊天對象或聊天類型,為空時匹配所有聊天對象、msg_types 表示 消息的類型,單個或列表形式的多個消息類型,為空時匹配所有消息類型(SYSTEM 類消息除外) 、except_self表示排除由自己發送的消息、run_async 表示是否異步執行所配置的函數,可提高響應速度、enabled 表示當前配置的默認開啟狀態,可事后動態開啟或關閉;

          參考:https://www.9xkd.com/user/plan-view.html?id=1072150704


          主站蜘蛛池模板: 日韩一区精品视频一区二区| 精品一区二区三人妻视频| 精品无码av一区二区三区| 亚洲av日韩综合一区久热| 精品久久国产一区二区三区香蕉 | 一区二区精品在线| 国产成人AV区一区二区三| 一区二区三区四区免费视频| 国产a久久精品一区二区三区| 精品一区二区三区在线成人| 无码少妇一区二区浪潮av| 极品人妻少妇一区二区三区| 亚洲国产成人久久综合一区77| 99久久综合狠狠综合久久一区| 国产精品一区二区四区| 秋霞无码一区二区| 国产一区二区三区四| 久久精品国产第一区二区三区| 一区二区高清视频在线观看| 午夜视频在线观看一区二区| 日韩精品区一区二区三VR| 综合人妻久久一区二区精品 | 亚洲变态另类一区二区三区| 亚洲AV无码一区二区乱孑伦AS| 一区二区三区四区在线视频| 国产精品成人一区二区三区| 亚洲av永久无码一区二区三区| 久久精品亚洲一区二区三区浴池| 国产在线精品一区免费香蕉| 区三区激情福利综合中文字幕在线一区| 亚洲国产精品无码第一区二区三区| 久久一区二区明星换脸| 亚洲国产综合精品一区在线播放| 中文字幕日韩欧美一区二区三区| 午夜性色一区二区三区免费不卡视频| 亚洲综合国产一区二区三区| A国产一区二区免费入口| 成人无码一区二区三区| 久久无码人妻精品一区二区三区| 国产99精品一区二区三区免费| 国产成人久久一区二区三区 |