軟件行業資訊

為什么只有設計師才能發明流行的新語言

先回顧一下知名編程語言的作者和創造時間:
Fortran 語言,50年代,IBM 研究員;
Lisp 語言,50年代,MIT 的教授和學生;
C語言,70年代,貝爾實驗室的兩位研究員;
PHP,1994年,作者 Rasmus Lerdorf ,名字代表“Personal Home Page Tools”;
JavaScript,1995年,作者 Brendan Eich;
Python,1990年,作者 Guido van Rossum;
Ruby,1994年,作者 Yukihiro“Matz”Matsumoto。

從這些例子中,你可以發現早期的程序語言是學者和研究人員設計的,而近期的語言發明者多數是程序設計師 或資深程序員。

加州大學歐文分校的計算機科學家 Cristina Videira Lopes 提出疑問,為什么只有設計師才能發明流行的新語言? 她根據自己在學界的經驗認為,生活在象牙塔中的研究人員不再創造用戶真正能使用的新語言,因為他們將創造語言當作科研,在 90 年代之前,計算機性能有限,創造語言需要克服需要種種挑戰,考慮各種硬件限制。如今計算機性能日新月異,創造語言不再是什么重要的事情。她指出,現在流行 的程序語言基本沒有什么創新,全都類似既有編程概念的混搭。


C語言之父尼斯·里奇位列“2011年辭世的10位科技先驅”榜眼

除了蘋果聯合創始人史蒂夫·喬布斯和C語言之父丹尼斯·里奇(Dennis Ritchie)之外,2011年還有許多科技行業的夢想家和技術先驅先后辭世。計算機行業從1950年代開始發展,期間曾有眾多卓越的人才為現代化計算、智能電子和互聯網的發展奠定了基礎。2011年辭世的很多先驅都曾是科技公司的創始人和CEO,并帶領他們所在的企業充分利用了新興技術的優勢。
還有一些人則一直在從事光學、數學和密碼學等領域的基礎研究。他們很多人都彼此相識,并且曾經是家釀計算機俱樂部(Homebrew Computer Club)的成員。

本文的目的就是紀念這些創新者,以及他們為社會變革帶來的貢獻,包括數字化電腦、手機和互聯網。雖然他們的知名度有高有低,但這份榜單上列出的所有名字都做出過無與倫比的貢獻,并且激勵了數以千計的人繼續前進。

蘋果創始人喬布斯
蘋果創始人喬布斯   

  在與胰腺癌抗爭了8年后,蘋果創始人喬布斯于10月5日辭世。這位夢想家帶領曾經處于破產邊緣的蘋果實現了復興,他改變了普通人對科技的看法。他憑借iMac、iPod、iPhone和iPad改變了計算機行業,并且改變了人們使用數據的方式。
C語言和Unix之父里奇
C語言和Unix之父里奇   

  阿爾卡特朗訊貝爾實驗室的前軟件研究主管里奇在長期患病后于今年10月8日辭世。這位Unix聯合發明人和C語言發明人的成就,為現代大型操作系統和軟件編程奠定了基礎。他還是教科書《C程序設計語言》(The C Programming Language)的聯合作者,這本書被視為C語言領域的權威著作,至今仍然廣受贊譽。在里奇去世后一個月,Fedora團隊用Fedora 16開源Linux操作系統來紀念他。該團隊寫道:“丹尼斯是一個謙遜的人,在自己的領域之外并不為人熟知。但他將被我們這些踐行者永遠銘記。”
DEC聯合創始人肯尼斯·奧爾森(Kenneth Olsen)
DEC聯合創始人肯尼斯·奧爾森(Kenneth Olsen)   

  計算機行業先驅、DEC聯合創始人奧爾森于今年2月6日辭世。彼時,他剛剛過完85歲生日。他于1957年與哈蘭·安德森(Harlan Aderson)共同創辦了DEC,并在1960至1980年代,在計算機從占滿整個房間的大型機向迷你電腦時代過渡的時期,占據行業主導。在麻省理工學院任職時,奧森便領導開發了首臺用晶體管制作的研究用電腦。在DEC時,奧爾森還推動了矩陣式工程項目管理的普及,這一技術目前被廣泛應用于很多行業。
人工智能之父兼LISP語言發明人約翰·麥卡錫(John McCarthy)
人工智能之父兼LISP語言發明人約翰·麥卡錫(John McCarthy)   

  人工智能領域的先驅麥卡錫今年10月24日因心臟病并發癥辭世。麥克西的研究面很廣,包括可以實現多人共用的大型機計算時間分享技術,以及清理電腦內存中垃圾數據的技術。他還發明了LISP語言,這目前已經成為人工智能研究和設計領域的標準工具。
密碼學家羅伯特·莫里斯(Robert Morris)
密碼學家羅伯特·莫里斯(Robert Morris)   

  曾經參與Unix操作系統開發的密碼學家莫里斯于今年6月26日因癡呆并發癥辭世。他為Unix貢獻了安全功能,包括密碼系統和加密功能。他曾于1986至1994年間擔任美國家計算機安全中心和美國國家安全局首席科學家。莫里斯還在1991年的海灣戰爭爆發前數月,參與了對薩達姆政府的電子攻擊,破壞了伊拉克的軍事指揮系統。
分組交換技術先驅保羅·巴蘭(Paul Baran)
分組交換技術先驅保羅·巴蘭(Paul Baran)   

  巴蘭在1960年代從事了分組數據的研究,并在互聯網誕生過程中扮演了重要角色。他于今年3月26日因肺癌并發癥辭世。在擔任RAND公司工程師時,他發明了交換技術,可以在通過網絡傳輸數據前,將其分解成較小的塊。巴蘭的工作為美國國防部高等研究計劃署創建阿帕網(ARPANET)奠定了基礎,而阿帕網則是現代互聯網的前身。
全球最早的計算機程序員之一珍·詹寧斯·巴迪克(Jean Jennings Bartik) 
全球最早的計算機程序員之一珍·詹寧斯·巴迪克(Jean Jennings Bartik)


Duqu使用OO C語言開發關鍵組件

本月初,卡巴斯基實驗室研究員向編程社區求教:有Stuxnet之子稱號的Duqu惡意程序框架使用了一種未知編程語言開發關鍵的Payload DLL。該組件被惡意程序用于與命令和指令服務器(C&C)通信,可以按指令下載另外的惡意模塊。

不到兩周后,卡巴斯基實驗室表示謎題已經解開;惡意程序作者使用的是C語言的一個面向對象擴展,簡稱OO C,用微軟的Visual Studio Compiler 2008編譯,使用了代碼大小和內聯展開優化選項。


C語言之父Dennis Ritchie訪談:當年錯失互聯網大機遇

近日,“日本獎”基金會在美國舉行了2011年度“日本獎”的頒獎儀式。Unix之父Dennis Ritchie榮獲“信息與通訊獎“。IEEE Spectrum資深新聞編輯Samuel K. Moore為此專訪了Dennis Ritchie,下面是對本次采訪內容的編譯。

Unix之父Dennis Ritchie

“日本獎”基金會于今年1月宣布了2011年度“日本獎”獲獎名單,Dennis Ritchie和Ken Thompson因在Unix操作系統開發中所作出的貢獻,而榮獲“信息與通訊獎”;Tadamitsu Kishimoto和Toshio Hirano則因為發現白細胞介素6(interleukin-6)而獲得“生物科學與醫藥科學獎”。

該頒獎儀式往年通常在日本舉行,但由于今年日本發生地震和海嘯,3月17日,該基金會宣布該頒獎儀式改在美國舉行。5月19日,該頒獎儀式在位于新澤西州Murray Hill區的貝爾實驗室總部舉行。Ritchie和Thompson曾在這個實驗室工作并開發了Unix操作系統,現在該實驗室是法國通信公司Alcatel-Lucent的一部分。Thompson現任谷歌高級工程師,Ritchie仍在貝爾實驗室工作,是“退休研究員中的顯要成員”。除了開發了Unix,Ritchie還發明了C編程語言。

