[爆卦]效能監視器記憶體是什麼?優點缺點精華區懶人包

雖然這篇效能監視器記憶體鄉民發文沒有被收入到精華區:在效能監視器記憶體這個話題中,我們另外找到其它相關的精選爆讚文章

在 效能監視器記憶體產品中有2篇Facebook貼文,粉絲數超過3,992的網紅台灣物聯網實驗室 IOT Labs,也在其Facebook貼文中提到, 迎接終端AI新時代:讓運算更靠近資料所在 作者 : Andrew Brown,Strategy Analytics 2021-03-03 資料/數據(data)成長的速度越來越快。據估計,人類目前每秒產出1.7Mb的資料。智慧與個人裝置如智慧型手機、平板電腦與穿戴式裝置不但快速成長,現在我...

  • 效能監視器記憶體 在 台灣物聯網實驗室 IOT Labs Facebook 的最讚貼文

    2021-03-08 18:09:20
    有 1 人按讚

    迎接終端AI新時代:讓運算更靠近資料所在

    作者 : Andrew Brown,Strategy Analytics
    2021-03-03

    資料/數據(data)成長的速度越來越快。據估計,人類目前每秒產出1.7Mb的資料。智慧與個人裝置如智慧型手機、平板電腦與穿戴式裝置不但快速成長,現在我們也真正目睹物聯網(IoT)的成長,未來連網的裝置數量將遠遠超越地球的人口。

    這包括種類繁多的不同裝置,像是智慧感測器與致動器,它們可以監控從震動、語音到視覺等所有的東西,以及幾乎大家可以想像到的所有東西。這些裝置無所不在,從工廠所在位置到監控攝影機、智慧手錶、智慧家庭以及自主性越來越高的車輛。隨著我們企圖測量生活週遭數位世界中更多的事物,它們的數量將持續爆炸性成長。

    資料爆量成長,讓許多企業把資料從內部部署運作移到雲端。儘管集中到雲端運算的性質,在成本與資源效率、彈性與便利性有它的優點,但也有一些缺點。由於運算與儲存在遠端進行,來自終端、也就是那些在網路最邊緣裝置的資料,需要從起始點經過網際網路或其他網路,來到集中式的資料中心(例如雲端),然後在這裡處理與儲存,最後再傳回給用戶。

    對於一些傳統的應用,這種方式雖然還可以接受,但越來越多的使用場景就是無法承受終端與雲端之間,資訊被接力傳遞產生的延遲。我們必須即時做出決策,網路延遲要越小越好。基於這些原因,開始有人轉向終端運算;越來越多人轉而使用智慧終端,而去中心化的程度也越來越高。此外,在這些即時應用中產生的龐大資料量,意味著處理與智慧必須在本地以分散的方式進行。

    與資料成長連袂而來的,是人工智慧與機器學習(ML)也朝終端移動,並且越來越朝終端本身移動。大量來自真實世界的資訊,需要用ML的方式來進行詮釋與採取行動。透過AI與ML,是以最小的延遲分析影像、動作、影片或數量龐大的資料,唯一可行且合乎成本效益的方式。運用AI與ML的演算法與應用將在邊緣運作,在未來還將會直接在終端裝置上進行。

    資料正在帶動從集中化到分散化的轉變

    隨著資訊科技市場逐漸發展與成熟,網路的設計以及在其運作的所有裝置,也都跟著進化。全盛時期從服務數千個小型客戶端的主機,一直到客戶端伺服器模型中使用的越來越本地化的個人電腦運算效能,基礎架構持續重組與最佳化,以便更貼近網路上的裝置以及符合運作應用的需求。這些需求包含檔案存取與資料儲存,以及資料處理的需求。

    智慧型手機與其他行動裝置的爆炸性成長,加上物聯網的快速成長,促使我們需要為如何讓資產進行最佳的部署與安排進行評估。而影響這個評估的因素,包括網路的可用性、安全性、裝置的運算力,以及把資料從終端傳送到儲存設備的相關費用,近來也已轉向使用分散式的運算模型。

    從邊緣到終端:AI與ML改變終端典範

    在成本、資源效率、彈性與便利性等方面,雲端有它的優點,裝置數量的急遽增加(如圖2),將導致資料產出量大幅增加。這些資料大部份都相當複雜且非結構化的,這也是為何企業只會分析1%~12% 的資料的原因之一。把大量非結構化的資料送到雲端的費用相當高、容易形成瓶頸,而且從能源、頻寬與運算力角度來看,相當沒有效率。

    在終端執行進階處理與分析的能力,可協助為關鍵應用降低延遲、減少對雲端的依賴,並且更好地管理物聯網產出的巨量資料。

    終端AI:感測、推論與行動

    在終端部署更多智慧的主要原因之一,是為了創造更大的敏捷性。終端裝置處於網路的最邊緣與資料產生的地方,可以更快與更準確地做出回應,同時免除不必要的資料傳輸、延遲與資料移動中的安全風險,可以節省費用。

    處理能力與神經網路的重大進展,正協助帶動終端裝置的新能力,另一股驅動力則是對即時資訊、效率(傳送較少的資訊到雲端)、自動化與在多數情況下,對近乎即時回應的需求。這是一個三道步驟的程序:傳送資料、資料推論(例如依據機器學習辨識影像、聲音或動作),以及採取行動(如物件是披薩,冰箱的壓縮機發出正常範圍外的聲音,因此發出警告)。

    感測

    處理器、微控制器與感測器產生的資料量相當龐大。例如,自駕車每小時要搜集25GB的資料。智慧家庭裝置、智慧牙刷、健身追蹤器或智慧手錶持續進化,並且與以往相比,會搜集更多的資料。

    它們搜集到的資料極具價值,但每次都從各個終端節點把資料推回給雲端,數量又會過多。因此必須在終端進行處理。倘若部份的作業負載能在終端本身進行,就可以大幅提升效率。

    推論

    終端搜集到的資料是非結構性的。當機器學習從資料擷取到關聯性時,就是在進行推論。這表示使用AI與ML工具來幫忙訓練裝置辨識物件。拜神經網路的進展之賜,機器學習工具越來越能訓練物件以高度的精準度辨識影像、聲音與動作,這對體積越來越小的裝置,極為關鍵。

    例如,圖4顯示使用像ONNX、PyTorch、Caffe2、Arm NN或 Tensorflow Lite 等神經網路工具,訓練高效能的意法半導體(ST)微控制器(MCU),以轉換成最佳化的程式碼,讓MCU進行物件辨識(這個的情況辨識對象是影像、聲音或動作)。更高效能的MCU越來越常利用這些ML工具來辨識動作、音訊或影像,而且準確度相當高,而我們接下來馬上就要對此進行檢視。這些動作越來越頻繁地從邊緣,轉移到在終端運作的MCU本身。

    行動

    資料一旦完成感測與推論後,結果就是行動。這有可能是回饋簡單的回應(裝置是開啟或關閉),或針對應用情況進行最佳化(戴耳機的人正在移動中,因此會針對穩定度而非音質進行最佳化),或是回饋迴路(根據裝置訓練取得的機器學習,輸送帶若發出聲音,顯示它可能歪掉了)。物聯網裝置將會變得更複雜且更具智慧,因為這些能力提升後,運算力也會因此增加。在我們使用新的機器學習工具後,一些之前在雲端或終端完成的關鍵功能,將可以移到終端本身的內部進行。

    終端 AI:千里之行始於足下

    從智慧型手機到車輛,今日所有電子裝置的核心都是許多的處理器、微控制器與感測器。它們執行各種任務,從最簡單到最複雜,並需要各式各樣的能力。例如,應用處理器是高階處理器,它們是為行動運算、智慧型手機與伺服器設計;即時處理器是為例如硬碟控制、汽車動力傳動系統,與無線通訊的基頻控制使用的非常高效能的處理器,至於微控制器處理器的矽晶圓面積則小了許多,能源效率也高出很多,同時擁有特定的功能。

    這意味著利用ML工具訓練如MCU等較不複雜元件來執行的動作,之前必須透過威力更強大的元件才能完成,但現在邊緣與雲端則是理想的場所。這將讓較小型的裝置以更低的延遲執行更多種類的功能,例如智慧手錶、健康追蹤器或健康照護監控等穿戴式裝置。

    隨著更多功能在較小型的終端進行,這將可以省下資源,包括資料傳輸費用與能源費用,同時也會產生極大的環境衝擊,特別是考量到全球目前已有超過200億台連網裝置,以及超過2,500億顆MCU(根據Strategy Analytics統計數據)。

    TinyML、MCU與人工智慧

    根據Google的TesnsorFlow 技術主管、同時也是深度學習與TinyML領域的指標人物 Pete Warden 表示:「令人相當興奮的是,我還不知道我們將如何使用這些全新的裝置,特別是它們後面代表的科技是如此的吸引人,我無法想像那些即將出現的全新應用。」

    微型機器學習(TinyML)的崛起,已經催化嵌入式系統與機器學習結合,而兩者傳統上大多是獨立運作的。TinyML 捨棄在雲端上運作複雜的機器學習模型,過程包含在終端裝置內與微控制器上運作經過最佳化的模式識別模型,耗電量只有數毫瓦。

    物聯網環境中有數十億個微型裝置,可以為各個產業提供更多的洞察與效率,包括消費、醫療、汽車與工業。TinyML 獲得 Arm、Google、Qualcomm、Arduino等業者的支持,可望改變我們處理物聯網資料的方式。

    受惠於TinyML,微控制器搭配AI已經開始增添各種傳統上威力更強大的元件才能執行的功能。這些功能包括語音辨識(例如自然語言處理)、影像處理(例如物件辨識與識別),以及動作(例如震動、溫度波動等)。啟用這些功能後,準確度與安全性更高,但電池的續航力卻不會打折扣,同時也考量到各種更微妙的應用。

    儘管之前提到的雲端神經網路框架工具,是取用這個公用程式最常用的方法,但把AI函式庫整合進MCU,然後把本地的AI訓練與分析能力插入程式碼中也是可行的。這讓開發人員依據從感測器、麥克風與其他終端嵌入式裝置取得的訊號導出資料模式,然後從中建立模型,例如預測性維護能力。

    如Arm Cortex-M55處理器與Ethos U55微神經處理器(microNPU),利用CMSIS-DSP與CMSIS-NN等常見API來簡化程式碼的轉移性,讓MCU與共同處理器緊密耦合以加速AI功能。透過推論工具在低成本的MCU上實現AI功能並符合嵌入式設計需求極為重要,原因是具有AI功能的MCU有機會在各種物聯網應用中轉變裝置的設計。

    AI在較小型、低耗電與記憶體受限的裝置中可以協助的關鍵功能,我們可以把其精華歸納至我們簡稱為「3V」的三大領域:語音(Voice,如自然語言處理)、視覺(Vision,如影像處理)以及震動(Vibration,如處理來自多種感測器的資料,包括從加速計到溫度感測器,或是來自馬達的電氣訊號)。

    終端智慧對「3V」至關重要

    多數的物聯網應用聚焦在一些特定的領域:基本控制(開/關)、測量(狀態、溫度、流量、噪音與震動、濕度等)、資產的狀況(所在地點以及狀況如何?),以及安全性功能、自動化、預測性維護以及遠端遙控(詳見圖 6)。

    Strategy Analytics的研究顯示,許多已經完成部署或將要部署的物聯網B2B應用,仍然只需要相對簡單的指令,如基本的開/關,以及對設備與環境狀態的監控。在消費性物聯網領域中,智慧音箱的語音控制AI已經出現爆炸性成長,成為智慧家庭指令的中樞,包括智慧插座、智慧照明、智慧攝影機、智慧門鈴,以及智慧恆溫器等。消費性裝置如藍牙耳機現在已經具備情境感知功能,可以依據地點與環境,在音質優先與穩定度優先之間自動切換。

    如同我們檢視的結果,終端AI可以在「3V」核心領域提供價值,而它觸及的許多物聯網領域,遍及B2B與B2C的應用:

    震動:包含來自多種感測器資料的處理,從加速計感測器到溫度感測器,或來自馬達的電氣訊號。
    視覺:影像與影片辨識;分析與識別靜止影像或影片內物件的能力。
    語音:包括自然語言處理(NLP)、瞭解人類口中說出與寫出的語言的能力,以及使用人類語言與人類交談的能力-自然語言產生(NLG)。
    垂直市場中有多種可以實作AI技術的使用場景:

    震動

    可以用來把智慧帶進MCU中的終端AI的進展,有各式各樣的不同應用領域,對於成本與物聯網裝置與應用的效用,都會帶來衝擊。這包括我們在圖6中點出的數個關鍵物聯網應用領域,包括:

    溫度監控;
    壓力監控;
    溼度監控;
    物理動作,包括滑倒與跌倒偵測;
    物質檢測(漏水、瓦斯漏氣等) ;
    磁通量(如鄰近感測器與流量監控) ;
    感測器融合(見圖7);
    電場變化。

    一如我們將在使用場景單元中檢視的,這些能力有許多可以應用在各種被普遍部署的物聯網應用中。

    語音

    語音是進化的產物,也是人類溝通非常有效率的方式。因此我們常常想要用語音來對機器下指令,也不令人意外;聲音檢測是持續成長的類別。語音啟動在智慧家庭應用中很常見,例如智慧音箱,而它也逐漸成為啟動智慧家庭裝置與智慧家電的語音中樞,如電視、遊戲主機與其他新的電器。

    在工業環境中,供車床、銑床與磨床等電腦數值控制(CNC)機器使用的電腦語音引擎正方興未艾。iTSpeex的ATHENA4是第一批專為這些產品設計的語音啟動作業系統。這些產品往往因為安全原因,有離線語音處理的需求,因此終端 AI 語音發展在這裡也創造出有趣的機會。用戶可以指示機器執行特定的運作,並從機器手冊與工廠文件,立即取用資訊。

    語音整合在車輛中也相當關鍵。OEM 代工廠商持續對車載娛樂系統中的語音辨識系統,進行大量投資。語音有潛力成為最安全的輸入模式,因為它可以讓駕駛的眼睛持續盯著道路,而雙手仍持續握著方向盤。

    對於使用觸控螢幕或硬體控制器通常需要多道步驟的複雜任務,語音辨識系統特別能勝任。這些任務包括輸入文字簡訊、輸入目的地、播放特定歌曲或歌曲子集,以及選擇廣播電台頻道。其他的服務包含如拋錨服務(或bCall)與禮賓服務。

    視覺

    正如我們之前已經檢視過,終端 AI 提供視覺領域全新的機會,特別是與物件檢測及辨識相關。這可能包括觀察生產線的製造瑕疵,以及找出自動販賣機需要補貨的庫存。其他實例包括農業應用,例如依據大小與品質為農產品分級。

    曳引機裝上機器視覺攝影機後,我們幾乎可以即時檢測出雜草。雜草冒出後,AI可以分類雜草並估算它對農產收穫的潛在威脅。這讓農民可以鎖定特定的雜草,並打造客製的除草解決方案。機器視覺然後可以檢測除草劑的效用,並找出農地中仍具抗藥性的殘餘雜草。

    使用場景

    預測性維護工具已經從擷取與比較震動的量測資料,進化到提出即時的資產監控。藉由連接物聯網感測器裝置與維護軟體,我們也可能做到遠端監控。

    震動分析

    這種類型的預測性維護在旋轉型機器密集的製造工廠裡,相當常見。震動分析可以揭露鬆脫、不平衡、錯位與軸承磨損等狀況。例如,把震動計量器接上靠近選煤廠離心泵浦內部承軸處,就可以讓工程師建立起正常震動範圍的基線。超出這個範圍的震動,可能顯示滾珠軸承出現鬆動,需要更換。

    磁感測器融合

    磁感測器利用磁性浮筒與一系列可以感應並與液體表面一起移動的感測器,測量液面的高低。所有的這些應用都使用一個固定面上的磁感測器,它與附近平面的磁鐵一起作動,與這個磁鐵相對應的感測器也會移動。

    聲學分析(聲音)

    與震動分析相似,聲測方位分析也是供潤滑技師使用,主要是專注在主動採取潤滑措施。這意味我們可以避免移動設備時產生的過度磨損,否則會為了修理造成代價高昂的停機。實際的例子可能包括測量輸送皮帶的承軸狀況。出現過度磨損時,承軸會因為潤滑不足或錯位出現故障,可能造成整個生產流程的中斷。

    聲學分析(超音波)

    聲音聲學分析雖然可以用來進行主動與預測性維護,超音波聲學分析卻只能用於預測性維護。它可以在超音波範圍內找出與機器摩擦及壓力相關的聲音,並使用在會發出較細微聲音的電氣設備與機器設備。我們可以說這一類型的分析與震動或油量分析相比,更可以預測即將出現的故障。目前它部署起來比其他種類的預防性維護花費較高,但終端 AI 的進展可以促成這種細微層級的聲學檢測,大幅降低部署的費用。

    熱顯影

    熱顯影利用紅外線影像來監控互動機器零件的溫度,讓任何異常情況很快變得顯而易見。具備終端 AI 能力的裝置,可以長期檢測微細的變化。與其他對事故敏感的監視器一樣,它們會觸發排程系統,自動採取適當的行動來預防零件故障。

    消費者與智慧家庭

    將語音運用在消費者與智慧家庭,是最常看到的場景之一。這包括智慧型手機與平板電腦上、未包含電話整合功能的裝置,例如螢幕尺寸有限的穿戴式裝置。這類型的裝置包含智慧手錶與健康穿戴式裝置,可以為各種功能提供免動手的語音啟動。像 Amazon 的 Echo 或 Google 的 Home 等智慧音箱市場的成長,說明消費者對於可接收與提供語音互動等現有裝置的強勁需求,與日俱增。

    消費者基於各種理由使用智慧音箱,最常見的使用場景為:

    聽音樂;
    控制如照明等智慧家庭裝置;
    取得新聞與天氣預報的更新;
    建立購物與待辦事項清單。

    除了像智慧音箱與智慧電視等消費裝置,智慧家庭裝置語音的使用,也顯現相當的潛力。諸如連網門鈴(如 ring.com)等裝置與連網的煙霧偵測器(例如 Nest Protect 煙霧與一氧化碳警報)目前都已上市可供消費者選購,它們結合了語音與視覺的感測器融合功能以及運動檢測。有了連網的煙霧偵測器,裝置在偵測到煙霧或一氧化碳時,可以發出語音警告。

    終端 AI 為強化這些能力提供了全新機會,而且常常結合震動(動作)、視覺與語音控制。例如,增加姿態辨識來控制例如電視等家電,或是把語音控制嵌入白色家電,即是以最低成本強化功能性最直接的方式。

    健康照護

    用來發現醫護資訊的 AI 驅動終端裝置的應用,將為病況的治療與診斷,提供更多的價值。這種資訊可能是資料,也可能是影像、影片以及說出的話,我們可以透過 AI 進行型態與診斷分析。這些資料將引發全新、更有效的治療方法,為整個產業節省成本。受惠於終端 AI 的進展,像 Google Duplex 等語音系統的複雜性將會降低。例如門診預約等勞力密集的工作,也可以轉換成 AI 活動。利用自然語言語音來延伸 AI 的使用,也可以把 AI 用在第一線的病人診斷,然後再由醫師接手提供諮詢。

    其他健康照護實例包括像 Wewalk5 等物件,這是一個供半盲與全盲人員使用的智慧拐杖。它使用感測器來檢測胸口水平以上的物件,並搭配 Google Maps 與 Amazon Alexa 等 app,方便使用者提出問題。

    結論

    由於連網的終端裝置數量越來越多,這個世界也越來越複雜。連接到網際網路的裝置已經超過 300 億個,而微控制器的數量也超過 2,500 億,每年還會增加約 300 億個。越來越多的程序開始進行自動化,不過,把大量資料傳送到雲端涉及的延遲以及邊緣運算的額外費用,意味著許多全新、令人興奮且引人矚目的物聯網使用場景,可能無法開花結果。

    解決這些挑戰的答案,並不是為雲端資料中心持續增添運算力。降低出現在邊緣的延遲雖然會有幫助,但不會解決日益分散的世界的所有挑戰。我們需要把智能應用到基礎架構中。

    儘管為終端裝置增添先進的運算能力在十年前仍不可行,TinyML 技術近來的提升,已經讓位處相當邊緣的裝置 (也就是終端本身)增添智能的機會大大改觀。在終端增加運算與人工智慧能力,可以讓我們在源頭搜集到更多更具關聯性與相關的資訊。隨著裝置與資料的數量持續攀升,在源頭掌握情境化與具關聯性的資料,具有極大的價值,並將開啟全新的使用場景與營收機會。

    終端裝置的機器學習,可以促成全新的終端 AI 世界。新的應用場景正在崛起,甚至跳過傳送大量資料的需求,因而紓解資料傳輸的瓶頸與延遲,並在各種作業環境中創造全新機會。終端 AI 將為我們開啟一個充滿全新機會與應用場景的世界,其中還有很多我們現在想像不到的機會。

    附圖:圖1:從集中式到分散式運算的轉變。
    (資料來源:《The End of Cloud Computing》,by Peter Levine,Andreessen Horowitz)
    圖2:全球上網裝置安裝量。
    (資料來源:Strategy Analytics)
    圖3:深度學習流程。
    圖4:MCU的視覺、震動與語音。
    (資料來源:意法半導體)
    圖5:AI 工具集執行模型轉換,以便在MCU上執行經最佳化的神經網路推論。
    (資料來源:意法半導體)
    圖6:物聯網企業對企業應用的使用-目前與未來。
    (資料來源:Strategy Analytics)
    圖7:促成情境感知的感測器融合。
    (資料來源:恩智浦半導體)

    資料來源:https://www.eettaiwan.com/20210303nt31-the-dawn-of-endpoint-ai-bringing-compute-closer-to-data/?fbclid=IwAR0JTRpNsJUl-DmSNpfIcymGQpkQaUgXixEaczwDpELxGCaCeJpkTyoqUtI

  • 效能監視器記憶體 在 紀老師程式教學網 Facebook 的最讚貼文

    2015-06-09 08:44:01
    有 112 人按讚

    [好站分享] GitHub 上的瘋狂 C++ 相關資源清單:Awesome-C++

    逛國外網站這麼久,很少碰到有資源齊全到讓我倒抽一口涼氣的...這個作者對 C++ 很有愛啊~~

    Awesome-C++,是掛在 GitHub 上的一個 C++ 資源清單。收集了 C++ 相關的函式庫、軟體、書籍、文章...還推薦作者覺得也不錯的其它清單。連結如下:

    https://github.com/fffaraz/awesome-cpp

    一旦點進去,你會被裡面滿滿的超鏈結,把你的腎上腺素濃度打到最高... XD。如果您平常工作與 C++ 相關,您絕對不能錯過這份清單。我簡單列出一下這份清單有什麼:

    (以下文長,是寫給英文苦手的讀者看的。英文沒啥問題的朋友,建議直接看原文即可)

    一、函式庫與框架

    * 標準函式庫(Standard Libraries):
    C++ 原生函式庫、POSIX、ISO、GNU 各家出品的標準函式庫都有。

    * 程式框架(Frameworks)
    「框架」比「函式庫」規格大一點。一般來說,「函式庫」幫你把常用的程式寫好,你只要叫用就好了,是一種幫助你加速完工、但並沒帶來任何新功能的一堆程式碼。「框架」則是替原始 C++ 帶來一些令人驚艷的新功能。不過這種分法,並非絕對的。

    * 人工智慧(Artificial Intelligence, AI)相關框架與函式庫
    想要催得動這一坨東西,得有點 AI 背景。否則你可能不知道函式庫提供給你「深先搜尋(Depth-first Search)」與「廣先搜尋(Width-first Search)」這些函數怎麼讓那堆冷冰冰的硬體多一點智慧。

    * 非同步呼叫所使用的事件佇列(Asynchronous Event Loop)
    一般來說,一個程式呼叫另一個程式,「叫人的」得等「被叫的」把事情做完,才能繼續進行下一步。就像一個經理眼睛盯著新手做事、沒辦法回到辦公桌做自己的事一樣,這種模式叫「同步呼叫(Synchronous Call)」。比較好的作法,是你交代完新手該做什麼,就離開回去做自己的事,等新手做完了,再來報告說「我做完了」,這種模式叫「非同步呼叫(Asynchronous Call)」。不過要能做到「非同步」,「叫人者」與「被叫者」之間,得有「事件(Event)」這個機制,讓兩者互相溝通該做的事,以及是否完工。此處提供的,都是讓 C++ 能達成「非同步」機制的函式庫或框架。

    * 音效(Audio)相關框架或函式庫
    這裡放的,都是讓你的 C++ 能做到讀取音效檔(如:mp3),並用程式碼對該檔進行剪輯、混音...等動作的函式庫或框架。

    * 生物(Biology)相關框架或函式庫
    這邊的函式庫,可以讓您用 C++ 比對兩條 DNA 序列相似度有多高,或者從一大堆不同樣本的 DNA 中,找出哪條 DNA 與哪條可能有親緣關係...等。

    * 命令列(Command Line Interface, CLI)相關框架或函式庫
    用這邊的函式庫,可以讓您在命令列跑出一些令人驚艷的效果。如 NCurses 就是一套能在命令列之下,用文字盡量模擬出下拉式選單、按鈕...圖形界面的感覺。

    * 壓縮(Compression)相關函式庫
    讓您不必瞭解檔案壓縮原理,會叫用相關函數就能做到檔案壓縮。

    * 平行處理(Concurrency)相關函式庫
    讓 C++ 也能輕易做到同時處理多件事情的函式庫。

    * 資料結構相關函式庫(Containers)
    提供資料結構內的 B-Tree 與 Hashmaps 等架構,讓 C++ 輕鬆取用。

    * 加密(Cryptography)相關函式庫
    提供加密解密相關函數。

    * 資料庫(Database)相關函式庫
    讓 C++ 可以用幾道命令,輕鬆接取 MySQL、MongoDB...等知名資料庫內的資料。

    * 除錯、測試、效能(Debug)相關函式庫
    雖然原文只用了「Debug」這樣的簡單字眼,但這一區的函式庫包含「單元測試(Unit Test)」、「效能測試(Benchmark)」、「記憶體用量追蹤(Memory Tracking)」等功能的函數。讓您的程式在還沒跑之前,就接受嚴格檢驗,降低發生錯誤的機會。

    * 遊戲引擎(Game Engine)
    提供一些函數,讓您輕鬆讀入 3D 建模軟體(如:Maya, 3D Studio...)做出來的模型與動畫。並在程式內特定事件(如:碰撞)發生時播放。也提供打光(Shading)、物理函數(如:彈跳、碰撞)...等方便的程式供您取用。這些東西讓您在寫遊戲時,能以更快的效率產出結果。

    * 圖形界面(Graphical User Interface, GUI)
    讓您用 C++ 建立漂亮的視窗、對話框、核取框、下拉式功能表...等圖形界面。

    * 圖形(Graphics)相關函式庫
    這部分多與遊戲引擎搭配,提供 2D 圖形處理或 3D 光跡追蹤(Rendering)等「外觀美化」的函數。讓您的遊戲角色或場景,看起來更栩栩如生。

    * 影像處理(Image Processing)相關函式庫
    包含讀入/繪出各式圖檔(PNG、JPG、GIF...)、光學字元辨識、電腦視覺、讀入/播放各式影片(MP4...)等函數。

    * 國際化(Internationalization)相關函式庫
    讓您用 C++ 寫出來的程式,可以輕易支援各國語言(當然,各國語言要事先請翻譯社先翻好,這邊只是提供語系切換的機制)。

    * 行程間通訊(Inter-Process Communication, IPC)相關函式庫
    兩個跑起來的獨立程式(如:兩個執行檔)想在執行過程中交換資料,稱為「行程間通訊」,簡稱 IPC。IPC 雖然不至於難如登天,不過要做到,手續還是很瑣碎的。這邊的函式庫提供好用函數,讓兩個行程交換資料時,變得比較容易。

    * JSON 支援相關函式庫
    JSON 原文是 JavaScript Object Notation。是一種用「純文字」來表示「資料」的方法。如一筆「李大華、35 歲、手機 0937555666」的資料,用 JSON 表示是這樣的:
    [
    Name: "李大華",
    Age: 35,
    Mobile: "0937555666"
    ]
    之後可以讓這樣的資料,流通於瀏覽器與伺服器之間。而 JSON 函式庫,可以快速幫您分析 JSON 表示的資料,將它還原成您要的格式。

    * 日誌(Logging)支援函式庫
    日誌在「系統稽核」中,是很重要的功能。系統得把「什麼人、等級多高、做了什麼事、何時做的、對哪部分做的、從哪個 IP 過來...」忠實記錄下來。萬一系統出事了,我們就能追查可能是誰搞的。類似「監視器」的功能。這部分的函式庫,可以讓 C++ 輕易做到「日誌」功能,您不用傷腦筋日誌功能該怎麼寫,它已經幫您寫好了。您只要會用就行。

    * 機器學習(Machine Learning)相關函式庫
    提供如「類神經網路」、「電腦視覺」等進階函式庫,讓您的 C++ 程式有少量人類視覺與思考能力(真的很少量,請不用有太高期待)。

    * 數學(Math)相關函式庫
    一些線性代數、矩陣運算...等相關數學函數。

    * 多媒體(Multimedia)相關函式庫
    如:影音串流...等相關函數。

    * 網路(Networking)相關函數
    提供各種低階網路協定相關函數。如:TCP/IP、HTTP、點對點傳輸、非同步通訊、以及一些與 Facebook 橋接的相關函數。

    * 物理模擬(Physics)相關函數
    這部分也可以大量用於遊戲程式設計。主要提供一些函數,用來模擬自然界各種物理現象。如水流、風吹、碰撞、彈跳...等。

    * 機器人控制(Robotics)相關函數
    一堆方便你控制或模擬機器人行為的函數。

    * 科學運算(Scientific Computing)
    一些在科學上比較用得著的數學運算。如工程數學、傅立葉分析...等。

    * 腳本語言控制(Scripting)
    包含一些能讓 C++ 與各種腳本語言(JavaScript、PHP、Perl...)橋接的函數。

    * 序列化控制(Serialization)
    首先解釋一下何謂序列化。序列化可以把程式執行到一半的樣子,如數保存於硬碟中,甚至於可以關機。之後可以把序列化的資料「反序列化」,將它「解凍」還原至記憶體繼續跑,就像當初跑到一半被「冷凍」當下再往下執行一樣。這邊提供許多 C++ 序列化的函式庫。

    * 影片處理(Video)
    可以讀入/播放各種影片檔的函式庫。

    * 虛擬機(Virtual Machines)
    這邊提供一些用 C++ 寫出來的「輕量級」虛擬機。所謂虛擬機,是用軟體模擬出硬碟、處理器、記憶體、螢幕,工程師可以在虛擬機內安裝另一個作業系統,就好像安裝作業系統至真實機器一樣。

    * 網頁應用軟體框架(Web Application Framework)
    集合了一些用 C++ 寫出來的 WWW 伺服器、或開發網頁時用得上的函式庫等。

    * XML
    如果你希望教會你的 C++ 程式「讀懂」一個 XML 檔在講什麼,這邊提供了一堆 XML 解析器(XML Parser),方便您分析從遠方伺服器傳來的 XML 檔到底想表達什麼樣的資料。

    * 其它(Miscellaneous)
    一些無法分類的東西,通通塞在這裡。大部分是一些小型的函式庫或 C++ 與其它語言的橋接軟體。

    二、C++ 相關軟體

    * 編譯器(Compiler)
    各類把 C++ 原始碼編成 0 與 1 機械碼的軟體。

    * 線上編譯器(Online Compiler)
    懶得安裝編譯器的話,現在有一堆線上的編譯器。你上傳原始碼,它會編成機械碼後,丟還個執行檔給你下載。

    * 除錯器(Debugger)
    一些有名的 C++ 除錯器。當你的程式無法執行時,可以靠它找出到底錯在哪裡。

    * 整合式開發環境(Integrated Development Environment, IDE)
    IDE 就是把文字編輯器(Editor)、編譯器(Compiler)、除錯器(Debugger)...等軟體整合成一體的軟體。您可以不離開該環境,就能寫碼、編譯、除錯、執行...。

    * 軟體建構系統(Build Systems)
    簡單說,就是把一些瑣碎動作事先安排好、可以在程式碼修改後,下達一條指令(如:「建構!」),就可全自動一條鞭地從編譯、測試、備份、安裝...一口氣完成的系統。

    * 原始碼靜態分析軟體(Static Code Analysis)
    丟入原始碼,可以幫你找出哪段程式可能發生錯誤,或者可能造成效能低下。也能找出完全沒被叫用到的原始碼,提醒您刪除。甚至於可以把您的程式碼重排成符合特定格式,統一多人寫碼風格時很有用。

    三、其它資源

    * API Design 文件
    * 有用文章(Articles)
    * 推薦書籍(Books)
    * 寫碼風格(Coding Style)
    * 演講(Talks)
    * 影片教學(Videos)
    * 有用網站(Web Sites)
    * 有用部落格(Weblogs)
    * 其它 Awesome C++ 姊妹作(Other Awesome Projects)

    四、其它也很棒的清單(Other Awesome Lists)

    能看到這行字的,給您拍拍手!辛苦了!希望今天分享的內容您會喜歡!也請您不吝按讚鼓勵,或分享給您 Facebook 的親朋好友!

你可能也想看看

搜尋相關網站