主流編程語言的“介紹”與“選擇”

来源:https://www.cnblogs.com/visionalsun/p/17938334
-Advertisement-
Play Games

前言: 編程語言本身沒有優劣之分,不同的語言適合不同的場景,文中說的建議,多是站在小白要就業的立場給出的建議。 正文 我們看這張導圖,這張圖右側是前端類的語言,左側是服務端的語言: 我們先說右側。 第一個就是 JavaScript,簡稱 JS。 我強調下他和 Java 是沒有關係的,只是名字類似。 ...


前言:

編程語言本身沒有優劣之分,不同的語言適合不同的場景,文中說的建議,多是站在小白要就業的立場給出的建議。

正文

我們看這張導圖,這張圖右側是前端類的語言,左側是服務端的語言:

 

我們先說右側。

第一個就是 JavaScript,簡稱 JS。

我強調下他和 Java 是沒有關係的,只是名字類似。

他的用途是前端開發,他負責網頁上的交互事件和交互數據,比如你在界面上做了點擊滑動的操作,這都是 JS 負責的,你能在界面上看到文章、視頻等數據,比如在知乎你能看到推薦的文章(數據),這也是 JS 負責的(通過 Ajax 調用後端介面獲取)。

建議:你要做前端,那隻有這一門語言能選擇,屬於必選項,JS 占了前端很大的比重,說白了做前端開發就是在搞 JS。

第二個和第三個都是原生 App 的開發語言

我對這兩個的建議就是不建議作為入行語言,

因為 App 開發分原生和混合:

原生開發擁有更好的流暢度,更豐富的動畫,但是一套 App 要分兩個版本,要兩組不同的人來維護。

而混合開發就是前端來做的,不需要分兩組,這幾年混合開發也在進步,考慮到成本問題,中小公司或者說這個項目沒有很高的要求,那一般會採用混合開發的方案。

所以說如果你是已經在做安卓或者 iOS 的,可以根據情況來斟酌,但作為想入行的小白,不建議以這兩個語言入門。

我們再看這張圖左邊的語言。這邊都是後端類的語言。

 

Node.js

Node.js 用途一般是後端開發,他其實就是 JS,只是 Node.js 多了操作文件和資料庫的語法,所以可以做後端,但是真用它做後端的公司很少很少。不適合作為第一門語言學,一般是做前端之後,把它作為瞭解後端的跳板。

PHP

PHP,用途也是 web 後端開發,他還有個頭銜是——“世界上最好的語言”。

不過以現在來說,這個世界上最好的語言可以說大勢已去~

PHP 在互聯網初期因為其輕量和快捷,適合中小型應用,再加上易學,所以在以前的互聯網很有統治地位,後來前後端分離了,公司也慢慢成熟,面對性能等問題其他語言有更好的解決方案,所以公司大多捨棄了 PHP,到了現在就算是初創公司做web後端的項目適合用 PHP,但是出於跟風或者為了拉投資畫餅,以及招人成本,也會選擇其他語言。

我認識的在一線工作的 PHP 程式員基本都轉前端、轉 Go 或者 Java 了,二線做Php還有在堅持的,新手不建議再從 PHP 入手,並不是它不好,語言沒有好壞之分,但是我們要考慮到我們要就業的事實。

Python

應該很多人在網上看過 Python 的廣告吧,比如 9.9 學 Python,下班早等。

它的用途伺服器開發,數據相關工作(採集分析,機器學習)。

Python 語法簡單易學,插件豐富,作為工具確實會方便很多人的日常工作。

如果你是以學習為目的,可以把 Python 當成第一門語言,因為更容易上手,能做的事兒也多,會體會到編程的趣味性,從而更積極的學習編程。

如果你是小白,以找工作為目的,我不建議你把 Python 當成第一門語言。因為 Python的主力還是人工智慧、數據處理這一塊,而這一塊對數學是有要求的。

雖然 Python 還能做後端啊,比如知乎和豆瓣的後端就是 Python,但是以後端來說 Python 的就業崗位是遜於java的。

當然也有可能你搜 Python 你還會說,老師這 Python 崗位數量也不少啊。

那是因為做數據相關的、做測試時候也需要懂 Python,招聘網站會把這些統計到 Python 工程師之下,這樣來說就多了。

總得來說,你以學習為目的,以 Python 為第一語言不會讓你自閉,因為他語法簡單,插件豐富的特點,能讓你學的輕鬆,並且能快速實現一些東西,讓你感受到編程的魅力,但是如果以工作為目的選擇第一語言,我不會把這一票投給 Python。

Golang

新晉的寵兒——Golang,說他新晉也不准確,他出來也有10年多了,只是相對其它語言比較年輕。

他的領域也是後端開發,對 Go 的建議嘛 emmm...

我個人認為,小白以找工作為目的,不適合把 Go 當成第一門語言。

因為同樣是服務端開發,Go 的生態和市場占有率不如 Java,而且 Go 主要集中在一線大廠,並不是每個人都有資格進一線大廠,而且中小公司在技術選擇上肯定是願意用 Java 而不是 Go,

一來 Java 的生態足夠豐富,二來員工容易招。所以我不建議把 Go 當成入門第一語言。

當然如果你學歷好,對自己的成長有規劃,或者目前還是大學階段不著急找工作,也可以選擇 Go。

如果你只是一般學歷,就要面臨就業還沒有熟悉能用來工作的語言,我認為這種情況,隨大流更好。

Java

Java——後端第一語言,縱然現在存在內捲嚴重,但是小白以找後端工作為目的的情況下,我認為 Java 仍然是不二選擇,因為生態足夠豐富,招聘需求大!

這幾年裡有人說 Python 會超過它,有人說 Go 會取代它,可事實證明 Java 還是那個 Java,還是那個後端一哥。

