日本編程書籍
① 日本中學編程是必修的甚至是小學也要必修編程,為何日本理工科依然很垃圾,日本人依然以當官進公司為目標
並沒有,日本的程序員很吃香的。日本的理工科在世界還是很有水平的。諾貝爾獎很多都有日本人的身影。如果日本的理工科垃圾的話,那就不會有索尼松下京瓷等上世紀輝煌的大企業了。 科技改變力量。不要看低別人更不要想著別人能力如何。能成為現在第三大經濟國家是自然有它的道理的。 取他人所長補自我所短才是發展的硬道理。
② 代碼之美的作者簡介
John Bentley是美國Avaya實驗室的一位計算機科學家。他的研究領域包括編程技術、演算法設計以及軟體工具與界面設計。他已編寫了數本關於編程的書籍, 還撰寫了大量的文章,主題涉及從演算法理論到軟體工程的各個方向。他於1974年在斯坦福大學獲得學士學位,並於1974年獲得碩士學位以及於1976年在 北卡羅來納大學獲得博士學位,隨後在卡耐基-梅隆大學任教6年,教授計算機科學。1982年他加入貝爾實驗室,並於2001年離開貝爾實驗室並加入 Avaya實驗室。他曾是西點軍校和普林斯頓大學的訪問教授、曾經參與開發過軟體工具、電話交換機、電話以及網路服務。
Tim Bray於1987-1989年間在加拿大的安大略省滑鐵盧大學負責牛津英語詞典項目,1989年與他人聯合創建了Open Text公司,在1995年啟動了最早的公共網頁搜索引擎之一,在1996至1999年間與他人共同發明了XML 1.0並合作編寫了
《Namespaces in XML》規范,在1999年他創建了Antarctica Systems公司,並於2002-2004年被Tim Berners-Lee任命在W3C技術架構組中工作。目前,他在Sun Microsystems公司Web Technologies部門任主管,他有一個很受歡迎的博客,並且參與主持IETF AtomPub工作組。
Bryan Cantrill是Sun Microsystems公司的一位傑出的工程師,在他的職業生涯中主要從事Solaris內核的開發。最近他與同事Mike Shapiro和Adam Leventhal一起設計並實現了DTrace,這是一個用於產品系統動態控制的工具,獲得了《華爾街日報》2006年度的最高創新獎。
Douglas Crockford畢業於公立學校。他是一位登記選民,擁有自己的汽車。他曾開發過辦公自動化系統。他曾在Atari公司從事過游戲和音樂研究。他曾是 Lucasfilm有限公司技術部門的主管,以及Paramount公司New Media部門的主管。他創建了Electric Communities公司並且擔任CEO。他還是State 軟體公司的創建者和CTO,正是在這個公司中他發明了JSON數據格式。他現在是Yahoo!公司的一位架構師。
Rogerio Atem de Carvalho是巴西校園技術教育聯合中心(Federal Center for Technological Ecation of Campos,CEFET Campos)的一位教師兼研究人員。他在奧地利的維也納獲得了2006年度IFIP傑出學術領導獎(Distinguished Academic Leadership Award),以表彰他在免費/開源企業資源計劃(ERP)上所做的研究工作。他的研究領域還包括決策支持系統和軟體工程。
Jeff Dean於1999年加入Google,目前是Google系統架構小組的成員。他在Google主要負責開發Google的網頁抓取、索引、查詢服務以 及廣告系統等,他對搜索質量實現了多次改進,並實現了Google分布式計算架構的多個部分。在加入Google之前,他工作於DEC/Compaq的 Western實驗室,主要從事軟體分析工具、微處理器架構以及信息檢索等方面的研究。他於1996年在華盛頓大學獲得了博士學位,與Craig Chambers一起從事面向對象語言的編譯器優化技術方面的研究。在畢業之前,他還在世界衛生組織的艾滋病全球規劃署工作過。
Jack Dongarra於1972年在芝加哥大學獲得數學學士學位,並於1973年在伊利諾理工大學獲得計算機科學碩士學位,又於1980年在新墨西哥大學獲得 應用數學博士學位。他在美國阿貢國家實驗室(Argonne National Laboratory)一直工作到1989年,並成為了一名著名科學家。他現在被任命為田納西大學計算機科學系的計算機科學傑出教授。他是美國橡樹嶺國家 實驗室(Oak Ridge National Laboratory ,ORNL)計算機科學與數學部的傑出的研究人員,曼徹斯特大學計算機科學與數學學院的Turing Fellow,美國萊斯大學計算機科學系的副教授。他的研究領域包括線性代數中的數值演算法,並行計算,高級計算機架構的應用,程序設計方法學以及用於並行 計算機的工具。他的研究工作包括開發、測試高質量的數學軟體以及整理相關文檔。他在以下開源軟體包和系統的設計及實現上做出了貢獻:ISPACK, LINPACK, the BLAS, LAPACK, ScaLAPACK, Netlib, PVM, MPI, NetSolve, Top500, ATLAS, 和 PAPI。他公開發表了大約200篇文章、論文、報告以及技術備忘錄,還參與編寫了數本著作。他於2004年獲得了IEEE Sid Fernbach獎,以表彰他在高性能計算機的應用中使用了創新的方法。他不僅是AAAS,ACM和IEEE的成員,還是美國工程院的院士。
R. Kent Dybvig是印第安納大學計算機科學系的一位教授。在印第安納大學任教兩年之後,他於1987年在北卡羅來納大學獲得了博士學位。他在設計和實現編程語 言的研究上做出了重要的貢獻,包括控制運算符、句法抽象、程序分析、編譯器優化、寄存器分配、多線程以及自動存儲管理等。在1984年,他創建了Chez Scheme軟體並一直是主要的開發人員。Chez Scheme的特點在於快速的編譯時間、可靠性以及能夠高效地運行內存需求巨大的復雜程序,它已經被用於構建企業集成、網頁服務、虛擬現實、機器人葯品抽 檢、電路設計以及其他的商業系統。它還可以用於各種層次的計算機教育以及許多其他領域中的研究。Dybvig是《The Scheme Programming Language, Third Edition》(MIT Press出版社)一書的作者,以及即將發布的「Revised6 Report on Scheme」文檔的編輯。
Michael Feathers是Object Mentor 公司的顧問。在過去七年間,他一直活躍於Agile社群,他的工作主要是與世界各地不同的團隊合作,培訓以及指導。在加入Object Mentor公司之前,Michael設計過一種編程語言,並為這種語言寫了一個編譯器。他還設計了一個龐大的多平台類庫以及用於控制的框架。 Michael開發了CppUnit,也就是最初把JUnit移植到C++;以及FitCpp,也就是把FIT移植到C++。在2005年, Michael編寫了《Working Effectively with Legacy Code》(Prentice Hall出版社)一書。在與各個團隊合作的間隙,他的大多數時間都花在研究大型代碼庫中的設計修改方式方面。
1995年,Karl Fogel和Jim Blandy一起創建了Cyclic軟體公司,這是第一個提供商業CVS支持的公司。1997年,Karl增加了對CVS匿名只讀存儲倉庫訪問的支持,這 樣就可以更方便地訪問開源項目中的開發代碼。1999年,他工作於CollabNet公司,主要從事管理Subversion的創建和開發工作,這是 CollabNet公司和一群開源志願者們從頭開始編寫的開源版本控制系統。2005年,他編寫了《Procing Open Source Software: How to Run a Successful Free Software Project 》(O'Reilly出版社;在http://procingoss.com上有聯機版本) 一書。2006年,他在Google擔任了短期的開源技術專家之後離開Google並成為了Question-Copyright.org網站的全職編 輯。他目前仍然參與了多個開源項目,包括Subversion和GNU Emacs。
Sanjay Ghemawat是一位Google Fellow,工作於Google的系統架構小組。他設計並實現了分布式的存儲系統,文本索引系統,性能分析工具,一種數據表示語言,一個RPC系統,一 個malloc函數實現以及許多其他的庫。在加入Google之前,他是DEC系統研究中心的一位研究人員,主要從事系統性能分析和優化Java編譯器的 工作,他還實現了一個Java虛擬機。他於1995年在麻省理工大學獲得博士學位,研究領域為面向對象資料庫的實現。
Ashish Gulhati是互聯網隱私服務Neomailbox的首席開發員,以及Cryptonite的開發員,這是一個支持OpenPGP協議的安全網頁郵件系 統。他有著15年的商業軟體開發經驗,是印度最早的數字版權活動家之一和F/OSS程序員,他編寫了大量的開源Perl模塊,這些模塊可以從CPAN上下 載。在1993~1994年間,他在《PC Quest》和《DataQuest》等雜志上發表了大量文章,這是在印度主流計算機刊物中最早向讀者介紹自由軟體,GNU/ linux,Web和Internet的文章,在這些文章發表多年以後,印度才擁有了商業的互聯網訪問,這些文章還構成了PC Quest Linux Initiative活動的重要組成部分,這個活動促使自1995年以來,在印度分發了一百萬份Linux光碟。在獲得了一組可穿戴的計算機後,他很快地 成為了一個電子人。
Elliotte Rusty Harold是新奧爾良人,他會定期返回新奧爾良去吃一大碗海鮮干波湯(Gumbo)。不過,他目前住在布魯克林附近的Prospect Heights,和他生活在一起還有他的妻子Beth,狗Shayna,和兩只貓Charm(以誇克命名)和Marjorie(以他的岳母命名)。他是紐 約科技大學的一位副教授,主要講授Java、XML以及面向對象編程。他的Cafe au Lait網站是互聯網上最流行的獨立Java網站之一;他的另一個網站Cafe con Leche 則成為了最流行XML站點之一。他編寫的書籍包括《Java I/O》,《Java Network Programming》和《XML in a Nutshell》(這三本書都由O'Reilly出版社出版),以及XML Bible (Wiley出版社)。他目前的研究領域包括用Java來處理XML的XOM庫、Jaxen XPath引擎以及Amateur媒體播放器。
Brian Hayes為《American Scientist》雜志編寫計算機專欄,他還擁有一個博客。過去,他還為《Scientific American》、《Computer Language》、 以及《The Sciences》等雜志編寫過類似的專欄。他編寫的《Infrastructure: A Field Guide to the Instrial Landscape》(Norton出版社)一書於2005年發行。
Simon Peyton Jones,碩士,於1980年畢業於劍橋大學三一學院。在工作兩年後,他在倫敦大學學院擔任了7年的講師,然後在格拉斯哥大學擔任了9年的教授,後來於 1998年加入微軟研究中心。他的研究領域包括函數式編程語言及其實現和應用。他領導了一系列的研究項目,主要研究用於單處理器機器和並行機的高質量函數 式語言系統的設計和實現。他是函數式語言Haskell的主要設計者,此外他還是被廣泛應用的Glasgow Haskell編譯器(GHC)首席設計師。他還編寫了兩本關於函數式語言實現的教科書。
Jim Kent是加利福尼亞大學聖克魯茲分校基因信息小組(Genome Bioinformatics Group)的一位研究學家。Jim從1983年起就開始編程。在職業生涯的前半段,他主要從事繪畫和動畫軟體的開發,他開發了Aegis Animator、 Cyber Paint以及 Autodesk Animator等獲獎軟體。1996年,由於厭倦了基於Windows API的開發工作,他決定在生物學上追求他的興趣,並於2002年獲得了博士學位。在研究生期間,他編寫GigAssembler——這個程序計算出了第 一批人類基因組——比Celera公司發布的第一批基因組提前了一天,從而使得這批基因組成為免費的專利並且避免了其他的法律問題。Jim發表了40餘篇 科學論文。他目前的研究工作主要是編寫程序,資料庫和網站以幫助科學家分析和了解基因組。
Brian Kernighan於1964年在多倫多大學獲得學士學位,並於1969年在普林斯頓大學獲得電子工程博士學位。他在貝爾實驗室的計算科學研究中心一直工 作到2000年,目前就職於普林斯頓大學的計算機科學系。他編寫了8本著作以及大量的技術論文,並擁有4項專利。他的研究領域包括編程語言、工具、為非專 業用戶設計易用的計算機操作界面等。他還致力於非技術讀者的技術教育工作。
Adam Kolawa是Parasoft公司的創建者之一和CEO,這家公司是自動錯誤預防(Automated Error Prevention ,AEP)解決方案的領先提供商。Kolawa有著多年在各種軟體開發流程中的經驗,這使得他對高科技企業有著獨特的視野,以及成功辨識技術潮流的非凡能 力。因此,他策劃了幾個成功商業軟體產品的開發過程來滿足在提高軟體質量中不斷增長的工業需求——經常在這種潮流被廣泛接受之前。Kolawa參與編寫了 《Bulletproofing Web Applications》(Hungry Minds出版社)一書,他還撰寫了100餘篇評論和技術文章,發表在《The Wall Street Journal》、《CIO》、《Computerworld》、《Dr. Dobb's Journal》以及《IEEE Computer》等期刊上。此外,他還撰寫了大量關於物理學和並行處理方面的科學論文。他現在的簽約媒體包括CNN、 CNBC、 BBC和NPR。Kolawa擁有加利福尼亞理工大學理論物理博士學位,並擁有10項專利發明。2001年,Kolawa獲得了軟體類別的Los Angeles Ernst & Young's Entrepreneur of the Year獎項。
Greg Kroah-Hartman是目前Linux內核的維護人員,負責多個驅動程序子系統以及驅動程序內核、sysfs、 kobject、 kref和debugfs等代碼。他還為啟動linux-hotplug 和 udev等項目提供了幫助,是內核穩定維護團隊中的重要人員。他編寫了《Linux Kernel in a Nutshell》(O'Reilly出版社),並參與編寫了《Linux Device Drivers, Third Edition》(O'Reilly出版社)。
Andrew Kuchling有著11年的軟體工程師經驗,他是Python開發群體中的長期成員。他的一些與Python相關的工作包括編寫和維護數個標準的庫模 塊,編寫一系列的「What's new in Python 2.x」文章以及其他一些文檔,策劃了2006年和2007年的PyCon會議,並是Python軟體基金會的主管。Andrew於1995年畢業於麥吉 爾大學並獲得計算機科學學士學位。他的個人網頁是http://www.amk.ca。
Piotr Luszczek畢業於波蘭克拉科夫礦業與冶金大學,並獲得碩士學位,他的研究領域是並行的核外(out-of-core)庫。他將稠密矩陣計算核應用於 稀疏矩陣直接求解演算法和迭代數值線性幾何演算法中的創新研究使他獲得了博士學位。他把這種思想用來開發使用核外技術容錯庫。目前,他是田納西大學諾克斯維爾 分校的一位研究教授。他的研究工作包括大型超級計算機安裝的標准化評價。他開發了一個自適應的軟體庫,能夠自動選擇最優的演算法來有效地利用現有硬體以及有 選擇地處理輸入數據。他還感興趣於高性能編程語言的設計和實現。
Ronald Mak是高級計算機科學研究所(Research Institute for Advanced Computer Science)的一位資深科學家,在NASA Ames研究中心工作時,他是協同信息系統(Collaborative Information Portal,CIP)的架構師和首席開發人員。在漫步者登錄火星之後,他分別在JPL和Ames對探測任務提供支持。然後,他獲得了加利福尼亞大學聖克 魯茲分校的學術任命,並且他再次與NASA簽約,這次的工作是設計幫助宇航員返回月球的企業軟體。Ron是Willard & Lowe Systems公司的創建人之一和CTO,這是一個針對企業信息管理系統的咨詢公司。他編寫了 數本關於計算機軟體的書籍,他在斯坦福大學分別獲得了數學科學學位和計算機科學學位。
Yukihiro Matz Matsumoto是一位程序員,他是一位日本籍的開源倡導者,他發明了最近非常流行的Ruby語言。他從1993年開始研發Ruby,這和Java語言 一樣久遠。現在他工作於日本Network Applied Communication Laboratory(NaCl,網址為netlab.jp)公司,該公司從1997年起開始贊助Ruby的開發。因為他的真實姓名太長而難以記住,並且 對於非日本的演講者來說難以發音,因此在網上他使用了昵稱Matz。
Arun Mehta是一位電子工程師和計算機科學家,他曾在印度、美國和德國進行過研究和教學工作。他是印度早期計算機活動家,他努力實現了一些方便消費者 (consumer-friendly)的政策,以幫助把現代通信延伸到偏遠地區和貧困地區。他目前的研究領域包括農村無限通信以及幫助殘疾用戶的技術。 他是印度哈里亞納邦Radaur地區JMIT大學計算機工程系的教授和主任。
Rafael Manhaes Monnerat是CEFET CAMPOS的一位IT分析家,以及Nexedi SARL的海外顧問。他的研究領域包括免費/開源系統、ERP以及最新的編程語言。
Travis E. Oliphant於1995年在美國楊百翰大學獲得電子與計算機工程學士學位和數學學士學位,並於1996年在本校獲得電子與計算機工程碩士學位。他於 2001年在明尼蘇達羅切斯特的梅奧研究生院獲得了生物醫學工程博士學位。他是Python語言中科學計算庫SciPy和NumPy的主要編寫者。他的研 究領域包括顯微阻抗成像,異構領域中的MRI重構以及生物醫學逆問題。他目前是楊百翰大學電子與計算機工程的副教授。
Andy Oram是O'Reilly Media的編輯。他從1992年開始就在這家公司工作,Andy目前主要關注自由軟體和開源技術。他在O'Reilly的工作成果包括第一批Linux 系列叢書以及2001年的P2P系列叢書。他的編程技術和系統管理技術大多都是自學的。Andy還是Computer Professionals for Social Responsibility協會的成員並且經常在O'Reilly Network(http://oreillynet.com)和其他一些刊物上撰寫文章,這些文章的主題包括互聯網上的政策問題,以及影響技術創新的潮 流及其對社會的影響。
William R. Otte是田納西范德堡大學電子工程與計算機系(EECS)的一位博士研究生。他的研究領域是分布式實時嵌入(DRE)系統的中間件,目前從事CORBA 組件的部署和配置引擎(DAnCE)開發工作。這個工作主要研究運行時規劃技術,基於組件的應用程序的適應性,以及對應用程序服務質量和容錯需求的規范與 實施。在攻讀研究生之前,William於2005年在范德堡大學計算機系畢業並獲得學士學位,之後在軟體集成系統學院(ISIS)工作了一年。
Andrew Patzer是威斯康星大學醫學院生物信息系的主管。過去15年Andrew是一位軟體開發人員並且編寫了許多文章和書籍,包括 《Professional Java Server Programming》(Peer Information公司)和《JSP Examples and Best Practices》(Apress出版社)。Andrew目前的研究領域為生物信息領域,利用像Groovy這樣的動態語言來發掘大量有效的生物數據並 幫助科學研究人員進行分析。
Charles Petzold是一位自由作家,主要研究領域為Windows應用程序編程。他是《Programming Windows》(Microsoft Press出版社)的作者, 1988年至1999年之間共出版了五版,教育了整整一代程序員的Windows API編程技術。他最新的書籍包括《Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation》(Microsoft Press出版社),以及《Code: The Hidden Language of Computer Hardware and Software》(Microsoft Press出版社),在這本書中他對數字技術進行了獨特的研究。
T. V. Raman的研究領域包括網頁技術和聽覺用戶界面。在20世紀90年代初,在他的博士論文中介紹了音頻格式的概念,叫作AsTeR:Audio System For Technical Readings(技術讀物語音系統),這是一個為技術文檔生成高質量聽覺表示的系統。Emacspeak則將這些思想應用到更廣泛的計算機用戶界面領 域。Raman現在是Google的一位研究人員,主要研究Web應用程序。
Alberto Savoia是Agitar軟體公司的創建人之一和CTO。在創建Agitar之前,他是Google的高級工程主管;在這之前,他還是Sun Microsystems實驗室軟體研究中心的主管。Alberto的主要研究領域是軟體開發技術——尤其是那些幫助程序員在設計和開發階段進行測試和代 碼驗證的工具和技術。
Douglas C. Schmidt是田納西范德堡大學電子工程與計算機(EECS)系的一位教授,計算機科學與工程系的副主任,以及軟體集成系統學院(ISIS)的高級研究 人員。他是分布式計算模式和中間件框架方面的專家,並且已經發表了超過350篇的技術論文和9本書籍,內容涉及的主題很廣,包括高性能通信軟體系統,高速 網路協議並行處理,實時分布式對象計算,並發與分布式系統的面向對象模式,以及模型驅動的開發工具。在他的學術研究之外,Dr. Schmidt還是PrismTechnologies公司的CTO,並且在領導開發應用廣泛開源的中間件平台上有著15年的經驗,在這些平台上包含了豐 富的組件以及實現高性能分布式系統中核心模式的領域特定語言。Dr. Schmidt於1994年於加利福尼亞大學歐文分校獲得計算機科學博士學位。
Christopher Seiwald編寫了Perforce(一種軟體配置管理系統)、Jam(一種構建工具)和「漂亮代碼的七個要素」(本書的第32章,變動的代碼,正是從 這篇文章中提取出了有價值的思想)。在創建Perforce之前,他在Ingres公司管理網路開發小組,他花了數年時間來使得非同步網路代碼看上去很漂 亮。現在他是Perforce軟體公司的CEO,並且仍然從事編碼工作。
Diomidis Spinellis是希臘雅典經濟與商業大學管理科學與技術系的副教授。他的研究領域包括軟體工程工具,編程語言和計算機安全。他在倫敦帝國理工大學獲得 了軟體工程碩士學位和計算機科學博士學位。他發表了超過100篇的技術論文,所涉及的領域包括軟體工程,信息安全以及普適計算。他還編寫了兩本開源方面的 書籍:《Code Reading 》(獲得2004年度Software Development Proctivity獎)和《 Code Quality 》(這兩本書都由Addison-Wesley出版社出版)。他是IEEE Software編輯委員會的成員,主編「Tools of the Trade」專欄。Diomidis是一位FreeBSD提交者(Committer),並且編寫了許多開源軟體包、軟體庫以及工具。
Lincoln Stein是一位碩士/博士,他的研究領域為生物信息數據的集成與虛擬化。在從哈佛大學醫科學院畢業後,他在麻省理工大學Whitehead基因研究所工 作,開發用於老鼠和人類的基因圖譜資料庫。他在冷泉港實驗室開發了各種基因資料庫,包括WormBase,線蟲基因資料庫;Gramene,用於水稻和其 他單子葉植物的比較基因映射資料庫;國際Hap-Map項目資料庫;以及人類基因基礎資料庫Reactome。Lincoln還編寫了《books How to Set Up and Maintain a Web Site》(Addison-Wesley出版社)、《Network Programming in Perl》(Addison-Wesley出版社)、《Official Guide to Programming with CGI.pm 》(Wiley出版社)以及《Writing Apache Moles with Perl and C》(O'Reilly出版社)等書籍。
Nevin Thompson把Yukihiro Matsumoto編寫的第29章內容,把代碼當作文章,從日文翻譯到英文。他的客戶包括日本最大的電視網路,以及Technorati Japan公司和Creative Commons組織。
Henry S. Warren, Jr.在IBM工作了45年,他歷經了從IBM 704到PowerPC的發展過程。他參與過多個軍方指揮與控制系統的開發工作,在紐約大學Jack Schwartz教授指導下從事SETL項目。從1973年起,他在IBM研究部門工作,主要方向為編譯器和計算機架構。Hank目前正在參與Blue Gene Petaflop超級計算機項目。他在紐約大學克朗數學研究所獲得了計算機博士學位。他是《Hacker's Delight》(Addison-Wesley出版社)一書的作者。
Laura Wingerd多年Sybase和Ingres的資料庫產品開發工作形成了她早期對軟體配置管理的觀點。她在Perforce軟體公司創建之初就加盟了這 家公司,並且從她給Perforce客戶的建議中獲得了大量的SCM經驗。她編寫了《Practical Perforce》(O'Reilly出版社)一書以及許多與SCM相關的白皮書。她在Google的技術演講The Flow of Change中首次露面。Laura現在是Perforce 軟體公司產品技術部的副主管,主要負責推動合理的SCM流程以及研究新的並且更好的Perforce使用方式。
Greg Wilson在愛丁堡大學獲得了計算機科學博士學位,他的研究領域包括高性能科學計算,數據虛擬化以及計算機安全。他現在是多倫多大學計算機科學系的一位副教授,並且是《Dr. Dobb's Journal》雜志的特約編輯。
Andreas Zeller於1991年畢業於德國達姆斯塔特理工大學,並於1997年在不倫瑞克理工大學獲得計算機科學博士學位。2001年以來,他一直在德國薩爾蘭 登大學的計算機科學系擔任教授。Zeller主要研究大型程序以及它們的發展歷史,他開發了大量的方法來分析在開源軟體以及IBM、Microsoft、 SAP以及其他公司的商業軟體中失敗的原因。他編寫的《Why Programs Fail: A Guide to Systematic Debugging》(Morgan Kaufmann出版社)獲得了《Software Development Magazine》雜志2006年度的Proctivity大獎。

③ dk3本編程書有什麼區別
版本不同。
《DK編程教室》是2020年南海出版公司出版的圖書。在美國、英國、日本和芬蘭,編程已進入小學課堂,成為兒童教育的基礎課程。在中國,編程已被北京、浙江、山東等多個省市納入中小學課程體系,並將在全國逐步推廣。DK編程真好玩:6歲開始學Scratch,書中主要是通過創作游戲來學習編程,沒有基礎的孩子可以一步步的跟學,逐漸的增加難度。內容形式很有趣,像我家孩子特別喜歡的紅、黃、藍球大戰,從自己玩游戲到能自己嘗試製作游戲,孩子自己也很高興。
Scratch是一款由麻省理工學院(MIT)設計開發的面向少年兒童的簡易編程工具,又稱為積件式兒童編程軟體,針對8歲以上孩子的認知水平,用類似於積木的模塊實現構成程序的命令和參數。《DK編程玩起來。》系列從Scratch基礎開始,難度逐步增加,讓小朋友可以通過自學輕松入門,用Scratch的基本方法根據案例進行編程、製作簡單小游戲,最終達到自己獨立編程的水平。書中包含多個Scratch實戰案例,趣味性與實用性兼顧,既提高了小朋友對Scratch編程的興趣,又充分滿足了學習編程的需要。讓小朋友可以通過自學輕松入門,進而創建好玩兒的小游戲和小程序。
④ 中文編程是什麼 中文編程為何一直不流行
中文編程包括所有在代碼中使用中文的實踐. 在使用中文語法和關鍵詞之外, 也包括使用中文命名標識符.
前者已有易語言等先驅, 個人並非它的用戶, 但感覺它未大規模應用於商業的原因有不少, 技術方面比如它的開發環境對團隊開發支持有限, 如版本控制等等. 非技術方面, 當時大規模推廣時遇到的殺毒軟體誤報等等波折導致它錯過了最佳推廣和發展時機. 現在也有很多其他中文語法的開發環境, 包括移動開發和桌面應用等等, 個人用戶也有不少. 流行程度應該是被低估了, 因為大多數編程社區都以英文編程語言的內容為主, 而使用中文編程工具的用戶往往更加低調.
也許更被低估的後者, 即用現有英文編程語言編程時使用中文命名標識符, 很早就有個人和公司開始實踐. 我看到最早的個人實踐在2004年, 公司實踐肯定早於2012年. 現在的多數常用英文編程語言如Java, C#, Python, JavaScript等等都在十數年前就支持了Unicode命名, 包括用中文命名標識符. 母語命名可以提升代碼可讀性和可維護性這一認識已經逐步普及. 前不久還看到使用日語命名的翻譯本編程書籍, 日本譯者也認為對面向日本國內的軟體開發, 將會逐漸普及使用日語命名. 相信中文命名這一實踐也會逐漸普及, 畢竟國內本身的軟體需求仍在上升, 尤其是製造業等等的信息化升級, 各種業務術語在代碼中使用中文命名將會比英文命名更可讀, 也更容易.
⑤ 介紹些計算機方面的書籍有哪些
1. 《信號與系統》

在《編碼》一書中,向我們展示了使用語言的一些直觀方法並創造新的方法來進行相互之間的交流,此書使我們明白了這種創造性以及我們人類對交流的迫切需求。
⑥ 我想學編程
編程
這是每個游戲編程FAQ里都有的問題。這個問題每星期都會在游戲開發論壇上被問上好幾次。這是個很好的問題,但是,沒人能給出簡單的答案。在某些應用程序中,總有一些計算機語言優於其他語言。下面是幾種用於編寫游戲的主要編程語言的介紹及其優缺點。希望這篇文章能幫助你做出決定。
1、C語言
如果說FORTRAN和COBOL是第一代高級編譯語言,那麼C語言就是它們的孫子輩。C語言是Dennis Ritchie在七十年代創建的,它功能更強大且與ALGOL保持更連續的繼承性,而ALGOL則是COBOL和FORTRAN的結構化繼承者。C語言被設計成一個比它的前輩更精巧、更簡單的版本,它適於編寫系統級的程序,比如操作系統。在此之前,操作系統是使用匯編語言編寫的,而且不可移植。C語言是第一個使得系統級代碼移植成為可能的編程語言。
C語言支持結構化編程,也就是說C的程序被編寫成一些分離的函數呼叫(調用)的集合,這些呼叫是自上而下運行,而不像一個單獨的集成塊的代碼使用GOTO語句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的「空心粉式代碼」代碼要簡單得多。事實上,C仍然具有GOTO語句,不過它的功能被限制了,僅當結構化方案非常復雜時才建議使用。
正由於它的系統編程根源,將C和匯編語言進行結合是相當容易的。函數調用介面非常簡單,而且匯編語言指令還能內嵌到C代碼中,所以,不需要連接獨立的匯編模塊。
優點:有益於編寫小而快的程序。很容易與匯編語言結合。具有很高的標准化,因此其他平台上的各版本非常相似。
缺點:不容易支持面向對象技術。語法有時會非常難以理解,並造成濫用。
移植性:C語言的核心以及ANSI函數調用都具有移植性,但僅限於流程式控制制、內存管理和簡單的文件處理。其他的東西都跟平台有關。比如說,為Windows和Mac開發可移植的程序,用戶界面部分就需要用到與系統相關的函數調用。這一般意味著你必須寫兩次用戶界面代碼,不過還好有一些庫可以減輕工作量。
用C語言編寫的游戲:非常非常多。
資料:C語言的經典著作是《The C Programming Language》,它經過多次修改,已經擴展到最初的三倍大,但它仍然是介紹C的優秀書本。一本極好的教程是《The Waite Group's C Primer Plus》。
2、C++
C++語言是具有面向對象特性的C語言的繼承者。面向對象編程,或稱OOP是結構化編程的下一步。OO程序由對象組成,其中的對象是數據和函數離散集合。有許多可用的對象庫存在,這使得編程簡單得只需要將一些程序「建築材料」堆在一起(至少理論上是這樣)。比如說,有很多的GUI和資料庫的庫實現為對象的集合。
C++總是辯論的主題,尤其是在游戲開發論壇里。有幾項C++的功能,比如虛擬函數,為函數呼叫的決策制定增加了一個額外層次,批評家很快指出C++程序將變得比相同功能的C程序來得大和慢。C++的擁護者則認為,用C寫出與虛擬函數等價的代碼同樣會增加開支。這將是一個還在進行,而且不可能很快得出結論的爭論。
我認為,C++的額外開支只是使用更好的語言的小付出。同樣的爭論發生在六十年代高級程序語言如COBOL和FORTRAN開始取代匯編成為語言所選的時候。批評家正確的指出使用高級語言編寫的程序天生就比手寫的匯編語言來得慢,而且必然如此。而高級語言支持者認為這么點小小的性能損失是值得的,因為COBOL和FORTRAN程序更容易編寫和維護。
優點:組織大型程序時比C語言好得多。很好的支持面向對象機制。通用數據結構,如鏈表和可增長的陣列組成的庫減輕了由於處理低層細節的負擔。
缺點:非常大而復雜。與C語言一樣存在語法濫用問題。比C慢。大多數編譯器沒有把整個語言正確的實現。
移植性:比C語言好多了,但依然不是很樂觀。因為它具有與C語言相同的缺點,大多數可移植性用戶界面庫都使用C++對象實現。
使用C++編寫的游戲:非常非常多。大多數的商業游戲是使用C或C++編寫的。
資料:最新版的《The C++ Programming Language》非常好。作為教程,有兩個陣營,一個假定你知道C,另外一個假定你不知道。到目前為止,最好的C++教程是《Who's Afraid of C++》,如果你已經熟知C,那麼試一下《Teach Yourself C++》。
3、我該學習C++或是該從C開始
我不喜歡這種說法,但它是繼「我該使用哪門語言」之後最經常被問及的問題。很不幸,不存在標准答案。你可以自學C並使用它來寫程序,從而節省一大堆的時間,不過使用這種方法有兩個弊端:
你將錯過那些面向對象的知識,因為它可能在你的游戲中使得數據建模更有效率的東西。
最大的商業游戲,包括第一人稱射擊游戲很多並沒有使用C++。但是,這些程序的作者即使使用老的C的格式,他們通常堅持使用面向對象編程技術。如果你只想學C,至少要自學OO(面向對象)編程技術。OO是模擬(游戲)的完美方法,如果你不學習OO,你將不得不「辛苦」的工作。
4、匯編語言
顯然,匯編是第一個計算機語言。匯編語言實際上是你計算機處理器實際運行的指令的命令形式表示法。這意味著你將與處理器的底層打交道,比如寄存器和堆棧。如果你要找的是類英語且有相關的自我說明的語言,這不是你想要的。
確切的說,任何你能在其他語言里做到的事情,匯編都能做,只是不那麼簡單 — 這是當然,就像說你既可以開車到某個地方,也可以走路去,只是難易之分。話雖不錯,但是新技術讓東西變得更易於使用。
總的來說,匯編語言不會在游戲中單獨應用。游戲使用匯編主要是使用它那些能提高性能的零零碎碎的部分。比如說,毀滅戰士整體使用C來編寫,有幾段繪圖程序使用匯編。這些程序每秒鍾要調用數千次,因此,盡可能的簡潔將有助於提高游戲的性能。而從C里調用匯編寫的函數是相當簡單的,因此同時使用兩種語言不成問題。
特別注意:語言的名字叫「匯編」。把匯編語言翻譯成真實的機器碼的工具叫「匯編程序」。把這門語言叫做「匯編程序」這種用詞不當相當普遍,因此,請從這門語言的正確稱呼作為起點出發。
優點:最小、最快的語言。匯編高手能編寫出比任何其他語言能實現的快得多的程序。你將是利用處理器最新功能的第一人,因為你能直接使用它們。
缺點:難學、語法晦澀、堅持效率,造成大量額外代碼 — 不適於心臟虛弱者。
移植性:接近零。因為這門語言是為一種單獨的處理器設計的,根本沒移植性可言。如果使用了某個特殊處理器的擴展功能,你的代碼甚至無法移植到其他同類型的處理器上(比如,AMD的3DNow指令是無法移植到其它奔騰系列的處理器上的)。
使用匯編編寫的游戲:我不知道有什麼商業游戲是完全用匯編開發的。不過有些游戲使用匯編完成多數對時間要求苛刻的部分。
資料:如果你正在找一門匯編語言的文檔,你主要要找晶元的文檔。網路上如Intel、AMD、Motorola等有一些關於它們的處理器的資料。對於書籍而言,《Assembly Language: Step-By-Step》是很值得學習的。
5、Pascal語言
Pascal語言是由Nicolas Wirth在七十年代早期設計的,因為他對於FORTRAN和COBOL沒有強制訓練學生的結構化編程感到很失望,「空心粉式代碼」變成了規范,而當時的語言又不反對它。Pascal被設計來強行使用結構化編程。最初的Pascal被嚴格設計成教學之用,最終,大量的擁護者促使它闖入了商業編程中。當Borland發布IBM PC上的 Turbo Pascal時,Pascal輝煌一時。集成的編輯器,閃電般的編譯器加上低廉的價格使之變得不可抵抗,Pascal編程了為MS-DOS編寫小程序的首選語言。
然而時日不久,C編譯器變得更快,並具有優秀的內置編輯器和調試器。Pascal在1990年Windows開始流行時走到了盡頭,Borland放棄了Pascal而把目光轉向了為Windows 編寫程序的C++。Turbo Pascal很快被人遺忘。
最後,在1996年,Borland發布了它的「Visual Basic殺手」— Delphi。它是一種快速的帶華麗用戶界面的 Pascal編譯器。由於不懈努力,它很快贏得了一大群愛好者。
基本上,Pascal比C簡單。雖然語法類似,它缺乏很多C有的簡潔操作符。這既是好事又是壞事。雖然很難寫出難以理解的「聰明」代碼,它同時也使得一些低級操作,如位操作變得困難起來。
優點:易學、平台相關的運行(Delphi)非常好。
缺點:「世界潮流」面向對象的Pascal繼承者(Mola、Oberon)尚未成功。語言標准不被編譯器開發者認同。專利權。
移植性:很差。語言的功能由於平台的轉變而轉變,沒有移植性工具包來處理平台相關的功能。
使用Pascal編寫的游戲:幾個。DirectX的Delphi組件使得游戲場所變大了。
資料:查找跟Delphi有關的資料,請訪問:Inprise Delphi page。
6、Visual Basic
哈,BASIC。回到八十年代的石器時代,它是程序初學者的第一個語言。最初的BASIC形式,雖然易於學習,卻是可怕的無組織化,它義無反顧的使用了GOTO充斥的「空心粉式代碼」。當回憶起BASIC的行號和GOSUB命令,沒有幾個人能止住眼角的淚水。
快速前進到九十年代早期,雖然不是蘋果公司所希望的巨人,HyperCard仍然是一個在Windows下無法比擬的吸引人的小型編程環境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂貴。為了與HyperCard一決高下,微軟取得了一個小巧的名為Thunder編程環境的許可權,並把它作為Visual Basci 1.0發布,其用戶界面在當時非常具有新意。這門語言雖然還叫做Basic(不再是全部大寫),但更加結構化了,行號也被去除。實際上,這門語言與那些內置於TRS-80、Apple II及Atari里的舊的ROM BASIC相比,更像是帶Basic風格動詞的Pascal。
經過六個版本,Visual Basic變得非常漂亮。用戶界面發生了許多變化,但依然保留著「把代碼關聯到用戶界面」的主旨。這使得它在與即時編譯結合時變成了一個快速原型的優異環境。
優點:整潔的編輯環境。易學、即時編譯導致簡單、迅速的原型。大量可用的插件。雖然有第三方的DirectX插件,DirectX 7已准備提供Visual Basic的支持。
缺點:程序很大,而且運行時需要幾個巨大的運行時動態連接庫。雖然表單型和對話框型的程序很容易完成,要編寫好的圖形程序卻比較難。調用Windows的API程序非常笨拙,因為VB的數據結構沒能很好的映射到C中。有OO功能,但卻不是完全的面向對象。專利權。
移植性:非常差。因為Visual Basic是微軟的產品,你自然就被局限在他們實現它的平台上。也就是說,你能得到的選擇是:Windows,Windows或Widnows。當然,有一些工具能將VB程序轉變成Java。
使用Visual Basic編寫的游戲:一些。有很多使用VB編寫的共享游戲,還有一些是商業性的。
資料:微軟的VB頁面有一些信息。
7、Java
Java是由Sun最初設計用於嵌入程序的可移植性「小C++」。在網頁上運行小程序的想法著實吸引了不少人的目光,於是,這門語言迅速崛起。事實證明,Java不僅僅適於在網頁上內嵌動畫 — 它是一門極好的完全的軟體編程的小語言。「虛擬機」機制、垃圾回收以及沒有指針等使它很容易實現不易崩潰且不會泄漏資源的可靠程序。
雖然不是C++的正式續篇,Java從C++ 中借用了大量的語法。它丟棄了很多C++的復雜功能,從而形成一門緊湊而易學的語言。不像C++,Java強制面向對象編程,要在Java里寫非面向對象的程序就像要在Pascal里寫「空心粉式代碼」一樣困難。
優點:二進制碼可移植到其他平台。程序可以在網頁中運行。內含的類庫非常標准且極其健壯。自動分配合垃圾回收避免程序中資源泄漏。網上數量巨大的代碼常式。
缺點:使用一個「虛擬機」來運行可移植的位元組碼而非本地機器碼,程序將比真正編譯器慢。有很多技術(例如「即時」編譯器)很大的提高了Java的速度,不過速度永遠比不過機器碼方案。早期的功能,如AWT沒經過慎重考慮,雖然被正式廢除,但為了保持向後兼容不得不保留。越高級的技術,造成處理低級的機器功能越困難,Sun為這門語言增加新的「受祝福」功能的速度實在太慢。
移植性:最好的,但仍未達到它本應達到的水平。低級代碼具有非常高的可移植性,但是,很多UI及新功能在某些平台上不穩定。
使用Java編寫的游戲:網頁上有大量小的Applet,但僅有一些是商業性的。有幾個商業游戲使用Java作為內部腳本語言。
資料:Sun的官方Java頁面有一些好的信息。IBM也有一個非常好的Java頁面。JavaLobby是一個關於Java新聞的最好去處。
8、創作工具
上面所提及的編程語言涵蓋了大多數的商業游戲。但是也有一個例外,這個大游戲由於它的缺席而變得突出。
「神秘島」。沒錯,賣得最好的商業游戲不是使用以上任何一門語言編的,雖然有人說「神秘島」99%是使用 3D建模工具製作的,其根本的編程邏輯是在HyperCard里完成的。
多數創作工具有點像Visual Basic,只是它們工作在更高的層次上。大多數工具使用一些拖拉式的流程圖來模擬流程式控制制。很多內置解釋的程序語言,但是這些語言都無法像上面所說的單獨的語言那樣健壯。
優點:快速原型 — 如果你的游戲符合工具製作的主旨,你或許能使你的游戲跑得比使用其他語言快。在很多情況下,你可以創造一個不需要任何代碼的簡單游戲。使用插件程序,如Shockware及IconAuthor播放器,你可以在網頁上發布很多創作工具生成的程序。
缺點:專利權,至於將增加什麼功能,你將受到工具製造者的支配。你必須考慮這些工具是否能滿足你游戲的需要,因為有很多事情是那些創作工具無法完成的。某些工具會產生臃腫得可怕的程序。
移植性:因為創作工具是具有專利權的,你的移植性以他們提供的功能息息相關。有些系統,如Director可以在幾種平台上創作和運行,有些工具則在某一平台上創作,在多種平台上運行,還有的是僅能在單一平台上創作和運行。
使用創作工具編寫的游戲:「神秘島」和其他一些同類型的探險游戲。所有的Shockwave游戲都在網路上。
資料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、易語言
★全中文支持,無需跨越英語門檻。★全可視化編程,支持所見即所得程序界面設計和程序流程編碼。★中文語句快速錄入。提供多種內嵌專用輸入法,徹底解決中文語句輸入速度慢的問題。★代碼即文檔。自動規范強制代碼格式轉換,任何人編寫的任何程序源代碼格式均統一。★參數引導技術,方便程序語句參數錄入。★無定義類關鍵字。所有程序定義部分均採用表格填表方式,用戶無需記憶此類關鍵字及其使用格式。★命令格式統一。所有程序語句調用格式完全一致。★語法格式自動檢查。自動檢查並提示所輸入語句的語法格式是否正確,且可自動添加各類名稱。★全程提示與幫助。滑鼠停留立即顯示相關項目提示。編程時提示語法格式,調試時提示變數當前內容,隨時按下F1鍵可得到與當前主題相關詳細幫助等。★名稱自動管理。用戶修改任一名稱定義,其它所有包含該名稱的程序代碼均自動修正。★集成化開發環境。集界面設計、代碼編寫、調試分析、編譯打包等於一體。★學習資源豐富。詳細的幫助文件、數十兆的知識庫、數萬用戶的網上論壇、教材已出版發行……
10、結論
你可能希望得到一個關於「我該使用哪種語言」這個問題的更標準的結論。非常不幸,沒有一個對所有應用程序都最佳的解決方案。C適於快而小的程序,但不支持面向對象的編程。C++完全支持面向對象,但是非常復雜。Visual Basic與Delphi易學,但不可移植且有專利權。Java有很多簡潔的功能,但是慢。創作工具可以以最快的速度產生你的程序,但是僅對某一些類型的程序起作用。最好的方法是決定你要寫什麼樣的游戲,並選擇對你的游戲支持最好的語言。「試用三十天」的做法成為工業標準是件好事情。
