前言
之前有一些在校的同學(xué)咨詢:入行程序員需要哪些基礎(chǔ)?應(yīng)該學(xué)哪些語言?哪些崗位更吃香等等諸如此類的的問題。
本篇我們不回答這些問題,僅僅闡述現(xiàn)代開發(fā)涉及到的一些術(shù)語以及運(yùn)用場(chǎng)景,通過本篇文章,你將了解到:
- 什么是軟件?
- 什么是跨端?
- 桌面端沒落了嗎?
- 移動(dòng)端主要開發(fā)啥?
- 前端無處不在?
- 嵌入式用在哪些場(chǎng)景?
- 為什么需要后端?
- 總結(jié)
1. 什么是軟件?
軟件示例
如上倆圖,一個(gè)是iphone的桌面,另一個(gè)是windows的桌面,他們上面有很多圖標(biāo)(常見的QQ、微信等),我們點(diǎn)擊去就是打開了一個(gè)軟件。
通俗的叫法是軟件,潮流點(diǎn)的稱呼是應(yīng)用,專業(yè)點(diǎn)的名稱是可執(zhí)行程序
軟件的產(chǎn)生
那么我們平時(shí)使用的各類軟件是怎么開發(fā)出來的呢?其實(shí)他們都有一個(gè)標(biāo)準(zhǔn)的生產(chǎn)過程:
- 軟件里的各種功能是通過代碼實(shí)現(xiàn)的,而代碼是用語言來描述的。
- IDE(Integrated Development Environment),中文是集成開發(fā)環(huán)境,要寫代碼得有一個(gè)地方寫吧?以前是在編輯器里寫好代碼,然后再編譯構(gòu)建出可執(zhí)行程序,現(xiàn)在IDE強(qiáng)大了里邊就囊括了編輯和編譯構(gòu)建的功能。通常都是在桌面端安裝 IDE軟件,然后進(jìn)行邏輯編程,最后將生成的軟件安裝到不同的端上。
在IDE里編寫好代碼并構(gòu)建完成之后就可以在系統(tǒng)上運(yùn)行了,比如上圖的iPhone手機(jī)和Windows電腦。
2. 什么是跨端?
主流操作系統(tǒng)
在說跨端之前先說說當(dāng)今最常使用的操作系統(tǒng)有哪些。
桌面端就是我們平時(shí)使用的PC(臺(tái)式機(jī)、筆記本電腦):
Windows:由微軟公司開發(fā),是全球使用最廣泛的操作系統(tǒng)之一,適用于個(gè)人電腦和企業(yè)環(huán)境,擁有大量的軟件支持。
macOS:蘋果公司為其Mac系列計(jì)算機(jī)設(shè)計(jì)的操作系統(tǒng),基于Unix,以用戶友好的界面和與蘋果硬件的緊密集成而著稱。
Linux:一個(gè)開源且免費(fèi)的操作系統(tǒng),具有高度的靈活性和安全性,廣泛用于服務(wù)器和個(gè)人電腦。它有多個(gè)發(fā)行版(distros),如Ubuntu、Fedora等,適用于不同的用戶需求。
移動(dòng)端通常指的是我們平時(shí)使用的手機(jī):
Android(安卓)
由谷歌公司開發(fā),是基于Linux內(nèi)核的開放源代碼操作系統(tǒng),主要用于移動(dòng)設(shè)備如智能手機(jī)和平板電腦。它支持大量的應(yīng)用程序和服務(wù),并且擁有全球最大的應(yīng)用商店——Google Play Store。由于其開放性和靈活性,Android被眾多手機(jī)制造商采用,成為全球使用最廣泛的移動(dòng)操作系統(tǒng)。
iOS
蘋果公司的iOS是一個(gè)專為蘋果硬件設(shè)計(jì)的操作系統(tǒng),適用于iPhone、iPad和iPod touch等設(shè)備。iOS以其簡(jiǎn)潔易用的界面和高度優(yōu)化的安全性能而聞名。App Store為iOS用戶提供了一個(gè)獲取高質(zhì)量應(yīng)用程序的平臺(tái)。iOS與蘋果生態(tài)系統(tǒng)中的其他產(chǎn)品和服務(wù)緊密集成,如Mac、Apple Watch、AirPods等。
鴻蒙OS(HarmonyOS)
華為自主研發(fā)的鴻蒙操作系統(tǒng)是一款面向未來、面向全場(chǎng)景的分布式操作系統(tǒng),旨在提供跨多種設(shè)備類型的無縫連接體驗(yàn)。它不僅支持傳統(tǒng)的手機(jī)和平板電腦,還支持智能穿戴設(shè)備、智能家居、車輛等物聯(lián)網(wǎng)設(shè)備。隨著華為在全球市場(chǎng)的推廣,鴻蒙OS正逐漸獲得更多的關(guān)注和支持,成為中國(guó)乃至全球第三大移動(dòng)操作系統(tǒng)。
服務(wù)端指的是后端服務(wù)器所在的端:
Linux
Ubuntu Server:基于Debian的Linux發(fā)行版,因其易用性和豐富的軟件包管理工具而受到歡迎。適用于多種服務(wù)器環(huán)境,從Web服務(wù)器到數(shù)據(jù)庫(kù)服務(wù)器。
CentOS:現(xiàn)已演進(jìn)為CentOS Stream,是一個(gè)與Red Hat Enterprise Linux (RHEL) 開發(fā)過程緊密關(guān)聯(lián)的滾動(dòng)發(fā)布版本。它提供了穩(wěn)定性和安全性,是企業(yè)級(jí)應(yīng)用的首選之一。
Debian:以其穩(wěn)定性、安全性和強(qiáng)大的軟件包管理系統(tǒng)著稱,適合各種服務(wù)器場(chǎng)景。
Red Hat Enterprise Linux (RHEL):由Red Hat公司提供的商業(yè)支持的Linux發(fā)行版,專注于為企業(yè)提供高級(jí)支持和服務(wù),在企業(yè)級(jí)應(yīng)用和云計(jì)算領(lǐng)域廣泛應(yīng)用。
SUSE Linux Enterprise Server (SLES):以穩(wěn)定性和安全性著稱,適用于高性能計(jì)算、虛擬化和云計(jì)算環(huán)境。
Windows Server
由微軟開發(fā)的企業(yè)級(jí)操作系統(tǒng),最新版本包括Windows Server 2022。它提供了廣泛的內(nèi)置服務(wù)和應(yīng)用程序支持,特別是對(duì)于需要運(yùn)行.NET框架的應(yīng)用程序或使用Active Directory進(jìn)行用戶管理和認(rèn)證的情況。Windows Server也集成了Azure云服務(wù),便于混合云部署。
FreeBSD
雖然不是Linux發(fā)行版,但FreeBSD是另一個(gè)廣泛使用的類Unix操作系統(tǒng),特別在對(duì)性能和穩(wěn)定性有較高要求的環(huán)境中。它具有穩(wěn)定的內(nèi)核和良好的網(wǎng)絡(luò)功能,被一些互聯(lián)網(wǎng)公司用于其服務(wù)器基礎(chǔ)設(shè)施中。
跨端指的是什么
比如說我們經(jīng)常使用的微信,我們可以桌面端的Windows上下載安裝它,同樣的操作也適用于MacOS,當(dāng)然也可以在移動(dòng)端的Android、iPhone上下載安裝它。
同樣的軟件,需要在不同的環(huán)境下使用不同的語言開發(fā)(甚至不同的IDE),這增加了開發(fā)的難度與人力投入。因此,如果能有一種技術(shù)能夠滿足只寫一遍代碼,在不同的系統(tǒng)上都能運(yùn)行,這就是跨端技術(shù)。
常見的跨端技術(shù),有些能跨移動(dòng)端,有些能跨桌面端,有些同時(shí)能跨移動(dòng)端和桌面端。
桌面端常見的跨端框架:
Electron
基于Web技術(shù)(HTML, CSS, JavaScript)
Qt
支持C++、Python等語言
提供豐富的UI組件和API
Tauri
類似Electron但更輕量級(jí)
使用Rust構(gòu)建原生后臺(tái)進(jìn)程
前端依然可以使用Web技術(shù)
更注重安全性和性能
跨端框架在移動(dòng)端使用得更廣泛。
移動(dòng)端常見的跨端框架:
Flutter
Google推出的UI工具包
使用Dart語言編寫
支持iOS、Android、Web、桌面端
性能接近原生應(yīng)用,擁有豐富的組件庫(kù)
React Native
Facebook推出,基于JavaScript和React
支持iOS、Android
可以復(fù)用大量現(xiàn)有的React代碼和組件
UniApp
基于Vue.js的跨平臺(tái)開發(fā)框架
支持iOS、Android、小程序、H5
組件化開發(fā),易于維護(hù)
Kotlin Multiplatform 是 Kotlin 編程語言的一個(gè)特性,允許你使用同一套代碼庫(kù)在多個(gè)平臺(tái)上進(jìn)行開發(fā),包括 JVM、JavaScript、Android、iOS 以及其他平臺(tái)
React Native 之前比較火,也是后續(xù)不少跨端框架借鑒的對(duì)象。當(dāng)前比較火的框架是Flutter,還在迭代繁榮中。UniApp是國(guó)內(nèi)用的比較多的框架。KMP是JetBrains公司主推的產(chǎn)品,同時(shí)也得到了Google的支持,只是目前受眾還比較少。
3. 桌面端沒落了嗎?
雖然桌面端的流量分了部分到移動(dòng)端,但是在某些方面桌面端還是有著獨(dú)特的優(yōu)勢(shì)。
性能需求:
桌面應(yīng)用通常可以利用更強(qiáng)大的硬件資源(如GPU加速),提供更好的性能和用戶體驗(yàn)。
對(duì)于需要大量計(jì)算資源的應(yīng)用(如圖形設(shè)計(jì)、視頻編輯、游戲開發(fā)等),桌面應(yīng)用仍然是首選。
用戶體驗(yàn):
桌面應(yīng)用可以提供更復(fù)雜的用戶界面和交互,適合需要深度交互的應(yīng)用。
桌面環(huán)境通常提供更多的窗口管理和多任務(wù)處理能力,適合需要同時(shí)運(yùn)行多個(gè)應(yīng)用的用戶。
企業(yè)級(jí)應(yīng)用:
許多企業(yè)級(jí)應(yīng)用(如ERP、CRM、數(shù)據(jù)分析工具等)仍然依賴桌面應(yīng)用,因?yàn)樗鼈冃枰c本地系統(tǒng)和硬件設(shè)備緊密集成。
企業(yè)用戶通常對(duì)安全性和穩(wěn)定性有更高的要求,桌面應(yīng)用在這方面往往更有優(yōu)勢(shì)。
專業(yè)軟件:
許多專業(yè)軟件(如Adobe Photoshop、AutoCAD、MATLAB等)仍然以桌面應(yīng)用為主,因?yàn)樗鼈冃枰叨榷ㄖ苹墓δ芎托阅軆?yōu)化。
桌面端主要開發(fā)語言有 C++、C#、Qt等。
常用的IDE:Visual Studio(Windows開發(fā))、Xcode(Mac開發(fā))、Qt Creator(Qt平臺(tái))
4. 移動(dòng)端主要開發(fā)啥?
目前移動(dòng)端主要有兩大主流系統(tǒng):Android和iOS,加上今年的HarmonyOS Next(市場(chǎng)占有率還比較低),總共就有三個(gè)系統(tǒng)。
iPhone手機(jī)上搭載的是iOS系統(tǒng)(閉源系統(tǒng)),其主流開發(fā)語言是:Objective-C、Swift,后者逐漸替代了前者。
Android手機(jī)上搭載的是Android系統(tǒng)(開源系統(tǒng)),因?yàn)殚_源,所以不少硬件廠商都定制了自己的Android系統(tǒng)(ROM),如華為、小米、OPPO、ViVo、榮耀等。
Android 主流開發(fā)語言是:Java、Kotlin,后者逐漸替代了前者。
HarmonyOS Next 主要運(yùn)用在華為手機(jī)上,閉源系統(tǒng)。主流開發(fā)語言是:ArkTS,類TS語言。
你手機(jī)上的應(yīng)用都屬于移動(dòng)開發(fā)的產(chǎn)品范疇,移動(dòng)端的工作就是開發(fā)這些手機(jī)上的App。
常用的IDE:Android Studio(開發(fā)Android、Flutter、KMP應(yīng)用)、Xcode(開發(fā)iOS應(yīng)用,Mac上才有這軟件),DevEco Studio(開發(fā)鴻蒙應(yīng)用)
5. 前端無處不在?
如果你平時(shí)有關(guān)注過互聯(lián)網(wǎng)的招聘,你就會(huì)發(fā)現(xiàn)前端的崗位特別多(相對(duì)其它崗位)。
平時(shí)看到的網(wǎng)頁(yè)就是前端開發(fā)的范疇,除了網(wǎng)頁(yè),現(xiàn)在各種小程序(微信、支付寶、頭條等)也是屬于前端開發(fā)領(lǐng)域。
最開始的前端核心技術(shù)無外乎三個(gè)基本點(diǎn):HTM+CSS+JS。
HTML (HyperText Markup Language) 超文本標(biāo)記語言,用于描述網(wǎng)頁(yè)的內(nèi)容和結(jié)構(gòu)。
CSS (Cascading Style Sheets) 層疊樣式表,用于控制網(wǎng)頁(yè)的外觀和布局。
JavaScript,用于實(shí)現(xiàn)網(wǎng)頁(yè)的動(dòng)態(tài)功能和用戶交互。
掌握了這三個(gè)技術(shù),基本上就會(huì)編寫簡(jiǎn)單的前端頁(yè)面了,隨著技術(shù)的發(fā)展,逐漸出現(xiàn)了框架,通過框架我們更加清晰的組織語言編寫復(fù)雜的前端頁(yè)面。
React (2013):由 Facebook 開發(fā),用于構(gòu)建用戶界面,特別是單頁(yè)應(yīng)用。
Vue.js (2014):漸進(jìn)式框架,易于上手,適合中小型項(xiàng)目。
Angular (2010):由 Google 開發(fā),功能全面,適合大型企業(yè)級(jí)應(yīng)用。
Svelte (2016):新興框架,編譯時(shí)將組件轉(zhuǎn)換為高效的原生 JavaScript,性能優(yōu)異。
其中國(guó)內(nèi)用Vue.js比較多。
使用框架寫好代碼之后,還要將代碼構(gòu)建打包,常見的構(gòu)建工具:
Webpack (2012):模塊打包工具,支持多種模塊格式和加載器。
Vite (2020):新興的構(gòu)建工具,提供快速的開發(fā)服務(wù)器和高效的構(gòu)建過程。
Parcel (2017):零配置的模塊打包工具,易于使用。
前端也是相對(duì)其它端輪子(各種工具庫(kù))比較多的端。
常用的語言:TypeScript、JS、HTML
常用的IDE:Visual Studio Code(VS Code,微軟出品)、WebStorm(JetBrains出品)
6. 嵌入式用在哪些場(chǎng)景?
嵌入式系統(tǒng)是一種專門為特定功能設(shè)計(jì)和優(yōu)化的計(jì)算機(jī)系統(tǒng),通常嵌入到其他設(shè)備中,以執(zhí)行特定的任務(wù)。
常見的場(chǎng)景:
汽車:引擎控制單元 (ECU)、防抱死制動(dòng)系統(tǒng) (ABS)、導(dǎo)航系統(tǒng)。
醫(yī)療設(shè)備:心電圖機(jī)、呼吸機(jī)、血糖儀。
工業(yè)控制:PLC (可編程邏輯控制器)、SCADA (數(shù)據(jù)采集與監(jiān)控系統(tǒng))、機(jī)器人。
消費(fèi)電子:智能電視、智能家居設(shè)備(智能音箱、智能燈泡)。
軍事和航空航天:導(dǎo)彈制導(dǎo)系統(tǒng)、飛行控制系統(tǒng)、導(dǎo)航系統(tǒng)。
常用的語言:C、C++、匯編
常用的IDE:SourceInsight
7. 為什么需要后端?
如上圖,有4名同學(xué),他們都是微信好友,可是他們?cè)诓煌脑O(shè)備、系統(tǒng)上裝的微信。
同學(xué)1給同學(xué)3發(fā)送消息,看似直接從蘋果手機(jī)給Android手機(jī)發(fā),實(shí)際的步驟是:
- 同學(xué)1將消息發(fā)送到服務(wù)器
- 服務(wù)器將該消息存儲(chǔ)下來
- 服務(wù)器給同學(xué)3發(fā)消息
同樣的,不管你在什么設(shè)備、什么系統(tǒng)上安裝微信,你都能給任意的好友發(fā)消息,這是因?yàn)榉?wù)端扮演了樞紐的作用。
某個(gè)時(shí)刻手機(jī)斷網(wǎng)了就沒法發(fā)微信了,這是因?yàn)榇藭r(shí)手機(jī)連不上服務(wù)器了。
隨著跨端技術(shù)的發(fā)展,前端和移動(dòng)端的邊界逐漸變得模糊,兩者一起通常稱為大前端。
服務(wù)端有時(shí)候也稱為后端、云端、后臺(tái)等,有時(shí)候也叫做Web服務(wù)器開發(fā)。
服務(wù)端常用的開發(fā)語言:PHP、Java、JavaScript、Python、Go、C#
PHP:Web開發(fā)的曾經(jīng)的王者,一度號(hào)稱是世界上最好的語言
JAVA:現(xiàn)在Web開發(fā)的中流砥柱
JavaScript/TypeScript(Node.js):前端同學(xué)統(tǒng)一后端的利器
Go:由Google開發(fā),以其簡(jiǎn)潔、高效并發(fā)處理能力受到歡迎,適用于微服務(wù)架構(gòu)。
C#:微軟推出的語言,配合.NET框架,在Windows服務(wù)器環(huán)境中很常見。
Python:以簡(jiǎn)潔的語法和強(qiáng)大的社區(qū)支持著稱,廣泛應(yīng)用于Web開發(fā)、數(shù)據(jù)處理等領(lǐng)域
服務(wù)端常用的開發(fā)框架:Spring Boot、Flask、Express
Spring Boot:Java開發(fā) 全家桶之一
Flask:Python輕量級(jí)Web應(yīng)用框架,易于上手,適合小型項(xiàng)目或需要高度定制化的應(yīng)用
Express:快速、最小化且靈活的Node.js Web應(yīng)用框架,提供了強(qiáng)大的路由功能
常用的IDE:IntelliJ IDEA、Eclipse、VSCode、PhpStorm、PyCharm
IntelliJ IDEA:Java開發(fā) 生產(chǎn)力工具
Eclipse:曾經(jīng)Java開發(fā)的利器
VSCode(Visual Studio Code):輕量級(jí)但功能強(qiáng)大,支持多種編程語言,通過插件可以增強(qiáng)對(duì)不同語言的支持,如Python、JavaScript、Go等。
PhpStorm:針對(duì)PHP開發(fā)的IDE,提供語法高亮、代碼重構(gòu)、調(diào)試等功能,適合PHP后端開發(fā)
PyCharm:專門為Python開發(fā)設(shè)計(jì),提供智能代碼補(bǔ)全、代碼檢查、調(diào)試等功能,非常適合Python后端開發(fā)
8. 總結(jié)
上述簡(jiǎn)單說了在軟件開發(fā)領(lǐng)域的一些術(shù)語,還有很多不曾提及的領(lǐng)域,如游戲、大數(shù)據(jù)、算法分析、銀行大型機(jī)包括現(xiàn)在火爆的AI模型等。
軟件這行業(yè)很廣,涉及的知識(shí)很多,甚至開發(fā)過程中需要學(xué)習(xí)很多門語言,搭建各式各樣的環(huán)境,學(xué)習(xí)蓬勃發(fā)展的框架,熟悉各種約定俗成,卷不完的新技術(shù)...
給初學(xué)者的一些建議。
先了解兩個(gè)前提:
- 作為普通的開發(fā),技術(shù)不是全部
- 作為普通的打工人,技術(shù)是一種謀生的手段
再看技術(shù)本身:
- 看看自己感興趣的領(lǐng)域有哪些
- 嘗試學(xué)習(xí)該領(lǐng)域的語言并寫出Demo,給與自己成就感
- 查看該領(lǐng)域的的技術(shù)人員市場(chǎng)需求度如何決定是否需要進(jìn)一步深入
- 技術(shù)上有了一定深度的積累后同時(shí)擴(kuò)展到其它領(lǐng)域,擴(kuò)展技術(shù)知識(shí)的廣度
最后說說知識(shí)本身:
- 知識(shí)體系的構(gòu)建很重要,當(dāng)形成了體系,學(xué)習(xí)其它的領(lǐng)域的知識(shí)就比較容易觸類旁通,因?yàn)橹R(shí)的本身也是千絲萬縷的聯(lián)系
- 即使最后沒走上技術(shù)之路,學(xué)習(xí)技術(shù)的過程也能鍛煉邏輯能力
那么還有哪些你使用到的技術(shù)或者建議,歡迎在評(píng)論區(qū)補(bǔ)充,讓大家開開眼界~