<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個合格的程序員除了編程語言還要學(xué)什么?

          共 2828字,需瀏覽 6分鐘

           ·

          2021-01-14 11:55


          “有問有答”欄目,是“安曉輝生涯”提供的免費咨詢?nèi)肟?。想?yún)⑴c,可以這樣:

          1. 公眾號后臺留言,以“有問有答”開頭。

          2. 描述你的困惑或者問題。


          我每周會慎重回答一個問題并整理成文章,周四發(fā)布在訂閱號“安曉輝生涯”內(nèi)。

          如果覺得這種方式較為麻煩,或者你的問題較為復(fù)雜,可以拉到文章末尾,識別二維碼,付費約我一對一咨詢。

          安老師,本人并非計算機及其相關(guān)專業(yè),但是非常想學(xué)習(xí)編程,想能編寫出一個真正的程序,現(xiàn)在在學(xué)習(xí)C++,但是很迷茫,不知道還需要學(xué)些什么,才能成一個合格的程序員?可以推介一些書給我么?

          軟件開發(fā)的確是一個系統(tǒng)性的工作,需要很多方面的知識和技能。根據(jù)我的研究,一個合格的程序員,單單是專業(yè)能力,就需要從技術(shù)棧、工具鏈、程序設(shè)計、架構(gòu)設(shè)計、工程化、軟件環(huán)境、軟件開發(fā)模型、業(yè)務(wù)、產(chǎn)品這9個方面來學(xué)各式各樣的東西。

          當(dāng)然并不是每個方面都要學(xué)很多很多,而是根據(jù)個人所處的階段不同,有選擇的學(xué)習(xí)。選擇的原則是——滿足本階段的工作需要。

          你剛開始,屬于新手,典型的特點是在別人指導(dǎo)下完成非常具體的工作,那架構(gòu)設(shè)計、業(yè)務(wù)和產(chǎn)品這三個方面基本可以略過,所以下面我只說技術(shù)棧、程序設(shè)計、工具鏈、工程化、軟件環(huán)境和軟件開發(fā)模型這六個方面都要學(xué)點什么,然后再給出項目實戰(zhàn)怎么學(xué)。

          一、技術(shù)棧

          技術(shù)棧指軟件開發(fā)特定技術(shù)方向的一系列技術(shù)的組合。

          你學(xué)習(xí)C++,那以這個方向為例來說明。技術(shù)??梢约毞譃檎Z言、應(yīng)用開發(fā)框架、數(shù)據(jù)庫這三個方面。

          語言方面,C++你已經(jīng)在學(xué)了,可能還會牽涉到一些標(biāo)記性的語言,比如XML,還可能會有混合語言的編程,需要學(xué)JS、Lua、Python等,根據(jù)項目需要來選就好。你初學(xué),又沒有明確的項目要求的話,先搞定C++本身就好。

          關(guān)于C++本身,推薦兩本書。

          第1本是——《C++大學(xué)教程》(英文名C++ How to program)。這是很經(jīng)典的教程,寫的很通俗,我家里的是第2版,現(xiàn)在已經(jīng)出到第9版了。

          第2本是《C++編程思想》。這是經(jīng)典中的經(jīng)典,除了C++語言和標(biāo)準(zhǔn)庫,還講了編程實踐的一些東西,比如調(diào)試、極限編程、測試先行、設(shè)計模式等等。
          應(yīng)用開發(fā)框架方面,就特別多了,比如STL、Qt、ffmpeg、libevent、Vorbis、OpenAL、OpenCL、C++React、Crypto++、OpenSSL、CppUnit、Cocos2d-x、CEGUI、wxWidgets、Ogre 3D、Skia、CxImage、OpenCV、Caffe、SDL、GStreamer、ACE、ZeroMQ、libcurl等等,干什么的都有,根據(jù)你要做什么樣的項目來選擇一兩個就好。
          數(shù)據(jù)庫方面,也有很多,MySQL、Redis、SQLite、MongoDB等等,你要做的項目需要數(shù)據(jù)庫,就挑一個,不需要,就不管它好了。
          二、程序設(shè)計
          廣義的程序設(shè)計包含很多過程,比如分析、設(shè)計、編碼、測試、排錯等等。我這里說的是狹義的程序設(shè)計,僅僅指如何讓程序變得更簡潔有效更優(yōu)雅的代碼層面的設(shè)計。
          這塊需要了解數(shù)據(jù)結(jié)構(gòu)、算法、編程慣用法、設(shè)計模式等等內(nèi)容,初學(xué)的話,了解一些數(shù)據(jù)結(jié)構(gòu)和常見的算法就好,其他的等干上兩三年再來學(xué)也成。

          推薦這本《數(shù)據(jù)結(jié)構(gòu)、算法與應(yīng)用:C++語言描述》:

          三、工具鏈
          工具鏈指的是在特定平臺上的一套用于支持代碼編寫、編譯、調(diào)試、運行、分析的工具組合。
          就C++而言,你可以掌握一種IDE,比如Qt Creator、VS Code,這些IDE,一般都打包了編輯器、編譯器、調(diào)試器和各種分析工具,一站式解決你的問題了,初學(xué)時基本不用別的了。
          用VS Code的話,推薦這本《Visual Studio Code 權(quán)威指南》:
          四、工程化
          工程化工具,指的是編程、調(diào)試和分析等工具鏈之外的各種支持軟件開發(fā)工作順暢進行的工具。
          你現(xiàn)在是新手,掌握兩個方面的東西就好:
          • 掌握一種代碼版本管理工具,git、svn、github、gitlab,都可以;
          • 掌握一種安裝包制作工具(C++的程序有各種依賴,不做安裝包的話,裝到別的機器上很費勁),比如Inno Setup、NSIS或者VS自帶的,都可以。
          這塊推薦一本Git的書——《Git版本控制管理(第2版)》:


          五、軟件環(huán)境
          軟件環(huán)境指的是完成開發(fā)所需要的支持環(huán)境和軟件產(chǎn)品運行所需要的支撐環(huán)境。
          假如你用C++編寫的軟件,在Windows下運行,就需要Windows操作系統(tǒng)、Windows上的各種運行時,這些也是你需要了解的,比如C++的運行時庫、MFC的運行時庫、OpenSSL的運行時庫,起碼要了解他們是什么,從哪里可以找到,應(yīng)該放到系統(tǒng)中的什么地方。
          如果你在Linux環(huán)境下開發(fā),軟件在Linux下運行,那你就要熟悉Linux的常見命令、腳本(Shell/Python)等。
          除了操作系統(tǒng)和各種運行時,還有你軟件所需要的協(xié)作軟件,比如你用了數(shù)據(jù)庫,那你還要了解數(shù)據(jù)庫的安裝、驅(qū)動的配置等等。
          推薦三本書。

          第一本是操作系統(tǒng)基礎(chǔ),看經(jīng)典的《深入理解計算機系統(tǒng)》:

          第二本是Linux的基礎(chǔ)學(xué)習(xí),看《鳥哥的Linux私房菜 》:
          第三本是一本老書《程序員的自我修養(yǎng):鏈接、裝載與庫》,能幫助你更好的理解C++程序是怎么運行起來的。絕版了,可以買到二手的。
          六、軟件開發(fā)模型
          軟件開發(fā)模型是指軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。常見的有瀑布、迭代、精益、敏捷等。各種模型現(xiàn)在都有在用,推薦看經(jīng)典教材《軟件工程》,里面有各種開發(fā)模型的簡要介紹。


          七、項目實戰(zhàn)
          以上分門別類介紹了要學(xué)什么,但往往是,我們學(xué)了很多東西,不知道怎么做項目。對初學(xué)者,我建議是分三個階段:
          1. 刷題
          2. 照抄項目
          3. 自己設(shè)計項目
          第1個階段——刷題,一方面你要做你用的C++教材上的課后練習(xí)和小項目,另一方面,也可以使用leetcode來刷題。

          第2個階段——照抄項目,可以找專門的項目類的圖書、課程等,跟著學(xué),跟著。這里做推薦一本書好了,《C++項目開發(fā)實戰(zhàn)入門》,上面有一些項目,可以參考。

          第三個階段——自己設(shè)計項目,可以從自己看到的需求出發(fā),比如圖片瀏覽器、音樂播放器、錄音機、文件管理器等等,都可以做做看。這個階段你做出來的,就屬于真正的程序了。
          等你完成這三個階段,能自己搞定一些小項目,基本上,C++就算是入門了。以后,再做個十年八年,差不多就能精通了。

          推薦閱讀

          為什么拼多多這類公司,加班這么多,負面新聞滿天飛,絕大多數(shù)求職者還趨之若鶩?

          如何讓將來的你不埋怨現(xiàn)在的自己?

          書單 |?12本職場成長書,給想精進的你

          或許你正在做拿命換錢的事

          當(dāng)你在對的地方工作,機會就會慢慢顯現(xiàn)

          歡迎添加安曉輝老師微信a32352937

          一對一咨詢識別上圖二維碼

          文字咨詢請戳閱讀原文

          瀏覽 64
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  69成人电影 | 四虎成人网址 | 麻豆一区在线 | 亚洲成人免费网站 | 女毛片 |