學知識前總想說點雞湯,想喝的朋友就看看,不想喝的就直接看乾貨吧,就當雞湯是給我本身喝的。javascript
前段時間在網上看了一句話感受挺觸動個人,我作個分享:php
若是你以爲你的祖國很差,你就去建設它;html
若是你以爲政府很差,你就去考公務員去作官;前端
若是你以爲人民沒素質,就從你開始作一個高素質的公民;java
若是你以爲同胞愚昧無知,就從你開始學習並改變身邊的人,python
她(他,它)有缺點,咱們一塊兒修正,而不是一昧的謾罵,抱怨,逃離。c++
橫眉冷對千夫指,俯首甘爲孺子牛。程序員
「你所站立的地方,正是你的中國;web
你怎麼樣,中國便怎麼樣;數據庫
你是什麼,中國即是什麼;
你若光明,中國便不黑暗」,
願中國青年都擺脫冷氣,只是向上走,沒必要聽自暴自棄者流的話。
能作事的作事,能發聲的發聲。
有一分熱,發一分光,就像螢火通常,
也能夠在黑暗裏發一點光,沒必要等候炬火。
此後如竟沒有炬火,咱們即是惟一的光。
雖然抄了一遍,依然振奮不已,我雖是小小大學生,小小程序員,可我願意傳遞充滿正能量的光,從我作起!
話接上文,上文《走進編程的殿堂》中,我用自導自演的大白話講了編程語言的演化過程,我想看完上篇,你們對編程語言有了必定的認識,那接下來,我來詳細介紹一下有哪些高級語言以及他們的適用環境。
在瞭解諸多編程語言以前,我強烈建議朋友們先看一下我以前給大一學弟學妹們寫過的一篇博客《在你迷茫時不如學好一門語言》,學習之道就在此篇博客之中。固然,看完以後還沒領悟的朋友也不用急,此次我寫的是基礎教程,是專門針對未入門的新手用來入門學習的,我會一步一步引導你掌握學習編程語言的精髓的。
若是此時看此篇博客的你真的是一個完徹底全的新手,我在後面介紹的這些你能夠換種思惟去了解,不至於讓你越看越迷茫。以前的博客《走進編程的殿堂》http://www.javashuo.com/article/p-vkcpgmup-cc.html中我已經說過,編程語言它首先是語言,你能聯想到咱們常說的漢語、英語、法語等編程語言。區別只在於面對的交流對象不一樣,那如今說到高級語言,也有不少種,上邊排行榜中所示的都是高級語言,你能夠這樣理解,就說咱們中國吧,咱們的通用語言是漢語,只要是中國人,都能明白。那漢語就比如是機器語言,可是因爲地域的不一樣,不一樣的地域有不一樣的方言,好比說普通話、青海方言、河南方言等等吧,有不少種不一樣的方言,這就比如是那些高級語言,你須要作的,就是首先了解有哪些「方言」,這些方言適用於哪一種「環境」,明白了以後針對需求,去學習相應的「方言」便可,可是無論學哪一種「方言」,最終目的只有一個,那就是跟你要交流的對象進行交流。因此你要明白,沒有最好的語言,只有在不一樣的環境場景下最適合的語言,就比如是一個修車廠,修車的工具備不少,你要作的就是先要知道修什麼部位用什麼工具,而後若是你不會用,就看對應工具的使用說明書,這就是學習的過程,等你會用了,問題天然迎刃而解了,編程語言亦是同理,要知道學會駕馭工具,不要作工具的「奴隸」。好,說這麼多,就是給下面介紹編程「工具」作鋪墊的,我要開始介紹高級語言了:
C 語言是一種通用的高級語言,最初是由丹尼斯·裏奇在貝爾實驗室爲開發 UNIX 操做系統而設計的。UNIX 操做系統,C編譯器,和幾乎全部的 UNIX 應用程序都是用 C 語言編寫的。因爲各類緣由,C 語言如今已經成爲一種普遍使用的專業語言。
C語言是一門面向過程的計算機編程語言,與C++、Java等面向對象編程語言有所不一樣。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少許的機器碼以及不須要任何運行環境支持便能運行的編程語言。C語言描述問題比彙編語言迅速,工做量小、可讀性好,易於調試、修改和移植,而代碼質量與彙編語言至關。C語言通常只比彙編語言代碼生成的目標程序效率低10%~20%。所以,C語言能夠編寫系統軟件。
特色:
易於學習,進行結構化編程
c語言所產生的代碼運行速度與彙編語言編寫的代碼運行速度幾乎同樣
預編譯處理使C語言更有彈性
優勢:
代碼量小
生成目標代碼質量高,運行速度快
功能強大
跨平臺,可移植性強
使用指針,靈活性強
容許直接訪問物理地址,對硬件進行操做
缺點:
數據安全性有很大問題
語法限制不嚴格,映像程序安全性
指針太過靈活,初學難度有點大
C++編程語言,做爲C語言的加強版本,是由丹麥計算機科學家本賈尼·斯特勞斯特盧普(Bjarne Stroustrup)設計和開發的。它歷經四年的開發時間,從1979年開始,直到1983年發佈。
C++既能夠進行C語言的過程化程序設計,又能夠進行以抽象數據類型爲特色的基於對象的程序設計,還能夠進行以繼承和多態爲特色的面向對象的程序設計。
特色:
支持數據封裝和數據隱藏
支持集成和重用
面向對象
支持多態性
C++ 是一種靜態類型的、編譯式的、通用的、大小寫敏感的、不規則的編程語言,支持過程化編程、面向對象編程和泛型編程。
優勢:
類型檢查比c語言更加嚴格
增長了面向對象機制
增長了泛型編程機制
增長了函數重載和運算符重載
異常處理
提供了標準庫STL
缺點:
沒有垃圾回收機制,可能引發內存泄漏
C++主要用於開發:
遊戲
驅動程序
Client-Server應用程序
系統軟件
應用軟件
嵌入式固件
Java是由加拿大的一位計算機科學家詹姆斯·高斯林(James Gosling)設計和開發的,當時他正在爲Sun微系統公司工做。
Java這種語言可讓編碼人員「編寫一次,並在任何地方運行」,也就是咱們所熟知的「Write once, Run anywhere」(簡稱WORA)。這代表它編譯的代碼幾乎能夠在任何平臺上運行,而無需從新編譯。正是由於這一點,Java緊緊佔據了幾乎全部編程語言排名列表的第一位。
Java 是最典型的面嚮對象語言。Java 不只吸取了 C++ 語言的各類優勢,還摒棄了 C++ 裏難以理解的多繼承、指針等坑爹概念。今明兩年畢業的大學生大可能是 Java 的同齡人(1995 年)。
Java 的優點:
Java 平臺不斷迎來新功能,好比移動互聯網時代的 Android,大數據時代的 Hadoop,人工智能時代的 TensorFlow;Java 是世界上使用範圍最廣的語言——Java 環境安裝時那句 「3 Billion Devices Run Java」 誰沒見過?
Java 的不足:
國內 Java 及其衍生技術的就業環境被培訓班破壞得太厲害,培訓班 HR 曾問我:「Android 不吃香了,你能推薦幾個Hadoop 講師嗎?」Java 佔用大量內存,而且啓動時間較長——搞 Android 的都被 Windows 系統中的 Android AVD 坑過。
特性:
純面向對象
支持分佈式
跨平臺,移植性強
是一門編譯性語言
支持多線程,高性能
優勢:
面向對象
穩健、安全、可移植、高性能
跨平臺
編譯型靜態語言
缺點:
編譯速度慢
Java主要用於應用程序開發,例如:
桌面應用程序
網站應用程序
安卓應用程序
大數據操做
雲計算
機器人科學和技術
Python編程語言發佈於十幾年前,此後它有了長足的發展。它是由荷蘭程序員吉多·範·羅蘇姆(Guido van Rossum)設計和開發的。
它被認爲是一種高級語言,用於「粘合」其餘語言以鏈接到大型現有軟件組件。
另外,它是一種面向對象的編程語言(OOP)。衆所周知,它爲開發人員提供了大量有用的庫。
Python 的優點:
Python 學習簡單,被譽爲 「最易學習的語言」,它的語法很是清晰易讀,能夠減小學習時間和維護成本。
Python 的不足:
Python 存在一些只在特定狀況下才會出現(沒法重現)的 bug
職業路線:
(1)用 Django 框架進行 Web 開發:和 Java 沒什麼兩樣。
(2)用 PIL 框架進行圖形處理
(3)物聯網:Raspberry Pi 等物聯網平臺都選擇了 Python 做爲開發語言
(4)Python 有一個無所不能的 Hack 庫,若是認爲 「打工時不可能打工的」 就去當一個自由的黑客吧
特性:
解釋性語言
擁有豐富的庫
跨平臺
可移植、可擴展
支持GUI編程
可嵌入
優勢:
簡單,易學
免費,開源
可移植性強
屬於解釋性的一門動態語言
面向對象
擁有豐富的庫
強制性縮進代碼使得代碼規範
缺點:
運行速度慢
國內市場小
中文資料匱乏
Python還有不少其它應用場景,好比在應用程序開發,多重範式編程,強大的標準庫,數據庫訪問以許多其它場景。
若是沒有JavaScript這個老牌的編程語言,網站行業將走向何方?
Javascript也是一種面向對象的編程語言,由美國技術專家布蘭登·艾奇(Brendan Eich)建立。有趣的是,它借鑑了Java語言的一些思想。當時Java語言很是流行,因此它「利用」Java的名聲來得到了人們的注意,並所以取了個JavaScript的名稱。
「Java之於JavaScript就比如Car(汽車)之於Carpet(地毯 )」。
JavaScript不能用來建立獨立的應用程序,它只能在瀏覽器上運行,其主要目的是使瀏覽器具備交互能力。它也能夠用來更改和更新HTML和CSS。
JavaScript之因此如此流行的主要緣由之一是它的速度。它在瀏覽器中當即運行,不須要在客戶端編譯。
JavaScript 是一種動態類型、弱類型、基於原型的直譯式腳本語言,也是使用頻率最高的給 HTML 網頁增長動態功能的語言。外行最常鬧的笑話是覺得它是 Java 語言的分支。
JavaScript 的優點:
做爲腳本語言,JavaScript 可當即運行而無需等待服務器響應,速度很是出色;JavaScript 是動態類型語言,學習難度低。而且掌握了 JavaScript 語言就等於成爲能同時開發網頁(HTML5)、後臺(Node.js)、移動端(React Native、Weex)的全棧工程師。
JavaScript 的不足:
代碼在用戶電腦上運行,可能會被別有用心的壞人惡意利用;JavaScript 過於依賴瀏覽器,在不一樣的瀏覽器上有不一樣的表現。
職業路線:
(1)首選 HTML5 的初心:網站和手機站的前端頁面開發。
(2)用 Node.js 或 Bmob 雲端代碼進行後臺開發
(3)基於 React Native、PhoneGap、Weex、HBuilder、AppCan 進行移動開發,只需寫一遍代碼,就有 Android 和 iOS 兩個軟件
(4)微信開發:包括微信公衆號、微信小遊戲、微信小程序。不要把這個方向當成中國特點方向,國外的 Android 機也是須要 PWA開發的。
(5)若是以上四樣全能作到,那麼你就是全棧工程師。
優勢:
減小網絡數據傳輸
javascript能夠方便的操縱HTML對象
支持分佈式運算
缺點:
各瀏覽器對javascript支持程度不一樣
「web安全性」對javascript一些功能犧牲
有不少很棒的JavaScript框架能夠供人們使用,例如:
Angular
React
VueJs
Ember
Node.js
Aurelia
Backbone.js
C#編程語言是一種微軟公司開發的程序設計語言,它是一種介於C++語言和C語言之間的混合體。
C#容許開發人員和編碼人員構建在.NET框架上運行的很是安全的應用程序,如XML web服務,client-server應用程序,Windows客戶端應用程序等等。
通常來講,C#易於學習,但也很複雜。這合乎常理嗎?C#有不少特性,可讓學習它變得容易。
C#是一種高級語言,閱讀代碼相對來講很容易。大部分複雜的任務已經被剝離,因此程序員沒必要擔憂它們。好比說,其中一個複雜的任務是內存管理。若是你使用C#,你就少了一件讓你擔憂的事,由於.NET的垃圾回收機制已經幫你處理了。
C#的優點:
C#的最大優點在於全面集成.Net 庫,提供出色的功能與完美的庫訪問能力;VR 時代的到來讓 Unity-3d 開發者有很好的發展前景。
C#的不足:
因爲集成.Net 庫形成跨平臺能力太差;目前.Net 在國內就業環境不太好,收入較低。
職業路線:
(1)招聘網站上常見的 「招聘 C#開發」 和 「招聘.Net 開發」 指的都是狹義的 C#開發——基於.Net 框架的後臺開發。
(2)Unity-3d 也用 C#做爲開發語言,除了能開發 3D 遊戲,在 VR 時代也會大放光芒。
PHP的全稱是「PHP: Hypertext Preprocessor(超文本預處理器)」的縮寫,它是由丹麥程序員拉斯馬斯·勒德爾夫(Rasmus Lerdorf)建立的。
它是一種用於Web開發的開源多用途腳本語言。它能夠從服務器端執行並嵌入到HTML代碼中。
PHP語言一個很是普通的用途是在網頁上從數據庫中提取數據。
PHP 的優點:
PHP 學習簡單,易於快速上手;歷久彌新的 PHP 擁有龐大而活躍的官方社區,開發者面臨的大部分難題都有現成的解決方案,不少十幾年前的解決方案在當代也有指導意義。
PHP 的不足:
PHP 的運行速度比較慢;PHP 的錯誤處理機制比較糟糕,覺得 PHP 須要支持大量舊版本的功能。
職業路線:
(1)適合進行 Web 開發,配合 Node.js 效果更佳。
特性:
獨特的語法:混合了c、java\perl以及php自創的新的語法
與其餘編程語言相比,更快速的執行動態網頁
php支持幾乎全部流行的數據庫以及操做系統
能夠用c、c++進行程序擴展
優勢:
php是一個免費開源語言
開發快,運行快,語法簡單,方便學習
跨平臺,效率高
具備不少成熟框架
有成熟社區支持php的開發
缺點:
php是個單進程的程序,不支持多線程
只支持作web開發,不方便作.exe問件、桌面應用程序、手機程序
不適合作爬蟲、自動運行腳本
後期維護比較困難,後期提速空間侷限性大
使用PHP腳本的主要地方有三個:
服務器端腳本:這是PHP語言最流行和最傳統的領域。你須要三個東西來完成這項工做:PHP解析器(CGI或服務器模塊,你本身選擇),Web服務器和瀏覽器。你須要運行安裝了PHP模塊的Web服務器,而後你可使用瀏覽器訪問PHP腳本的輸出結果。
命令行腳本:你能夠用PHP編寫一個腳本並直接運行它,無需運行任何服務器或瀏覽器。你所須要的只是PHP解析器。這種用法很是適合使用cronjob或task scheduler調度的須要反覆執行的腳本。
編寫桌面應用程:PHP在建立具備圖形用戶界面的桌面應用程序方面並不廣爲人知。可是,若是你有適當的知識,而且但願使用一些高級的PHP特性,那麼你可使用PHP-GTK來編寫這種類型的程序。
SQL 是一種專精於數據庫的特殊目的語言。用於存取數據以及查詢、更新和管理關係數據庫系統。
SQL 的優點:
存儲過程能夠重複使用, 可減小數據庫開發人員的工做量,開發速度快;SQL 可設定只有某此用戶才具備對指定存儲過程的使用權,安全性好。
SQL 的不足:
和 Java 語言的大多數設計模式同樣,SQL 開發速度是靠犧牲運行速度換來的;不一樣數據庫系統之間的 SQL 不能徹底相互通用,可移植性差。
職業路線:
(1)掌握了 SQL 能夠從事 DBA(Database Administrator,即數據庫管理員),主要負責業務數據庫從設計、測試到部署交付的全生命週期管理。
JSP全稱Java Server Pages,是一種動態網頁開發技術。它使用JSP標籤在HTML網頁中插入Java代碼。
特色:
JSP能夠直接在HTML網頁中動態嵌入元素
JSP 基於Java Servlet API,所以,JSP擁有各類強大的企業級Java API,包括JDBC,JNDI,EJB,JAXP等等。
JSP頁面能夠與處理業務邏輯的 Servlet 一塊兒使用,這種模式被Java servlet 模板引擎所支持。
優勢:
一次編寫,處處運行。除了系統以外,代碼不用作任何更改。
跨平臺,支持多種網頁格式,jsp標籤可擴展性
強大的可伸縮性。從只有一個小的Jar文件就能夠運行Servlet/JSP,到由多臺服務器進行集羣和負載均衡,到多臺Application進行事務處理,消息處理,一臺服務器到無數臺服務器,Java顯示了一個巨大的生命力。
具備很是多的免費優秀的開發工具,而且能夠順利的運行於多平臺
支持服務器端組件
缺點:
增長產品的複雜性
java的高效率運行須要佔用大量的內存和硬盤空間
調試困難
Go語言
go語言被設計成一門應用於搭載web服務器,存儲集羣或巨型中央服務器的系統編程語言,在高性能分佈式系統領域擁有着極其高效的開發效率
特色:
簡潔,快速,安全
自動垃圾回收
函數多返回值
併發編程
反射
語言交互
跨平臺
開源
編譯型靜態語言
優勢:
性能優越,go比python快30倍,比java快將近一倍
編譯時間很是快
go編寫簡單,易於學習
對 gPRC 和 protocol Buffers 具備一流支持
GOFMT,強制代碼格式
天生支持併發編程
強大的標準庫
接近c的運行效率,接近php的開發效率
缺點:
沒有主要框架
錯誤處理機制太原始
垃圾回收器不完善
語法格式要求太過嚴格,禁止有未使用的變量和多餘的import
對象沒有構造函數和析構函數
技術比較年輕,有待後續發展
PERL編程語言一樣位列2019年最受歡迎的7種編程語言列表!
PERL的第一次出現要追溯到1987年,它是由美國程序員拉里·沃爾(Larry Wall)設計和開發的。
PERL這個名字不是一個正式的縮寫,它實際指的是Practical Extraction and Report Language,一種用於文字提取和分析報告的語言。由於名字太長,因此不多有人這樣稱呼它,一般人們以PERL代替。
通常來講,PERL是一種很是穩定的跨平臺編程語言。它適用於公共部門和私營部門的關鍵任務項目。
PERL有不少很棒的功能/特性供人們使用,例如:
支持第三方數據庫(Oracle、Sybase、Postgres等)的數據庫集成接口DBI
對HTML、XML和其餘標記語言的良好支持
支持Unicode
Y2K兼容
支持面向過程編程和麪向對象編程
經過SWIG提供外部C/C++庫的接口
根據維基百科的說法,PERL是「由兩種高級通用動態編程語言Perl 5和Perl 6組成的家族」。
*****************************************************************************************************
個人博客園地址:https://www.cnblogs.com/zyx110/