所以如果你面臨就業沒有能夠開發的語言,且又想做後端,你就學 Java。

C 語言

C 是底層語言,能做操作系統、嵌入式、網路安全,但是不是學會了 C 你就會以上的事情,C 只是一個工具,你還要搭配相應的知識與工具。比如你想做嵌入式,你還需要瞭解數字電路、模擬電路、Linux 等

建議:C 語言能夠讓你更加深刻的認識記憶體和編譯原理,還有程式思想,數據結構,瞭解程式的每一個細節,夯實基本功,所以優秀的程式員都會學習 C 語言。但多數程式員的開發語言不是它,因為它偏向底層,而多數程式員做的事情偏應用層。

所以你不會 C 語言你也能做程式員,電腦也分層,就像你開車並不需要會修車一樣,只是 C 語言能讓你讓你瞭解的足夠深,能讓你有希望在技術道路上走的更長遠。

C++

C++ 也是偏底層的語言,用途:桌面軟體開發、游戲開發。

建議:其實建議和C語言差不多,C++ 崗位不多但是精,不少大廠需要性能的業務是由 C++ 來做,比如微軟、位元組的廣告系統都是 C++ 來做的。

如果你是本專業的大一,學 C/C++ 這類偏底層的語言,是能夠打好你的基本功的;

如果你面臨就業,還是選擇 Java、或者前端更合適。

C 和 C++ 也是院校電腦專業基本都教的,雖然工作可能用不上,但是學的是程式思想和數據結構,你可以理解打好基本功。

C#

最後一個 C#,這個我瞭解的不多,我去招聘軟體上看了看,它的崗位主要分佈在游戲開發、後臺、工具開發等方面。

建議:C# 在國內就業市場確實行情不佳,在 Unity 3D 上比較有發展前景,其他領域前景不明。

C# 還經常和 .Net 連在一起,不過 .Net 不是編程語言,嚴格來說 .Net 是一個平臺,支持很多語言,C# 是支持的最好的,所以在大多數語境下,.Net 工程師等於 C# 工程師。

 

總結:

如果你是零基礎要就業的情況下,前端方向肯定是 JS(唯一的選擇),後端方向最建議 Java。

如果你在學校以學習為目的,把學校教的基本功打好,然後從 Python、JS、Java 選擇一個來學習,在我看來從 Python 或者 Java 選擇了一個,然後 JS 基本也不會繞過去,因為你做了個工具,你肯定還想展示出來嘛,展示的事兒就是前端就需要用到JS了。

其實我也很建議大家大學時候就開始自學,時間多,做出小工具後的成就感能讓你繼續學下去,很有可能你大學幾年能把前端後端(其中一門語言)都學會,再搭配良好的計科基礎知識,很有希望進大廠,就算進不去大廠,那這個時候的你也不會為找不到工作發愁。

相反,如果你大學沒有自學,那你就算是電腦專業,你畢業也基本找不到工作,別提什麼實習,實習也是要的能幹活的,大多數電腦專業的同學自己到底幾斤幾兩能不能幹活心裡都應該有數吧。

到時候只能參加培訓,進入大廠的機會減少(因為失去了校招),而且還要交錢學習,不過你如果真的錯過了大學自學,到了畢業才開始學,那培訓反而成了性價比高的選擇了。

業務捋定方向,設計決定發展。 —— SA 系統架構設計師(System Architect)
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 一、組件是什麼 回顧以前對組件的定義: 組件就是把圖形、非圖形的各種邏輯均抽象為一個統一的概念(組件)來實現開發的模式,在Vue中每一個.vue文件都可以視為一個組件 組件的優勢 降低整個系統的耦合度,在保持介面不變的情況下,我們可以替換 ...
  • DataGear專業版 1.0.0 已發佈,歡迎試用! http://datagear.tech/pro/ DataGear 支持採用原生的HTML、JavaScript、CSS製作數據可視化看板,也支持導入由npm、vite等前端工具構建的前端程式包。得益於這一特性,可以很容易製作基於three. ...
  • 項目中用到了很多echart圖表,進行了簡單的組件封裝,主要包含以下功能: 創建圖表實例,渲染圖表 支持傳入自定義函數,可拿到圖表實例,實現個性化功能 支持配置更新後圖表自動刷新,可配置是清空後再刷新 loading狀態控制 resize時圖表更新 支持餅圖預設高亮功能 實現 資源引入 echart ...
  • react-native工程打包成apk 1. 生成簽名密鑰 使用jdk自帶的keytool生成密鑰 以管理員身份運行如下命令 keytool -genkey -v -keystore my-test3-key.keystore -alias my-key-test3 -keyalg RSA -ke ...
  • 使用XML文件配置SSM整合。 缺點:xml解析低,降低項目響應效率。 配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="ht ...
  • 訂單履約系統的概念模型 訂單:客戶提交購物請求後,生成的買賣合同,通常包含客戶信息、下單日期、所購買的商品或服務明細、價格、數量、收貨地址以及支付方式等詳細信息。 子訂單:為了更高效地進行履約,大訂單可能會被拆分成多個子訂單,子訂單會根據商品類型、配送地址、倉庫位置或供應商等因素進行拆分。 發貨單: ...
  • SSM整合就是將MVC三層架構和框架核心API組件交給SpringIoC容器管理! 一般需要配置兩個IoC容器進行三層架構組件管理。 容器名 盛放組件 web容器 web相關組件(controller,springmvc核心組件) root容器 業務和持久層相關組件(service,aop,tx,d ...
  • 代理模式(Proxy Design Pattern)在不改變原始類(或叫被代理類)代碼的情況下,通過引入代理類來給原始類附加功能。通過GPT來一探原理。 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...