當前位置:首頁 » 編程軟體 » googlec編程風格

googlec編程風格

發布時間: 2022-05-30 05:53:37

① Google 在開發中主要使用的編程語言有哪些

這可太多了,google對技術非常開放,使用了很多常用的開放式編程語言。C++、javapython是它的搜索引擎的主要編程語言。現在Go語言是google新產品的主要編程語言,很多在線服務都是Go語言編寫的。針對它旗下的Android操作系統和相關產品採用的是C結合linux系統以及Java語言。

② 為什麼谷歌要執行嚴格的代碼編寫規范

我們在谷歌所做事情中另外一個讓我感到異常有效、有用的制度是嚴格的編碼規范。在到Google工作之前,我一直認為編碼規范沒有什麼用處。我堅信這些規范都是官僚制度下產生的浪費大家的編程時間、影響人們開發效率的東西。我是大錯特錯了。在谷歌,我可以查看任何的代碼,進入所有谷歌的代碼庫,我有權查看它們。事實上,這種許可權是很少人能擁有的。但是,讓我感到驚訝的卻是,如此多的編碼規范—縮進,命名,文件結構,注釋風格—這一切讓我出乎意料的輕松的閱讀任意一段代碼,並輕易的看懂它們。這讓我震驚—因為我以為這些規范是微不足道的東西。它們不可能有這么大的作用—但它們卻起到了這么大的作用。當你發現只通過看程序的基本語法結構就能讀懂一段代碼,這種時間上的節省不能不讓人震撼!反對編碼規范的人很多,下面是一些常見的理由,對於這些理由,我以前是深信不疑。這是浪費時間!我是一個優秀的程序員,我不願意浪費時間干這些愚蠢的事。我的技術很好,我可以寫出清晰的、易於理解的代碼。為什麼我要浪費時間遵守這些愚蠢的規范?答案是:統一是有價值的。就像我前面說的—你看到的任何的一行代碼—不論是由你寫的,還是由你身邊的同事,還是由一個跟你相差11個時區的距離人寫的—它們都有統一的結構,相同的命名規范—這帶來的效果是巨大的。你只需要花這么少的功夫就能看懂一個你不熟悉(或完全未見過)的程序,因為你一見它們就會覺得面熟。我是個藝術家!這種話很滑稽,但它反映了一種常見的抱怨。我們程序員對於自己的編碼風格通常懷有很高的自負。我寫出的的代碼的確能反映出我的一些特質,它是我思考的一種體現。它是我的技能和創造力的印證。如果你強迫我遵守什麼愚蠢的規范,這是在打壓我的創造力。可問題是,你的風格里的重要的部分,它對你的思想和創造力的體現,並不是藏身於這些微不足道的句法形式里。(如果是的話,那麼,你是一個相當糟糕的程序員。)規范事實上可以讓人們可以更容易的看出你的創造力—因為他們看明白了你的作品,人們對你的認識不會因不熟悉的編碼形式而受到干擾。所有人都能穿的鞋不會合任何人的腳!如果你使用的編碼規范並不是為你的項目專門設計的,它對你的項目也許並不是最佳方案。這沒事。同樣,這只是語法:非最優並不表示是不好。對你的項目來說它不是最理想的,但並不能表明它不值得遵守。不錯,對於你的項目,你並沒有從中獲得該有的好處,但對於一個大型公司來說,它帶來的好處是巨大的。除此之外,專門針對某個項目制定編碼規范一般效果會更好。一個項目擁有自己的編碼風格無可厚非。但是,根據我的經驗,在一個大型公司里,你最好有一個統一的編碼規范,特定項目可以擴展自己特定的項目方言和結構。我善長制定編碼規范!這應該是最常見的抱怨類型了。它是其它幾種反對聲音的混合體,但它卻有自身態度的直接表現。有一部分反對者深信,他們是比制定編碼規范的人更好的程序員,俯身屈從這些小學生制定的規范,將會降低代碼的質量。對於此,客氣點說,就是胡扯。純屬傲慢自大,荒唐可笑。事實上他們的意思就是,沒有人配得上給他們制定規范,對他們的代碼的任何改動都是一種破壞。如果參照任何一種合理的編碼規范,你都不能寫出合格的代碼,那隻能說你是個爛程序員。當你按照某種編碼規范進行編程時,必然會有某些地方讓你搖頭不爽。肯定會在某些地方你的編碼風格會優於這些規范。但是,這不重要。在某些地方,編碼規范也有優於你的編程風格的時候。但是,這也不重要。只要這規范不是完全的不可理喻,在程序的可理解性上得到的好處會大大的補償你的損失。但是,如果編碼規范真的是完全不可理喻呢?如果是這樣,那就麻煩了:你被糟蹋了。但這並不是因為這荒謬的編碼規范。這是因為你在跟一群蠢貨一起工作。想通過把編碼規范制定的足夠荒謬來阻止一個優秀的程序員寫出優秀的代碼,這需要努力。這需要一個執著的、冷靜的、進了水的大腦。如果這群蠢貨能強行頒布不可用的編碼規范,那他們就能幹出其它很多傻事情。如果你為這群蠢貨幹活,你的確被糟蹋了—不論你干什麼、有沒有規范。(我並不是說罕有公司被一群蠢貨管理;事實很不幸,我們這個世界從來就不缺蠢貨,而且很多蠢貨都擁有自己的公司。

③ 如何成為Google軟體工程師

招聘的流程?在線申請簡歷篩選電話訪談現場面試Offer發放面試包括哪些內容?簡短介紹介紹你的專長或進行技術評估提出你的問題面試沒有益智類問題(因為益智問題並不能反映你的編程能力)如何對申請人的工程技能進行評估?我們會根據以下四個方面來進行評估:編程語言的語法,關鍵庫函數,編程風格,對程序性能的考慮等演算法和數據結構分析能力合理設計如何准備面試?復習基礎知識復習演算法與數據結構練習寫代碼 在白板上或在紙上練習不要使用偽代碼你可以選擇你最擅長的編程語言認識Google員工?
和他聊聊他在Google的經歷。讓他成為你的推薦人,或者讓招聘者知道誰可以成為你的推薦人。在實際面試過程中:我們希望了解你解決問題的能力我們會向你提出一個有深度的問題,我們想了解你對復雜問題的解決方法不一定要得到正確答案,你的思考過程比正確答案更加重要我是在校生,離畢業還有兩三年的時間,應該怎麼努力?打好專業基礎學習編程語言:C、C++、Java、Perl、Python參加課堂之外的活動參加計算機俱樂部或社團參加編程競賽爭取盡可能多的實習生機會參與開源項目(不要忘記參加Google編程之夏-Google Summer of Code)博士生的面試會有所不同么?我們會根據每個人的情況安排有針對性的面試面試內容包括標准演算法,設計,編碼能力論文討論所有的面試官都具有博士學位Google軟體工程師如是說: 問:在Google工作,最擔心的一點是什麼? 答:公司的零食太多了,在Google工作要防止長胖 問:在Google工作,最輕松的事情是什麼? 答:坐在桌子上跟老闆說話 問:在Google上班,著裝有什麼要求? 答:穿總比不穿好。 問:Google工程師幾點上班? 答:Google工程師的工作比較自由,沒有固定考勤,允許Work from home。但由於需要和其他辦公室的同事交流,有可能一大清早就爬起來開會,或者一直工作到深夜。 問:在Google工作,最讓你欣喜的事情是什麼? 答:在Google工作,有機會與許多大牛共事,一起交流技術。 問:出差的機會多嗎? 答:取決於項目安排,可能需要去美國東西海岸、倫敦、蘇黎世、悉尼、東京等地出差 問:怎麼才能獲得上萬台計算機來做大規模並行計算實驗? 答:到Google工作,你隨時可以做到。 問:在Google可以做開源軟體嗎? 答:可以,很多著名的開源軟體程序員加入了Google,包括Google中國也有很多著名的開源軟體程序員 問:你們的夢想是什麼? 答:我們的夢想是:技術改變世界,do good things that matter in the worldGoogle 非軟體工程師如是說: 問:聽說在 Google 吃的很好,如果胖了怎麼辦? 答:公司有健身房,瑜伽房,吃多了下去跑兩圈。 問:Google 員工有保險么? 答:有,很好的員工保險,還包括員工家屬呢。 問:Google員工有帶薪假期么? 答:員工在入職的第一年有15天的帶薪假期。在Google工作每多一年,帶薪假期就多一天。所以,如果你在Google 工作滿235年,就可以全年休假啦! 問: Google對於非技術性職位的要求是什麼? 答:用戶至上,無論是對終端客戶還是內部用戶,都將是最重要的標准之一。 問:面試Google非技術性職位有什麼技巧? 答:陳述事實,善用數據,如果你經驗足夠豐富!你懂的。:) 問:Google的銷售工作壓力大嗎? 答:我們歡迎敢於接受挑戰的人加入銷售團隊,按摩椅,健身房,瑜伽室是你最好的減壓夥伴。

