引言
最近幾年,人工智能是個(gè)很火的行業(yè),于是有很多的人想學(xué)習(xí)計(jì)算機(jī)編程,后面簡稱:編程。提到編程,你大概會(huì)想到與它關(guān)聯(lián)的三門學(xué)科:電學(xué)、數(shù)學(xué)和英語。你可能懷著滿腔熱血,但是想想這三門學(xué)科學(xué)得不是很好,就沒有了信心,就想放棄。
那這到底是不是真相?如果沒有這三門學(xué)科強(qiáng)大的支撐,到底能不能學(xué)編程?想學(xué)計(jì)編程,0基礎(chǔ)從哪里開始入手學(xué)習(xí)呢?下面由我來為你一一解答你心中的疑惑。?
一、什么是編程?
先簡單介紹一下編程。編程就是用戶和計(jì)算機(jī)的一種溝通渠道,通過編寫一系列的程序指令,指揮計(jì)算機(jī)完成相應(yīng)的操作。專門從事編程工作的技術(shù)人員便是程序員。
?在計(jì)算機(jī)領(lǐng)域,編程細(xì)分下來,有很多的技術(shù)方向。從大的方向,分為兩類,就是偏向于上層和偏向于底層的編程。當(dāng)然,這是人為的一個(gè)劃分,只是為了便于理解。在學(xué)術(shù)上來說并不是很準(zhǔn)確。下面我分別介紹一下這兩類編程。?
1、底層編程
簡單來說,它更偏向于和計(jì)算機(jī)內(nèi)部溝通。有點(diǎn)計(jì)算機(jī)基礎(chǔ)的朋友都知道,計(jì)算機(jī)語言分為機(jī)器語言、匯編語言和高級(jí)語言。偏向底層的編程就是使用匯編語言和一部分高級(jí)語言,來完成和計(jì)算機(jī)的交流,這類程序員和計(jì)算機(jī)的用戶不直接接觸。
?由于目前計(jì)算機(jī)的高度集成,底層程序員大部分也用的是高級(jí)語言,例如C語言,再也不用接觸那些復(fù)雜的機(jī)器指令。?
舉個(gè)栗子,咱們?cè)诎惭b打印機(jī)、掃描儀;或者手機(jī)第一次連接電腦;再或者安裝完操作系統(tǒng),都會(huì)做一個(gè)事情,那就是安裝驅(qū)動(dòng)程序。而這個(gè)驅(qū)動(dòng)程序的編寫,就是由底層的程序員來編寫完成的。?
2、上層編程
會(huì)和用戶溝通比較多點(diǎn),負(fù)責(zé)將用戶對(duì)軟件的需求,進(jìn)行編程實(shí)現(xiàn)。使用的計(jì)算機(jī)語言,就是高級(jí)語言。這類程序員也是占到了程序員總數(shù)的大部分,至少在90%以上,而且這個(gè)比例還在逐步增加。你也許想學(xué)編程,也是屬于這方面。?
同樣舉個(gè)栗子,咱們每天瀏覽的網(wǎng)頁;使用的手機(jī)APP;使用的各種應(yīng)用系統(tǒng)……都是這上層的程序員編寫的??梢赃@樣說, 每個(gè)人都會(huì)和上層的程序員有接觸;
或者更準(zhǔn)確點(diǎn),都會(huì)和他們寫的軟件有直接或者間接的接觸,為什么會(huì)這樣說呢?你每天都會(huì)玩手機(jī)吧,手機(jī)上五花八門的APP,就是這些程序員的杰作;你只要接觸電腦,就得用軟件,這些軟件都是他們編寫的;
?就算你不用手機(jī)、電腦,但是與你生活相關(guān)的各種信息的存儲(chǔ),都是使用的各種軟件組成的信息系統(tǒng)。21世紀(jì),整個(gè)社會(huì)都離不開信息系統(tǒng),它已經(jīng)融入我們生活的方方面面?,F(xiàn)在,你還能說與程序員沒關(guān)系。作為一個(gè)十年的程序員,很慶幸自己能為大家服務(wù),讓大家的生活更便捷。
?二、學(xué)習(xí)編程的條件
?學(xué)習(xí)編程,有兩類人,一種是想從事這個(gè)行業(yè);另一種是因?yàn)榕d趣。不管哪一類,起步的時(shí)候是差不多的,只不過到后面深入程度是不一樣的。 我現(xiàn)在來幫你分析一下學(xué)習(xí)編程的前提條件,這里指的也是偏上層編程的范疇。?
你可能知道,計(jì)算機(jī)學(xué)科是由電學(xué)和數(shù)學(xué)來組成的,一個(gè)負(fù)責(zé)硬件;另一個(gè)負(fù)責(zé)軟件。提起程序員,在你的影響中,可能是一天坐在電腦前敲鍵盤,而電腦屏幕上全是字符和數(shù)字,你便把它和英語也掛上鉤了。于是你便心里有了疑慮:學(xué)習(xí)編程,是不是要有電學(xué)基礎(chǔ)???是不是要很深厚的數(shù)學(xué)功底?是不是也得英語很好???現(xiàn)在,我給你分析一下。?
1.電學(xué)
主要是指數(shù)字電路和模擬電路這些學(xué)科。如果你是深度的與計(jì)算機(jī)溝通交流,與硬件自然有關(guān)系,也就是作為底層的程序員,是需要掌握的。而你如果想學(xué)的是上層的編程,是不需要的。
?舉個(gè)栗子,你只是想開個(gè)炒菜館,那你完全不用知道菜是怎么種出來的;油是怎么榨出來的;甚至你連肉是哪來的,都不需要知道。你只負(fù)責(zé)把他們采購回來,做成美味佳肴就可以。?
2、數(shù)學(xué)
計(jì)算機(jī)學(xué)科,是由數(shù)學(xué)學(xué)科延伸而來的,大學(xué)里面也叫做數(shù)信學(xué)院??梢?,數(shù)學(xué)是多么的重要,我要說沒有強(qiáng)大的數(shù)學(xué)基礎(chǔ),你肯定會(huì)批判我。?
實(shí)際上,沒有一個(gè)人是真正的0基礎(chǔ)的,就像你現(xiàn)在看這篇文章,如果你是0基礎(chǔ),你連字都不認(rèn)識(shí),又怎么能看懂呢?所以,如果你的文化程度是初中還沒畢業(yè),那就趕緊放棄吧,確實(shí)不適合學(xué)習(xí)。
否則,你的基礎(chǔ)一定沒問題,從小到大,你還是有一定的邏輯思維的。這點(diǎn)邏輯思維夠了。計(jì)算機(jī)軟件編程發(fā)展到現(xiàn)在,分工已經(jīng)越來越精細(xì),像工廠里的流水線工人,一個(gè)蘿卜一個(gè)坑。專門的數(shù)學(xué)模型由數(shù)學(xué)專家來完成,負(fù)責(zé)和數(shù)學(xué)專家對(duì)接的程序員,只占到程序員的不足5%;更多的程序員則是和廣大用戶密切聯(lián)系,開發(fā)出符合需求的軟件產(chǎn)品。
平時(shí)根本不需要考慮深?yuàn)W的數(shù)學(xué)。舉個(gè)栗子,比如一所小學(xué),大部分老師的要求是師范類院校小學(xué)教育畢業(yè)就可以。但是需要一個(gè)專門教音樂的崗位,那他可能需要小學(xué)教育畢業(yè)外,還得有教音樂方面的能力。
?3、英語
編程的過程中,看似全是英文,其實(shí)都是一些常見的詞匯,如果真正開始編程了,這些單詞每天都會(huì)看到,天天見,我還不信你記不住。對(duì)于軟件里的一些交互或者提示之類的英文,都是很簡單的一些語法。如果萬一不行,還有度娘啊,害怕什么呢?
?現(xiàn)在,你是否已經(jīng)打消了這些顧慮,你是不是很有信心了呢?其實(shí),大部分時(shí)候,我們都是因?yàn)椴涣私庹嫦?,而錯(cuò)失了很多美好的東西。?
作為一個(gè)十年的程序員,我負(fù)責(zé)任的告訴你,我的文化水平,也只有中專的程度。那么,你是不是更有信心了呢?下面我將告訴你,怎么從0基礎(chǔ)來學(xué)習(xí)。
三、怎樣從0基礎(chǔ)開始?
現(xiàn)在,我相信你肯定想試試了,在這之前,我會(huì)更詳細(xì)的為了介紹上層編程的幾個(gè)方向。?
1、前端頁面技術(shù)
這個(gè)方面嚴(yán)格說,是屬于美工或者UI設(shè)計(jì)師的范疇,我現(xiàn)在在這里介紹,是因?yàn)樗统绦騿T與有很多的交集。在小公司,也是由程序員來兼職的。這方面的技術(shù)主要是HTML,CSS,JAVASCRIPT等。?
2、高級(jí)語言
這是程序員主要掌握的技能,主要包括的技術(shù),例如主流的Java,Python,C、C++,Object C,Swift,Go,C#等,你如果愿意,百度查找一下,有很多的高級(jí)語言。?
3、數(shù)據(jù)庫
主要是用來存儲(chǔ)數(shù)據(jù),如Oracle,SQL Server,MySQL,DB2等,當(dāng)然,也有很多,你也可以查一下。?
舉個(gè)栗子,用百度這個(gè)搜索引擎來說。?
頁面上顯示出來的那個(gè)搜索框和按鈕,就是前端頁面技術(shù)來做的工作;?
點(diǎn)擊完按鈕后,后臺(tái)用來做搜索工作的就是高級(jí)語言來做的工作;?
海量的頁面和數(shù)據(jù)存儲(chǔ),用的就是數(shù)據(jù)庫技術(shù)。?
從這里可以看到,這三層技術(shù)不是孤立的,而是相互關(guān)聯(lián)的。在有些公司,都有詳細(xì)的分工,一個(gè)人只需要掌握一種技術(shù)就可以了,其它的工作交給別人;而有些公司,就可能身兼數(shù)職,每種技術(shù)都可能接觸。?
說完了這些技術(shù),我來說一下,作為0基礎(chǔ),你到底該從哪里下手。
?1、如果你是想以后走職業(yè)化路線。
從單一的一種技術(shù)開始。比如,你想做美工,或者UI設(shè)計(jì)師,那就需要學(xué)習(xí)前端技術(shù);想做一門語言的程序員,那就學(xué)習(xí)那一門語言就可以。比如Java;想從事DBA(數(shù)據(jù)庫管理員)的工作,那就學(xué)習(xí)數(shù)據(jù)庫技術(shù)就可以。
?2、如果你只是興趣驅(qū)動(dòng).
我想你可能都得學(xué)一點(diǎn),這樣才能做出來一個(gè)完整的軟件出來。你可能又開始擔(dān)心了,那么多技術(shù),怎么學(xué)會(huì)呢?其實(shí)你一點(diǎn)不用擔(dān)心,讓你都學(xué),也沒說每一門技術(shù)都學(xué)多深啊,只要能入門就可以了。所以,你完全不用太操心。?
當(dāng)然了,你可能想著,我就想學(xué)一方面的技術(shù),那也可以啊,玩玩總是可以的。比如,你只學(xué)了前端技術(shù),你展示出來的數(shù)據(jù)就是死的,不能隨著變化而變化;你只學(xué)了高級(jí)語言,那就沒有友好的用戶界面,只能在控制臺(tái)(命令提示符,像以前的DOS)上和計(jì)算機(jī)交互;你只學(xué)了數(shù)據(jù)庫,那么只能是你手動(dòng)保存數(shù)據(jù)和查詢數(shù)據(jù),不能以用戶界面和自動(dòng)化的方式操作數(shù)據(jù)。?
看到這里,我想,你對(duì)計(jì)算機(jī)編程已經(jīng)有了一個(gè)很清晰的框架了。你一定躍躍欲試了,作為老程序員,歡迎你加入編程的行列。如果你還有不清楚的,也歡迎你來咨詢我,我樂意帶你上路。