IEEE Spectrum資深新聞編輯Samuel K. Moore參加了本次頒獎儀式,并專訪了Ritchie。

IEEE Spectrum:你同時發明了Unix和C,你更喜歡哪一個呢?

Dennis Ritchie:
很顯然,C語言帶來了豐厚的利潤,由我和Brian Kernighan合著的《The C Programming Language》一書仍在出版和銷售。Unix正在不斷壯大,同時C語言至今仍在使用。從某種意義上,C語言更多出自我手,它由Ken發明的B語言發展而來,但卻經歷了很大的進化。雖然我曾和很多人談過此語言,但C語言所有的變化都歸根于我。但對于Unix的進化,很多人都做出了貢獻。

IEEE Spectrum:用你的話來說,“C語言既古怪又有缺陷,卻取得了巨大成功”,如果你有機會重新設計的話,它將會有什么不同?

Dennis Ritchie:
需要改很多小地方,但我不想逐一列出了。其中一些在標準化過程中已經改正。但是原設計中也有很多內在的一致性(注:指不太好改),比如,內部類型系統的運作方式。并不總是那么易用。例如,Null結尾數組也就是字符串,是一個以Null結尾的字符數組。人們常常抱怨這種設計容易使人犯各種各樣的錯誤,要是改成字符串是個計數然后放字符之類的設計就好了。可事實上,語言的內部基本機制決定了字符串就是數組,沒有地方放計數,即使很容易犯錯。


IEEE Spectrum:Unix不僅延續了下來,還占領了計算機世界。對于Unix的現代化身Linux,你如何看待?
Dennis Ritchie:
我認為它很成功。我不再評論它細微的變化。雖然它并沒有通過相同的方法獲得批準,也沒有遵循相同的標準,但我認為從本質來說,Linux是Unix新的實現形式。所以從這個意見上說,它做得很好,并將做得更好,為此我很高興。

IEEE Spectrum:你的網站上有一篇1976年寫的很難懂的備忘錄:“提議對Unix進行可移植性實驗”。它代表了把Unix當作一個更普遍的計算機平臺的新思考方式,或許甚至考慮把它當作操作系統,對你來說,它的意義很重要吧?

Dennis Ritchie:
當時我們正在移值Unix,我不得不很艱辛地尋找其他任何系統在移值中的參考資料。我發現了一些,但他們卻沒起到任何作用。所以我和Steve Johnson在實現Unix的移植性上做出了特殊的貢獻。Ken對內核做了大量的修改,從而使實現移植性成為可能,但他當時正打算離開,去澳大利亞公休,所以實際的移植性實現工作都是我和Steve做的。

IEEE Spectrum:到1970年代后期,AT&T已經擁有使互聯網誕生的一切要素。Unix及其所有工具和服務,比如電子郵件,都已經有了,運行CP/M的個人電腦也比較常見。AT&T還有ISDN技術——我們本來可以跳過調制解調器/窄帶網絡時代的,應該在1985年而不是1985年就出現萬維網(Web)了。你是否覺得錯失了一個大機遇?貝爾實驗室當時有人預見到世界的這一圖景嗎?

Dennis Ritchie:?
AT&T的思維定勢基本上是以連接為中心的。長時間連接,就像電話那樣。分組交換對他們沒意義。AT&T在早期互聯網時代有太多機會被視而不見了。

IEEE Spectrum:Unix的最初目的是想作為一個電話交換機的平臺,是嗎?

Dennis Ritchie:
Ken最初的想法是計劃寫一個操作系統。他開始后,我也很早便加入了。除了做了一些新的、很酷的東西后,真正引導我們的是我們的“自私”——去開發一些可以使我們的生活變得更輕松的工具:“我喜歡用相應工具去做相應的事。對于一件很困難的事,我常思考我可以開發什么樣的工具,讓它實現起來更簡單呢?”

IEEE Spectrum:后來你都開發了哪些諸如此類的工具呢?

Dennis Ritchie:
有很多。比如Brian Kernighan開發的一種小語言。我們都喜歡排版和文檔——這是一種突發奇想,你可以寫一種語言去描述圖片、線條,然后用它來繪制圖表及有機分子圖。Unix使這一切都很簡單。

IEEE Spectrum:Unix實際應用里你最喜歡哪個?

Dennis Ritchie:
Kindle基于Linux,真酷啊。智能手機之類的也是。真讓人驚喜。


ISO發布C語言標準新版本

ISO(International Organization for Standardization)正式公布C語言新的國際標準草案。

之前被命名為C1X的新標準將被稱為ISO/IEC 9899:2011。新的標準修訂了C11版本,提高了對C++的兼容性,并將新的特性增加到C語言中。

新功能包括支持多線程, 基于ISO/IEC TR 19769:2004規范下支持Unicode,提供更多用于查詢浮點數類型特性的宏定義和靜態聲明功能。根據草案規定,最新發布的標準草案修訂了許多特性,支持當前的編譯器。

今年10月份,ISO?ITTF(Information Technology Task Force)開始接手最終草案審查,對此未發表任何評論。 該草案的修改是基于2011年4月通過的N1570 draftPDF。

C語言死沒死不值一駁

前幾天一個叫許式偉的人,在CSDN BLOG發了一篇《 駁“C語言已經死了”》,其目標是針對Ed Burnette的這篇《 C語言已經死了,5個需要忘卻它的理由》,之后引發了一堆的“駁”過來,“駁”過去,再“駁”過來。其實這種問題根本不值一駁!

正如令狐在發給我的MAIL中所說的那樣:
其實任何語言都沒有什么好跟不好,只有適用不適用 ── 高級語言的確方便,但總需要有人寫匯編去實現它的編譯器或解釋器吧……。
而C語言,認真的用過任何其他"更高階語言"的人都不會說它"已死"──目前幾乎所有的高階語言,在提供低階接口的時候,都是采用C/C++作為接口。而一個真正的系統,100%架構在高階語言之上而沒有使用一行低階代碼,可以說是不可能的。
一個人可以只關心高階語言而不去研究底層,但他絕對不應該排斥底層開發人員。否則,當有一天,真的如他所愿,所有的底層開發人員都消失不見的時候,他才會知道自己有多么痛苦。
至于那些看不得別人不同意見,動轍管別人叫“小白”的,其實自己不過是個“大白”。

用VM語言很了不起么?論性能,還是比不過C;論功能,又比不過動態語言。有什么可得瑟的呢?更何況他們用的VM不還是C寫的嘛。

我講一個故事來結尾吧:從前有一座山,有幾個人在山頂上堆了個小土堆,有一只土鱉爬到這土堆上,登高望遠,高瞻遠矚,不禁感慨大發,曰:我站得比山還高,那個號稱“山”的東東可以死了。然后一幫小土鱉跟著說:是啊是啊……

網友熱議12月編程榜 C語言經典地位深入人心

Tiobe今日發布了12月份的編程語言排行榜。有意思的是,盡管本次榜單重點突出的是C#語言的領先,然而從新聞評論來看,網友們對經典C語言的關注非常高,看來那句真正的程序員使用C語言的確深入人心。
網友對C語言的精彩評論如下:

推崇:
solarwindsj:C最符合人們最初對"程序"的印象和思維習慣。
iwad:C能達到機器和人腦之間的最佳平衡。增則嫌多,減則嫌少,剛剛好夠用。
匿名網友:c語言,永遠的王者,除非現代計算機體系脫離馮.若依曼,否則c將是編程工具中永遠的王者。
匿名網友:計算的本質到底是什么?本質就是對數據的處理。體系結構再怎么變,這個本質是不會變的。當你能夠控制一個字節、一個位的時候,還有什么做不到的呢?C語言就剛剛好提供這種控制能力。它的語法夠簡單,很容易轉換成對應的匯編,接近效率的極致,但又不像匯編那樣晦澀難懂,而是將數據的處理流程以人能夠理解的方式呈現出來:if/else/for,搞定一切。
匿名網友:C的應用場景在于嵌入式和網絡。想學習和實踐的話,這兩個方向都可以。
a1405:一直被模仿,重未被超越!
匿名網友:以我認識的C程序員來看,C程序員的性格普遍冷靜,不易沖動,很少上網亂噴。