④ 為什麼google編程風格指南設置縮進為2個空格

使代碼易於管理的方法之一是增強代碼一致性,讓別人可以讀懂你的代碼是很重要的,保持統一編程風格意味著可以輕松根據「模式匹配」規則推斷各種符號的含義。創建通用的、必需的習慣用語和模式可以使代碼更加容易理解,在某些情況下改變一些編程風格可能會是好的選擇,但我們還是應該遵循一致性原則,盡量不這樣去做。
本指南的另一個觀點是C++特性的臃腫。C++是一門包含大量高級特性的巨型語言,某些情況下,我們會限制甚至禁止使用某些特性使代碼簡化,避免可能導致的各種問題,指南中列舉了這類特性,並解釋說為什麼這些特性是被限制使用的。
由Google開發的開源項目將遵照本指南約定。
注意:本指南並非C++教程,我們假定讀者已經對C++非常熟悉。

⑤ 谷歌瀏覽器是用什麼語言開發的

使用的C++語言

C++是在C語言的基礎上開發的一種通用編程語言,應用廣泛。C++支持多種編程範式 --面向對象編程、泛型編程和過程化編程。最新正式標准C++14於2014年8月18日公布。 其編程領域眾廣,常用於系統開發,引擎開發等應用領域,是至今為止最受廣大程序員受用的最強大編程語言之一,支持類:類、封裝、重載等特性!

