序員版和主版面的區別是:
程序員版開始于2019年4月11號, 主版面開始于2018年3月
? 唐僧叨叨:仿 Telegram 的自研開源聊天軟件 - 更多介紹
歡的可以轉發收藏加關注
搞軟件的人,編程語言的掌握是基本功,如果單單是學習語法,最慢的一周之內也應該可以搞定(個人認為 語法層面c++是最復雜的)。不幸的是,軟件的本質是邏輯,解決方案的設計是要借助某種解決問題或編程的思想的。本文試圖從抽象層面概括一點編程思想方面的東西。
一 c語言
1、相關概念:實模式、保護模式、調度、中斷、調用棧、回調……基本上計算機科學里面的基本概念都會涉及
2、編程思想:結構化編程,即將解決方案描述為一個清晰的過程,這其中會涉及數據的建模(數據結構),接口的定義(函數),項目整體的組織結構(類似于中斷向量表的注冊、回調機制)。整個實現的過程就是這種流程從粗到細,步步細化的過程。
3、適合的領域:編譯系統(很容易劃分為 lexer、parser、walker等)、OS(很容易分成 cpu相關、內存相關、外設相關、進程相關)、DBMS等系統軟件,或者是靠近
硬件的嵌入式系統(除了匯編就只能用c了)
二 c++
1、相關概念:虛函數、虛表、內聯、多繼承、const、泛型、模板(語言相關)……opencv、OGRE、3D渲染、GPU、mesh、skeleton、幀循環、DX、GUI、MFC、Qt、消息隊列、非阻塞IO(應用領域相關)……
2、編程思想:過程化、oo、泛型、函數式 4種同時支持,實際中用OO比較多。
3、適合領域:多媒體、高性能網絡服務器等較講究效率的應用程序
三 java
1、相關概念:字節碼、虛擬機、垃圾回收、接口、多線程、包、程序庫、反射、框架、集成、組件、http、web、數據庫、SSH、javaee……
2、編程思想:OO,即思考的角度是更面向問題域的對象,整個程序是對象不斷細化,以及對象間交互的過程(調用相應的方法)。java的程序比較講究擴展性和可維護性,一般會使用比較多的設計模式,常用的程序組織形式是MVC、監聽者模式等。
3、適合領域:大部分沒有硬實時要求的應用程序(可能正因為此,所以java程序員的數量是最多的)
四 Javascript
1、相關概念:閉包、對象、函數、CSS、DOM、Ajax、HTML5、node.js、V8……
2、編程思想:基于prototype的OO,以及基于閉包的函數式編程(后者用的更多)。常用代碼組織形式:事件觸發的回調機制(node.js與前端的區別是其自己定義、觸發事件)、基于非阻塞異步IO的框架(node.js)
3、適合領域:web前端,
PS:有人覺得node.js適合做后端,我覺得不適合。node.js是比較通用的腳本引擎框架,我在實際進行開發時,發現node.js有這么幾個問題:
1、沒有原生的對于模塊化(如java的包)的支持
2、JS是無類型語言,很難看懂代碼邏輯(本質上邏輯是對數據的操作,沒有類型的信息就很難看懂代碼)
3、js的調試工具還是不夠好用
4、沒有統一的init的過程(很多的匿名閉包、以及無處不在的回調),很難捋清晰系統的組成和調用關系
5、完全異步觸發的模式,使得代碼很難讀(打斷點都不知道在哪打,即使打了斷點也要想點辦法來觸發那個斷點)
請關注+私信回復:“學習”就可以免費拿到C、C++學習資料
關于 C++ 框架、庫和資源的一些匯總列表,內容包括:標準庫、Web應用框架、人工智能、數據庫、圖片處理、機器學習、日志、代碼分析等。
C++標準庫,包括了STL容器,算法和函數等。
C++通用框架和庫
音頻,聲音,音樂,數字化音樂庫
生物信息,基因組學和生物技術
壓縮和歸檔庫
并發執行和多線程
數據庫,SQL服務器,ODBC驅動程序和工具
調試庫, 內存和資源泄露檢測,單元測試
動力學仿真引擎
一些有用的庫或者工具,但是不適合上面的分類,或者還沒有分類。
用于創建開發環境的軟件
C/C++編譯器列表
在線C/C++編譯器列表
提高質量,減少瑕疵的代碼分析工具列表
*請認真填寫需求信息,我們會在24小時內與您取得聯系。