Java匹馬行天下之學編程的起點——高級語言大鍋燴
- 2019 年 10 月 3 日
- 筆記
前言:
學知識前總想說點雞湯,想喝的朋友就看看,不想喝的就直接看乾貨吧,就當雞湯是給我自己喝的。
前段時間在網上看了一句話感覺挺觸動我的,我做個分享:
如果你覺得你的祖國不好,你就去建設它;
如果你覺得政府不好,你就去考公務員去做官;
如果你覺得人民沒素質,就從你開始做一個高素質的公民;
如果你覺得同胞愚昧無知,就從你開始學習並改變身邊的人,
她(他,它)有缺點,我們一起修正,而不是一昧的謾罵,抱怨,逃離。
橫眉冷對千夫指,俯首甘為孺子牛。
“你所站立的地方,正是你的中國;
你怎麼樣,中國便怎麼樣;
你是什麼,中國便是什麼;
你若光明,中國便不黑暗”,
願中國青年都擺脫冷氣,只是向上走,不必聽自暴自棄者流的話。
能做事的做事,能發聲的發聲。
有一分熱,發一分光,就像螢火一般,
也可以在黑暗裡發一點光,不必等候炬火。
此後如竟沒有炬火,我們便是唯一的光。
雖然抄了一遍,依然振奮不已,我雖是小小大學生,小小程序員,可我願意傳遞充滿正能量的光,從我做起!
高級語言大鍋燴
話接上文,上文《走進編程的殿堂》中,我用自導自演的大白話講了編程語言的演化過程,我想看完上篇,大家對編程語言有了一定的認識,那接下來,我來詳細介紹一下有哪些高級語言以及他們的適用環境。
2019年9月編程語言排行榜TOP20:
2019年9月編程語言排行榜top10的柱狀圖
編程語言知多少
在了解諸多編程語言之前,我強烈建議朋友們先看一下我之前給大一學弟學妹們寫過的一篇博客《在你迷茫時不如學好一門語言》,學習之道就在此篇博客之中。當然,看完之後還沒領悟的朋友也不用急,這次我寫的是基礎教程,是專門針對未入門的新手用來入門學習的,我會一步一步引導你掌握學習編程語言的精髓的。
如果此時看此篇博客的你真的是一個完完全全的新手,我在後面介紹的這些你可以換種思維去了解,不至於讓你越看越迷茫。之前的博客《走進編程的殿堂》https://www.cnblogs.com/zyx110/p/11463114.html中我已經說過,編程語言它首先是語言,你能聯想到我們常說的漢語、英語、法語等編程語言。區別只在於面對的交流對象不同,那現在說到高級語言,也有很多種,上邊排行榜中所示的都是高級語言,你可以這樣理解,就說我們中國吧,我們的通用語言是漢語,只要是中國人,都能明白。那漢語就好比是機器語言,但是由於地域的不同,不同的地域有不同的方言,比如說普通話、青海方言、河南方言等等吧,有很多種不同的方言,這就好比是那些高級語言,你需要做的,就是首先了解有哪些“方言”,這些方言適用於哪種“環境”,明白了之後針對需求,去學習相應的“方言”即可,但是不管學哪種“方言”,最終目的只有一個,那就是跟你要交流的對象進行交流。所以你要明白,沒有最好的語言,只有在不同的環境場景下最適合的語言,就好比是一個修車廠,修車的工具有很多,你要做的就是先要知道修什麼部位用什麼工具,然後如果你不會用,就看對應工具的使用說明書,這就是學習的過程,等你會用了,問題自然迎刃而解了,編程語言亦是同理,要知道學會駕馭工具,不要做工具的“奴隸”。好,說這麼多,就是給下面介紹編程“工具”做鋪墊的,我要開始介紹高級語言了:
高級語言
C語言
C 語言是一種通用的高級語言,最初是由丹尼斯·里奇在貝爾實驗室為開發 UNIX 操作系統而設計的。UNIX 操作系統,C編譯器,和幾乎所有的 UNIX 應用程序都是用 C 語言編寫的。由於各種原因,C 語言現在已經成為一種廣泛使用的專業語言。
C語言是一門面向過程的計算機編程語言,與C++、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。C語言描述問題比彙編語言迅速,工作量小、可讀性好,易於調試、修改和移植,而代碼質量與彙編語言相當。C語言一般只比彙編語言代碼生成的目標程序效率低10%~20%。因此,C語言可以編寫系統軟件。
特點:
易於學習,進行結構化編程
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
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這個老牌的編程語言,網站行業將走向何方?
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語言之間的混合體。
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的全稱是“PHP: Hypertext Preprocessor(超文本預處理器)”的縮寫,它是由丹麥程序員拉斯馬斯·勒德爾夫(Rasmus Lerdorf)創建的。
它是一種用於Web開發的開源多用途腳本語言。它可以從服務器端執行並嵌入到HTML代碼中。
PHP語言一個非常普通的用途是在網頁上從數據庫中提取數據。
PHP 的優勢:
PHP 學習簡單,易於快速上手;歷久彌新的 PHP 擁有龐大而活躍的官方社區,開發者面臨的大部分難題都有現成的解決方案,很多十幾年前的解決方案在當代也有指導意義。
PHP 的不足:
PHP 的運行速度比較慢;PHP 的錯誤處理機制比較糟糕,以為 PHP 需要支持大量舊版本的功能。
職業路線:
(1)適合進行 Web 開發,配合 Node.js 效果更佳。
特性:
獨特的語法:混合了c、javaperl以及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 可設定只有某此用戶才具有對指定存儲過程的使用權,安全性好。
SQL 的不足:
和 Java 語言的大多數設計模式一樣,SQL 開發速度是靠犧牲運行速度換來的;不同數據庫系統之間的 SQL 不能完全相互通用,可移植性差。
職業路線:
(1)掌握了 SQL 可以從事 DBA(Database Administrator,即數據庫管理員),主要負責業務數據庫從設計、測試到部署交付的全生命周期管理。
JSP
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
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/
【原創聲明】此篇為作者原創,未經本人同意不得轉載,經本人同意轉載請說明出處。
我不能保證我所說的都是對的,但我能保證每一篇都是用心去寫的,我始終認同“分享的越多,你的價值增值越大”,歡迎大家關注我的技術分享“Java匹馬行天下”和學習心得分享“匹馬行天下”,在分享中進步,越努力越幸運,人生贏在轉折處,改變從現在開始!
支持我的朋友們記得點波推薦哦,您的肯定就是我前進的動力。