⑥ google c++關於頭文件包含順序的觀點解決了哪些問題

《Google C++ 編程風格指南》中說明頭文件的包含順序是這樣的:
Names and Order of Includes
link ▽Use standard order for readability and to avoid hidden dependencies:C library, C++ library, other libraries' .h, your project's .h.
All of a project's header files should belisted as descendants of the project's source directory without use of UNIXdirectory shortcuts . (the current directory) or .. (the parent directory). Forexample, google-awesome-project/src/base/logging.h should be included as
#include "base/logging.h"
In dir/foo.cc or dir/foo_test.cc, whosemain purpose is to implement or test the stuff in dir2/foo2.h, order yourincludes as follows:
dir2/foo2.h (preferred location — seedetails below).
C system files.
C++ system files.
Other libraries' .h files.
Your project's .h files.
The preferred ordering reces hiddendependencies. We want every header file to be compilable on its own. Theeasiest way to achieve this is to make sure that every one of them is the first.h file #included in some .cc.
dir/foo.cc and dir2/foo2.h are often in thesame directory (e.g. base/basictypes_test.cc and base/basictypes.h), but can bein different directories too.
Within each section it is nice to order theincludes alphabetically.
For example, the includes ingoogle-awesome-project/src/foo/internal/fooserver.cc might look like this:
<span style="font-size:16px;">
#include "foo/public/fooserver.h" // Preferred location.
#include <sys/types.h>
#include <unistd.h>
#include <hash_map>
#include <vector>
#include "base/basictypes.h"
#include"base/commandlineflags.h"
#include "foo/public/bar.h"
</span>

⑦ Google對C++的影響有多大

習C++,未讓充滿期待

C++門前景軟體編程語言C++C語言基礎發種通用編程語言應用廣泛C++支持種編程範式 --面向象編程、泛型編程程化編程新式標准C++14於20148月18公布其編程領域眾廣用於系統發引擎發等應用領域至今止受廣程序員受用強編程語言,支持類:類、封裝、重載等特點廢少說C++,事非工作優秀C++工作元工資往往秒殺Java等程序員

二 習C++其實簡單沒想難

編程塌糊塗能力行態行總覺編程C++難遇點問題各種糾結助或者喜歡習C++夥伴非努力買面各種書籍網看各種視頻教程稅半斤八兩能自說我曾經努力我能說呵呵其實些習都太落早淘汰種習習效率非低往往戰斗沒力堅持

讓我給家指點迷津吧現習C++面先進習看互式直播視頻教通電腦現場聽課問題場問師許 塊明白課看視頻放才高習種習模式誰能做我想加群前面組:四三七位於間位置組:五零八組:七九四按照順序組合起能發現習新陸需要都需要付毛錢需要

三 C++發展歷史簡單介紹

C語言所要起名C主要參考候門叫B語言設計者認C語言B語言進步所起名C語言;B語言並前A語言B語言作者紀念妻妻第字母B; C語言發展頂峰刻現版本叫C with ClassC++早版本C語言增加class關鍵字類候版本C都希望C語言增加類概念;C標准委員決定版本C起新名字候徵集種名字採納其意見C語言++運算符體現C語言進步所叫C++立C++標准委員;

美AT&T貝爾實驗室本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)博士20世紀80代初期發明並實現C++(初種語言稱作C with Classes)始C++作C語言增強版現給C語言增加類始斷增加新特性虛函數(virtual function)、運算符重載(operator overloading)、重繼承(multiple inheritance)、模板(template)、異(exception)、RTTI、名字空間(name space)逐漸加入標准1998際標准組織(ISO)頒布C++程序設計語言際標准ISO/IEC 1488-1998C++具際標准編程語言通稱作ANSI/ISO C++1998C++標准委員立第每5視實際需要更新標准標准更新2009目前我般稱該標准C++0x遺憾由於C++語言於復雜及經歷演變直現(2009)Visual C++ 2010 CTP發環境編譯器完全符合標准

