日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
為什么 BIND 10 要用C++和Python來寫

這篇博文是對(duì)來自Twitter的這個(gè)問題的答復(fù):

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比橫峰網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式橫峰網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋橫峰地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

@nodakai: 為什么BIND10非要用C++編寫?? 我認(rèn)為從這個(gè)不幸的事件中,托管語言的支持者們有許多需要學(xué)習(xí)了解的地方

當(dāng)我開始進(jìn)行BIND 10的項(xiàng)目工作時(shí),***已經(jīng)做的決定就是要使用哪種編程語言,恰逢預(yù)料之中的關(guān)于自行車棚的那次討論之后。 那時(shí)最重要的問題是要讓項(xiàng)目繼續(xù)進(jìn)行,而不是去重啟一場(chǎng)可能永無休止的爭(zhēng)論,一直討論到底要使用哪種(或哪些)編程。

話說到這了,我對(duì)所選語言感到非常滿意。實(shí)際上,如果開頭就要做這個(gè)決定的人是我,我選擇的也是同樣這些語言。

BIND 9 是用C語言編寫的。在它設(shè)計(jì)和編寫之時(shí) —— 在20世紀(jì)末 —— 這真是一個(gè)***合乎邏輯的選擇。C語言在閱讀和編寫方面相對(duì)簡(jiǎn)單,很多平臺(tái)都支持它,并且還能生成運(yùn)行速度飛快的代碼。 此外,C缺乏能夠支持軟件工程的語言特性,而且完全不安全。

于是,當(dāng)ISC開始正式考慮BIND 10時(shí) ——大約是2006年左右 —— 就提出了新項(xiàng)目要使用哪種語言的問題。

***個(gè)很顯然的問題是,“為什么不用C?” 下面給出部分答案:

·C中的字符串操作實(shí)在是個(gè)乏味的苦差事

·C缺乏很好的內(nèi)存管理機(jī)制

·錯(cuò)誤處理有隨意性且難弄

·封裝和其它面向?qū)ο蟮奶匦灾荒芡ㄟ^模仿才能實(shí)現(xiàn)

大家都一致認(rèn)為,我們可以做得更好。問題是“怎樣才能準(zhǔn)確的做到這一點(diǎn)?”

要選擇一門新的語言,當(dāng)然要滿足一些要求:

·該語言必須處于相對(duì)主流的位置。

Wikipedia上關(guān)于編程語言的頁面 中列出了600多種語言,而且還沒有列完。然而,BIND 10有一個(gè)目標(biāo)是,要讓大家很簡(jiǎn)單就能上手。盡管使用類似Eiffel或Prolog的這類語言后,因?yàn)樗鼈儽容^新奇所以有可能會(huì)吸引一些開發(fā)者,但對(duì)于大多數(shù)程序員來說卻是個(gè)難以逾越的障礙。還有第二個(gè)理由,ISC要保證,無論選什么語言都必須能夠找到熟練的開發(fā)者。

·該語言必須能夠解決C語言中的絕大多數(shù)問題。

理想情況下,這意味著,該語言必須能優(yōu)雅的處理字符串、內(nèi)存垃圾回收,異常處理,并且還是面向?qū)ο蟮摹?/p>

·該語言在CPU密集型運(yùn)算方面速度要非??臁?/p>

現(xiàn)代的DNS服務(wù)器很大程度上是屬于計(jì)算密集型的,無論是在有授權(quán)還是在遞歸解析的情況下都是這樣。DNS服務(wù)器要使用特定的數(shù)據(jù)結(jié)構(gòu)和算法,所以我們無法依賴用C或者C++編寫的底層庫。這個(gè)要求基本上排除了使用任何解釋性語言的可能性。

我們最終選擇的方式是混合使用兩種編程語言:

Python

只要有可能, 我們都盡量使用Python。Python是一種非常流行的語言, 通常在大多數(shù)調(diào)查中都是嘴流行的腳本語言(可能要除PHP之外)。它具有我們要尋找的所有特性。。。就是在性能方面有點(diǎn)問題。

C++

當(dāng)有必要時(shí),我們會(huì)使用C++.

C++也是一門非常流行的語言, 而且也具有我們要尋找的所有特性。然而,C++絕不是一門很容易就能使用起來的語言,于是我們想了個(gè)主意,就是我們?cè)诳赡艿那闆r下要避免它的復(fù)雜性。

如果你在很早的時(shí)候?qū)W過C++但沒有在現(xiàn)在的C++編程環(huán)境下編過程序,你可能會(huì)對(duì)用它來編程有著一些錯(cuò)誤的觀點(diǎn)。我們使用了Boost庫,這里面有個(gè)共享指針,能提供一種對(duì)動(dòng)態(tài)分配對(duì)象的引用計(jì)數(shù)的手段。實(shí)際上,采用資源獲得即初始化(RAII)后,就能夠解決大量的資源鎖定和泄露問題。

到目前為止,結(jié)果中我們代碼的75%用到是C++,17%用的是Python (鏈接) ,這個(gè)結(jié)果表明,BIND 10中的大部分代碼對(duì)性能要求都很嚴(yán)格。

在選擇語言時(shí),其它的項(xiàng)目會(huì)有不同的考慮因素,所以,盡管C++和Python是BIND 10不錯(cuò)的選擇,但它們可不是適合于每個(gè)項(xiàng)目。

但從大的思路上講,為BIND 10考慮語言選擇方面的動(dòng)因和決策方式在我們的項(xiàng)目開始時(shí)很有意義,而且我想它們現(xiàn)在仍然很有意義。

有一件我們可能會(huì)以不同方式來作的事是,選擇編寫能夠同時(shí)運(yùn)行于Python 2和Python 3中的代碼,而不是必須要求Python 3。隨著時(shí)間的推移,這個(gè)問題會(huì)變得越來越小,因?yàn)镻ython的未來是Python 3,但這個(gè)決定給人們帶來很多苦惱,為了運(yùn)行個(gè)軟件還不得不安裝一個(gè)新版本的解釋器,這讓人很不高興。我希望2到3年后,我們能夠笑談這些苦惱,而Python 2已成為一段退色的記憶。


分享題目:為什么 BIND 10 要用C++和Python來寫
網(wǎng)址分享:http://www.dlmjj.cn/article/dpdpojo.html