什么是全棧工程師
全棧工程師簡單來說是全能型人才,能把服務器搭建完成、能夠把數據庫建好、能夠寫web程序等
一個人獨立完成
棧 是堆棧的棧
棧的特點:先進后出,后進先出
- 全棧工程師的起點是安裝和部署環境
- 安裝數據庫
- 有一定的業務分析能力
- 針對業務進行建模、建立數據庫表
- 寫web程序對數據庫進行操作
- 混合APP開發模式
webAPP是指單純把網頁封裝成一個APP,不具備調用原生APP的能力
要學習的知識有:OC、JAVA要會一點, HTML5、JS必須會, PHP/JAVA選擇一種
全棧工程師是通往架構師的起點
編程語言
-
最原始的編程語言:機器語言
機器語言是用二進制代碼表示的計算機能直接識別和執行的一種機器指令的集合
-
匯編語言
在20世紀50年代產生的一種用于電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言
-
C語言
20世紀60年代末期C語言和UNIX操作系統一起誕生,C語言和匯編語言比起來是高級語言
- 因為C語言具有附庸性,寫好的語言在別的機器都可以編譯,一處編寫,到處編譯;而匯編語言不可以
C語言有自己的函數,可以保存在函數庫里,以后用直接調用;和匯編比起來算是高級語言
C語言又叫做結構化的編程語言,因為C語言有了函數,函數可以調用函數,函數之間可以傳參數、有返回值,這樣代碼看起來更清晰、更有模塊化。
最重要的特點 “抽象”
-
c++語言
C++語言是一種優秀的面向對象程序設計語言,它在C語言的基礎上發展而來,但它比C語言更容易為人們學習和掌握。
C++以其獨特的語言機制在計算機科學的各個領域中得到了廣泛的應用。
面向對象的設計思想是在原來結構化程序設計方法基礎上的一個質的飛躍,C++完美地體現了面向對象的各種特性。- C語言只是把一個功能模塊封裝成一個函數,只執行一個特定的指令,但是他解決不了日常生活中的問題。c++可以解決一些
比如開個商店
-
JAVA
Java是一種可以撰寫跨平臺應用軟件的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用于PC、數據中心、游戲控制臺、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社群。
- C和C++有一個弊端:有指針,需要人為去管理內存的內存的分配和釋放,這樣很容易出bug,會造成嚴重的后果。
比如“銀行”、“證券”等金融產業
C和C++所說的跨平臺并不是真正的跨平臺,只是把源代碼在不同的機器上進行編譯。
而Java是可以在一臺機器上寫代碼,寫好之后打包,然后可以在任何一臺裝有Java的機器上進行使用,實現了真正意義上的跨平臺。Java就是一個精簡版的C++,不用再去管內存和指針了,程序員犯錯的幾率就降低了,這也是Java打敗C++的原因。
-
PHP
PHP,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。
PHP 是一種 HTML 內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在服務器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似于C語言,現在被很多的網站編程人員廣泛的運用。
PHP 獨特的語法混合了C、Java、Perl 以及 PHP 自創新的語法。它可以比 CGI 或者 Perl 更快速的執行動態網頁。
PHP最初是由勒多夫在1995年開始開發的;現在PHP的標準由the PHP Group維護。PHP以PHP License作為許可協議,不過因為這個協議限制了PHP名稱的使用,所以和開放源代碼許可協議GPL不兼容。-
Java被PHP打敗的原因
- 過度標準化
- 大量的預先設計
-
-
函數式編程 Ruby
Ruby,一種為簡單快捷的面向對象編程(面向對象程序設計)而創的腳本語言,在20世紀90年代由日本人松本行弘(Yukihiro Matsumoto)開發,遵守GPL協議和Ruby License。它的靈感與特性來自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 語言。由 Ruby 語言本身還發展出了JRuby(Java平臺)、IronRuby(.NET平臺)等其他平臺的 Ruby 語言替代品。Ruby的作者于1993年2月24日開始編寫Ruby,直至1995年12月才正式公開發布于fj(新聞組)。因為Perl發音與6月誕生石pearl(珍珠)相同,因此Ruby以7月誕生石ruby(紅寶石)命名。
-
特點:
- 使用更加方便
- 不要求提前設計好接口和類
- 減少勞動力、
- 流式數據處理,通過編程環境來識別這句話的用意
- 針對人的思維模式的編程語言
- 電腦像人一樣思考
強類型經常是靜態類型,動態類型不一定是弱類型。
區分語言類型是強類型還是弱類型看他的 數字123 和 字符串“123” 參與運算的時候是否會有區別,
如果得到的是一個數字,需要數字轉型,那他就是強類型;
動態類型和靜態類型區別:動態類型 是聲明變量的時候不指定具體的類型;
靜態類型 在聲明變量的時候必須聲明變量的類型。
鏈式語法 OC / jQuery $a().b().c().d();
傳統的編程語言都可以寫成鏈式語法,但是性能會特別差。
Ruby是函數式編程語言,其他的指令式編程語言或命令式編程語言
個人總結:上完這第一節課之后,發現自己知道了很多以前沒有聽過的東西,對于編程語言也有了更多的認知。發現自己要學的還有好多好多,還需要好好努力的學習才行。加油!