另外目前習C++言認門獨立語言;並依賴C語言我完全C語言直接習C++根據《C++編程思想》(Thinking in C++)書所評述C++與C效率往往相差負5%間所認數場合C++ 完全取代C語言(我單片機等需要謹慎利用空間、直接操作硬體要使用C語言) [編輯本段]【語言】根據Effective C++第三版第條款描述現C++由四語言組:

1、C語言C++支持C語言幾乎全部功能語與C語言僅極微妙差別(括弧表達式左右值性具體請參考C++標准文獻)

2、面向象C++C++首先作門面向象語言聞名特點再詳述

3、泛型編程語言C++強(容易失控)模板功能使能編譯期完許工作提高運行期效率

4、STL(C++標准模板庫)隨著STL斷發展已經逐漸C++程序設計或缺部其效率能比般naive代碼低些其安全性與規范性使受歡迎 [編輯本段]【語言發展】

C++語言發展概三階段:

第階段80代1995階段C++語言基本傳統類型面向象語言並且憑借著接近C語言效率工業界使用發語言占據相份額;

第二階段19952000階段由於標准模板庫(STL)Boost等程序庫現泛型程序設計C++占據越越比重性同由於Java、C#等語言現硬體價格規模降C++受定沖擊;

第三階段2000至今由於Loki、MPL等程序庫代表產式編程模板元編程現C++現發展歷史新高峰些新技術現及原技術融合使C++已經今主流程序設計語言復雜員

【C++入門】C++種語言僅僅語、特性、標准類庫已經門非高深課程所始習候必須先要打基礎市面Visual C++書雖其能花1-2章介紹C++基本特性絕讓入門初者習C++應該選擇針C++語言本身書籍能針Visual C++、MFC或者Windows API
習C++應該由易至難循序漸進前經說習C++前應該習C語言事實必須C++C語言雖關系仍兩種同語言習C++前習其編程語言處使習C++速度更快畢竟計算機語言概念都相通於零基礎初者說則應該靜要急躁要C++高手容易必須要花努力

入門教材選擇主要看習者自身情況已經習高級語言經歷推薦使用譚浩強《C++程序設計》注意04版06版本書閹割版面向象雖說CC++相似前面已經說CC++應該作兩種語言習所06本內容稍微欠缺點譚浩強04版本書內容比較規整條理清晰其高級語言基礎估計半能C++概況解譚浩強師書已經全各高等院校教科書比較受認

零基礎始C++推薦使用潘嘉傑《易C++》本書2008新書聽說讀書候寫本書網載免費電版本書主要針初者講比較趣比較提起習興趣所沒基礎初者選本書錯想要快高手能看本書夠至於看完入門書應該看些高層書比The C++ Programming LanguageC++ Primer同向STL、MFC、API等各向發展別語言興趣能看看C#JavaC++語概念都類似 [編輯本段]【C++設計原則】?? C++設計靜態類型、C同高效且移植用途程序設計語言
?? C++設計直接廣泛支援種程序設計風格(程序化程序設計、資料抽象化、面向象程序設計、泛型程序設計)
?? C++設計給程序設計者更選擇即使能導致程序設計者選擇錯誤
?? C++設計盡能與C兼容籍提供CC++平滑渡
?? C++避免平台限定或沒普遍用途特性
?? C++使用帶額外銷特性
?? C++設計需復雜程序設計環境
於保證語言簡潔運行高效等面考慮C++特性都庫(STL)或其形式提供沒直接添加語言本身關於類題C++父《C++語言設計演化》 做詳盡陳述 [編輯本段]【C++Hello World程序】使用兼容C89標准(稱ANSI C)編譯器面程序顯示Hello, world!結束運行:
(事實並符合98標准[ISO C++]C++程序且數編譯器程序能運行若要比較舊編譯器編譯該程序應iostream改iostream.h)
#include
int main()
{
printf("Hello, world!\n");
return 0;
}
使用兼容C++98標准(ISO/IEC 14882-1998)編譯器面程序:
#include
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
使用兼容C++ STL編譯器應:
#include
using namespace std;
int main()
{
cout<<"Hello,world!"<<endl;
return 0;
}
根據ISO C++規定main函數形式能
int main(void)
{
...
}