痛心疾首:
匿名網友:在國內,放眼望去,大片大片的Java,C#,VB,C++程序員。搞C的到底在那里呢?他們都躲在哪些領域?那些崗位?還是說C根本就是外國人搞的東西。難道是我們的程序員太貪圖享受?
匿名網友:c在國內很難找到工作的,除非你牛的不行,國外主要是搞底層開發的,國內主要是做應用開發的,開發環境相差太大,沒的比。

分析:
dwkkwd :C語言程序員需要懂更多的東西 OS內核 網絡協議 算法當然入門也慢
smillyz :C語言一直位居第二,坐的真穩!由此可見最基礎的也是最重要的!!
iwad:計算的本質到底是什么?本質就是對數據的處理。體系結構再怎么變,這個本質是不會變的。當你能夠控制一個字節、一個位的時候,還有什么做不到的呢?C語言就剛剛好提供這種控制能力。它的語法夠簡單,很容易轉換成對應的匯編,接近效率的極致,但又不像匯編那樣晦澀難懂,而是將數據的處理流程以人能夠理解的方式呈現出來:if/else/for,搞定一切。
匿名網友:C的應用場景在于嵌入式和網絡。想學習和實踐的話,這兩個方向都可以。
匿名網友:現在很少有高級語言能做到C的效率的,這就是C長青的基本保障。JAVA運行需要JVM,PHP,ASP等需要腳本解釋器,.NET需要中間語言轉換(這個我不怎么清楚),C++ 需要更多的開銷來實現復雜的對象關系,在很多的低配置的系統里面,只有1K的內存,16K的FLASH,這點資源,不說一個JVM,就連一個簡單的解釋器的很難放的下,在這樣的環境下,你可以不選擇C,但是你能選的就只有匯編了。因此,C雖然比較繁瑣,功能不夠強大(就是封裝的不夠高),沒有很多現成的類庫或對象支持,但是其用途卻是具有不可替代性。

C語言已經死了,5個需要忘卻它的理由

我用C語言編程已經超過20年了。我寫過C語言的編譯器、C語言的調試器、用C開發的其他語言、游戲、客戶端程序和服務器程序,你說吧!還有什么是我沒寫過的。還有我的書架上充斥著折了角的K&R和Steele的書。我太了解C語言了,但是,我討厭他。十分討厭!
?
當我讀到一篇博客,題目是“為什么每個程序員都應該學習C語言?”時,我真是雞皮疙瘩滿地。如果你真的是個專業的程序員的話,你肯定覺得這是個天大的笑話,盡管作者的本意也許不是這樣的。這篇反駁的文章有點意思,但是還是沒有抓住本質。所以我展開了說一下。有以下5個原因來說明,為什么那些會C語言,并且使用C語言的程序員,現在不但應該去用別的語言,而且應該忘記他們學習C語言過程中的那些煩人的東西。
?
1、內存分配
僅僅關于這一點我就能寫整整一篇文章了,也許能寫一本書,甚至還有可能寫出能夠塞滿圖書館技術書籍那塊,那么多的內容。內存分配和存儲單元分配的存在確確實實是個大麻煩。你要不就是分配太少的內存不夠用,要不就是分配了太多內存浪費掉。這里的問題就是:怎么把它初始化為零呢?還是干脆就不初始化它。但最撓頭的步驟還是釋放內存。所有已有的工具包都會幫助你確認,你是否已經釋放了之前分配的每一位的內存,在釋放完之后是否永遠不使用它,并且會阻止你,永遠不要釋放它第兩次。更嚴重的是,分配內存和釋放內存在C語言中都是很慢的,非常慢。使用內存分配時,要考慮的各種特殊情況,我真是連想都不愿意去想,只要問題(對象)的大小合適,我更愿意使用棧空間或者事先分配的結構空間。如果這么做的話,我就有更值得煩惱的事了。話說回來,發明垃圾處理器那人真應該得諾貝爾獎。
?
2、多線程
我過去是喜歡C語言的,真的。直到我開始用C開發并維護多線程的服務器。在為連接相沖突的線程保護數據方面,C語言沒有為程序員提供那怕一點點的幫助。你在使用單線程的日子里獲得的每一個直覺、經驗,用在多線程的時候都是錯誤的。至少JAVA有表示同步的關鍵字和備有證明文件(但是是個很奇怪的文件)的記憶體,但即使是這樣,除非你使用新的javax.concurrent,否則也只能在那些巨大的平行擺放的機器們面前崩潰。回到C語言上:在模擬生產的環境下,堅持一個星期在數據中心調試一個死鎖(這事真的發生過)。而JAVA卻只需要Ctrl+Break!天哪!!!
?
3、指針
?
指針太難以控制了,太陰險了;我甚至沒有委婉一點的方式去形容它。我生命中每年都有幾個月被用來調試那些奇怪的指針問題。我過去常常努力獲取所有的訣竅,比方說難以理解的構成符、聯合體和偏移量,以及重用最后兩位做標記,還有所有其他的訣竅。但我發現這么做根本不值得。其他語言的靜態引用就可以解決了。
?
4、過早的優化
?
說到訣竅,你是否曾經浪費腦細胞去研究究竟
*p++是不是比p[i]快?你是否曾經花時間去試著做點變化來代替乘法,或者去嘗試使循環中的倒置運行更快的方法?還在為傳遞一個參數的速度和反對添加結構,并且傳遞它的速度一樣而苦惱不已?停吧!算法是速度的關鍵,程序員的水平決定了他會使用那些算法。知道這一點能讓你的程序更好,更快一點并且讓你的腦袋少扭幾個筋。好吧,有一些例子也許可以這樣做的……不,你就別那么做就行了!
?
5、測試
你最喜歡的C的單元測試的工具是哪個?嗯…一個也想不到?單元測試一定是一點也不重要,是吧?或者是太麻煩了,很難跟上進度,浪費時間。你可以把這個時間用到更加有用的事情上,讓它只占用工作時間的1%,那還比較合適
。或者在數據中心,通過優化的沒有標記的圖形來調試這個僅僅由100個同時在線使用者引起的問題。
?
我本來應該繼續再說一些原因的,但是5個現在就足夠了;說完這些,現在感覺好點了。C以前是非常棒的…那是在1984年的時候。直到今天,那些用C寫的新代碼都讓我感到驚喜…如果你讓我比較的話,我覺得C++只是比C稍微好點。如果你想要學些老一點的語言,不妨嘗試Forth,Lis,或者APL。這些老式的語言起碼能教會你,用不同的而且優雅的方式去思考你的程序。
?
作者簡介
Ed Burnette是一位有著豐富編程經驗的程序員。他現在致力于使用JAVA和C來開發OLAP客戶端和服務器。他業余時間喜歡研究Java、Eclipse和開源軟件。他寫了很多關于Eclipse的文章和書籍,另外他還是EclipseZone.com的主編。

駁“C語言已經死了”

現在,有很多C/C++程序員總是自命不凡,看不起其他開發人員。其實,或許別人更看不起他呢!
? ? ? ? 有偏見的永遠只是個體,而不是群體。作者加了后面那句
,無疑證明有偏見的不是C/C++程序員,而正是他自己。

  學生時代,我也曾醉心于C/C++,但時至今日,始終無法寫出無懈可擊的C++代碼,所以我始終認為我不會C/C++。這些年,我一直在尋找編寫C++代碼的最佳模式。但是,老實說,我還沒有見到過哪個稱得上高手的C++程序員,也沒有見到過寫得Very good的C/C++代碼。C/C++代碼總是丑陋不堪,BUG叢生!

