大學回顧和C與PHP之路

我去年畢業,從事PHP學習和開發一年多。php

background:medical muti-media electric web;

先講一下個人背景吧,我大學的學校是一個醫科學校,然而專業是計算機動漫設計方向。我是理科生並且中學也沒有學會畫畫之類的。當年大一想未來能成爲動畫家的人,就花了很大的心思去學習畫畫,然而並無什麼效果。一是沒有那個藝術細胞天份,二是專業沒什麼氣氛總共才十幾我的只有一兩個是之前學過畫畫並且堅持要走那一行的。前端

同時,大學也參加了一些社團和組織,好比作策劃的、作海報的、作視頻的、作電子的、作數學的。而後一直堅持到最後的是作電子,就是隔壁 生物醫學工程學院 的電子創新基地,在裏面學單片機,作電路板啊、寫C語言啊,最後也作出了一些小做品好比智能小車、氣象站什麼的。但這些畢竟都是一些模塊組合和很成熟的基本算法,縱使一直用的都是C語言,也不多用到指針、數據結構這些的。而在大三到大四那個暑假,就開始比較系統地學習起PHP網站建設,主要是以Head First那個系列的書開始的。那時候就想作兩手準備,一方面是由於不少師兄們都說作硬件的工做很差找啊仍是作軟件好啊,另外一方面是由於我專業所學的課程是多媒體方向的,跟電子基本上很難搭得上邊,而後課程裏面也沒有好比數電模電這幾門基礎的課本身在硬件方面學得不紮實。web

Find and lost and found

後來在上一年的秋招時候,也是跟實驗室的「基友」們各類跑宣講會啊跑筆試面試啊,不亦累乎。那時,建站方面我只有一丁點的經驗,而後各大互聯網公司就在筆試中被刷掉了。而在嵌入式電子方面,偏硬件的個人硬件電氣知識不足,偏軟件的又大多數要會C++。我這種會一點作板又只會C的就是明顯東不成西不就,雖然能夠本身獨立作一些東西出來玩。但那些公司畢竟不是弄個只能玩的東西,他們都會要比較專注於某一方面的,招的人非軟即硬,在專一性方面有較高標準。面試

而後通過兩個多月的尋尋覓覓後,決定轉行作網站設計,而後偶然一次機會一家小小公司招進去了,外包作一個蛋糕店的微信網店,原本已經有一套代碼模板的了,而後作了兩個月項目完成驗收了就完工回家過年。過完年回來又尋覓了幾個星期,而後才決定不找了,就留學校作畢業設計,就是拿暑假作的那個網站做品(參過賽的)重構。此次重構是採用了Thinkphp這個用得最普遍的框架,文檔清晰大方、問題參考回答衆多,這是我當時選擇它的最主要因素,而後這個項目一直作到五月中畢業答辯。通過這一次重構,算是真正理解體會了什麼是先後端,什麼是MVC,什麼是以對象的思惟去解析網站中的邏輯規劃。固然我知道,我能如此之快地理解到面向對象的層面是跟我此前C語言的積累大有關係的。算法

C Engineering

還記得當年大一寒假回來,師兄們就給了咱們一本電子書(小冊子)叫《從單片機初學者邁向單片機工程師》,其中所講的狀態機、C語言模塊化、多任務輪詢,不得不說真的是C語言工程化的真理,反覆參考和實踐了幾個月,漸漸地以爲郭天祥的《新概念51單片機C語言教程》中的代碼只是能運行,可是徹底沒有工程化的思想,更無法封裝、重用;後來我接觸的模塊多了,就發現C語言沒有類這個東西真的很侷限,就好比說不少模塊都是IIC通訊協議的,若是能夠用類的話,就應該IIC模塊爲基類或者接口,全部的IIC器件均可以繼承裏面的代碼而不是每一個都複製一份。對於C嵌入式開發來講,能夠簡單粗暴地認爲一個模塊就是一個類和實例,好比在一個鬧鐘的項目中,按鍵模塊、顯示模塊、定時器(外部或內部)、蜂鳴器,每一個模塊都封裝成自已的C文件和H文件。這個思想對於面向對象思想的正確造成很是重要。從面向過程到面向對象,實際上是一個量變到質量的過程,C語言的工程化也是這樣一個過程。也只有經歷過這樣一個過程的人,才能真切地體會面向對象的進步之處。數據庫

Persional Home Page OR PHP:Hypertext Preprocessor

與C語言類似,PHP語言長久以來也是一門相對面向過程的語言。大四那年,它簡潔的語法,直觀的命名,精簡的代碼,讓我能夠說見到它就像見到C語言的兄弟同樣親切。然後那些優秀的PHP框架讓PHP編程的工程化獲得了極有指導意義的規範。通過這半年多的工做,我如今已經是一個帶着兩個小弟的人了,也已經基本上掌握了PHP應該掌握的內容,好比一些基本的前端知識HTML/CSS/jQuery、常見的邏輯分析、OOP的結構規劃、數據庫規劃和優化、Linux平常使用。編程

而我如今有一個疑惑。PHP工程師這個職位的發展方向到底能到哪裏?由於PHP是一門專一於網絡應用後臺的程序,因此它的應用範圍和知識範圍都很窄。一、網絡程序的瓶頸一般在於數據庫和緩存、對後臺語言的運行效率要求不高,這樣的話就很難有動力和約束力去寫出高運行質量地代碼,這個跟我以前用C語言對內存和效率高度重視的信念有很大出入;二、網絡後臺一般都是一個請求執行一次,基本上不會有多任務多線程這種場景,而隨之的信號量、鎖等等知識都不會接觸到;三、PHP中的數據結構概念很是模糊,數組就能夠徹底隨意看成棧、隊列、鏈表、順序表、哈希表、HashMap等等來用,徹底沒有細分也更沒有考慮其中這幾種結構在不一樣場景中的效率,對於查找排序等SQL數據又基本上已經封裝好了PHP也無需多慮;四、如今招PHP的基本上都是當全棧在用,既要負責後臺邏輯又要作頁面前端有時還要用PS修圖切圖拼圖什麼的,這個固然在技術團隊多我的時能夠分工,但也有很多是單幹的,這樣就致使PHPer基本均可以作我的站長可是很難在PHP上有特別深刻的挖掘和學習;五、對於設計模式,只能說,如今互聯網這麼浮躁,PHP作出來的基本上都是快銷品,大多數項目連架構都很差,哪還管設計模式這種應對易變性上的技巧,能用上設計模式的也大概只有那批作框架的人了;六、如今三年以上經驗的PHP工程師廣泛要求是會前端、OOP框架的PHP、NoSQL的緩存、Linux Shell和Python,因此能夠看得出來PHP工程師的發展並不在於深而是在於廣。後端

因此我有考慮,一兩年後是否是應該轉學JAVA或者是另一些領域(好比嵌入式、App)的語言呢?設計模式

相關文章
相關標籤/搜索