int main(int argc,char * argv[])
{
...
}
盡管Visual C++ 2003前Microsoft Studio編譯器
void main()
{
...
}
支持並確標准寫使程序代碼喪失跨平台特性 [編輯本段]【C++程序員數量】析機構EvansData定期發員展調查其調查結與Stroustrup提C++擴張說相違背EvansData數據顯示C++工具發員整發界所佔比例由1998春76%降至2004秋46%
Forrester新調查顯示C++、微軟VisualBasicJava眾公司產品體系首選語言100家公司調查顯示C/C++、VisualBasicJava產品體系使用比例別59%、61%66%

傳統認C++相於目前些新潮語言Java、C#優勢於程序運行性能種觀念並完全深信點說明並沒充解理解C++某某語言同持種觀念通受某種誤導(罪魁禍首些財氣粗公司)於些公司言隱藏C++同某某語言間核差別現數程序員太關差別性能加強化隨著CPU性能快速提升性能問題已所關叫李代桃僵涉世深程序員相信於公司陰謀逞

般認使用Java或C#發本比C++低能夠充析C++些語言差別發現句立條件條件:軟體規模復雜度都比較超3萬行效代碼(包括器產代碼)句基本能立否則隨著代碼量復雜度增加C++優勢越越明顯造種差別C++軟體工程性JavaC#談軟體工程候C++實際已經悄悄軟體工程性提升前所未高度點數忽視並且公司竭力掩蓋
語言軟體工程壞依賴於語言抽象能力面向程面向象語言抽象能力質飛躍實踐發現面向象解決所軟體工程問題於精英逐步引入、並拓展泛型編程解決更高層軟體工程問題(實際面向象泛型編程起源都追溯1967由於泛型編程更抽象所應用遠遠落於面向象) [編輯本段]【C++語言應用】哪些程序用C++寫:
主流3種操作系統Windows,Linux,Unix,內核都用C語言匯編寫層高級特性用C++寫

C++父Bjarne Stroustrup列舉C++應用:
Amazon.com:Software for large-scale e-commerce
Apple: OS X is written in a mix of language, but a few important parts are C++. The two most interesting are
AT&T:The largest US telecommunications provider.
o provisioning systems
o systems for rapid network recovery after failure
Autodesk: A large number of major number of application in the CAD domain
Ericsson:o server platform.
o TDMA-CDMA HLR
o GSM-TDMA-CDMA mobility gateway
Google: web search engine, etc
HP: Here is a tiny fraction of HP's C++ apps:
o C, C++, Fortran90 compilers, and linker for the new HP IA64 platform (these add to more than 1 million lines of C++ code).
IBM: o OS/400.
o K42: a high performance, open source, general-purpose operating system kernel for cache-coherent multiprocessors.
Intel:o Vtune performace analysis software
o compilers and optimizers
o lots of chip design and manufacturing software
JPL (Jet Propulsion Lab, NASA): Mars rover autonomous driving system (incl. scene analysis and route planning). C++ on Mars! Also lots of supporting software "on the ground" (i.e. Earth).
Microsoft:o Windows XP
o Windows NT (NT4 and 2000)
o Windows 9x (95, 98, Me)
o Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)
o Internet Explorer (including Outlook Express)
o Visual Studio
o SQL
Mozilla: Firefox browser and Thunderbird mail client (open source)
MySQL: MySQL Server (about 250,000 lines of C++) and MySQL Cluster. Arguably the world's most popular open source database
Nokia: o Mobile Communications radio-station/internet bridges: FlexiGGSN (Gateway GPRS Support Node) and FlexiSGSN (Server GPRS Support Node).
o MSC/HLR
Sun: o The HotSpot Java Virtual Machine is written in C++
Symbian OS: rationale: "[...] using C++ for all system code, from the kernel upwards." This is one of the most widespread OS's for cellular phones
KDE from linux is written in C++.
telephone systems: I think it would be almost easier to list the systems which aren't written in C++

⑧ 列出《google c++ 編程風格指南》中的觀點,主要解決什麼問題

編程風格主要用於提高可讀性, 其他優點多數都基於此特性延伸而來.

⑨ golang go是函數式編程語言嗎

