Ⅰ 如何從零開始學編程
在你學習編程之前思考一下你的目標,當你有最終目標時道路會更加的清晰。那麼,你想要寫什麼?網站?游戲?iOS或者Android應用?或是你是想自動化完成一些乏味的任務讓你有更多的時間看窗外的風景?也許你只是想更具有就業競爭力找個好工作。所有的這些都是有價值的目標,這些目標都是你編程學習推動力的一部分,沒有推動力的人,是無法在略顯枯燥的漫長學習之旅中走遠的。
不要浮躁
Badprogrammingiseasy.EvenDummiescanlearnitin21days.,meswithit.
不管是在線下還是線上的書店,滿目都是《21天學通java》這種速成書目,它們都承諾在很短一段時間內就讓你能夠學會相關技術。MatthiasFelleisen在他的著作HowtoDesignPrograms,SecondEdition一書中明確指出了這種「速成」的趨勢並予以了以上的諷刺。
所謂的「捷徑」或者說「銀彈」是不存在的,智者說過,精通某個東西需要10年或10000個小時,也就是漢語中的「十年磨一劍」,所以不用著急,功不唐捐。
培養興趣
ionbythepublic,butbecauseitisfuntoprogram.
_LinusTorvalds
沉醉於編程,編程更是為了興趣。興趣是推動力的不竭源泉,保持這種充滿興趣的感覺,以便於你能將其投入到你的10年/10000小時的編程時間中。編程很有趣,那是探索的喜悅。那是創造的喜悅。看到自己親手完成的作品顯示在屏幕上很有趣。有人為你的代碼而驚嘆很有趣。有人在公共場合稱贊你的產品、鄰居使用你的產品、以及在媒體上討論你的產品很有趣。編程應該十分有趣,若並非如此,就找出導致編程無趣的問題,然後解決之。
在這里對於初學者有兩個大坑:
如果初學者們只與預先構建好的「發動機和組件」接觸(沒有理解和思考它們構造的原理),這會嚴重限制他們在將來構建這些東西的能力,並且在診斷解決問題時無從下手。
第二個坑沒有第一個那麼明顯:幼稚的「整體論」方法有些時候會顯得很有效,這有一定的隱蔽性與誤導性,但是一兩年過後(也許沒那麼長),當你在學習路上走遠時,再想回過頭來「補足基礎」會有巨大的心理障礙,你得拋棄之前自己狹隘的觀念,耐心地緩步前進,這比你初學時學習基礎知識困難得多。
但臘敏茄也不能矯枉過正,陷入還原論的大坑,初學時便一心試圖做宏大的理論,這樣不僅有一切流於理論的危險,枯燥和乏味還會讓你失去推動力。這種情況經常發生在計算機科班生身上。
為了更好理解,可以將學習編程類比為學習廚藝:你為了燒得一手好菜買了一些關於菜譜的書,如果你只是想為家人做菜,這會是一個不錯的主意,你重復菜譜上的步驟也能做出不賴的菜餚,但是如果你有更大的野心,真的想在朋友面前露一手,做一些獨一無二的美味佳餚,甚至成為「大廚」,你必須理解這些菜譜背後大師的想法,理解其中的理論,而不僅僅是一味地實踐。但拿猛是如果你每天唯一的工作就是閱讀那些厚重的理論書籍,因為缺乏實踐,你只會成為一個糟糕的廚子,甚至永遠成為不了廚子,因為看了幾天書後你就因為枯燥放棄了廚藝的學習。
總之,編程是連接理論與實踐的紐帶,是計算機科學與計算機應用技術相交融的領域。正確的編程學習方法應該是:通過自頂而下的探索與項目實踐,獲得編程直覺與推動力;從自底向上的打基礎過程中,獲得最重要的通用方法並鞏固編程思想的理解。
作為初學者,應以後者為主,前者為輪察輔。
啟蒙
「學編程應該學哪門語言?」這經常是初學者問的第一個問題,但這是一個錯誤的問題,你最先考慮的問題應該是「哪些東西構成了編程學習的基礎」?
編程知識的金字塔底部有三個關鍵的部分:
演算法思想:例如怎樣找出一組數中最大的那個數?首先你得有一個maxSoFar變數,之後對於每個數
語法:我怎樣用某種編程語言表達這些演算法,讓計算機能夠理解。
系統基礎:為什麼while(1)時線程永遠無法結束?為什麼int*foo(){intx=0;return&x;}是不可行的?
啟蒙階段的初學者若選擇C語言作為第一門語言會很困難並且枯燥,這是因為他們被迫要同時學習這三個部分,在能做出東西前要花費很多時間。
因此,為了盡量最小化「語法」與「系統基礎」這兩部分,建議使用python作為學習的第一門語言,雖然Python對初學者很友好,但這並不意味著它只是一個「玩具」,在大型項目中你也能見到它強大而靈活的身影。熟悉Python後,學習C語言是便是一個不錯的選擇了:學習C語言會幫助你以靠近底層的視角思考問題,並且在後期幫助你理解操作系統層級的一些原理,如果你只想成為一個普通(平庸)的開發者你可以不學習它。
下面給出了一個可供參考的啟蒙階段導引,完成後你會在頭腦中構建起一個整體框架,幫助你進行自頂向下的探索。
完成Codecademy的Python部分。這只是熱身部分,盡快完成它,因為你永遠只是在瀏覽器里,你不會學到如何搭建開發環境。在Codecademy這類的編程學習網站學到的那點兒東西,哪怕你只想做一個小的不能再小的項目,你都不知道該從哪兒開始。
完成MIT6.00.1x(中文化)(如果你英語不過關,完成麻省理工學院公開課:計算機科學及編程導論。MOOC是學習編程的一個有效途徑。雖然該課程的教學語言為Python,但作為一門優秀的導論課,它強調學習計算機科學領域里的重要概念和範式,而不僅僅是教你特定的語言。如果你不是科班生,這能讓你在自學時開闊眼界;課程內容:計算概念,python編程語言,一些簡單的數據結構與演算法,測試與調試。支線任務:
完成Python核心編程
完成HarvardCS50(如果你英語不過關:完成哈佛大學公開課:計算機科學cs50。同樣是導論課,但這門課與MIT的導論課互補。教學語言涉及C,php,JavaScript+SQL,HTML+CSS,內容的廣度與深度十分合理,還能夠了解到最新的一些科技成果,可以很好激發學習計算機的興趣。支線任務:
閱讀《編碼的奧秘》
完成《C語言編程》
[可選]如果你的目標是成為一名Hacker:閱讀Hacker'sDelight
PS:如果教育對象還是一個孩子,以下的資源會很有幫助:
5-8歲:TurtleAcademy
8-12歲:PythonforKids
12歲以上:MITScratch或KhanAcademy
入門
結束啟蒙階段後,初學者積累了一定的代碼量,對編程也有了一定的了解。這時你可能想去學一門具體的技術,諸如Web開發,Android開發,iOS開發什麼的,你可以去嘗試做一些盡可能簡單的東西,給自己一些正反饋,補充自己的推動力。但記住別深入,這些技術有無數的細節,將來會有時間去學習;同樣的,這時候也別過於深入特定的框架和語言,現在是學習計算機科學通用基礎知識的時候,不要試圖去抄近路直接學你現在想學的東西,這是註定會失敗的。
那麼入門階段具體該做些什麼呢?這時候你需要做的是反思自己曾經寫過的程序,去思考程序為什麼(Why)要這樣設計?,思考怎樣(How)寫出更好的程序?試圖去探尋理解編程的本質:利用計算機解決問題。
設想:
X=用於思考解決方案的時間,即「解決問題」部分
Y=用於實現代碼的時間,即「利用計算機」部分」
編程能力=F(X,Y)(X>Y)
要想提高編程能力,就得優化X,Y與函數F(X,Y),很少有書的內容能同時著重集中在這三點上,但有一本書做到了——(SICP)《計算機程序的構造和解釋》,它為你指明了這三個變數的方向。在閱讀SICP之前,你也許能通過調用幾個函數解決一個簡單問題。但閱讀完SICP之後,你會學會如何將問題抽象並且分解,從而處理更復雜更龐大的問題,這是編程能力巨大的飛躍,這會在本質上改變你思考問題以及用代碼解決問題的方式。此外,SICP的教學語言為Scheme,可以讓你初步了解函數式編程。更重要的是,他的語法十分簡單,你可以很快學會它,從而把更多的時間用於學習書中的編程思想以及復雜問題的解決之道上。
PeterNorvig曾經寫過一篇非常精彩的SICP書評,其中有這樣一段:
Touseananalogy,ifSICPwereaboutautomobiles,,howtheyarebuilt,andhowonemightdesignfuel-efficient,safe,.highway,justlikeeveryoneelse.
如果你是文中的前者,閱讀SICP將成為你銜接啟蒙與入門階段的關鍵點
雖然SICP是一本「入門書」,但對於初學者還是有一定的難度,以下是一些十分有用的輔助資源:
):由上文提到的Google研究主管PeterNorvig主講,教學語言為Python,內容有一定難度。
HowtoDesignPrograms,SecondEdition:HtDP的起點比SICP低,書中的內容循循善誘,對初學者很友好,如果覺得完成SICP過於困難,可以考慮先讀一讀HtDP。
UCBerkeleySICP授課視頻以及SICP的兩位作者給Hewlett-Packard公司員工培訓時的錄像(中文化項目)
ComposingPrograms:一個繼承了SICP思想但使用Python作為教學語言的編程導論(其中包含了一些小項目)
SICP解題集:對於書後的習題,作為初學者應盡力並量力完成。
完成了這部分學習後,你會逐步建立起一個自己的程序設計模型,你的腦子里不再是一團亂麻,你會意識到記住庫和語法並不會教你如何解決編程問題,接下來要學些什麼,在你心裡也會明朗了很多。這時候才是真正開始進行項目實踐,補充推動力的好時機。
關於項目實踐:對於入門階段的初學者,參與開源項目還為時過早,這時候應該開始一些簡單的項目,諸如搭建一個網站並維護它,或是編寫一個小游戲再不斷進行擴展,如果你自己的想法不明確,MegaProjectList中選取項目。總之,務必在這時拿下你項目實踐的第一滴血。
與此同時,別忘了繼續打好根基。為了將來的厚積薄發,在下面這幾個方面你還要繼續做足功課(注意:下面的內容沒有絕對意義上的先後順序):
計算機系統基礎
有了之前程序設計的基礎後,想更加深入地把握計算機科學的脈絡,不妨看看這本書:《深入理解計算機系統》ComputerSystemsAProgrammer'sPerspective。這里點名批評這本書的中譯名,其實根本談不上什麼深入啦,這本書只是CMU的「計算機系統導論」的教材而已。CMU的計算機科學專業相對較偏軟體,該書就是從一個程序員的視角觀察計算機系統,以「程序在計算機中如何執行」為主線,全面闡述計算機系統內部實現的諸多細節。
如果你看書覺得有些枯燥的話,可以跟一門Coursera上的MOOC:TheHardware/SoftwareInterface,這門課的內容是CSAPP的一個子集,但是最經典的實驗部分都移植過來了。同時,可以看看TheCProgrammingLanguage,回顧一下C語言的知識。
完成這本書後,你會具備堅實的系統基礎,也具有了學習操作系統,編譯器,計算機網路等內容的先決條件。當學習更高級的系統內容時,翻閱一下此書的相應章節,同時編程實現其中的例子,一定會對書本上的理論具有更加感性的認識,真正做到經手的代碼,從上層設計到底層實現都瞭然於胸,並能在腦中回放數據在網路->內存->緩存->CPU的流向。
此外,也是時候去接觸UNIX哲學了:KISS-KeepitSimple,Stupid.在實踐中,這意味著你要開始熟悉命令行界面,配置文件。並且在開發中逐漸脫離之前使用的IDE,學會使用Vim或Emacs(或者最好兩者都去嘗試)。
閱讀《UNIX編程環境》
閱讀《UNIX編程藝術》
折騰你的UN*X系統
數據結構與演算法基礎
如今,很多人認為編程(特別是做web開發)的主要部分就是使用別人的代碼,能夠用清晰簡明的方式表達自己的想法比掌握硬核的數學與演算法技巧重要的多,數據結構排序函數二分搜索這不都內置了嗎?工作中永遠用不到,學演算法有啥用啊?這種扛著實用主義大旗的「碼農」思想當然不可取。沒有扎實的理論背景,遭遇瓶頸是遲早的事。
數據結構和演算法是配套的,入門階段你應該掌握的主要內容應該是:這個問題用什麼演算法和數據結構能更快解決。這就要求你對常見的數據結構和演算法了熟於心,你不一定要敲代碼,用紙手寫流程是更快的方式。對你不懂的數據結構和演算法,你要去搜它主要拿來幹嘛的,使用場景是什麼。
供你參考的學習資源:
《演算法導論》:有人說別把這本書當入門書,這本書本來就不是入門書嘛,雖說書名是IntroctiontoAlgorithms,這只不過是因為作者不想把這本書與其他書搞重名罷了。當然,也不是沒辦法拿此書入門,讀第一遍的時候跳過習題和證明就行了嘛,如果還覺得心虛先看看這本《數據結構與演算法分析》
CourseraAlgorithms:DesignandAnalysis[Part1]&[Part2]:Stanford開的演算法課,不限定語言,兩個部分跟下來演算法基礎基本就有了;英語沒過關的:麻省理工學院公開課:演算法導論
入門階段還要注意培養使用常規演算法解決小規模問題的能力,結合前文的SICP部分可以讀讀這幾本書:《編程珠璣》,《程序設計實踐》
編程語言基礎
.,.Additionally,,
-ThePragmaticProgrammer
此外還要知道,學習第n門編程語言的難度是第(n-1)門的一半,所以盡量去嘗試不同的編程語言與編程範式,若你跟尋了前文的指引,你已經接觸了:「干凈」的腳本語言Python,傳統的命令式語言C,以及浪漫的函數式語言Scheme/Racket三個好朋友。但僅僅是接觸遠遠不夠,你還需要不斷繼續加深與他們的友誼,並嘗試結交新朋友,美而雅的Ruby小姑娘,Hindley-Milner語言家族的掌中寶Haskell都是不錯的選擇。但有這么一位你躲不開的,必須得認識的大夥伴—C++,你得做好與他深交的准備:
入門:C++Primer
[可選]進階:
高效使用:EffectiveC++
深入了解:《深度探索C++對象模型》;C++Templates
研究反思:TheDesignandEvolutionofC++;對於C++這個NecessaryEvil,看這本書可以讓你選擇是成為守夜人還是守日人。
現實是殘酷的,在軟體工程領域仍舊充斥著一些狂熱者,他們只掌握著一種編程語言,也只想掌握一種語言,他們認為自己掌握的這門語言是最好的,其他異端都是傻X。這種人也不是無葯可救,有一種很簡單的治療方法:讓他們寫一個編譯器。要想真正理解編程語言,你必須親自實現一個。現在是入門階段,不要求你去上一門編譯器課程,但要求你能至少實現一個簡單的解釋器。
供你參考的學習資源:
《程序設計語言-實踐之路》:CMU編程語言原理的教材,程序語言入門書,現在就可以看,會極大擴展你的眼界,拉開你與普通人的差距。
Coursera編程語言MOOC:課堂上你能接觸到極端FP(函數式)的SML,中性偏FP的Racket,以及極端OOP(面向對象)的Ruby,並學會問題的FP分解vsOOP分解、ML的模式匹配、Lisp宏、不變性與可變性、解釋器的實現原理等,讓你在將來學習新語言時更加輕松並寫出更好的程序。
:熱熱身,教你寫一個簡單的瀏覽器——其實就是一個javascript和html的解釋器,完成後的成品還是很有趣的;接下來,試著完成一個之前在SICP部分提到過的項目:用Python寫一個SchemeInterpreter
其他
編程入門階段比較容易忽視的幾點:
學好英語:英語是你獲取高質量學習資源的主要工具,但在入門階段,所看的那些翻譯書信息損耗也沒那麼嚴重,以你自己情況權衡吧。此外英語的重要性更體現在溝通交流上,LinusTorvalds一個芬蘭人,一口流利的英語一直是他招募開發者為Linux幹活的的法寶,這是你的榜樣。
學會提問:學習中肯定會遇到問題,首先應該學會搜索引擎的「高級搜索」,當單靠檢索無法解決問題時,去StackOverflow或知乎提問,提問前讀讀這篇文章:Whathaveyoutried?
不要做一匹獨狼:嘗試搭建一個像這樣簡單的個人網站,不要只是一個孤零零的About頁面,去學習Markdown與LaTeX,試著在Blog上記錄自己的想法,並訂閱自己喜歡的編程類博客。推薦幾個供你參考:JoelonSoftware,PeterNorvig,CodingHorror
小結
以上的內容你不應該感到懼怕,編程的入門不是幾個星期就能完成的小項目。期間你還會遇到無數的困難,當你碰壁時試著嘗試「費曼」技巧:將難點分而化之,切成小知識塊,再逐個對付,之後通過向別人清楚地解說來檢驗自己是否真的理解。當然,依舊會有你解決不了的問題,這時候不要強迫自己——很多時候當你之後回過頭來再看這個問題時,一切豁然開朗。
此外不要局限與上文提到的那些材料,還有一些值得在入門階段以及將來的提升階段反復閱讀的書籍。ThePragmaticProgrammer就是這樣一本程序員入門書,終極書。有人稱這本書為代碼小全:從DRY到KISS,從做人到做程序員,這本書教給了你一切,你所需的只是遵循書上的指導。
後記
如果你能設法完成以上的所有任務,恭喜你,你已經真正實現了編程入門。這意味著你在之後更深入的學習中,不會畏懼那些學習新語言的任務,不會畏懼那些「復雜」的API,更不會畏懼學習具體的技術,甚至感覺很容易。當然,為了掌握這些東西你依舊需要大量的練習,腰還是會疼,走路還是會費勁,一口氣也上不了5樓。但我能保證你會在思想上有巨大的轉變,獲得極大的自信,看老師同學和csdn的眼光會變得非常微妙,雖然只是完成了編程入門,但已經成為了程序員精神世界的高富帥。不,我說錯了,即使是高富帥也不會有強力精神力,他也會懷疑自己,覺得自己沒錢就什麼都不是了。但總之,你遵循指南好好看書,那就會體驗「會當凌絕頂」的感覺。
首先要想學編程,選一門合適的計算機語言就十分重要了,怎麼去選擇就顯得尤為重要了,這要根據自己的興趣愛好及每個語言的特性來選擇,比如說PHP適合做web開發,易學習,易上手,非常流行的一門計算機語言了,我個人比較推薦php語言。
java可以做web開發,做安卓app開發也用的是java,在學習程度上上可能比php稍微難上手一點,不過也是沒問題的,如果對java感興趣可以嘗試一下。
python是目前比較火的一門語言了,比較適合做人工智慧領域,另外寫網路爬蟲類的程序,用python也是非常合適的了,看個人興趣來選擇了。
c,c++,c#這些語言就不推薦給了,特別是c#,已經是比較過時的一門語言了,即使學習好了,也不太適合去找工作,c與c++並不是十分適合初學者來學習,因此也是沒必要進行考慮了,還有一些更小眾的語言,更是沒有必要去考慮,因此關於語言的學習就從上面3種語言去選擇一門自己所感興趣的吧!
研發搭建環境
如果選擇好計算機語言,那麼接下來就是研發環境的搭建了,因為只有研發環境搭建好了,才可以進行後續的編程工作,比如說PHP,那麼就從網路上搜一下如何安裝PHP環境,能搜出一些簡單的教程,初學者按照教程一步一步來,頂多半天時間就可以把研發環境裝好了,如果是java,就需要先安裝jdk,進行環境變數的配置等,網上也有相關的教程,也是十分容易的,相信大家只要按照教程來做,都可以很輕易的把研發環境搭建起來的
選好視頻和書籍,輔助學習。既然是零基礎學習,就需要進行系統的學習,而不是到處網路零基礎的知識點進行學習。
代碼練習
跟隨教程一個一個章節的進行學習,需要注意的一點就是不能只是去看,那樣不行,要對每一個章節的知識點要親自用代碼敲一遍,運行一下試試效果才行,這樣才能提高自己的動手能力,才開始會覺得有一點生疏,慢慢的就會熟練起來,逐漸會增加編程的興趣。這個過程就是需要反復的進行練習,大量的代碼練習才行。這個過程是5步中最關鍵的階段了,重在代碼親自練習,對編程中有的章節不明白的地方,千萬不要放過去,可以在網上找一些相關的編程交流群,參加進去,在線上咨詢一些過來人,也許就可以輕松幫你解決疑問了,對你的學習十分幫助,並且整個過程也都是免費的。
項目實戰
如果說基礎教程都按部就班的都實踐過一遍了,那麼你就有一定的編程的基本功了,那麼自己就可以嘗試著做一些小項目,把學到的知識給串起來,進入項目實戰階段,比如說自己設計一個學生管理系統,並把它完成,如果不了解怎麼設計,可以去網上搜索。慢慢就有思路了。
我也在學習這方面,視頻書籍看過不少,最推薦的還是北京尚學堂的學習資料,Java.300集,Python400集,都是很經典的入門基礎教程,而且是結合項目學習的,很有意思,干貨滿滿,還都是免費的,推薦你可以去看看,相信可以帶你走進變成的世界。
從零開始學編程,第一關就是要選擇你所要學習的編程語言。面對著琳琅滿目的編程語言,初學者常常一籌莫展,拿不定主意,不知該選哪
Ⅱ 不懂英語應該怎麼學編程
一般的編程,不需要高深的數學,但邏輯要清楚。不需要太多英語,但了解些基本的單詞對編程有好處,必要時也可以查外文文獻。下面我為你收集了不懂英語學編程的建議的資料,希望對你有所幫助!
不懂英語學編程的建議
1. 從小的有用的程序入手
學習可以從編寫一些具體的小的真正有點用程序入手,需要用到數據結構與演算法時,順帶著就學了,感興趣的再深入系統地學一下。除非你在一些特定的有特殊要求的領域寫程序,否則,大多數情況下用不上很高深的數學。
2. 堅持使用英語
至於英語,你要把它真當成一種語言去用,用它去與別人交流,去吸收新知,建議你在有一定基礎後,直接看一些英文版的教材和視頻,開始會比較難,慢,但堅持下來,好處很多的,你既能學到了知識,又能提高英語水平。
3. 要多嘗試,多動手
不能一味地停留在知識點掌握的程度上,因為知識點是死的,然而可以通過這些知識點的串聯可以解決很多活的問題。踏實學習,多動腦多探索,多練代碼慢慢就會有一個不錯的水平!
英語和數學給我們帶來的優勢
1. 英文好的,你的技術資訊永遠都是領先其他人
2. 數學好的,你的代碼質量永遠都是優越其他人
回到現實中:如果你要成為別人的焦點,那你就要學好英文和數學。如果你要提高你的編程質量,那你就要學好英文和數學。如果你要領高薪,那你就要學好英文和數學。
給英文和數學不好的朋友建議
1. 英文可以補習,數學可以補習,時間是擠出來的,不要為自己的學習找借口
2. 編程領域太廣了,需要各種人才,中國這么多人口,你不做編程,別人也會做。
3. 很多先進的技術,不用你去操心的,讓老外去完成。我們要學會拿來主義,我們的目標就是掙錢,有錢了才能實現你自己的理想。
你也不要隨便地給自己貼標簽,比如自己給自己貼上“數學和英語不好”這個標簽,也許它符合你現在的情況,但並不等於你以後也是這種情況。
學習編程的注意事項
一:自學也需要看書
自學只是說沒有專門的老師手把手教你,並不是說連書本都可以不要了。有人天天來問我一些很基礎的概念問題,我問他:“這些概念書上不都寫得很明白嗎?”他回答:“我沒有書。”如果沒有書,那麼你很難在腦子里形成一個較為整體性的認識,所有了解到的知識都是支離破碎的。且不說大多數人沒有精力回答你這些問題,即使回答了,很多東西也不是三言兩語就能說清的,很多高手說出來的都是他們自己的理解,這些理解或許很有意味,但也許費了你半天的腦子卻怎麼也搞不明白。一本書,即使不是什麼經典之著,它也可以向你提供一個大體完整的框架,成為你自學過程中的一個向導。這里要說的是:網上電子教程資源豐富,看看無妨,但手中至少應有一本印刷的書——畢竟網上的教程魚龍混雜,其作者也許並不精通此道,很難分辨其質量好壞。
二:學編程更需要實踐
書是有了,可是整天抱著書也不成。編程最怕的就是紙上談兵,我看到有的初學者,看完了大半本書,和我說起循環函數來頭頭是道,卻連編譯器長什麼樣都沒有見過。真要他寫幾行程序,便是錯誤百出。我的建議是,無論你涉及編程的時間是多麼地短,無論你目前學到的知識多麼地少,你都應該不斷地盡自己所能去編寫一些小程序——即使是把書上的“Hello, World!”親手輸入進去運行一遍,都能讓你的編程能力有著極速地提高。
三:編程是創造,不是默寫
有人甚至打算用題海戰術來學習編程——這完全沒有理解編程的內涵。僅僅通過“欣賞”別人寫的代碼也無法學好編程。有一點需要明白:編程是一個創造的過程。編程的意義在於:通過程序的形式,教計算機如何去完成一項任務。寫代碼只是形式,真正重要的是如何完成特定的任務。學習別人的代碼固然是很有用的,可以學習別人的思想;但是如果僅僅是記憶了一些別人寫好的代碼,就希望能通過拼拼湊湊成為自己的程序,那是基本不可能的。我的建議是:在自己編寫程序,進行創造的過程中,借鑒前人程序中的思想方法——而不是整天處於復制粘貼的狀態中。
四:好習慣要從開始做起
所謂“不以善小而不為”,等壞習慣養成了,再改就困難了。因此,類似寫程序要注意縮進、為變數和函數起有意義的名字、大小寫的使用、行末分號的注意等等,要從一開始做起。很多人對這些善意的提醒不屑一顧,覺得多此一舉,浪費時間。其實,如果真的能嚴格地去做,它們反而可以幫你節省許多時間。
五:不必太刨根問底
“打破沙鍋問到底”確實表現了一種鑽研的精神,不過我還是建議初者學,有的時候,不必太刨根問底。編程的相關知識都是盤根錯節交織在一起的,大多數問題深挖下去會越說越復雜,對於知識掌握不多的初學者來說,只能是越來越糊塗。很多東西,時間長了,隨著知識了解得深入,自然而然會明白。就像剛剛學英語的時候,你知道“goodbye”是再見就足夠了,難道非要把這個good和再見的關系先弄個水落石出嗎?作為初學者,最重要的是盡快地能全面地了解整個知識的全貌,在單獨的知識點上,暫時不需要太深入。可以等知識經驗豐富之後,再回頭來研究。
Ⅲ 想學習編程但是我不會英語怎麼辦
經常有同學問:我英語不好,編程好像都是英文寫的,我能學編程嗎?
其實這里有一個小常識,英語是世界上最通用的語言,而計算機編程語言又是老外發明的,所以所有的計算機編程語言才都是採用英文編碼。
接著回答開頭的問題:英語不好可以學編程嗎?
其實剛開始學編程是不需要太高深的知識和英語基礎的,所以大家可以放心。如果你英文水平不高,這並不影響你做程序員,編程主要是靠邏輯思維,數學建模。
而且學習編程,常用的單詞就那麼多,只要把常見的單詞學會,你的代碼也能寫得很好。
只是讀文檔的時候可能對英語要求稍微高點,但是你也別忘記還有有道詞典、谷歌翻譯呀。而且在開始階段,壓根不用擔心太多,你學的都是現成的,大不了不懂就查。
比如「if」 「else」 「while」 「for」 「var」 「new」之類。用得多了自然而然地就記住了。
CSS 里英語就更重要了,比如 transition、transform、translate,你在不了解英語含義的情況下,很難把這些記下來。
而且到了後期,你可能還需要讀國外開發者分享的文檔和技術,甚至有不懂的技術,也需要你去國外網站上查,這時候機器翻譯就不大好使了。
所以作為開發者如何學好英語呢?
首先要明白的一點是,常規英語和計算機英語的不同。
常規英語的學習,包含很多方面,有語法,音標,詞彙量等知識面,因此需要背大量的單詞、語法,還要會聽說讀寫,做閱讀、做聽力。
而且在國內,我們從小學開始學英語,十多年了都學不好,想要因為編程短期提升常規英語學習,基本上是不可能的。
然而編程所需要的英語都是十分專業的計算機英語。
簡單的來說,就是通過匯編語言來讓計算機明白所接受的各種指令的英語,對於絕大多數編程軟體來說,它所需要用到的英文片語和詞彙,都是固定的和相對簡單的片語和句式。
相對於常規英語的廣泛程度來說,它更像具有固定格式的專業性更強的英文寫作,往往只要你熟讀熟記後,對於編程是沒有太大的影響。
比如簡單的for next 循環,你可以不知道for和next是什麼意思 ,但是你要知道這是一個循環,還要知道怎麼用。
一言以蔽之,就是英語好的同學編程不一定能學好;編程好的同學,不一定英語很棒。
英語只是編程的輔助工具,而非決定性工具。
所以如何提升編程英語,我這里有兩個小建議:
a) 設備上可以裝翻譯工具,哪裡不會點哪裡。
b) 抓住可以學英語的機會。比如多用英文軟體,少用漢化版。比如用英文操作系統,不用中文版。這樣你每天都在記單詞了。
Ⅳ 求學編程的基礎英語
編程常用英語詞彙
application 應用程式 應用、應用程序
application framework 應用程式框架、應用框架 應用程序框架
architecture 架構、系統架構 體系結構
argument 引數(傳給函式的值)。叄見 parameter 叄數、實質叄數、實叄、自變數
array 陣列 數組
arrow operator arrow(箭頭)運運算元 箭頭操作符
assembly 裝配件
assembly language 組合語言 匯編語言
assert(ion) 斷言
assign 指派、指定、設值、賦值 賦值
assignment 指派、指定 賦值、分配
assignment operator 指派(賦值)運運算元 = 賦值操作符
associated 相應的、相關的 相關的、關聯、相應的
associative container 關聯式容器(對應 sequential container) 關聯式容器
atomic 不可分割的 原子的
attribute 屬性 屬性、特性
audio 音訊 音頻
A.I. 人工智慧 人工智慧
background 背景 背景(用於圖形著色)
後台(用於行程)
backward compatible 回溯相容 向下兼容
bandwidth 頻寬 帶寬
base class 基礎類別 基類
base type 基礎型別 (等同於 base class)
batch 批次(意思是整批作業) 批處理
benefit 利益 收益
best viable function 最佳可行函式 最佳可行函式
(從 viable functions 中挑出的最佳吻合者)
binary search 二分搜尋法 二分查找
binary tree 二元樹 二叉樹
binary function 二元函式 雙叄函數
binary operator 二元運運算元 二元操作符
binding 系結 綁定
bit 位元 位
bit field 位元欄 位域
bitmap 位元圖 點陣圖
bitwise 以 bit 為單元逐一┅
bitwise 以 bit 為單元進行復制;位元逐一復制 位拷貝
block 區塊,區段 塊、區塊、語句塊
boolean 布林值(真假值,true 或 false) 布爾值
border 邊框、框線 邊框
brace(curly brace) 大括弧、大括弧 花括弧、花括弧
bracket(square brakcet) 中括弧、中括弧 方括弧、方括弧
breakpoint 中斷點 斷點
build 建造、構築、建置(MS 用語)
build-in 內建 內置
bus 匯流排 匯流排
business 商務,業務 業務
buttons 按鈕 按鈕
byte 位元組(由 8 bits 組成) 位元組
cache 快取 高速緩存
call 呼叫、叫用 調用
callback 回呼 回調
call operator call(函式呼叫)運運算元調用操作符
(同 function call operator)
candidate function 候選函式 候選函數
(在函式多載決議程序中出現的候選函式)
chain 串鏈(例 chain of function calls) 鏈
character 字元 字元
check box 核取方塊 (i.e. check button) 復選框
checked exception 可控式異常(Java)
check button 方鈕 (i.e. check box) 復選按鈕
child class 子類別(或稱為derived class, subtype) 子類
class 類別 類
class body 類別本體 類體
class declaration 類別宣告、類別宣告式 類聲明
class definition 類別定義、類別定義式 類定義
class derivation list 類別衍化列 類繼承列表
class head 類別表頭 類頭
class hierarchy 類別繼承體系, 類別階層 類層次體系
class library 類別程式庫、類別庫 類庫
class template 類別模板、類別範本 類模板
class template partial specializations
類別模板偏特化 類模板部分特化
class template specializations
類別模板特化 類模板特化
cleanup 清理、善後 清理、清除
client 客端、客戶端、客戶 客戶
client-server 主從架構 客戶/伺服器
clipboard 剪貼簿 剪貼板
clone 復制 克隆
collection 群集 集合
combo box 復合方塊、復合框 組合框
command line 命令列 命令行
(系統文字模式下的整行執行命令)
communication 通訊 通訊
compatible 相容 兼容
compile time 編譯期 編譯期、編譯時
compiler 編譯器 編譯器
component 組件 組件
composition 復合、合成、組合 組合
computer 電腦、計算機 計算機、電腦
concept 概念 概念
concrete 具象的 實在的
concurrent 並行 並發
configuration 組態 配置
connection 連接,連線(網路,資料庫) 連接
constraint 約束(條件)
construct 構件 構件
container 容器 容器
(存放資料的某種結構如 list, vector...)
containment 內含 包容
context 背景關系、周遭環境、上下脈絡 環境、上下文
control 控制元件、控制項 控制項
console 主控台 控制台
const 常數(constant 的縮寫,C++ 關鍵字)
constant 常數(相對於 variable) 常量
constructor(ctor) 建構式 構造函數
(與class 同名的一種 member functions)
(v) 復制、拷貝 拷貝
(n) 復件, 副本
cover 涵蓋 覆蓋
create 創建、建立、產生、生成 創建
creation 產生、生成 創建
cursor 游標 游標
custom 訂制、自定 定製
data 資料 數據
database 資料庫 資料庫
database schema 資料庫結構綱目
data member 資料成員、成員變數 數據成員、成員變數
data structure 資料結構 數據結構
datagram 資料元 數據報文
dead lock 死結 死鎖
debug 除錯 調試
debugger 除錯器 調試器
declaration 宣告、宣告式 聲明
dection 推導(例:template argument dection) 推導、推斷
default 預設 預設、默認
defer 延緩 推遲
define 定義 預定義
definition 定義、定義區、定義式 定義
delegate 委派、委託、委任 委託
delegation (同上)
demarshal 反編列 散集
dereference 提領(取出指標所指物體的內容) 解叄考
dereference operator dereference(提領)運運算元 * 解叄考操作符
derived class 衍生類別 派生類
design by contract 契約式設計
design pattern 設計範式、設計樣式 設計模式
※ 最近我比較喜歡「設計範式」一詞
destroy 摧毀、銷毀
destructor 解構式 析構函數
device 裝置、設備 設備
dialog 對話窗、對話盒 對話框
directive 指令(例:using directive) (編譯)指示符
directory 目錄 目錄
disk 碟 盤
dispatch 分派 分派
distributed computing 分布式計算 (分布式電算) 分布式計算
分散式計算 (分散式電算)
document 文件 文檔
dot operator dot(句點)運運算元 . (圓)點操作符
driver 驅動程式 驅動(程序)
dynamic binding 動態系結 動態綁定
efficiency 效率 效率
efficient 高效 高效
end user 終端用戶
entity 物體 實體、物體
encapsulation 封裝 封裝
enclosing class 外圍類別(與巢狀類別 nested class 有關)外圍類
enum (enumeration) 列舉(一種 C++ 資料型別) 枚舉
enumerators 列舉元(enum 型別中的成員) 枚舉成員、枚舉器
equal 相等 相等
equality 相等性 相等性
equality operator equality(等號)運運算元 == 等號操作符
equivalence 等價性、等同性、對等性 等價性
equivalent 等價、等同、對等 等價
escape code 轉義碼 轉義碼
evaluate 評估、求值、核定 評估
event 事件 事件
event driven 事件驅動的 事件驅動的
exception 異常情況 異常
exception declaration 異常宣告(ref. C++ Primer 3/e, 11.3) 異常聲明
exception handling 異常處理、異常處理機制 異常處理、異常處理機制
exception specification 異常規格(ref. C++ Primer 3/e, 11.4) 異常規范
exit 退離(指離開函式時的那一個執行點) 退出
explicit 明白的、明顯的、顯式 顯式
export 匯出 引出、導出
expression 運算式、算式 表達式
facility 設施、設備 設施、設備
feature 特性
field 欄位,資料欄(Java) 欄位, 值域(Java)
file 檔案 文件
firmware 韌體 固件
flag 旗標 標記
flash memory 快閃記憶體 快閃記憶體
flexibility 彈性 靈活性
flush 清理、掃清 刷新
font 字型 字體
form 表單(programming 用語) 窗體
formal parameter 形式叄數 形式叄數
forward declaration 前置宣告 前置聲明
forwarding 轉呼叫,轉發 轉發
forwarding function 轉呼叫函式,轉發函式 轉發函數
fractal 碎形 分形
framework 框架 框架
full specialization 全特化(ref. partial specialization)
function 函式、函數 函數
function call operator 同 call operator
function object 函式物件(ref. C++ Primer 3/e, 12.3) 函數對象
function overloaded resolution
函式多載決議程序 函數重載解決(方案)
functionality 功能、機能 功能
function template 函式模板、函式範本 函數模板
functor 仿函式 仿函式、函子
game 游戲 游戲
generate 生成
generic 泛型、一般化的 一般化的、通用的、泛化
generic algorithm 泛型演演算法 通用演算法
getter (相對於 setter) 取值函式
global 全域的(對應於 local) 全局的
global object 全域物件 全局對象
global scope resolution operator
全域生存空間(范圍決議)運運算元 :: 全局范圍解析操作符
group 群組
group box 群組方塊 分組框
guard clause 衛述句 (Refactoring, p250) 衛語句
GUI 圖形介面 圖形界面
hand shaking 握手協商
handle 識別碼、識別號、號碼牌、權柄 句柄
handler 處理常式 處理函數
hard-coded 編死的 硬編碼的
hard- 硬拷圖 屏幕截圖
hard disk 硬碟 硬碟
hardware 硬體 硬體
hash table 雜湊表 哈希表、散列表
header file 表頭檔、標頭檔 頭文件
heap 堆積 堆
hierarchy 階層體系 層次結構(體系)
hook 掛鉤 鉤子
hyperlink 超鏈結 超鏈接
icon 圖示、圖標 圖標
IDE 整合開發環境 集成開發環境
identifier 識別字、識別符號 標識符
if and only if 若且唯若 當且僅當
Illinois 伊利諾 伊利諾斯
image 影像 圖象
immediate base 直接的(緊臨的)上層 base class。 直接上層基類
immediate derived 直接的(緊臨的)下層 derived class。 直接下層派生類
immutability 不變性
immutable 不可變(的)
implement 實作、實現 實現
implementation 實作品、實作體、實作碼、實件 實現
implicit 隱喻的、暗自的、隱式 隱式
import 匯入 導入
increment operator 累加運運算元 ++ 增加操作符
infinite loop 無窮迴圈 無限循環
infinite recursive 無窮遞回 無限遞歸
information 資訊 信息
infrastructure 公共基礎建設
inheritance 繼承、繼承機制 繼承、繼承機制
inline 行內 內聯
inline expansion 行內展開 內聯展開
initialization 初始化(動作) 初始化
initialization list 初值列 初始值列表
initialize 初始化 初始化
inner class 內隱類別 內嵌類
instance 實體 實例
(根據某種表述而實際產生的「東西」)
instantiated 具現化、實體化(常應用於 template) 實例化
instantiation 具現體、具現化實體(常應用於 template) 實例
integer (integral) 整數(的) 整型(的)
integrate 整合 集成
interacts 交談、互動 交互
interface 介面 介面
for GUI 介面 界面
interpreter 直譯器 解釋器
invariants 恆常性,約束條件 約束條件
invoke 喚起 調用
iterate 迭代(迴圈一個輪回一個輪回地進行) 迭代
exception 異常情況 異常
exception declaration 異常宣告(ref. C++ Primer 3/e, 11.3) 異常聲明
exception handling 異常處理、異常處理機制 異常處理、異常處理機制
exception specification 異常規格(ref. C++ Primer 3/e, 11.4) 異常規范
exit 退離(指離開函式時的那一個執行點) 退出
explicit 明白的、明顯的、顯式 顯式
export 匯出 引出、導出
expression 運算式、算式 表達式
facility 設施、設備 設施、設備
feature 特性
field 欄位,資料欄(Java) 欄位, 值域(Java)
file 檔案 文件
firmware 韌體 固件
flag 旗標 標記
flash memory 快閃記憶體 快閃記憶體
flexibility 彈性 靈活性
flush 清理、掃清 刷新
font 字型 字體
form 表單(programming 用語) 窗體
formal parameter 形式叄數 形式叄數
forward declaration 前置宣告 前置聲明
forwarding 轉呼叫,轉發 轉發
forwarding function 轉呼叫函式,轉發函式 轉發函數
fractal 碎形 分形
framework 框架 框架
full specialization 全特化(ref. partial specialization)
function 函式、函數 函數
function call operator 同 call operator
function object 函式物件(ref. C++ Primer 3/e, 12.3) 函數對象
function overloaded resolution
函式多載決議程序 函數重載解決(方案)
functionality 功能、機能 功能
function template 函式模板、函式範本 函數模板
functor 仿函式 仿函式、函子
game 游戲 游戲
generate 生成
generic 泛型、一般化的 一般化的、通用的、泛化
generic algorithm 泛型演演算法 通用演算法
getter (相對於 setter) 取值函式
global 全域的(對應於 local) 全局的
global object 全域物件 全局對象
global scope resolution operator
全域生存空間(范圍決議)運運算元 :: 全局范圍解析操作符
group 群組
group box 群組方塊 分組框
guard clause 衛述句 (Refactoring, p250) 衛語句
GUI 圖形介面 圖形界面
hand shaking 握手協商
handle 識別碼、識別號、號碼牌、權柄 句柄
handler 處理常式 處理函數
hard-coded 編死的 硬編碼的
hard- 硬拷圖 屏幕截圖
hard disk 硬碟 硬碟
hardware 硬體 硬體
hash table 雜湊表 哈希表、散列表
header file 表頭檔、標頭檔 頭文件
heap 堆積 堆
hierarchy 階層體系 層次結構(體系)
hook 掛鉤 鉤子
hyperlink 超鏈結 超鏈接
icon 圖示、圖標 圖標
IDE 整合開發環境 集成開發環境
identifier 識別字、識別符號 標識符
if and only if 若且唯若 當且僅當
Illinois 伊利諾 伊利諾斯
image 影像 圖象
immediate base 直接的(緊臨的)上層 base class。 直接上層基類
immediate derived 直接的(緊臨的)下層 derived class。 直接下層派生類
immutability 不變性
immutable 不可變(的)
implement 實作、實現 實現
implementation 實作品、實作體、實作碼、實件 實現
implicit 隱喻的、暗自的、隱式 隱式
import 匯入 導入
increment operator 累加運運算元 ++ 增加操作符
infinite loop 無窮迴圈 無限循環
infinite recursive 無窮遞回 無限遞歸
information 資訊 信息
infrastructure 公共基礎建設
inheritance 繼承、繼承機制 繼承、繼承機制
inline 行內 內聯
inline expansion 行內展開 內聯展開
initialization 初始化(動作) 初始化
initialization list 初值列 初始值列表
initialize 初始化 初始化
inner class 內隱類別 內嵌類
instance 實體 實例
(根據某種表述而實際產生的「東西」)
instantiated 具現化、實體化(常應用於 template) 實例化
instantiation 具現體、具現化實體(常應用於 template) 實例
integer (integral) 整數(的) 整型(的)
integrate 整合 集成
interacts 交談、互動 交互
interface 介面 介面
for GUI 介面 界面
interpreter 直譯器 解釋器
invariants 恆常性,約束條件 約束條件
invoke 喚起 調用
iterate 迭代(迴圈一個輪回一個輪回地進行) 迭代
iterative 反覆的,迭代的
iterator 迭代器(一種泛型指標) 迭代器
iteration 迭代(迴圈每次輪回稱為一個 iteration) 迭代
item 項目、條款 項、條款、項目
laser 雷射 激光
level 階 層 (級)
例 high level 高階 高層
library 程式庫、函式庫 庫、函數庫
lifetime 生命期、壽命 生命期、壽命
link 聯結、連結 連接,鏈接
linker 聯結器、連結器 連接器
literal constant 字面常數(例 3.14 或 "hi" 這等常數值) 字面常數
list 串列(linked-list) 列表、表、鏈表
list box 列表方塊、列表框 列表框
load 載入 裝載
loader 載入器 裝載器、載入器
local 區域的(對應於 global) 局部的
local object 區域物件 局部對象
lock 機鎖
loop 迴圈 循環
lvalue 左值 左值
macro 巨集 宏
magic number 魔術數字 魔法數
maintain 維護 維護
manipulator 操縱器(iostream 預先定義的一種東西) 操縱器
marshal 編列 列集
叄考 demarshal
mechanism 機制 機制
member 成員 成員
member access operator 成員取用運運算元(有 dot 和 arrow 兩種) 成員存取操作符
member function 成員函式 成員函數
member initialization list
成員初值列 成員初始值列表
memberwise 以 member 為單元┅、members 逐一┅ 以成員為單位
memberwise 以 members 為單元逐一復制
memory 記憶體 內存
menu 表單、選單 菜單
message 訊息 消息
message based 以訊息為基礎的 基於消息的
message loop 訊息迴圈 消息環
method (java) 方法、行為、函式 方法
meta- 超- 元-
例 meta-programming 超編程 元編程
micro 微 微
middleware 中介層 中間件
modeling 模塑
modeling language 塑模語言,建模語言
modem 數據機 數據機
mole 模組 模塊
modifier 飾詞 修飾符
most derived class 最末層衍生類別 最底層的派生類
mouse 滑鼠 滑鼠
mutable 可變的 可變的
multi-tasking 多工 多任務
namespace 命名空間 名字空間、命名空間
native 原生的 本地的、固有的
nested class 巢狀類別 嵌套類
network 網路 網路
network card 網路卡 網卡
object 物件 對象
object based 以物件為基礎的 基於對象的
object file 目的檔 目標文件
object model 物件模型 對象模型
object oriented 物件導向的 面向對象的
online 線上 在線
opaque 不透明的
operand 運算元 操作數
operating system (OS) 作業系統 操作系統
operation 操作、操作行為 操作
operator 運運算元 操作符、運算符
option 選項,可選方案 選項
ordinary 常規的 常規的
overflow 上限溢位(相對於 underflow) 溢出(underflow:下溢)
overhead 額外負擔、額外開銷 額外開銷
overload 多載化、多載化、重載 重載
overloaded function 多載化函式 重載的函數
overloaded operator 多載化運運算元 被重載的操作符
overloaded set 多載集合 重載集合
override 改寫、覆寫 重載、改寫、重新定義
(在 derived class 中重新定義虛擬函式
package 套件 包
pair 對組
palette 調色盤、組件盤、工具箱
pane 窗格 窗格
(有時為嵌板之意,例 Java Content Pane)
parallel 平行 並行
parameter 叄數(函式叄數列上的變數) 叄數、形式叄數、形叄
parameter list 叄數列 叄數列表
parent class 父類別(或稱 base class) 父類
parentheses 小括弧、小括弧 圓括弧、圓括弧
parse 解析 解析
part 零件 部件
partial specialization 偏特化(ref. C++ Primer 3/e, 16.10) 局部特化
(ref. full specialization)
pass by address 傳址(函式引數的傳遞方式)(非正式用語)傳地址
pass by reference 傳址(函式引數的一種傳遞方式) 傳地址, 按引用傳遞
pass by value 傳值(函式引數的一種傳遞方式) 按值傳遞
pattern 範式、樣式 模式
performance 效率、性能兼而有之 性能
persistence 永續性 持久性
pixel 圖素、像素 像素
placement delete ref. C++ Primer 3/e, 15.8.2
placement new ref. C++ Primer 3/e, 15.8.2
platform 平台 平台
pointer 指標 指針
址位器(和址叄器 reference 形成對映,滿好)
poll 輪詢 輪詢
polymorphism 多型 多態
pop up 冒起式、彈出式 彈出式
port 埠 埠
postfix 後置式、後序式 後置式
precedence 優先序(通常用於運運算元的優先執行次序)
prefix 前置式、前序式 前置式
preprocessor 前處理器 預處理器
prime 質數 素數
primitive type 基本型別 (不同於 base class,基礎類別)
print 列印 列印
printer 印表機 列印機
priority 優先權 (通常用於執行緒獲得 CPU 時間的優先次序)
procere 程序 過程
proceral 程序性的、程序式的 過程式的、過程化的
process 行程 進程
profile 評測 評測
profiler 效能(效率)評測器 效能(性能)評測器
programmer 程式員 程序員
programming 編程、程式設計、程式化 編程
progress bar 進度指示器 進度指示器
project 專案 項目、工程
property 屬性
protocol 協定 協議
pseudo code 假碼、虛擬碼、偽碼 偽碼
qualified 經過資格修飾(例如加上 scope 運運算元) 限定
qualifier 資格修飾詞、飾詞 限定修飾詞
quality 品質 質量
queue 佇列 隊列
radian 徑度 弧度
radio button 圓鈕 單選按鈕
raise 引發(常用來表示發出一個 exception) 引起、引發
random number 隨機數、亂數 隨機數
range 范圍、區間(用於 STL 時) 范圍、區間
rank 等級、分等(ref. C++Primer 3/e 9,15章) 等級
raw 生鮮的、未經處理的 未經處理的
record 記錄 記錄
recordset 記錄集 記錄集
recursive 遞回 遞歸
re-direction 重導向 重定向
refactoring 重構、重整 重構
refer 取用 叄考
refer to 指向、指涉、指代
reference (C++ 中類似指標的東西,相當於 "化身") 引用、叄考
址叄器, see pointer
register 暫存器 寄存器
reflection 反射 反射、映像
relational database 關聯式資料庫 關系資料庫
represent 表述,表現 表述,表現
resolve 決議(為算式中的符號名稱尋找 解析
對應之宣告式的過程)
resolution 決議程序、決議過程 解析過程
resolution 解析度 解析度
restriction 局限
return 傳回、回返 返回
return type 回返型別 返回類型
return value 回返值 返回值
robust 強固、穩健 健壯
robustness 強固性、穩健性 健壯性
routine 常式 常式
runtime 執行期 運行期、運行時
common language runtime (CLR) 譯為「通用語言執行層」
rvalue 右值 右值
save 儲存 存儲
schele 排程 調度
scheler 排程器 調度程序
scheme 結構綱目、組織綱目
scroll bar 卷軸 滾動條
scope 生存空間、生存范圍、范疇、作用域 生存空間
scope operator 生存空間(范圍決議)運運算元 :: 生存空間操作符
scope resolution operator
生存空間決議運運算元 生存空間解析操作符
(與scope operator同)
screen 螢幕 屏幕
search 搜尋 查找
semantics 語意 語義
sequential container 序列式容器 順序式容器
(對應於 associative container)
server 伺服器、伺服端 伺服器、服務端
serial 串列
serialization 次第讀寫,序列化 序列化
(serialize)
setter (相對於 getter) 設值函式
signal 信號
signature 標記式、簽名式、署名式 簽名
slider 滾軸 滑塊
slot 條孔、槽 槽
smart pointer 靈巧指標、精靈指標 智能指針
snapshot 螢幕快照(圖) 屏幕截圖
specialization 特殊化、特殊化定義、特殊化宣告 特化
specification 規格 規格、規范
splitter 分裂視窗 切分窗口
software 軟體 軟體
solution 解法,解決方案 方案
source 原始碼 源碼、源代碼
stack 堆疊 棧
stack unwinding 堆疊輾轉開解(此詞用於 exception 主題) 棧輾轉開解 *
standard library 標准程式庫
standard template library 標准模板程式庫
statement 述句 語句、聲明
status bar 狀態列、狀態欄 狀態條
STL 見 standard template library
stream 資料流、串流 流
string 字串 字元串
subroutine
subscript operator 下標運運算元 [ ] 下標操作符
subtype 子型別 子類型
support 支援 支持
suspend 虛懸 掛起
symbol 符號 記號
syntax 語法 語法