先看再點贊,給自己一點思考的時間,微信搜尋【沉默王二】關注這個有顏值卻假裝靠才華苟且的程式設計師。
本文 GitHub github.com/itwanger 已收錄,裡面還有我精心為你準備的一線大廠面試題。
對於很多初學程式設計的人來說,尤其是馬上要入學的大一新生來說,選擇哪門子程式語言實在是個痛苦的事。選擇對了,畢業後順利找到工作,完美走向職場;選擇錯了,畢業後受傷的才華無處安放,大學算是虛度光陰了。
前一段時間哈,我有個遠房的親戚,她家的小孩非要讓我指導一下。然後就帶了一本書來見我,看了一下封面,我驚呆了。
《易語言從入門到精通》。這是哪門子程式語言,我第一次見到!不敢怠慢,也擔心親戚說我孤陋寡聞,偷偷地搜了一下。易語言的創始人是吳濤,國內為數不多的推崇中文程式語言的程式設計師大佬。
鄭重其事地說,我是個三觀很正的人,絕沒有半點虛情假意。但我實在不忍心看我這遠房表弟誤入歧途,畢竟易語言即便是入門了,甚至是精通了,將來也不一定能找到工作啊!
當做興趣愛好學程式設計固然好,值得稱讚。我這表弟雖然學習不咋滴,年紀輕輕,初中畢業,但據親戚反饋,酷愛程式設計,酷愛計算機(也不確定是不是酷愛打遊戲)。易語言這本書也是他自己在網上買的。
我有點擔心地問他:“能看懂嗎?”
表弟不假思索,信誓旦旦地回答:“能啊!”
我隨手翻了翻這邊書,發現書籤已經夾在第 202 頁,我天吶,真的有在看啊,看了將近一半了。
必須得負責任啊,我就對親戚和表弟說,“你看,要不我們換個程式語言吧,比如說 Java!”
親戚一臉驚愕,“你說哈?”
我只好無奈地將臉邁向我這表弟,只聽他娓娓道來:“J-A-V-A!”
“哎呀,不錯啊,真的私底下有研究!”我心中暗暗佩服起來了我這表弟。真看不出來,挺愛學的嘛。
“別看這本易語言了,當做興趣學程式設計沒問題,可我們學習是為了啥,就是為了以後能找份工作,雖然我說得比較俗氣。如果說確實對程式設計感興趣的話,買點 Java 方面的書讀一讀。”我語重心長地建議。
表弟深以為然地點點頭。
之所以說這件事,就是想告訴同學們,努力固然重要,但選擇必須要對,一旦選擇錯了,那很多努力都是白費。
那,這篇文章就是來給同學們提個醒,2020 年最牛逼的程式語言是什麼?看完後你就知道該如何地去選擇了。
先來個簡要的概括:
Java,伺服器端最好的程式語言
C++,最通用的程式語言
C,迄今為止,最值得信任的程式語言
Python,AI(人工智慧)、機器學習方向最佳的程式語言
JavaScript,客戶端最常用的指令碼語言
C#,微軟最強有力的物件導向程式語言
Swift,IOS 端最高效的程式語言
GO(Golang),可擴充套件的程式語言,谷歌出品
PHP,世界上最好的程式語言,不,最好用的 Web 程式語言
Ruby,資料科學方面最可靠的程式語言
為什麼我會選擇這 10 門程式語言?可不是我收了這些程式語言的錢,故意讓它們上榜的,我是有足夠多的理由的。
首先來看一下 TIOBE 排行榜,非常非常權威的榜單,下面這 14 個是活得比較久的,可以看得出,除了 SQL 換成了 GO,其他 9 門程式語言都在,並且長期霸榜。
活得比較久,意味著這門程式語言的生命力比較頑強,生態系統比較完備,它們屬於叢林的王者——物競天擇,適者生存嘛。它們活得久,並且活得好,那就意味著還能活得更好更久,是這個道理吧?強者更強!
同學們儘管放心,我是負責任的——主要是這些程式語言的作者或者團隊是負責任的,儘管開源 PHP 的官方團隊已經在 2019 年底徹底解散了,但 PHP 依然很堅挺,很牛逼。
下面讓我來詳細地說道說道這 10 門程式語言。
01、Java
Java 其實是 C++ 的一個替代品,Sun 公司原本想開發一種比 C++ 更簡單的物件導向程式語言,起初叫 Oak。結果沒想到,隨著時間的流逝,因為 Java 更容易學習,跨平臺,就導致 Java 的普及程度遠遠地超過了 C++。
說句不那麼優雅的話,就好像狗血劇裡小三上位的橋段一樣。
在 Java 虛擬機器的幫助下,Java 可以無障礙的在 Linux、Windows、Mac-OS 等多種作業系統下自由地穿梭,這使得它在企業級開發中非常受歡迎。
Java 可以做網站開發、做安卓開發、做桌面級應用開發(Eclipse、NetBeans 等等)、做遊戲開發(我的世界)。
來一發 Java 版的 Hello World 吧:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
02、C++
C++,從名字上就可以看得出來,它是 C 語言的親兒子,是對 C 語言的擴充套件,旨在為 C 語言創造出物件導向的功能。
隨著時間的發展,C++ 進一步發展為具有最直接的記憶體訪問和完整硬體控制的通用語言。正因為 C++ 提供了最廣泛的通用功能,就導致掌握起來有一定的難度。
C++ 可以在所有的平臺上執行,並且可以有效地利用任何型別的硬體,這使得它可以在資源受到限制的平臺上發揮最佳效能。
C++ 可以做遊戲開發(星際爭霸、魔獸爭霸),辦公軟體(微軟 Office)、作業系統(Windows)、關係型資料庫(MySQL)、3D 引擎(Microsoft DirectX)、嵌入式開發。
來一發 C++ 版的 Hello World 吧:
#include<iostream.h>
using namespace std;
void main() {
cout<<"Hello World";
}
03、C
C 語言誕生於 1960 年,作者團隊對它只有一個要求:必須得通用,並且能夠有效地利用系統資源。因為在那個年代,每一個位元組的記憶體都是昂貴的。
就像 C++ 那樣,C 也可以直接訪問記憶體並且控制硬體。C 和作業系統緊密相關,程式設計師必須親自處理記憶體的分配細節,因此很難掌握。儘管 C 語言誕生的很早,但它仍然是目前最常用的程式語言之一。
C 語言的設計影響了眾多後來的程式語言,比如說 C++、Ruby、PHP、Python、Java、C# 等等。
C 語言可以做嵌入式開發(微控制器),基於嵌入式作業系統的應用軟體、驅動程式,高效能的 Web 伺服器(Nginx),常見的快取資料庫(Redis)、智慧裝置或者物聯網裝置中的作業系統(路由器、攝像頭)等等。據說,反正能想到的,都可以用 C 做,就看會不會做。
來一發 C 版的 Hello World 吧:
#include<iostream.h>
void main()
{
printf("Hello World");
}
04、Python
Python 誕生於 1990 年,作者叫吉多·範羅蘇姆(Guido van Rossum,Python 之父)。可以說,所有的程式設計人員都喜歡 Python,因為它的學習成本很低,但應用的等級很高,比如說當下非常有深度的人工智慧、機器學習、資料分析。
Python 的語法簡潔而優雅,社群也非常活躍。但有一說一,Python 崗位對學歷的要求很高。
來一發 Python 版的 Hello World 吧:
print("Hello World")
05、JavaScript
JavaScript 是 Brendan Eich(只用了 10 天時間就設計出來了,牛逼)在第一次瀏覽器大戰時為 Netscape(網景公司)開發的指令碼語言。儘管一開始 JavaScript 的設計不夠優良(畢竟時間短啊),但隨著時間的推移,JavaScript 逐漸發展為一種高階的動態程式語言。
與其說我愛 Javascript,不如說我恨它。它是 C 語言和 Self 語言一夜的產物。十八世紀英國文學家約翰遜博士說得好:'它的優秀之處並非原創,它的原創之處並不優秀。'
以上 Brendan Eich 對 JavaScript 的評價,讀完是不是感覺好氣啊——竟然看不起自己的親生兒子,哈哈。
有大佬曾說,“JavaScript 是網際網路的膠帶。”這個稱讚非常高。HTML 負責結構, CSS 負責展示, 而 JavaScript 負責邏輯,網頁前端程式設計的三劍客形成了。
ExtJS、prototype、JQuery 這些基於 JavaScript 的框架更是把 JavaScript 推向了巔峰。隨著 Node.js 的出現,JavaScript 這種客戶端的指令碼語言竟然可以在伺服器端立足了。
現在非常火熱的前端框架,Vue.js 就是用 JavaScript 編寫的,可以這說,想從事前端開發工作的話,JavaScript 是必學的!
來一發 JavaScript 版的 Hello World 吧:
<script>
alert('Hello World');
</script>
06、C
一看名字,就知道 C# 和 C/C++ 有著親密的關係,微軟把 C# 設計成具有物件導向的,像 C 一樣的程式語言。
最初,C# 被看作是 Java 的複製品,它們之間有著驚人的相似之處,比如說繼承、介面,以及與 Java 幾乎同樣的語法,同樣需要先編譯後執行。隨著時間的發展,以及微軟為之付出的巨大努力, C# 沉澱了豐富的類庫和框架,開發人員可以在此基礎上快速地編寫各種基於 .NET 平臺的應用程式。
隨著 Unity3D 的出現,跨平臺的 C# 終於可以大展拳腳了,在開發遊戲方面的優勢巨大,比如說編譯速度快、類庫充足。除此之外,要知道 C# 背後的大山是誰,微軟啊!
來一發 C# 版的 Hello World 吧:
namespace HelloWorld
{
class Hello
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
}
}
}
07、Swift
關於 Swift,直接來看蘋果官方給出的介紹吧:
Swift 是一種強勁而直觀的程式語言,它由 Apple 創造,可用來為 iOS、Mac、Apple TV 和 Apple Watch 開發 app。它旨在為開發者提供充分的自由。Swift 易用並且開源,只要有想法,誰都可以創造非凡。
Swift 是一種快速而高效的語言,能夠提供實時反饋,而且可以被無縫整合到現有的 Objective-C 程式碼中,因此,開發者能夠編寫安全而可靠的程式碼,並在節省時間的同時,創造出非常豐富的 app 體驗。
來一發 Swift 版的 Hello World 吧:
print("Hello World")
08、Go
Go 的親爹是 Google,又是一家網際網路巨頭,可以想象它未來的潛力。
Go 語言的設計非常精緻,用起來也非常簡單,解決開發擴充套件方面的能力也比較出眾。關鍵是學習起來也非常容易上手,這些優點促使 Go 語言的增長非常快。
國外如 Google、AWS、Cloudflare、CoreOS 等,國內如七牛、阿里等都已經開始大規模使用 Golang 開發其雲端計算相關的產品。 可以說前途非常光明。
來一發 Go 版的 Hello World 吧:
package main
import "fmt"
func main()
{
fmt.Println("Hello World")
}
09、PHP
PHP 用來開發 Web 應用程式的歷史已經超過 35 年了,可以說是老資歷了。儘管最近流行度在下降,但瘦死的駱駝比馬大。
PHP 是最好的程式語言,這個梗是從哪裡來的呢?顯然不是吐槽大會!而是 PHP 的官方文件!
PHP is the best language for web programming, but what about other languages?
下圖是 PHP 是最好的程式語言的確鑿證據。
2010 年前後,PHP 在 Web 開發中一直處於王者的地位,尤其是 WordPress 等內容管理平臺的流行,再加上“扎男”的 Facebook(PHP 開發的)的烘托,更加鞏固了 PHP 在業界的地位。
我在 2013 年 底準備回洛陽的時候,還學習了三個月的 PHP。時隔多年,下面這本書還躺在我家的書架上積灰。
好了,來一發 PHP 版的 Hello World 吧:
<?php
echo "Hello World";
?>
10、Ruby
Ruby 最初是一種物件導向的指令碼程式語言,但是隨著時間的流逝,它逐漸發展成為一種解釋性的高階通用程式語言。它的學習曲線相當平坦,非常有助於提高開發人員的生產力。
Ruby 的作者松本行弘曾說過一段非常經典的話:
“ 人們特別是電腦工程師們,常常從機器著想。他們認為:‘這樣做,機器就能執行的更快;這樣做,機器執行效率更高;這樣做,機器就會怎樣怎樣怎樣。’實際上,我們需要從人的角度考慮問題,人們怎樣編寫程式或者怎樣使用機器上應用程式。我們是主人,他們是僕人。 ”
Ruby 正是基於這種理念產生的。網上有句話是這樣說的,學習 Ruby on Rails 能讓你看到 Web 框架頂端的景色。聽說,GitHub 官網是通過 Ruby on Rails 開發的(不準確,不知道有沒有同學可以確認下)。
JavaEye 的創始人範凱曾說:
在我們國內,Ruby 是個小眾的程式語言,但在矽谷,Ruby 很火,被譽為雲端計算時代的 Web 程式語言。
當然了,之所以把 Ruby 放在最後一位,同學們一定懂我的意思。
最後,希望同學們能夠從這 10 門程式語言中選擇一門自己喜歡的,深入研究,無論是哪門語言,我相信,只要你精通了,就一定能夠找到自己心儀的工作,如果你只是淺嘗輒止,那就不好意思呵呵了。
我是沉默王二,一枚有顏值卻假裝靠才華苟且的程式設計師。關注即可提升學習效率,別忘了三連啊,點贊、收藏、留言,我不挑,奧利給?。
注:如果文章有任何問題,歡迎毫不留情地指正。
如果你覺得文章對你有些幫助,歡迎微信搜尋「沉默王二」第一時間閱讀,回覆關鍵字「小白」可以免費獲取我肝了 4 萬+字的 《Java 小白從入門到放肆》2.0 版;本文 GitHub github.com/itwanger 已收錄,歡迎 star。