我們這個世界真的需要另外一種C語言風格的編程語言嗎?很顯然,谷歌很早就這么認為了,在 2009 年,它借用雷蒙斯樂隊的歌「Hey!Ho!Let』s Go」,正式推出了 Go 語言。現在 Go 語言開發團隊已經開發出了這種語言的第一個穩定版本,他們稱之為 Go 1,他們將這種語言推向世界,希望人們用這種語言「開發出健壯的軟體產品和作品。」那麼,現在人們對這種語言的使用情況又是如何呢?讓我們先回顧一下,什麼是 Go 語言,是什麼促使谷歌決定推出這樣一種語言?按 Go 語言的「常見問題」里的說法,自從那個「重要的系統級編程語言」誕生距今已超過十幾年了,這段時間計算機世界已經發生了很大的變化。谷歌的才人們對目前現有的各種語言深感失望,他們必須要在「快速的編譯、快速的執行或簡單編程」之間做出選擇。「沒有一種主流的編程語言,例如C,C++,Java,Python 等,能提供谷歌人想要的全部特徵。於是,谷歌的工程師從 2007 年起開始開發 Go 語言。「常見問題」里這樣說:Go 語言在基本語法上」基本上屬於C語言家族「,但它從 Pascal 語系吸收了」大量的理念「,還有一些思想是來自其它的語言。但對於程序員來說,應該把它當成一種全新的語言,一種以」讓程序員更有效率,讓編程更有效率,至少是讓我們更有效率並且使編程更有樂趣「的理念為設計目標的編程語言。Go 語言擅長做什麼…?那麼,Go 語言擅長做什麼?根據谷歌著名的軟體工程師——Go 語言的設計人之一——Rob Pike 的說法,它是用來開發」大型軟體「的。Pike 說 Go 語言適合於」很多程序員一起開發的大型軟體,並且開發周期較長,支持雲計算的網路服務:簡言之,就是服務端軟體。Go 語言能夠讓程序員快速開發,並且在軟體不斷的增長過程中,它能讓程序員更容易地進行維護和修改。它融合了傳統編譯型語言的高效性和腳本語言的易用性和富於表達性。「(作為原貝爾實驗室 Unix 開發小組成員,Pike 對系統軟體有相當的認識。)但對於其它類型的軟體,Go 語言也一樣的好用。例如,我在 Google+ 上詢問了 Go 語言的使用者,得到了 Douglas Fils 的回復,他正在拿各種語言做實驗。Fils 說他現在有時會開發一些 Web 應用程序,大多數都是在 Java 虛擬機(JVM)平台上。「所以 Java 自然是最常用的。我最近開始嘗試更多的語言,例如 Scala 和 Groovy。我用 Groovy 語言已經開發了不少的東西,而且剛剛完成了一個 Groovy/Grails 語言上的大型項目。我還研究了一下 Ruby on Rails/Python (Python 框架),並用它們做了一些東西。」他說他用早期版本的 Go 語言開發了一個 Web 界面來處理數據資源。但很不幸。「當時的 Go 的程序庫和語法使得開發起來很困難。我還嘗試了 node.js,而且,到了一月份,我的精力完全轉向了 node.js.」Node.js,Fils 說,很流行,「雖然我很喜歡它,但它的單線程事件循環機制和非阻塞的編程模式讓我不太滿意。還有,所有的東西都要用 Javascript 的回調函數,我不喜歡這樣。」很顯然,他不是一個 JavaScript 的粉絲。Go 語言的語法和結構,從另一方面講,「還是很簡潔的。」當Go 語言的語法和結構趨於穩定,並發布了 Go 1 時,他覺得應該轉回來,重寫他的 Go 語言程序。這回,他想起來了當初為什麼想用 Go 來開發。關於Go 語言的爭論Fils 說,在 Java 里,很多東西都需要有一定的模板套路,這是很討厭。他說 Scala 和 groovy 要好一些,但仍然是個問題。Go 語言給人的感覺像一個動態的類型化語言,Fils 說,但 Go 語言里靜態類型特徵並不像 Java 里那樣明顯。Go 語言的垃圾收集管理,比 JVM 要好的多。跟 Groovy 這樣的動態語言比起來尤其能看出這點。Fils 在評論中說 Go 語言的速度比其它語言快很多倍。它運行速度快但不影響負載量。它編譯所需的時間很短,他在開發時能邊開發邊編譯,就像動態語言那樣迅速。最後,他說使用 Go 語言要比使用 Node.js,Java 或以 Java 為基礎的語言,Ruby on Rails 等語言要有趣的多。在開發 JVM 平台上的應用時,我總感覺自己是一個系統管理員,而不是一個開發者。我要修改堆空間,我要研究負載均衡或內存問題或其它的資源管理問題。而使用 Go 語言,我不需要考慮這些。我開發,編譯,測試,運行,部署,非常的享受。請注意,並不是所有的人都喜歡 Go 語言。你可以看一看 Shaneal Manek 的關於 Go 語言的垃圾收集系統以及腳本語言和編譯型語言之間比較的評論。Go 語言能走向主流嗎?你的期望是什麼?按照 RedMonk』s Stephen O』Grady 的說法,對於 Go 語言來說現在還非常年輕。通常,程序員會分成兩個陣營:要麼歡迎底層語言和腳本型/垃圾收集器型語言的融合,要麼是反對這樣做。對於後者,毫無意外的,他們是C語言的堅定擁護者。圍繞著 Go 語言有很多的爭論,這不令人吃驚,任何一種語言都是這樣。而令人吃驚的是目前 Go 語言在程序員中獲得了相當的吸引力。O』Grady 二月份在 RedMonk 編程語言分級中把 Go 語言放入了第二梯隊。但是,他說,考慮一下 Go 語言是如此的年輕,「即使是目前這種成績也是讓人相當的印象深刻了。」谷歌已經發布了 Go 語言的穩定版本,並且在 Google App Engine 支持部署這種語言的應用,這將給 Go 語言帶來更多的吸引力。Go 語言能否成為一種「主流」語言,這需要由時間來判定。不過,看起來除谷歌之外還有很多公司對這種語言也很感興趣,比如 Engine Yard 等公司。那些對目前的現存的語言不太滿意的程序員大概對 Go 語言都在拭目以待。如果你在使用 Go 語言或之前簡單涉略過它,你需要注意,Go 1 版引入了不少的變化。然而從 Go 1 版開始,Go 語言的變化將會遵循它的規格說明書進行。根據 Go 語言的開發人員的透露,「也許在某個時間,我們會推出 Go 2 的規范,但在此之前,用 Go 語言編寫的程序在今後的 Go 1 版本(Go 1.1, Go 1.2 等)上都能正確的運行。」你用Go 語言開發過什麼項目嗎?