>> 這段話更加荒謬了。沒見過優秀的C/C++代碼??C++標準庫(STL)如此優雅。況且,有那么多經典的C/C++開源作品,以及無意之中泄漏的Windows NT核心源碼,哪一樣不是絕世之作?我為作者淺陋感到難過。

  我用C語言編程已經超過20年了。我寫過C語言的編譯器、C語言的調試器、用C開發的其他語言、游戲、客戶端程序和服務器程序,你說吧!還有什么是我沒寫過的。還有我的書架上充斥著折了角的K&R和Steele的書。我太了解C語言了,但是,我討厭他。十分討厭!

  當我讀到一篇博客,題目是"為什么每個程序員都應該學習C語言?"時,我真是雞皮疙瘩滿地。如果你真的是個專業的程序員的話,你肯定覺得這是個天大的笑話,盡管作者的本意也許不是這樣的。這篇反駁的文章有點意思,但是還是沒有抓住本質。所以我展開了說一下。有以下5個原因來說明,為什么那些會C語言,并且使用C語言的程序員,現在不但應該去用別的語言,而且應該忘記他們學習C語言過程中的那些煩人的東西。

1、內存分配

  僅僅關于這一點我就能寫整整一篇文章了,也許能寫一本書,甚至還有可能寫出能夠塞滿圖書館技術書籍那塊,那么多的內容。內存分配和存儲單元分配的存在確確實實是個大麻煩。你要不就是分配太少的內存不夠用,要不就是分配了太多內存浪費掉。這里的問題就是:怎么把它初始化為零呢?還是干脆就不初始化它。但最撓頭的步驟還是釋放內存。所有已有的工具包都會幫助你確認,你是否已經釋放了之前分配的每一位的內存,在釋放完之后是否永遠不使用它,并且會阻止你,永遠不要釋放它第兩次。更嚴重的是,分配內存和釋放內存在C語言中都是很慢的,非常慢。使用內存分配時,要考慮的各種特殊情況,我真是連想都不愿意去想,只要問題(對象)的大小合適,我更愿意使用棧空間或者事先分配的結構空間。如果這么做的話,我就有更值得煩惱的事了。話說回來,發明垃圾處理器那人真應該得諾貝爾獎。?

