简单谈谈编程语言(外篇)
?
本文是前三篇文章的外篇,主要講講我從C到C的編程語(yǔ)言之路,從上層應(yīng)用到較底層開發(fā),目前主攻C語(yǔ)言嵌入式開發(fā)。本文本來預(yù)想是兩個(gè)星期前寫的,但由于熱身賽臨近,需要投入大量的時(shí)間,所以遲遲抽不出時(shí)間來,加上熬夜太多,一直咳嗽,今天算是有時(shí)間結(jié)束《簡(jiǎn)單談?wù)劸幊陶Z(yǔ)言》系列了。
第一篇適合剛接觸多種語(yǔ)言的程序員,第二篇適合已經(jīng)一定的框架、應(yīng)用開發(fā)經(jīng)驗(yàn)的程序員,第三篇適合有較多開發(fā)經(jīng)驗(yàn)、并且還沒做出選擇的程序員,這一篇,純屬閑聊,一篇流水賬。
? ? ? ?時(shí)間回到大學(xué)剛開始的C語(yǔ)言學(xué)習(xí),當(dāng)時(shí)只能非常絕望地對(duì)著一個(gè)小黑框,寫著簡(jiǎn)單的小學(xué)數(shù)學(xué)題,當(dāng)時(shí)還不懂得在網(wǎng)站直接找教程學(xué)習(xí),只會(huì)死板地看著教材,雖然就一開始聽了一兩節(jié)課,但由于一直認(rèn)真寫作業(yè),加上接觸的第一門編程語(yǔ)言是C語(yǔ)言,所以,心里一直覺得C語(yǔ)言是我最熟悉的,唯一討厭的是那個(gè)小黑框。第二學(xué)期學(xué)JAVA也差不多,SWING大概是我見過的最不喜歡的寫界面的了,也可能是我當(dāng)時(shí)太菜。也是因?yàn)槲夷菚r(shí)候不懂得自己上網(wǎng)找學(xué)習(xí)視頻,所以當(dāng)時(shí)就按部就班。因此時(shí)間特別多,加上對(duì)自己的定位了,找到、享受自己的興趣愛好,因此大一算是最幸福的了。
? ? ? ?其實(shí)學(xué)完JAVA后,我就開始發(fā)現(xiàn)很多共性了,只是一直理解不了面向?qū)ο?#xff0c;當(dāng)時(shí)覺得C語(yǔ)言庫(kù)可以做到的東西,干嘛弄個(gè)類、搞個(gè)面向?qū)ο?#xff1f;大一臨近結(jié)束時(shí),我開始定位大二,當(dāng)時(shí)有師兄跟我說過要專精一門語(yǔ)言比較好,但是我心理就是不踏實(shí),然后有了后面的很多嘗試。
? ? ? ? 后來,加入校內(nèi)一個(gè)校級(jí)組織的部門后,慢慢開始對(duì)學(xué)習(xí)有了新的見解,從事的是網(wǎng)頁(yè)前端開發(fā),HTML+CSS+JAVASCRIPT,那時(shí)候開始對(duì)計(jì)算機(jī)充滿了更大的興趣,因?yàn)樽约嚎梢耘龊芎每吹慕缑?#xff0c;甚至看起來已經(jīng)和自己瀏覽的很多網(wǎng)頁(yè)差不多,甚至有一些更好看,開始接觸一些框架,比如bootstrap,jQuery(庫(kù))等等,覺得框架好多,用起來好方便,但是竟然有這么多框架,有點(diǎn)吃驚,框架到底是個(gè)什么東西?在這段時(shí)間內(nèi),我開始通過看視頻來學(xué)習(xí)了,加上自己很厲害折騰課外的東西,更重要的是大二的定位是尋找專業(yè)愛好,因此學(xué)的東西還是挺多的。當(dāng)時(shí)接觸了sublime text這個(gè)文本編輯器,有種打開新世界大門的感覺,打開速度超快,并且知道了插件的存在,尤其是快捷鍵的習(xí)慣(我目前大部分的快捷鍵的習(xí)慣都源于sublime,接觸每一款新的IDE、文本編輯器我都會(huì)改成sublime式的快捷鍵,個(gè)人習(xí)慣),因此開始了能不用鼠標(biāo)就不用鼠標(biāo)的習(xí)慣,這些快捷鍵、插件技巧大大提高了開發(fā)速度。
? ? ? ?后面接觸了當(dāng)時(shí)超級(jí)火的微信小程序(其實(shí)也可以把小程序的編寫看成是一個(gè)框架),然后發(fā)現(xiàn)了與HTML驚人的相似。與此同時(shí)接觸的C++游戲引擎虛幻4(UE4)的藍(lán)圖(其實(shí)就是調(diào)用庫(kù)函數(shù)),開始慢慢覺得只會(huì)寫界面好像也拿不出手,加上手頭上有一個(gè)網(wǎng)頁(yè)項(xiàng)目(校級(jí)的),還沒開工,就開始從PHP入手。當(dāng)時(shí)部門同學(xué)推薦用JetBrains PhpStorm編寫,我覺得界面不喜歡,然后字體顯示奇怪,即使換成了習(xí)慣的sublime經(jīng)典皮膚也不舒服,然后拋棄了這個(gè),用sublime,后來覺得vscode也挺方便的,就開始用vscode編寫PHP。這時(shí)候已經(jīng)開始慢慢覺得文本編輯器好了,IDE啟動(dòng)太慢,并且繁瑣,想改點(diǎn)東西也要等好幾秒才能打開,相對(duì)于sublime的秒開(notepad++也有同樣速度,但是長(zhǎng)得不好看),vscode兩秒開(沒想到很好的詞,哈哈哈),還是算了(純屬個(gè)人偏見)。
? ? ? ?這個(gè)時(shí)候的我,看PHP就覺得PHP好奇怪,弄個(gè)$在變量前面,竟然還有一群人這么喜歡它?(好吧,到現(xiàn)在我還是挺不喜歡PHP的$,雖然已經(jīng)明白為啥這樣)。但是看到class就明顯覺得是JAVA的近親,略微感動(dòng)了一下,然后對(duì)面向?qū)ο竽切┚拖鄬?duì)舒服了點(diǎn)。后來接觸了THINKPHP5.1框架,開始對(duì)框架有了新的見解,慢慢意識(shí)到框架其實(shí)就是一個(gè)半成品,自己按照規(guī)則去弄就好。
? ? ? ?暑假跟著部門的人做前端實(shí)習(xí),那份工作就是不斷讓我用同樣的技術(shù)不停地做靜態(tài)頁(yè)面,一開始還是有點(diǎn)不適應(yīng),覺得有點(diǎn)挑戰(zhàn),做完第一份后,后面的就很快做完了,因?yàn)榛緵]用到新的知識(shí)。我驚訝地覺得,沒有技術(shù),真的只能做重復(fù)單調(diào)的工作,然后在完成公司任務(wù)后,我開始繼續(xù)研究服務(wù)器,寫PHP,折騰一下js,當(dāng)然這是白天的工作,大概是7月底/8月初這樣,晚上回到學(xué)校就在實(shí)驗(yàn)室學(xué)習(xí)嵌入式。也是那時(shí),我開始正式從實(shí)驗(yàn)室的游戲開發(fā)轉(zhuǎn)向嵌入式開發(fā),原因很多,核心是我對(duì)上一年比賽結(jié)果不滿意(我算是一直劃水了,在實(shí)驗(yàn)室,游戲,emm...算了不談這個(gè)),我不服氣。然后,就開始了漫長(zhǎng)的嵌入式入門之旅,其實(shí)在沒看比賽之前我自己覺得自己肯定不做硬件編程的,打臉了。
? ? ? ?大三第一學(xué)期,用PHP作為后端把網(wǎng)站搞好了,慢慢開始有意向偏嵌入式了,并且開始發(fā)現(xiàn)了超多編程語(yǔ)言的共性。但是自己內(nèi)心還是慌,專業(yè)方向選了安卓,接觸了xml,后來看了一些kotlin,python,go,做了一些簡(jiǎn)單的東西。內(nèi)心醞釀已久的問題,開始強(qiáng)烈沖擊自己的內(nèi)心了,什么是編程語(yǔ)言?為什么有那么多編程語(yǔ)言?為什么還不停出現(xiàn)那么多編程語(yǔ)言?框架、API等等這些又是什么?等等,大量的問題出現(xiàn)。問了老師,師兄師姐,他們確實(shí)給出了看法,卻不是我想要的答案,但給了我思路。當(dāng)時(shí)的嵌入式課,老師講了很多底層的東西,以ARM為例,從匯編層面去看待問題,也更深入地講c語(yǔ)言,為我解答編程語(yǔ)言問題做了很大的基礎(chǔ)鋪墊(我大三開始決定開始聽課,因?yàn)橛X得考前自學(xué)課內(nèi)知識(shí)有點(diǎn)累,并且入門嵌入式讓我意識(shí)到基礎(chǔ)知識(shí)的重要性)。趙老師講的真的很好,讓我多次覺得豁然開朗,因此我現(xiàn)在選了他作為了我的指導(dǎo)老師。
? ? ? ?經(jīng)歷了重重奇奇怪怪的概念考驗(yàn),我和機(jī)械那邊首次做了自己的第一個(gè)機(jī)器人作品,頓時(shí)對(duì)嵌入式的興趣倍增。在寒假的時(shí)候,我用C++和QT寫了一個(gè)串口調(diào)試助手,驚奇地發(fā)現(xiàn)自己的自學(xué)能力提高了很多,開發(fā)周期比我預(yù)想要短,上手很快(雖然還有bug沒改好)。C++的類我真的不喜歡,長(zhǎng)得奇怪,但比較裸露,然而我卻頓時(shí)明白了,類原本是什么一個(gè)東西,結(jié)構(gòu)體、指針,頓時(shí)釋然,我開始從底層往上去解釋編程語(yǔ)言,知道實(shí)現(xiàn)原理,再?gòu)臍v史去解釋為什么要這樣做。
? ? ? ?第二學(xué)期初,我開始接手一個(gè)“看起來很容易”的機(jī)器人,實(shí)際上這個(gè)機(jī)器人讓我不斷懷疑自己是否適合做嵌入式。我開始去深入學(xué)習(xí)C語(yǔ)言,學(xué)習(xí)一些使用技巧,模塊化思想(這個(gè)還沒能搞得很清楚),因?yàn)榇a量已經(jīng)較為龐大了,開始深切感覺到了面向?qū)ο蟮膬?yōu)勢(shì)了,往后可能也會(huì)寫幾篇相關(guān)的文章。這時(shí)候的我,因?yàn)橐呀?jīng)理解了編程語(yǔ)言了,找到了自己的答案了,所以,我就在那一瞬間決定,繼續(xù)做挺好玩的嵌入式,專精C語(yǔ)言,然后斷斷續(xù)續(xù)寫了那三篇文章。
? ? ? ?為什么現(xiàn)在的我心不慌了呢?因?yàn)橐呀?jīng)看透了這些表層的編程語(yǔ)言的區(qū)別,已經(jīng)有自信無論之后的工作,使用哪種編程語(yǔ)言,我也有把握迅速上手,心自然踏實(shí)了。而現(xiàn)在更踏實(shí)了,就是因?yàn)槟莻€(gè)“看起來很容易”的機(jī)器人,我踏很多坑,因?yàn)閳F(tuán)隊(duì)內(nèi)沒有這方面的基礎(chǔ),然后已經(jīng)從關(guān)注底層配置,到直接應(yīng)用邏輯開發(fā)了。熱身賽出現(xiàn)的種種意外,讓我充分體會(huì)到經(jīng)驗(yàn)和解決問題思路的重要性,大一大二甚至大三一開始我都不承認(rèn)bug這個(gè)詞的,但這個(gè)機(jī)器人讓我承認(rèn)了。不能覺得自己太菜而自卑,也不能自信而出現(xiàn)大量bug出現(xiàn),心態(tài),也很重要。
? ? ? ?啰嗦了這么多,就一句話,越學(xué)習(xí)越謙虛,根本沒有機(jī)會(huì)自負(fù),計(jì)算機(jī)需要學(xué)的太多厲害的人太多。這便是,我從應(yīng)用層到底層,然后現(xiàn)在開始從底層慢慢爬向應(yīng)用層的故事了,或者說是從C到C的故事。
?
后記:
篇幅限制,就不直接在上一篇那里接著寫下去了,決定寫一篇獨(dú)立的文章結(jié)束對(duì)編程語(yǔ)言的講述,當(dāng)做尾聲。第一第二篇從編程語(yǔ)言的角度的講述,第三篇從程序員的角度,并且已經(jīng)將我目前對(duì)程序員的歷程的見解都融入進(jìn)去了,正確與否我也不清楚,需要經(jīng)過時(shí)間的推敲。第一篇已經(jīng)講明了我為什么選擇寫這幾篇文章,或者說包括接下來的文章,像現(xiàn)在很多文章站在過高層面去描述問題其實(shí)是很好的,畢竟那樣的文章,無論處于多高的水平都起著作用。但是對(duì)于初學(xué)者并不見得是這樣,過于深入去講述一些問題,反而會(huì)讓初學(xué)者望而卻步,看不懂,所以,就想趁自己水平還比較一般的時(shí)候,寫一些適合這個(gè)階段的文章,希望能達(dá)到效果。現(xiàn)在越學(xué),越覺得自己菜,要學(xué)的東西太多,而自己的精力卻很有限。
?
不定時(shí)更新文章,盡可能堅(jiān)持下去,轉(zhuǎn)載請(qǐng)注明出處。
總結(jié)
以上是生活随笔為你收集整理的简单谈谈编程语言(外篇)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle自定义函数身份证15位和18
- 下一篇: TensorFlow教程使用RNN生成唐