⑩ 為什麼C++是Google 大部分開源項目的主要編程語言

Google的C++開源代碼項目
v8 - V8 JavaScript Engine
V8 是 Google 的開源 JavaScript 引擎。
V8 採用 C++ 編寫,可在谷歌瀏覽器(來自 Google 的開源瀏覽器)中使用。
V8 根據 ECMA-262 第三版中的說明使用 ECMAScript,並在使用 IA-32 或 ARM 處理器的 Windows XP 和 Vista、Mac OS X 10.5 (Leopard) 以及 Linux 系統中運行。
V8 可以獨立運行,也可以嵌入任何 C++ 應用程序中。

nativeclient - Native code for web apps
Native Client是一個在Web應用程序中運行本地代碼(目前只支持x86架構)的開源的研究性技術,提供更好的「富客戶端」用戶體驗。它允許網路開發者編寫更強大的Web程序,這些程序直接通過系統運行而不用通過瀏覽器來進行,據Google稱,它到最後將允許網路開發者開發和桌面軟體一樣的的web程序,這些程序將帶來更快的速度。Native Client類似於微軟的ActiveX技術,它還能在Linux和Mac OS X下運行。目前它尚未支持IE,僅支持Google Chrome, Firefox, Safari 和Opera。

tesseract-ocr - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google.
OCR(Optical Character Recognition):光學字元識別,是指對圖片文件中的文字進行分析識別,獲取的過程。
Tesseract:開源的OCR識別引擎,初期Tesseract引擎由HP實驗室研發,後來貢獻給了開源軟體業,後經由Google進行改進,消除bug,優化,重新發布。當前版本為3.01.

google-glog - Logging library for C++
Google glog是一個基於程序級記錄日誌信息的c++庫,編程使用方式與c++的stream操作類似,例:
LOG(INFO) << "Found " << num_cookies << " cookies";

double-conversion - Binary-decimal and decimal-binary routines for IEEE doubles.
從V8引擎中抽出的有關數值計算相關的代碼,包括大數計算,數值到字元串轉換等

googletest - Google C++ Testing Framework
gtest測試框架[1]是在不同平台上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)為編寫C++測試而生成的。它是基於xUnit架構的測試框架,支持自動發現測試,豐富的斷言集,用戶定義的斷言,death測試,致命與非致命的失敗,類型參數化測試,各類運行測試的選項和XML的測試報告。

googlemock - Google C++ Mocking Framework
googlemockmock技術,在c++單元測試可以隨意修改函數行為的技術。
googlemock是google基於gtest開發的mock框架,適用於c++單元測試。

libphonenumber - Google's phone number handling library, powering Android and more
一個專門用於處理電話號碼的庫

google-diff-match-patch - Diff, Match and Patch libraries for Plain Text
google-diff-match-patch這個類庫提供了強大的演算法用於純文本內容的差異比較,匹配,打補丁,實現同步純文本所需要執行一些操作。支持多種語言包括:Java、JavaScript、C++、C#、Objective C、Lua和Python。

libkml - a KML library written in C++ with bindings to other languages
libKML是解析,生成和操作KML的庫。使用OGC KML2.2標准。
KML,是 Keyhole 標記語言(Keyhole Markup Language)的縮寫,是一種採用 XML 語法與格式的語言,用於描述和保存地理信息(如點、線、圖像、多邊形和模型等),可以被 Google Earth 和 Google Maps 識別並顯示。您可以使用 KML 來與其他 Google Earth 或 Google Maps 用戶分享地標與信息。當然,您也可以從 Google Earth 社區 等相關網站獲得有趣的 KML 文件。Google Earth 和 Google Maps 處理 KML 文件的方式與網頁瀏覽器處理 HTML 和 XML 文件的方式類似。像 HTML 一樣,KML 使用包含名稱、屬性的標簽(tag)來確定顯示方式。因此,您可將 Google Earth 和 Google Maps 視為 KML 文件瀏覽器。單擊此處可獲得更多信息。