>> 內存管理是程序設計中最經典的話題。GC無疑是內存管理一個偉大的變革,但是我只是把它看作內存管理的一個解決方案,而認為不是唯一的解決方案。比GC更加優雅的方案不見得沒有。我比較傾向于在特定的情況下選擇合適的內存管理方案,而不是沒有任何選擇的余地,而這正是C/C++的偉大之處。?所有那些GC語言(如Java、C#等)均把這個解決方案強加給程序員,這一定程度上來說減輕了程序員的負擔,但是也同時約束了程序員的主觀能動性。"分配內存和釋放內存在C語言中都是很慢的"?不知道作者從哪里獲得的結論。

2、多線程

  我過去是喜歡C語言的,真的。直到我開始用C開發并維護多線程的服務器。在為連接相沖突的線程保護數據方面,C語言沒有為程序員提供那怕一點點的幫助。你在使用單線程的日子里獲得的每一個直覺、經驗,用在多線程的時候都是錯誤的。至少JAVA有表示同步的關鍵字和備有證明文件(但是是個很奇怪的文件)的記憶體,但即使是這樣,除非你使用新的javax.concurrent,否則也只能在那些巨大的平行擺放的機器們面前崩潰。回到C語言上:在模擬生產的環境下,堅持一個星期在數據中心調試一個死鎖(這事真的發生過)。而JAVA卻只需要Ctrl+Break!天哪!!!?
>> C/C++語言本身確實沒有太多MultiThead的支持,這種情況在C++0x出來后可望改變。但是,請記住C/C++永遠傾向于你使用成熟的庫來解決問題。

3、指針

  指針太難以控制了,太陰險了;我甚至沒有委婉一點的方式去形容它。我生命中每年都有幾個月被用來調試那些奇怪的指針問題。我過去常常努力獲取所有的訣竅,比方說難以理解的構成符、聯合體和偏移量,以及重用最后兩位做標記,還有所有其他的訣竅。但我發現這么做根本不值得。其他語言的靜態引用就可以解決了。

>> 指針是C/C++過于靈活的體現。使用指針的代碼可以寫得很丑陋,但一樣可以很優雅。——這一點上用何種語言不會有區別。我相信,可以寫出優雅的Java代碼,那么也一定可以寫出同樣優雅的C/C++代碼。而反之則未必(因為有些C++某些范式是Java所不能支持的)。C/C++語言中的選擇太多,這的確是令人困惑的,但不見得是劣勢。我對C/C++程序員的建議是,多了解和使用C++標準庫,而不是過于糾纏指針相關的細節。

4、過早的優化

  說到訣竅,你是否曾經浪費腦細胞去研究究竟*p++是不是比p[i]快?你是否曾經花時間去試著做點變化來代替乘法,或者去嘗試使循環中的倒置運行更快的方法?還在為傳遞一個參數的速度和反對添加結構,并且傳遞它的速度一樣而苦惱不已?停吧!算法是速度的關鍵,程序員的水平決定了他會使用那些算法。知道這一點能讓你的程序更好,更快一點并且讓你的腦袋少扭幾個筋。好吧,有一些例子也許可以這樣做的……不,你就別那么做就行了!

>> 算法優化是程序設計的關鍵。但是通常情況下,所有語言(包括C/C++)的程序員研究的是關鍵路徑的優化。研究*p++是不是比p[i]快?我相信這是標準庫的實現者要考慮的事情。所不同的是,C/C++程序員也可以和標準庫的作者一樣去考慮這些細節,而其他語言的程序員被剝奪了這個權利。

說到優化,話題就多了。我曾經向C#的Dictionary中插入了1億條整數(從1萬多個文本文件中讀入),結果發現程序運行了整整一個下午仍然沒有完成。而我改用C++的std::map,20分鐘就搞定了。再試試對50萬條自定義的結構體數據進行排序,我相信你和我一樣,會深深喜歡上C++的的高效而優雅。

5、測試

  你最喜歡的C的單元測試的工具是哪個?嗯…一個也想不到?單元測試一定是一點也不重要,是吧?或者是太麻煩了,很難跟上進度,浪費時間。你可以把這個時間用到更加有用的事情上,讓它只占用工作時間的1%,那還比較合適。或者在數據中心,通過優化的沒有標記的圖形來調試這個僅僅由100個同時在線使用者引起的問題。

>> C++的測試工具,作者居然一個都想不到,我只能猜想可能他是比較喜歡自己制造輪子的那一類。和JUnit對應的CppUnit,難道也想不到?提起CppUnit,我以前用它進行單元測試,但從實現架構上說,我認為它繼承了Java代碼的臃腫。我在WINX中提供了一個Mini版本的CppUnit,代碼量大概只有幾百行,功能絕不比CppUnit弱。

  我本來應該繼續再說一些原因的,但是5個現在就足夠了;說完這些,現在感覺好點了。C以前是非常棒的…那是在1984年的時候。直到今天,那些用C寫的新代碼都讓我感到驚喜…如果你讓我比較的話,我覺得C++只是比C稍微好點。如果你想要學些老一點的語言,不妨嘗試Forth,List,或者APL。這些老式的語言起碼能教會你,用不同的而且優雅的方式去思考你的程序。

>> 新生的語言,必然會在吸收舊的語言上基礎上進行改進。看一個語言的生命力,并不在于看它某些地方存在的不足。事物會發展,并趨于完善。相信C++0x出來后,C/C++語言又將獲得新的生命力。單看Java、C#等幾個新一代的語言,其中有如此多的C++烙印,就證明了C/C++的影響是巨大的。動不動說一門語言死了,是一種淺薄。

英特爾:C語言軟件與萬億級平臺不沖突

2007年6月20日,2007年英特爾研究日(Research@Intel?Day)在位于美國加州圣克拉拉的英特爾公司總部隆重召開。在歷時兩天的活動中,英特爾院士以及來自全球各地的研究人員和各領域的技術專家匯聚一堂,暢談技術發展,共同探討驅動技術和應用創新所面臨的機遇與挑戰。英特爾公司還在研究日中重點演示了50余組最新的研究成果,包括萬億級計算、高能效計算、移動計算、探索性研究等主題。這50余組代表最前沿技術的研究成果演示,由英特爾全球各個實驗室選送,代表了英特爾在研究領域的最新的發展方向,同時也是業界前瞻性技術發展的一個風向標。

  本次英特爾研究日首次邀請中國媒體參加,泡泡網有幸成為國內唯一一家受邀網絡媒體將全程報道此次盛會。以下為研究日第一天精彩內容:
英特爾:C語言軟件與萬億級平臺不沖突

  大部分舊程序不適用于多核架構,因此運行基于并行設計理念的新應用時性能大受限制。英特爾與UC Berkeley正在研究將現代的安全及并發特征嵌入C語言的方法,進而使軟件開發商得以更容易地發展舊的C語言軟件,以支持未來的萬億級平臺。

Google不讓C語言之父提交代碼

大家都知道,C語言和Unix的發明者、圖靈獎得主、最具傳奇性的程序員Ken Thomson加盟Google之后,與一幫高手一起搗鼓出了又一驚天之作:并發時代的系統編程語言Go。Go一經面世就闖入了編程語言排行榜前20,創造了奇跡。
【趣聞】Google不讓C語言之父提交代碼

  可是,Gawker網站今天爆料,他在Google居然沒有提交代碼的權力!原因呢,只不過是按公司規定,所有程序員必須通過編程語言考試,而他還沒有參加過這種考試,至少在《Coders at Works》一書寫作前:

  Peter Seibel: 我知道Google有一個規定,每個新員工都要在接受編程語言測試之后,才允許提交代碼。那就是說你也得考(你自己發明的)C羅?
  Thompson: 是啊,我還沒考呢。
  Seibel: 你還沒考? 難道你還不能提交代碼嗎?
  Thompson: 是啊,我不能提交代碼,不行……我只是還沒有去考試,還沒覺得有必要去考。
  看來Google真是一家唯算法唯規則的公司。三年前,Google曾被曝光用算法和機器人程序來給申請者提交的簡歷打分。此外還有很多招聘和面試程序中的古怪事情不斷見諸報端。
【趣聞】Google不讓C語言之父提交代碼

  無獨有偶,昨天成為CSDN頭條的文章“從蓋茨到扎克伯格:極客的力量”中,也爆出開發Mac操作系統核心程序員之一Hertzfeld現在在Google也不快樂:

  使赫茲菲爾德發生變化的不只是時間,還有他的工作環境。谷歌將工程師看作最重要的資產,認為員工必須喜歡自己從事的工作,同時支持開源軟件。但赫茲菲爾德承認,谷歌是一家大公司,在產品設計方面有嚴格的標準和程序,因此減少了他工作中的樂趣。他說:“我與工作的關系是藝術家與他的作品的關系,但在谷歌,我無法從自己的工作中獲得快樂。”

  盡管個人的控制力降低了,但赫茲菲爾德擁有了產生更大影響的可能性。有時,谷歌的幾行代碼可能會影響成千上萬的人,這為他的工作帶來了一種激情。他說:“這里的一切都是主流的。谷歌、iPhone,這些比上世紀60年代甲殼蟲樂隊更能影響文化,它們甚至會影響整個人類。”

  對了,《Coders at Work》一書是對15位頂級程序員(包括圖靈獎得主高德納、Erlang和JavaScript 之父、Norvig、Guy Steele等等大師)的訪談集,在同類書中是最有趣、最有料而且最精彩的一本。中文版還在翻譯中,將由人民郵電出版社圖靈公司出版。微軟研究院的鄒欣做了不錯的讀書筆記1,2,3,4,大家可以去先睹為快。搞技術的,了解高手的思想有時候至關重要。

   “人物小傳”
  Ken Thomson 計算機科學先驅,最具傳奇性的程序員。C語言前身B語言和Go語言、Unix和Plan 9操作系統、UTF-8和正則表達式的發明者。1983年圖靈獎得主,美國科學院和工程院院士。1949年2月4日生于新奧爾良。加州大學伯克利分校電子工程與計算機碩士。1966年加入貝爾實驗室,2000年退休。

  據文獻記載,1969年,他在Multics操作系統項目失敗后的無聊時間里,為了在一臺PDP-7計算機上玩自己編寫的“太空旅行”游戲,而用匯編開發了Unix的最早部分(文件系統)。是的,偉大的操作系統是玩出來的。

  他還開發過一個名為Belle的象棋程序,打遍天下無敵手。

  Andy Hertzfeld Apple的第一個軟件魔術師,也是Mac操作系統的主要開發者之一。他還是著名蘋果公司軼事網站Folklore.org的創始人,這個網站后來編成了《蘋果往事》(電子工業出版社博文公司出版)一書。

第20屆國際C語言混亂代碼大賽獲勝者宣布

第 20 屆國際C語言混亂代碼大賽(IOCCC)于 2 月 5 日結束,獲勝者名單已正式公布,獲獎作品的源代碼尚未發布,主辦方表示將在 2 月底或 3 月初釋出。IOCCC 是一項國際編程賽事,目的是寫出最有創意的最讓人難以理解的C語言代碼。今年的獲勝者中包括了 1 名英國人,1名德國人,6名美國人(其中一人可能是華裔 Don Yang),1名芬蘭人,1名以色列人,1名墨西哥人,3名日本人和 1 名中國人(Hou Qiming,作品是科學計算器)。

2012 QCon:Go是互聯網時代的C語言

由InfoQ主辦的全球頂級技術盛會QCon 2012 于4月18日到4月20日在北京隆重召開,每年在倫敦、北京、東京、紐約、圣保羅、杭州、舊金山召開。本次大會上,上海七牛信息技術有限公司創始人許式偉發表了主題為“Go,互聯網時代的C語言”的專題演講。
  語言的選擇已經非常之多。偏系統級的語言大多為靜態類型語言,例如C,C++,Java,C#,Delphi;也有偏快速業務開發的語言,大都為動態類型,例如PHP,Python,Perl,Ruby,JavaScript;還有面向特定領域的,例如R和Matlab。

  那么,為什么我們需要Go這樣一門新語言呢?這門語言究竟肩負著怎樣的使命而面世?最初,Go語言官方自稱是一門系統級語言。之所以開發Go語言,是因為“近10年左右開發程序之難讓我們有點沮喪”。Go語言這一定位暗示了希望取代C和Java地位,成為最流行的語言。在 2000年前的單機時代,C語言是編程之王。隨著機器性能的提升,軟件規模與復雜度的提高,Java逐步取代了C的位置。盡管看起來Java已經深獲人心,但Java編程的體驗并未盡如人意。歷年來的編程語言排行榜顯示,Java語言的市場份額在逐步下跌,并趨近于 C 語言的水平。這對于Java來說是非常尷尬的。作為一個現代化的語言,擁有眾多C語言無法企及的特性,但似乎市場并不買賬。也許挺Java的公司非常之多,有錢的如 IBM、Oracle(Sun)之類,亦無法改變這個局勢。
????? Go語言是谷歌推出的一種全新的編程語言,可以在不損失應用程序性能的情況下降低代碼的復雜性。谷歌首席軟件工程師羅布派克(Rob Pike)說:我們之所以開發Go,是因為過去10多年間軟件開發的難度令人沮喪。Go是谷歌2009發布的第二款編程語言.2009年7月份,谷歌曾發布了Simple語言,它是用來開發Android應用 Go Logo的一種BASIC語言.
  Go語言的作者們很清楚,C++真的沒啥值得參考的,他們要學習的是C語言。C語言經久不衰的根源是它足夠簡單。Go語言也要足夠得簡單。那么,互聯網時代的C語言需要哪些東西呢?
  首先,并行與分布式支持。多核化和集群化是互聯網時代的典型特征。作為一個互聯網時代的C語言,必須要讓這門語言操作多核與計算機集群如單機一樣容易。其次是軟件工程支持,工程規模不斷擴大是產業發展的必然趨勢。單機時代語言可以只關心問題本身的解決。互聯網時代的C語言還需要考慮軟件品質保障、團隊協作相關的話題。最后,編程哲學的重塑。計算機軟件經歷了數十年的發展,形成了多種學術流派,有面向過程編程、面向對象編程,函數式編程、面向消息編程等等。這些思想究竟孰優孰劣,眾說紛紜。什么才是最佳的編程實踐?
  在本次演講中,我們將來看下Go作為互聯網時代的C語言,是如何應對這些問題的。
  Go語言在服務器上的標準庫是最多的。在談及并行與分布式支持時,許式偉表示,多核化和集群化是互聯網時代的典型特征,作為一個互聯網時代的Go語言,必須要讓這門語言操作計算機集群如單機一樣容易。
   輕量級進程應成為語言最重要的執行單元
  •   “輕量級進程模型”對“異步IO模型”
  •   實現“輕量級進程”的成本
  •   基礎層面
  •   新IO庫
  •  ? ?同步與互斥
  •  ? 使用第三方庫的問題
   通訊
  •   共享內存模型VS消息傳遞模型
  •   Erlang風格的并發模型
  •   Go語言的輕量級進程的通訊
   在軟件工程方面,Go是第二個將代碼風格強制統一的語言。
  If expression
  {
  }
  在錯誤處理規范方面,函數允許返回多個值、error類型
   Go的特性列表
  •   垃圾回收
  •   更豐富的內置類型:slice、string、map等
  •  ?? ?函數都返回值、更好的錯誤處理規范
  •   匿名函數和閉包
  •   類和接口
  •   輕量級進程和消息隊列
  •   反射
  •   包
  •   更豐富的標準庫
  Go目前為止有兩個編譯器,一個是按照Plan 9 風格編寫的,另一個是Gcc Go,盡管兩個編譯器相較其他語言的編譯器已經非常快了,但是其中Plan 9風格的速度比Gcc Go還要快上5倍。
  Go語言支持類、類成員方法、類的組合、反對集成、反對虛函數、放棄構造函數和析構函數、更好的接口.Go語言是谷歌2009發布的第二款開源編程語言。Go語言專門針對多處理器系統應用程序的編程進行了優化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持并行進程。
  從編程哲學角度來看,Go語言是變革派,不是改良派。面向過程編程、面向對象編程、函數式編碼、面向消息編程等等、Go語言融合眾家之長、極力維持語言特性的簡潔。Go語言和C++、Java、C#有著完全不同的設計哲學。既然函數重載帶來了負擔、并且這個特性并不對解決任何問題有顯著的價值,那么Go就不提供它。

谷歌Go語言日漸完善,接近C語言

Go將動態語言易于編寫的特性和靜態語言的高效性相結合,具備良好的易用性和極佳的執行效率。Go語言最初定位于網絡服務器、存儲系統和數據庫的程序設計,同時在語言中包含并發構造體,以方便的幫助開發者創建并行任務。

Go語言具有效率極高的編譯器,目前Go編譯器能在Linux、FreeBSD以及Mac OS X平臺下運行,但暫時沒有對Windows環境提供編譯支持。Go開發團隊曾在博客中表示,編譯完成的Go程序運行速度接近C語言實現的程序。

在今年五月份舉辦的Google I/O大會上,Go語言背后的工程師Rob Pike和Russ Cox兩人一同為開發者帶來了Go語言編程講座,解釋Go語言的靈活設計和獨到之處。Go語言的主要設計者Rob Pike是Google公司的資深工程師,在分布式系統、程序語言設計以及軟件開發工具方面有著多年的經驗。此前在貝爾實驗室工作期間,Rob曾是網絡操作系統Plan 9的設計者,同時也是Inferno 操作系統的設計者,Rob還曾與AWK 和AMPL編程語言的設計者Brian Kernighan一起合著有兩本Unix環境下編程語言的書籍。同時,Rob Pike還給出一份可供參考的Go語言教程。

針對Google I/O大會上收集到開發者的提問,在Go開發團隊博客上給出了常見問題的FAQ。在Android平臺支持方面,Go編譯器支持面向ARM處理器的代碼生成,所以在Android平臺上運行Go程序是可行的,Go語言開發團隊也將積極推進Android平臺上的開發工作。由于Go具備簡潔的語法和語言本身的一致性,已有大學執教的老師表示將會在自己教授的編程語言課程中為學生開設Go語言選修項目。

目前在Google內部已有部分應用使用Go語言來實現,同時開發團隊表示,Go已相對成熟,完全能夠用于最終系統的開發和交付,甚至可以使用Go來開發Web應用。在后續工作中,Go開發團隊將不斷對語言進行改進提升,并隨時歡迎開發者在社區中反饋Go語言開發時遇到的問題。目前在國內使用Go語言進行實際開發的公司還為數很少,嘗試使用Go語言的開發者大多源自個人興趣或技術預研,隨著Go語言類庫和成功案例的增多,將會有越來越多國內開發者在實際開發中嘗試Go語言帶來的效率和便捷。

GCC 4.7 正式發布,支持C/C++11的更多特性

GNU 項目今天發布了GCC 4.7 正式版本。?


GCC(GNU Compiler Collection,GNU編譯器套裝),是一套由 GNU 開發的編程語言編譯器。GCC 使用 GPL 與 LGPL 許可證,是 GNU 計劃的關鍵部分。GCC 目前可處理 C++、Fortran、Pascal、Objective-C、Java以及 Ada 等語言。現在是 Linux/Unix、Mac 等操作系統的標準編譯器。?

該版本在4.6.x的基礎上,進行了大量的改進,現在C、C++和Fortran編譯器支持3.1版本的OpenMP規范(用于共享內存并行系統的多線程程序設計的一套指導性注釋)。該版本還針對各個語言進行了功能改進,主要包括:?

針對C的功能改進
?

  • 支持ISO C11標準中的更多特性。除了之前的-std=c1x和-std=gnu1x選項外,GCC現在還支持-std=c11和-std=gnu11選項。
針對C++的功能改進?

  • G++現在支持-std=c++11、-std=gnu++11和-Wc++11-compat選項,這些選項的作用相同。
  • 實現了C++11的extended friend語法。
  • 實現了C++11的重寫控制。
  • 實現了C++11的非靜態數據成員初始化。
  • 實現了C++11的用戶定義數據標識。
  • 實現了C++11的別名聲明。
  • 實現了C++11的委托構造函數。
針對運行時庫(libstdc++)的改進?

  • 實驗性地支持新的ISO C++11標準。
  • 增加了--enable-clocale=newlib配置選項。
  • 用于無序關聯容器的調試模式迭代器。
  • 通過包含<unistd.h>來避免破壞全局命名空間。
針對Go語言的改進?

  • 現在GCC實現了Go1語言標準,目前對于Go的支持尚不完全,預計將在4.7.1版本中進行改善。
  • Go已經在GNU/Linux和Solaris平臺上進行了測試,在其他平臺中也可能會很好地運行。
關于改進的詳細信息可參閱: GCC 4.7 Changes?

使用GCC 4.7的一些注意事項:?

  • 一些針對舊系統的支持功能以及最近沒有被維護或檢驗的GCC目標端已經被放棄,在下個版本中將會永久刪除這些代碼。
  • AVR端的libgcc已得到改善,它的multilib架構得到了增強。因此,所有應用程序的對象必須在GCC 4.6.x或4.7.0中進行編譯。
從之前GCC版本遷移至4.7版,可參閱: 遷移指南

揭秘iPad/iPhone 釣魚網站產業鏈

釣魚網站盯上New iPad

?????????在iPad代購網下單購買New iPad,結果下單后按賣家要求交完定金,就再也收不到貨了。因New iPad發布之后遲遲未能在中國大陸正式銷售,iPhone 4S依然一貨難求,利用iPad/iPhone 來釣魚的網站令消費者大上其當。金山毒霸發布的數據顯示,僅上周,金山毒霸就攔截了超過500家山寨蘋果釣魚網站。

?????????這些假iPhone/iPad釣魚網站主要依賴互聯網媒介來推廣獲益,網站流量是行騙的基礎。記者調查分發現,這些釣魚網站的平均生存周期只有3-5天,每天吸引的訪客數量約20萬人,其中即便只有千分之一的人中招,每天也會有200名受害者損失大約20萬-40萬元。巨額利益的誘惑使得釣魚網站層出不窮,嚴重危害消費者權益。

巧妙設局步步設套

?????????詐騙猖獗的背后,是大量以iPad/iPhone為噱頭的釣魚網站支撐運轉,這已經形成了一條完整的黑色產業鏈。

?????????騙子利用網民心理漏洞,巧妙設局步步設套。行騙的常規手段是先以物品超低價引誘網民,后以貨到付款的手段麻痹網民取得信任。然后最后通過不法手段騙取網民錢財。

?????????安全專家李鐵軍分析說,“貨到付款僅僅只是釣魚網站行騙的噱頭,其目的是先收集消費者真實個人信息,再通過打電話詢問的方式試探消費者是否有購買需求,然后確定采用哪種行騙方式。在確認買家身份后,若發現買家對蘋果和網購了解不多,興許就會收到破磚頭或廉價山寨機。”

?????????“更多情況下,騙子根本不發貨,只會通過電話騙你預付定金,再一步步讓你掉進連環騙的陷阱。核心是騙子電話核實買家個人信息,再通過短信、電話實施連環詐騙。到這一步,具體是賣什么東西已經不重要了。”李鐵軍說

?????????釣魚網站產業鏈條繪制圖顯示,網民在完成支付行為之前保護好個人信息以防泄露是預防掉進連環詐騙陷阱的關鍵。
圖1 假蘋果釣魚網站的典型騙人流程

識別釣魚網站特征

?????????一位長期跟蹤觀察釣魚網站的業內人士介紹說,釣魚網站的特征比較明顯,雖然在外觀上模仿正規商城,但當訪客到達網站時,大多能在頁面發現在線聊天的窗口,而不是淘寶旺旺。在聊天過程中,消費者很容易觀察到疑點。

?????????“這些網站的購物流程極其簡陋,網站內容大同小異,模板相對比較簡單,疑似批量制作。消費者看到到達這些網站,會有“似曾相識”的感覺。為吸引用戶上鉤,釣魚網站會充分信任訪客。哪怕你全部輸入錯誤信息,騙子們也并不在意。如果你在聊天對話框看到所謂“客服”的聯系方式,簡單搜索“客服”QQ號或手機號,就會發現這騙子不光賣假iPhone/iPad,還會出租房屋、賣茶葉、賣藥品、開旅行社、甚至賣充氣娃娃。”


行騙方式一:假團購


行騙方式二:超低價


行騙方式三:直接付款給個人賬戶
?
????????此外,記者了解到,釣魚網站通過第三方信息平臺進行推廣也是常用的營銷手段。“騙子擅長使用搜索引擎優化,對iPhone/iPad感興趣的人,比較容易搜索到這些頁面。比如可以在某些商城的論壇、空間、博客、貼吧、分類信息網站等平臺發現這些網站的推廣鏈接,因為價格很低,容易吸引點擊。”

?????????該人士提醒網民,雖然識別釣魚網站不是很難,但重要的是網民不要輕易相信網上低價信息。

金山毒霸一周捕獲500釣魚網站

?????????金山毒霸安全中心發布數據顯示,利用低價iPad/iPhone為噱頭的詐騙案件呈現高發態。據了解,金山毒霸發起網友舉報釣魚網站的活動僅僅一周內就捕獲了500個釣魚網站。

?????????“我們在官方論壇公布釣魚網站特征,發動網友采用類似人肉搜索的方法去尋找更多釣魚網站。該活動激發網友的極大熱情,僅幾天時間,就收到網友舉報的假iPhone/iPad釣魚網站150余個。根據這些發現調整釣魚網站識別算法,一周內捕獲的新iPhone/iPad釣魚網站就超過500個。”安全專家李鐵軍介紹說。

?????????金山毒霸發出預警,提醒購買iPhone/iPad的網民,切勿輕易相信那些超低價的千元級iPhone/iPad,貨到付款的交易也未必是安全的交易。使用免費的金山毒霸2012幫助攔截各類釣魚網站,如果開啟金山毒霸2012網購敢賠模式依然被騙,還可申請金山毒霸進行賠付。

國際大學生超級計算機中國區決賽開幕

在科技部、教育部的共同指導下,由國際超級計算機大會組委會(簡稱ISC)、國際高性能計算咨詢委員會(簡稱HPC-AC)、浪潮集團共同主辦的“首屆中國大學生超級計算機競賽暨ISC12國際大學生超級計算機競賽中國區選拔賽”決賽正式拉開戰幕。來自國家科技部、中國科學院、中國工程院、各決賽高校的領導、院士、科學家、師生以及新華社、人民日報、科技日報、新浪、搜狐、至頂網等30余家媒體等參加了此次開幕式,新華網、新浪網、至頂網對此開幕式進行了圖文直播。

??? 這是中國首次舉辦這一類型的賽事,本次賽事自2月拉開戰幕,共有27所985、211高校報名,3月22日,經過競賽評審委員會的多輪評定,國防科學技術大學、中國科學技術大學、清華大學、武漢大學、山東大學、中山大學六大名校獲得決賽資格。此次決賽為時3天,4月19日決賽結束。最終勝出的兩支隊伍將獲得6月于德國漢堡舉辦的ISC12國際大學生超算競賽的兩張入場券,代表中國高校超算的最高水平與世界超算強隊同場競技。

??? 突出的應用導向是本屆賽事的特色。比賽采用了超算實際應用中最為廣泛的HPL、OPENFORM、CPMD、CP2K、NEMO五大應用算例。參賽隊伍需要自行搭建總功率不高于3千瓦的超級計算機,并在該平臺上運行上述5個算例,累計成績最高者勝出。評審委員會主席、北京應用物理與計算數學研究所副所長莫則堯在發言中指出,大賽規則與國際賽事完全接軌,參賽隊伍不僅需要具備優秀的高并行程序開發和優化能力,更要擁有豐富的超級計算機實際操作經驗,以及對最新超算技術的理解,大賽規則與國際賽事完全接軌,是對參賽隊伍的超算應用能力的全方位考察。
????
??? 當前應用已經成為美、日、歐等國家超級計算機產業的發展的重要動力,從全球范圍來看,超算競爭正在從峰值性能的比拼向應用推進轉變。競賽組委會主席、清華大學高性能計算技術研究所所長楊廣文稱,就我國來看,隨著自主研制的 “天河一號”、“神威藍光”等千萬億次系統的問世,我國超算產業已在核心技術領域已取得了很大成就,但是長期以來“重硬輕軟”的矛盾也日益暴露,應用成為制約中國超算及相關產業發展的突出瓶頸。
???
??? 從應用和人才入手,推進中國超算發展,是本次大賽的主要目的。浪潮集團高級副總裁王恩東在本次比賽開幕式發言中表示,要想讓超算長期健康發展,需要轉變發展思路,不僅要研制國際領先的超級計算機,更要用好超級計算機。大學生是未來中國科技力量的主體,此次大賽可以推進大學生對超算的認知,為今后的超算培養應用型人才,對于推進超算發展具有十分重要的意義。
???
??? 作為“現代經濟科技的大腦”,超級計算機能夠縮短技術研發周期、加快創新成果,提高經濟發展效率,推動經濟發展轉型。推進超算應用普及,不僅對于加快產業自身的發展具有重要意義,對于十二五,甚至更長時期的發展方式轉換也具有不可低估的作用。在當天的啟動儀式上,國家科技部高新司副司長楊咸武對于本屆競賽給予了高度評價,他認為我國舉辦的這一賽事正當其時,這對于今后增強超算人才儲備,促進超算更好的在國民經濟和科研領域發揮作用,將產生積極影響。



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450429.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450429.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450429.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

spring知識點

一、Spring概述 1.1 web項目開發中的耦合度問題 在Servlet中需要調用service中的方法&#xff0c;則需要在Servlet類中通過new關鍵字創建Service的實例 public interface ProductService{public List<Product> listProducts(); }public class ProductServiceImpl1 imple…

Linux系統下的權限試題測試

不會做的留言&#xff0c;到時在發布答案&#xff01;一、 有兩個參賽團隊team1、team2&#xff0c;兩個團隊各3人, 這兩個團隊互相競爭&#xff0c;各需提交一份報告&#xff0c;每組成員可以修改自己團隊內的所有文件&#xff0c;且不能讓其他團隊的人修改自己的文件內容&…

電子科大軟件系統架構設計——軟件建模詳細設計

文章目錄 軟件建模詳細設計概述軟件建模詳細設計目標軟件建模詳細設計原則開閉原則里氏 (Liskov) 替換原則依賴倒置原則接口分離原則單一職責原則最少知識原則&#xff08;迪米特法則&#xff09;高內聚原則松耦合原則可重用原則 軟件建模詳細設計內容 UML 軟件靜態結構視圖建模…

YAML文件解析

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 YAML是“另一種標記語言”的外語縮寫,YAML 是一種比JSON&#xff08;json多層次{ 與 [ 會被搞暈的&#xff09;更直觀的表現形式&#xf…

120分鐘React快速掃盲教程

在教程開端先說些題外話&#xff0c;我喜歡在學習一門新技術或讀過一本書后&#xff0c;寫一篇教程或總結&#xff0c;既能幫助消化&#xff0c;也能加深印象和發現自己未注意的細節&#xff0c;寫的過程其實仍然是一個學習的過程。有個記錄的話&#xff0c;在未來需要用到相關…

springmvc知識點

一、SpringMVC概述 Spring MVC 是由Spring官方提供的基于MVC設計理念的web框架。 SpringMVC是基于Servlet封裝的用于實現MVC控制的框架&#xff0c;實現前端和服務端的交互。 1.1 SpringMVC優勢 嚴格遵守了MVC分層思想 采用了松耦合、插件式結構&#xff1b;相比較于我們封裝的…

spring @component的作用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、controller 控制器&#xff08;注入服務&#xff09; 2、service 服務&#xff08;注入dao&#xff09; 3、repository dao&#xff…

微信小程序 懸浮按鈕

2019獨角獸企業重金招聘Python工程師標準>>> 效果視頻 https://pan.baidu.com/s/1yfrDaG9YAX0--v0EA3awZA 布局需要按照圓形排列&#xff0c;所以我們需要計算每個點的坐標 代碼部分 <view styleposition:fixed; wx:for"{{list}}" wx:for-index"i…

C語言const關鍵字—也許該被替換為readolny

const 是constant 的縮寫&#xff0c;是恒定不變的意思&#xff0c;也翻譯為常量、常數等。很不幸&#xff0c;正是因為這一點&#xff0c;很多人都認為被const 修飾的值是常量。這是不精確的&#xff0c;精確的說應該是只讀的變量&#xff0c;其值在編譯時不能被使用&#xff…

dbus服務自啟動方法

Linux 一般發行版上 "/usr/share/dbus-1/services/"目錄就是dbus放service文件的地方。 需要自動啟動的服務器 就在這個目錄放一個 service文件&#xff0c;內容如下&#xff1a; $ cat /usr/share/dbus-1/services/dhcdbd.service [D-BUS Service] Namecom.redhat.…

在Spring Boot中使用 @ConfigurationProperties 注解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 上一篇博客寫了 如何在Spring Boot application中配置mail . 使用 Value 注解注入屬性. 但 Spring Boot 提供了另一種方式 &#xff0c;能…

Micronaut教程:如何使用基于JVM的框架構建微服務

\本文要點\\Micronaut是一種基于jvm的現代化全棧框架&#xff0c;用于構建模塊化且易于測試的微服務應用程序。\\tMicronaut提供完全的編譯時、反射無關的依賴注入和AOP。\\t該框架的開發團隊和Grails框架的開發團隊是同一個。\\tMicronaut框架集成了云技術&#xff0c;服務發現…

C語言extern關鍵詞—最會帶帽子的關鍵字

extern&#xff0c;外面的、外來的意思。那它有什么作用呢&#xff1f;舉個例子&#xff1a;假設你在大街上看到一個黑皮膚綠眼睛紅頭發的美女&#xff08;外星人&#xff1f;&#xff09;或者帥哥。你的第一反應就是這人不是國產的。extern 就相當于他們的這些區別于中國人的特…

解決Coldfusion連接MySQL數據庫的問題

在連接MySQL時&#xff0c;出現了如下錯誤&#xff1a; Connections to MySQL Community Server are not supported. Please contact MySQL to obtain a MySQL Enterprise or Commercial version. 解決方案&#xff1a; step 1: download the JDBC driver JDBC Driver for MySQ…

范式知識點

Mysql數據庫 ?前關系數據庫有六種范式&#xff1a; 第?范式&#xff08;1NF&#xff09;、第?范式&#xff08;2NF&#xff09;、第三范式&#xff08;3NF&#xff09;、巴斯-科德范式 &#xff08;BCNF&#xff09;、第四范式(4NF&#xff09;和第五范式&#xff08;5NF&a…

Tensorflow入門----占位符、常量和Session

安裝好TensorFlow之后&#xff0c;開一個python環境&#xff0c;就可以開始運行和使用TensorFlow了。 先給一個實例&#xff0c; #先導入TensorFlowimport tensorflow as tf # Create TensorFlow object called hello_constanthello_constant tf.constant(Hello World!) with …

C語言union關鍵字

union 關鍵字的用法與struct 的用法非常類似。union 維護足夠的空間來置放多個數據成員中的“一種”&#xff0c;而不是為每一個數據成員配置空間&#xff0c;在union 中所有的數據成員共用一個空間&#xff0c;同一時間只能儲存其中一個數據成員&#xff0c;所有的數據成員具有…

js 深拷貝 和 淺拷貝

1、 ...運算符 &#xff08;淺拷貝&#xff09; let obj {a:1,b:2}; let obj2 {...obj}; obj.a3 obj //{a: 3, b: 2} obj2 //{a: 1, b: 2}a {a:[{b:1}]}; b a ;b.a[0].b 2; //b {a:[{b:2}]}a // a {a:[{b:2}]} 2、 JSON.parse(JSON.stringify(參數))…

軟考如何備考

軟考上半年 報名時間 3月 考試時間 5月 備考持續時間&#xff1a;一個半月&#xff0c;每天至少兩個小時。 第一輪 基礎知識輪&#xff0c; 15天 在這一輪中如果碰到無法理解的知識點一定不要過于糾結&#xff0c;往后學&#xff0c;一般后面的學著學著之前的內容就…

Python學習第一天-第2節

*本節課內容參見&#xff1a;https://www.cnblogs.com/jin-xin/articles/7459977.html運行第一個Python程序 print(hello world) 將文本文件保存為以.py結尾的文件&#xff0c;如hello_world.py &#xff0c;在終端中&#xff0c;運行命令&#xff1a;Python hello_world.py&am…