"怎麼學c說話、怎麼挑書、要挑什麼書",這個問題聽過蠻多遍了,提供本身學習 C/C++ 的歷程讓列位參考翻譯以下的申明都是以小我主觀的立場,固然華頓翻譯公司不是什麼巨匠,這些都參考就好。由於當初筆者接觸時,就是 C ,若想學其它像是 VB翻譯社 JAVA, C# 等程式說話,這篇文章仍可賜與一些幫助與參考。
若非本科出身,請先輩修以下所敘述的部份再來;假如是本科系出身,請肯定以下部分都知道在幹嗎;寫程式其實不在意學歷和佈景翻譯學歷和配景不否認切實其實是提供不錯的進修情況,別被學歷迷思給嚇到了!雖一起頭在進入這塊範疇,可能會有些挫折感,小我的進修與家教經驗是先進修以下的 topic ,在學習程式語言過程當中,對於書中的描述
這問題由筆者回覆其實是不怎麼適合,因筆者不自覺是強者,還有很長的路要走。提示,程式說話它只是工具,要用這工具做什麼工作,是在意背後要解決什麼問題。這裡提出筆者今朝的進修方法。
假如照著他人的類型打一次,一開始可能會有漏打的可能。請注意程式錯是錯在哪,這些IDE軟體會流露,目下當今的IDE做得都很人道化,vc, dev-c++翻譯社 code::Blocks 都有這些功能 (筆者沒提到的IDE不代表沒有,只是我沒用過),進而進修如何看軟體給的錯誤(正告)訊息,去抓出程式碼中有問題的處所,這點很主要,沒有一個工程師是只會 coding 而不會 trace翻譯社 debug 的翻譯
2. 手邊請準備 "至少一本" 的進修書(參考冊本)。
這部分少數人不認同,但如上所述,程式說話只是工具,有些問題解得出來但不代表解得漂亮,有些問題是想半天都寫不出來的 (舉例,如果要寫擺列組合問題會寫嗎?為什麼統一個問題他人跑程式碼只要一分鐘而本身卻要跑一小時?為什麼別人的程式使用記憶體只有 1MB,本身的程式要用到 100MB?),這時候候才知道資料佈局和演算法的主要。資料結構筆者手上沒正式的參考用書 (實際上是跟他人借 20 年前的用書,故覺得現在已不合適用這本),演算法卻是有本書必看:Introduction to Algorithms,這本書不肯定有無繁體中文版,但確定是有簡體中文版,但其實這本書單字真的不會很艱澀翻譯另若是想挑戰有字天書的話,高德納的 The Art of Computer Programming (TAOCP) 為必讀之作!這系列書本的偉大便不再重述了,到 wiki 查即可獲得讓人驚訝的資訊。
(4) 程式運作基本流程 - 這部分用不到很複雜的作業系統理論,你只須要知道,
以上,是筆者初學 C/C++ 說話的心得,若是方針是放在「短期學會」的話,建議不要自學,很累,成效不彰。也不建議找坊間補習班,筆者認為坊間補習班對於學習較進階的議題成效會較大,建議直接找「有經驗」的家教協助計劃課程為佳,這是最快學會、學精的體式格局,這是筆者兼職家教的心得與經驗。(這段沒在為自己打告白,但如果真有需求又沒適合人選的話,可斟酌以悄悄話與筆者聯繫,今朝筆者教過的5位學生皆讚譽有佳。)
這部分很難下定論。有些人是不學資料結構、演算法直接去寫 ACM 練習題,但筆者認為這可能較危險,同時也沒太大意義。事實上 ACM 練習題的確良多演算法部分的工具,但很不建議他人用問題去帶觀念,這樣真的很不好!既然如此還是好好把演算法學好、好好把資料構造學比如較現實翻譯
1. 請先輩修基礎知識
上述六個主題是筆者在進修過程當中一向不息彌補的地方,也是筆者認為初學者在學習程式語言前應具備的根基常識,當然有些不是初學者可能對於上述也沒有每個都知道在幹嗎,只是提出 "先去學這些再回來看會好點"翻譯若真有當真在學的話,包括找資料的時間(上面的資料實在是太多了),二、三星期就能夠完成以上的工具。
「數值剖析:使用C語言」:作者為程曉旭、耿魯靜、張海、王勇翻譯但說其實話,這本書程式碼的變數定名其實不摩登,背後的原理說明很不具體,所以想了解背景道理與推導的話必將要再買其他理論用書做輔助,但這本書探討的規模甚廣。最後筆者是直接把大多方式都學起來,自己再重新 coding 一份。這也是比力好的方式,除非真的試不出來,再去研究他人的程式碼是怎麼寫的翻譯
筆者開首是學C,而且書是跟別人借十幾年前的 turbo C, 後來才看 C++ Primer, 此外沒有 C 說話的書, 一起頭光是挑書就挑錯了。事實上C++被推的原文書預計最少有30本以上,為避免最後人人不知道要挑什麼,只列出三本出來。在此要強調,若是不幸看到 turbo C 的書或文章、軟體,就不要理它了,阿誰東西已經被砍掉了翻譯
4. 請多加實做操演
統一個問題不是感覺「自己會寫、寫得出來」就是個簡單的問題、不是個好問題。重點是有沒有辦法進行加快?有無舉措讓程式碼簡化 (簡化並非亂寫,簡化也要讓別人看得懂在寫什麼,千萬不要影響了傑出的程式碼風格)?為什麼別人這麼做?他人這麼做到底會不會對照快?可以多去看別人的程式碼去觀摩進修,重點是「重其義而不重其招」,要認識那問題的情況為何可以這麼做?為何那麼做會比較好?總之會有十萬顆問號一向在腦中回旋扭轉,除「多看書」、「多觀摩」、「多思慮」、「多練習」、「多 google」外,沒再更好的方法。
良多演習都是從數學問題衍生過來的,數學問題有難有易,一開始要求是「可以解出來」,再來才是要求「有沒有法子使今朝寫好的程式碼變快」翻譯可先從簡單的數字的問題 (完全數、求 PI、求 e、階級、求質數、阿姆斯壯數... 等等)先著手,假如找不到練習題目的話,可參閱筆者 另外一篇 的文章;再進階一點的數學,是公式、紀律上的撰寫,好比一元二次方程式求根、矩陣相乘、高斯消去法、最小平方式、各式線性代數問題、各式統計問題.. 等等問題;另有個議題建議一定要操練:大數問題 (不知道?快點再去 google 什麼叫大數問題),這問題筆者認為是很值得實習的標題問題。
(2) 數的表示法 - 數的表示法有分成 "有號數與無號數",有號數代表可正可負,無號數一律大於等於零。
(2.1) 無號數示意法 - 分2進制、8進制、10進制、16進制表示法,在此你必須每一個進制都可以相互轉換。
(2.2) 有號數默示法 - 符號巨細暗示法、1補數暗示法、2補數默示法翻譯
(2.3) ASCII 表 - 要知道 ASCII 表是什麼工具,至於 UTF, UNICODE, 這也是必備的常識, 初學者請一定先認識 ASCII,UTF, UNICODE 等編碼翻譯社 特別是 ASCII 一定要特別熟。
章節議題重點大多在示意範圍、轉換、溢位偵測翻譯這部份必需非常十分很是熟,凡是放在計概講義第二章。
(2.1) C說話
(2.1.1) C語言教授教養手冊 - 洪維恩, 旗標, 今朝應當是 4e翻譯這本書網路上良多初學者都推,唯章節排版順序與筆者教學順序差很多,論述上部分有所歧義。
(2.1.2) The c programming language 2e - Brian W. Kernighan, 這本可說是 C 說話聖經版, 還有中文版:C 說話程式設計 (The C Programming Language翻譯社 2/e)- 蔡文能翻譯社 培生翻譯這本書為筆者今朝看過 C 說話裡最好的一本書,不論是章節排版順序或講授都算清晰,唯指標部份還可以再更好 ( 今朝筆者沒看到指標部分用圖解講得很具體的書 ) 。
(2.1.3) C programming : A modern approach ,這本書屬較進階在看,若想加深一些常識可斟酌這本。
- by EdisonX (Edison.Shih.)
(8.3) 去學資料佈局、演算法
若對於本文有補充、有意見、想噓我,接待頒發定見。最後祝列位進修愉快。
至於批次檔要不要學?筆者認為視小我愛好,但筆者學會 C 語言之後,額外再找資料進修一些批次檔之撰寫,且所撰之批次檔其實不會過於複雜,但對於程式設計確實有必然扶助。
(8.2) 多操練數學問題
(8.5) 其餘不盡事項
若是後面的習題是屬於 "挑錯" 的話,這是增強觀念,值得做。但重點是能不克不及上機寫出一個程式出來?常常書本上每一個章節都有規範可以看,初學者不論是對軟體使用或是語法特性都有著不熟的景象産生,這些都必須靠反覆的實做才能闇練。等根基語法、軟體都熟習以後,才可以嘗嘗是不是真的可以用想的就能做出7、八成的器械;如果沒這個掌控的話,那仍是乖乖上機實做翻譯事實上,沒有任何一位程式設計師不經歷反覆上機實作練習這個階段,只有重覆實作才能加深對語法及 IDE 之谙練度。
(6) 領會絕對路徑與相對路徑之關係 - 下列列出四個路徑名稱,必須要會判別所代表的意義,四個都知道後,這部份也大功樂成了。
(6.1) "D:\Folder\A.txt"
(6.2) "A.txt"
(6.3) "..\A.txt"
(6.4) ".\A.txt"
7. 學會利用「看二進制軟體」
「數值剖析 - 用C語言」:作者為簡聰海,這本書和上一本書剛好相法!它說的沒上一本書那麼多,但有手算典範,也有圖說明註解明,說得工具沒上一正本得多,但其實也不少了。
(3) 根基邏輯閘 - and, or翻譯社 not翻譯社 xor, 首要這四項特征、真值表要記下來,另外 nand, nor, xnor 也經常使用,但C語言裡面臨時用不到。在進修這部分的時辰,要特殊注意 "MASK" 的用法,好比說將前4bits設成1(or),將後4bits設成0(and),取該數的前8bits(and)等等之類,這些都用邏輯閘就辦獲得。另這部份也有所謂的 "第摩根" 定理,這個定理要會化簡。把握以上原則,基本上這章就過去了翻譯這部份內容不多,但很適用翻譯
5. 善用 Complier/IDE 軟體
(8.1) 正確的進修心態
3. 請 "一字一字" 看完一本書
(2.2) C++
(2.2.1) The C++ Programming Language 3e, Bjarne Stroustrup, 這本書是C++發明人寫的翻譯社 偏向於說話的界說, 是一本 C++ 語言的參考書翻譯社 但小我感覺較不合適初學者用,假如你摸了c++一段時候的話,倒是可以看這本書增強對說話的熟習度
(2.2.2) C++ Primer 5e/4e, Stanley B. Lippman, 這本書很有名翻譯社 初學者也蠻合適的, 國內侯捷侯教員亦有譯書翻譯
(2.2.3) Essential C++ , Stanley B. Lippman
這裡真的很難再申明翻譯有些人寫程式會對照「偏應用面」,所以會迥殊傾向介面設計,於是覺得演算法不重要;有些人寫程式比力方向大型專案開辟,這時候又要去買其他的書來補專業!但無論若何,有本書保舉必然要看:程式設計師的自華頓翻譯公司涵養:保持、載入、程式庫,作者為俞甲子、石凡、潘愛民。至於要不要再進修組合語言、要不要再學習編譯器、作業系統等等,筆者認為要吃本行飯的話,功課系統要會,組合說話也要會一點 (無奈筆者這二個都不會,所以卡很兇!)。其餘的 domain know how ,是在於其他專業冊本上獲得的常識,程式語言,只是一個對象把它實現出來罷了。
有些人進修濫觞所有都是從網路,但從網路來的東西要建立起完全、全部的觀念似乎有限,是以建議要買本書,至於書怎麼挑呢?這個若是要說下去的話又是一個會商串;有些人感覺要買你看得懂的就好,有些人感覺要買聖經版的。至於我個人到書局逛的心得是:買聖經版的比力好。簡單的書會碰到二個問題:(1) 它給你的觀念大多是用比喻的,但卻也可能誤導
(1) 組成電腦硬體五大單位 - input, output, 控制, 算術邏輯, 記憶單位。這部份通常計概第一章會提到,若是計概講義沒有 - 丟了它,代表它是比力偏 "軟體利用與概述" 的計概,我們需要的不是這類。在這裡必需知道每一個單元的功能是在幹嗎。
(8.4) 寫 ACM 練習題?
沒有說學會 C 語言後只要看 C++ 的類別、擔當、破例處理部分就好的事!即便你有C說話的根本,也要從頭到尾看完、實作完一本C++的書。發現很多人學程式語言看書的時候,都只是翻一翻就跳到後面去寫習題,事實上小我感覺很不好,究竟極可能漏了什麼主要的觀念之類的,而黉舍的功課八成在文中也找得到答案翻譯
(5) 熟悉命令提醒字元 - 若為 windows 系統習用利用者,按下 "起頭" -> "履行" -> 輸入 "cmd.exe" 後,按下 enter, 這個程式若熟的話今後有許多事情很利便,可以先熟悉以下指令的語法: cd, dir, rd, md, delete翻譯社 copy翻譯社 xcopy翻譯社 其它的視個人興趣進修,這部分大致上花一天時候就會有功效翻譯
8. 怎麼變強?
6. 善用人類最偉大的發現之一 : google 搜尋引擎
看二進制的軟體比較有名的如 UltraEdit(付費版)翻譯社 PSP(免費版), 之所以要會利用是因為要學會看檔案的二進制是怎麼處置懲罰的。小我感覺,基本輸出入、資料型態學完後,這類軟體就派得上用處翻譯固然程式寫到必然程度時,也可以本身寫一套軟體去看檔案的二進制編碼,而不是用 NOTEPAD.EXE (就是記事本) 去看文本模式翻譯
事實上,筆者認為直接學「數值分析」是個最簡單、快速的方法。若是是要真正進修數值分析的書,勢必要買二本以上的冊本,一本是專門講理論、綁定程式說話較小的冊本,另外一本是用 C/C++ 去實做數值分析之方法;若是只是要練 coding 能力的話,直接去買一本中文的數值剖析,念起來也不會那麼辛勞。以下介紹二本
另本文對於物件導向、設計模式部份,未著以筆墨,實際上這些部分也都有代表必讀之冊本。提示,若排擠英文的話,照樣試著去接受它,如使用 google 濾除掉英文的話,事實上會比別人獲得更少的資訊,而這些資訊可能主要的都在裡面翻譯至於一些比力進階的冊本與議題,諸如功課系統、多行緒、driver 、WMI、影像處置懲罰、圖形學、socket programming、 GUI programming ... etc,就不在這裡接頭了翻譯
筆者認為這世紀以來,人類在電腦上最偉大的發明就是網際網路搜索器與excel(事實上筆者認為 excel 已經是一套小型的程式語言了)。若感覺書上觀念不是很清晰,請先 google 找資料,別急著問人,事實上
本文來自: http://edisonx.pixnet.net/blog/post/55584448-c-c%2b%2b-%e5%ad%b8%e7%bf%92%e6%ad%b7%e7%a8%8b%e5%88%86有關各國語文翻譯公證的問題歡迎諮詢華頓翻譯公司02-77260932