gdata-cpp-util - Google Data APIs C++ utility library
一個Google Data APIs 的工具庫,可以GET/POST/PUT/DELETE

lutok - Lightweight C++ API for Lua
是一個 Lua 的 C++ wrapper
Lua 是一個小巧的腳本語言。是巴西里約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)里的一個研究小組,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所組成並於1993年開發。 其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定製功能。Lua由標准C編寫而成,幾乎在所有操作系統和平台上都可以編譯,運行。Lua並沒有提供強大的庫,這是由它的定位決定的。所以Lua不適合作為開發獨立應用程序的語言。Lua 有一個同時進行的JIT項目,提供在特定平台上的即時編譯功能。

dcs-bwt-compressor - Data compressor program and library
dcsbwt是一個基於Burrower-Wheeler變換的數據壓縮程序庫

treetree - generic n-ary trees for C++
TreeTree (http://code.google.com/p/treetree/)是一個只包含頭文件的 C++ Library。它實現了一個通用的 樹形結構容器類(遵守 STL約定),並且實現了 operator >> 和 operator <<。
它的底層包含一個雙向鏈表。在前項指針和後項指針以外,每個樹節點還包含第三個指針--指向所有子節點的列表。這個實現高效,並且 API 非常清晰。TreeTree 可以表達任何使用Lisp的S表達式能表達的東西(例如推理樹(inference trees, programs)等)。
可以使用前序和後序遍歷,只遍歷某個節點的子節點,或者只是在葉子節點遍歷。示例的選項還包含遍歷子樹(如f(g(x,y),z) 前序遍歷,是f(g(x,y),z), g(x,y),x,y和z.

ctemplate - Powerful but simple template language for C++
ctemplate (Google-ctemplate)的設計哲學是輕量級,快速,且邏輯和界面分離,因此和ClearSilver和Teng是有一些差異的。比如Ctemplate就沒有模板函數,沒有條件判斷和循環語句(當然,它可以通過變通的方式來實現)。 ctemplate大體上分為兩個部分,一部分是模板,另一部分是數據字典。模板定義了界面展現的形式(V),數據字典就是填充模板的數據(M),你自己寫業務邏輯去控制界面展現(C),典型的MVC模型。

sparsehash - An extremely memory-efficient hash_map implementation
Google Sparse Hash 是 Google 一個很節省內存的 hash map 實現

gflags - Commandline flags mole for C++
Google GFlags 是一個命令行標記的處理庫,它可以替代「getopt()」,其內置對C++的支持比如string。

protobuf - Protocol Buffers - Google's data interchange format
Google Protocol Buffer 是一個平台無關、語言無關的結構化數據的序列化與反序列化工具。
protocol buffer,可以用來在跨進程、跨機器,不同操作系統,不同編程語言之間進行數據交換。類似於微軟的COM IDL或者XML,但是解析速度更快,需要傳輸位元組數更少。(c+
+, java, python)

gperftools - Fast, multi-threaded malloc() and nifty performance analysis tools
TCMalloc,heap檢測,是一個google用於性能檢測的工具。(c++)

google-breakpad - Crash reporting

breakpad,一個項目的開始需要做一些什麼樣的基礎設施,crash mp和運行logging毫無疑問都是應該有的,這個項目就是負責在crash的時候收集信息,發出crash mp報告的。

熱點內容
英雄聯盟技能腳本 發布:2024-05-17 14:59:41 瀏覽:444
全名k歌安卓手機裡面怎麼錄屏 發布:2024-05-17 14:40:07 瀏覽:180
常用資料庫介紹 發布:2024-05-17 14:31:38 瀏覽:504
中孚存儲介質信息消除工具 發布:2024-05-17 14:31:33 瀏覽:589
伺服器訪問ip如何調轉主頁 發布:2024-05-17 14:30:33 瀏覽:789
好玩的解壓化妝小游戲 發布:2024-05-17 14:10:57 瀏覽:127
交通銀行怎麼登陸不了密碼 發布:2024-05-17 13:54:48 瀏覽:543
安卓如何自動連接無線 發布:2024-05-17 13:53:51 瀏覽:262
python的urlparse 發布:2024-05-17 13:44:20 瀏覽:769
linux命令全稱 發布:2024-05-17 12:07:54 瀏覽:110