編程之禪pdf 零基礎(chǔ)怎樣成為程序員?
零基礎(chǔ)怎樣成為程序員?我有一個朋友仍然很好。他大一時主修英語,大二時主修新聞。現(xiàn)在他在一家大工廠工作。可以說他是一個真正的非專業(yè)程序員。1. 先專注于學(xué)習(xí)某個方向,用這個技能養(yǎng)家糊口,找工作,爭取時間
零基礎(chǔ)怎樣成為程序員?
我有一個朋友仍然很好。他大一時主修英語,大二時主修新聞?,F(xiàn)在他在一家大工廠工作。可以說他是一個真正的非專業(yè)程序員。
1. 先專注于學(xué)習(xí)某個方向,用這個技能養(yǎng)家糊口,找工作,爭取時間學(xué)習(xí)其他計算機知識,從而成為一名專業(yè)的程序員。例如,如果你對前端感興趣,可以找到JS的原型鏈和ES6的新特性,然后找一家公司來實踐。如果你想成為一名專業(yè)的程序員,不要過早地確定自己的方向,因為專業(yè)的程序員能夠很好地完成很多方向,其中一兩個方向是非常強大的。創(chuàng)建windows的David Cutler今年已經(jīng)70歲了。他20年前剛開始寫溫特,那時他四五十歲。在他30歲之前,他不知道怎么寫代碼,所以別擔(dān)心。
當(dāng)你找到工作時,你應(yīng)該學(xué)習(xí),但不限于:
;[t計算機圖形學(xué)
;[compiler principle
;[basic knowledge of operation system
;[architecture of distributed system
;];[reliable automatic testing of your code
;];;[學(xué)習(xí)編寫框架和庫而不是應(yīng)用程序
你可能會問為什么要學(xué)習(xí)計算機基礎(chǔ)知識,其實對于程序員來說,計算機基礎(chǔ)知識還是很重要的,如果計算機基礎(chǔ)知識不扎實,很可能會遇到以下尷尬情況:
1。35歲以后,普通代碼農(nóng)場主會被老板解雇,因此盡可能地向公司高層發(fā)展,而技術(shù)總監(jiān)要求你有強大的計算機基礎(chǔ)。
2. 人工智能將取代初級和中級程序員在未來。比如今年的雙11阿里自動切割機器人。
3. 技術(shù)發(fā)展太快了。如果你只知道如何使用框架,那么它充其量只是一種外部技能。如果你不能使用內(nèi)部技能(計算機基礎(chǔ)),你會厭倦處理它,被年輕的程序員取代。
4. 學(xué)習(xí)計算機專業(yè)知識,你可以自己得到快樂
我做C已經(jīng)6年了,我覺得這方面的需求還是很大的
第一,嵌入式設(shè)備:幾乎所有的硬件設(shè)備都離不開C,手機、Android設(shè)備都是Linux內(nèi)核,純C,硬件就是驅(qū)動,所有C,MCU,數(shù)據(jù)機床。
第二,網(wǎng)絡(luò)設(shè)備:各種網(wǎng)絡(luò)設(shè)備、光纖設(shè)備、交換機、防火墻、小型家庭路由器、TCP/IP協(xié)議都是用C語言編寫的,C語言的需求和網(wǎng)絡(luò)的發(fā)展空間一樣大。
第三,服務(wù)器端:大部分服務(wù)器端程序都是C,精通nginx和squid,可以使公司上市,如Netshop技術(shù)。云服務(wù)離不開C。亞馬遜,業(yè)界最強大的云,不能靠買書來做這么多。還有流行的大數(shù)據(jù)、IPv6等,涉及的業(yè)務(wù)非常廣泛。很多工具都是用C寫的,比如PHP,python…
但是C不是那么簡單,不僅僅是語法,比如Linux驅(qū)動程序,你應(yīng)該熟悉內(nèi)核架構(gòu),并且有一些硬件知識。C有很多開源代碼要看。歡迎加入
一個只精通一種C語言的人遠(yuǎn)不是一個程序員,更不用說C語言了。即使你精通Java和C,你也不是程序員。為什么?請繼續(xù)閱讀:
了解C語言意味著你可以根據(jù)C語言的語法編寫一段代碼,但它只是一段簡單的代碼。想讓代碼有靈魂,那就是能夠在實踐中解決問題或滿足客戶的實際需求。試想一下,客戶讓你做一個網(wǎng)絡(luò)視頻傳輸模塊,你需要了解視頻從客戶端服務(wù)器到終端的交互過程,才能編寫這個系統(tǒng),而你只能用scanf函數(shù)從鍵盤上讀取一個數(shù)據(jù),然后用printf函數(shù)輸出數(shù)據(jù),這只能說明你的C語言語法不錯,但有什么用呢?您幫助客戶解決了哪些問題?
算法是程序的靈魂,程序員在編寫每一個C語言代碼時都會不知不覺地使用一些算法。其中最常見的是人體識別算法。
也許你可以用C語言的指針很流暢,用C語言的鏈表很方便,用C語言的二維數(shù)組就不用說了,但只要寫這些就可以認(rèn)出一張臉了?顯然不是。
算法就像一張印有規(guī)則的紙。你看看紙上的規(guī)則,然后用你學(xué)過的C語言語法,按照規(guī)則寫代碼。算法的靈魂在于代碼。
要為客戶做生意,僅僅理解一種編程語言是不夠的。例如,如果你懂Java,Android的開發(fā)是非常順利的。但是如果你想在Android手機上實現(xiàn)視頻采集,目前只懂java是不夠的。這種與視頻處理相關(guān)的底層功能需要借助原生方法,而原生方法通常是用C語言實現(xiàn)的。
大多數(shù)情況下,許多編程語言相互補充以實現(xiàn)一個目標(biāo)。
以上只是程序員學(xué)習(xí)的一小部分,程序員要學(xué)的東西太多了,技術(shù)日新月異,要保持一顆學(xué)習(xí)的心
C語言能干什么?
Java虛擬機的功能是執(zhí)行Java字節(jié)碼,其編碼實現(xiàn)是一個死循環(huán)。每個循環(huán)都是獲取字節(jié)碼并執(zhí)行字節(jié)碼的過程,因此與其他程序沒有本質(zhì)區(qū)別。主流的JavaVM大多是用C語言實現(xiàn)的,然后用匯編語言輔助實現(xiàn),用Java實現(xiàn)JavaVM的情況有一些,但不多。
下面是使用C語言在智能設(shè)備中實現(xiàn)虛擬機的一個片段。
此代碼是短加法字節(jié)碼的實現(xiàn)。
這段代碼只是獲取字節(jié)碼并執(zhí)行它。你認(rèn)為JavaVM就是這樣嗎。
為了優(yōu)化虛擬機的效率,很多人選擇用匯編的方式重寫執(zhí)行頻率高的代碼。
小結(jié)是C語言實現(xiàn)的許多,將與匯編結(jié)合起來作為輔助工具。有其他語言,但不是主流。
只精通一門C語言的人,算不算程序員?
心!