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

来源: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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...