新的一年,给想要入行程序员的同学一些科普

前言

之前有一些在校的同学咨询:入行程序员需要哪些基础?应该学哪些语言?哪些岗位更吃香等等诸如此类的的问题。
本篇我们不回答这些问题,仅仅阐述现代开发涉及到的一些术语以及运用场景,通过本篇文章,你将了解到:

  1. 什么是软件?
  2. 什么是跨端?
  3. 桌面端没落了吗?
  4. 移动端主要开发啥?
  5. 前端无处不在?
  6. 嵌入式用在哪些场景?
  7. 为什么需要后端?
  8. 总结

1. 什么是软件?

软件示例

iphone桌面.png

windows.png

如上俩图,一个是iphone的桌面,另一个是windows的桌面,他们上面有很多图标(常见的QQ、微信等),我们点击去就是打开了一个软件。

通俗的叫法是软件,潮流点的称呼是应用,专业点的名称是可执行程序

软件的产生

那么我们平时使用的各类软件是怎么开发出来的呢?其实他们都有一个标准的生产过程:


image.png
  1. 软件里的各种功能是通过代码实现的,而代码是用语言来描述的。
  2. IDE(Integrated Development Environment),中文是集成开发环境,要写代码得有一个地方写吧?以前是在编辑器里写好代码,然后再编译构建出可执行程序,现在IDE强大了里边就囊括了编辑和编译构建的功能。通常都是在桌面端安装 IDE软件,然后进行逻辑编程,最后将生成的软件安装到不同的端上。

在IDE里编写好代码并构建完成之后就可以在系统上运行了,比如上图的iPhone手机和Windows电脑。

2. 什么是跨端?

主流操作系统

在说跨端之前先说说当今最常使用的操作系统有哪些。


image.png

桌面端就是我们平时使用的PC(台式机、笔记本电脑):

Windows:由微软公司开发,是全球使用最广泛的操作系统之一,适用于个人电脑和企业环境,拥有大量的软件支持。
macOS:苹果公司为其Mac系列计算机设计的操作系统,基于Unix,以用户友好的界面和与苹果硬件的紧密集成而著称。
Linux:一个开源且免费的操作系统,具有高度的灵活性和安全性,广泛用于服务器和个人电脑。它有多个发行版(distros),如Ubuntu、Fedora等,适用于不同的用户需求。

移动端通常指的是我们平时使用的手机:

Android(安卓)
由谷歌公司开发,是基于Linux内核的开放源代码操作系统,主要用于移动设备如智能手机和平板电脑。它支持大量的应用程序和服务,并且拥有全球最大的应用商店——Google Play Store。由于其开放性和灵活性,Android被众多手机制造商采用,成为全球使用最广泛的移动操作系统。
iOS
苹果公司的iOS是一个专为苹果硬件设计的操作系统,适用于iPhone、iPad和iPod touch等设备。iOS以其简洁易用的界面和高度优化的安全性能而闻名。App Store为iOS用户提供了一个获取高质量应用程序的平台。iOS与苹果生态系统中的其他产品和服务紧密集成,如Mac、Apple Watch、AirPods等。
鸿蒙OS(HarmonyOS)
华为自主研发的鸿蒙操作系统是一款面向未来、面向全场景的分布式操作系统,旨在提供跨多种设备类型的无缝连接体验。它不仅支持传统的手机和平板电脑,还支持智能穿戴设备、智能家居、车辆等物联网设备。随着华为在全球市场的推广,鸿蒙OS正逐渐获得更多的关注和支持,成为中国乃至全球第三大移动操作系统。

服务端指的是后端服务器所在的端:

Linux
Ubuntu Server:基于Debian的Linux发行版,因其易用性和丰富的软件包管理工具而受到欢迎。适用于多种服务器环境,从Web服务器到数据库服务器。
CentOS:现已演进为CentOS Stream,是一个与Red Hat Enterprise Linux (RHEL) 开发过程紧密关联的滚动发布版本。它提供了稳定性和安全性,是企业级应用的首选之一。
Debian:以其稳定性、安全性和强大的软件包管理系统著称,适合各种服务器场景。
Red Hat Enterprise Linux (RHEL):由Red Hat公司提供的商业支持的Linux发行版,专注于为企业提供高级支持和服务,在企业级应用和云计算领域广泛应用。
SUSE Linux Enterprise Server (SLES):以稳定性和安全性著称,适用于高性能计算、虚拟化和云计算环境。

Windows Server
由微软开发的企业级操作系统,最新版本包括Windows Server 2022。它提供了广泛的内置服务和应用程序支持,特别是对于需要运行.NET框架的应用程序或使用Active Directory进行用户管理和认证的情况。Windows Server也集成了Azure云服务,便于混合云部署。

FreeBSD
虽然不是Linux发行版,但FreeBSD是另一个广泛使用的类Unix操作系统,特别在对性能和稳定性有较高要求的环境中。它具有稳定的内核和良好的网络功能,被一些互联网公司用于其服务器基础设施中。

跨端指的是什么

比如说我们经常使用的微信,我们可以桌面端的Windows上下载安装它,同样的操作也适用于MacOS,当然也可以在移动端的Android、iPhone上下载安装它。
同样的软件,需要在不同的环境下使用不同的语言开发(甚至不同的IDE),这增加了开发的难度与人力投入。因此,如果能有一种技术能够满足只写一遍代码,在不同的系统上都能运行,这就是跨端技术。

常见的跨端技术,有些能跨移动端,有些能跨桌面端,有些同时能跨移动端和桌面端。
桌面端常见的跨端框架:


image.png

Electron
基于Web技术(HTML, CSS, JavaScript)

Qt
支持C++、Python等语言
提供丰富的UI组件和API

Tauri
类似Electron但更轻量级
使用Rust构建原生后台进程
前端依然可以使用Web技术
更注重安全性和性能

跨端框架在移动端使用得更广泛。
移动端常见的跨端框架:


image.png

Flutter
Google推出的UI工具包
使用Dart语言编写
支持iOS、Android、Web、桌面端
性能接近原生应用,拥有丰富的组件库

React Native
Facebook推出,基于JavaScript和React
支持iOS、Android
可以复用大量现有的React代码和组件

UniApp
基于Vue.js的跨平台开发框架
支持iOS、Android、小程序、H5
组件化开发,易于维护

Kotlin Multiplatform 是 Kotlin 编程语言的一个特性,允许你使用同一套代码库在多个平台上进行开发,包括 JVM、JavaScript、Android、iOS 以及其他平台

React Native 之前比较火,也是后续不少跨端框架借鉴的对象。当前比较火的框架是Flutter,还在迭代繁荣中。UniApp是国内用的比较多的框架。KMP是JetBrains公司主推的产品,同时也得到了Google的支持,只是目前受众还比较少。

3. 桌面端没落了吗?

虽然桌面端的流量分了部分到移动端,但是在某些方面桌面端还是有着独特的优势。

性能需求:
桌面应用通常可以利用更强大的硬件资源(如GPU加速),提供更好的性能和用户体验。
对于需要大量计算资源的应用(如图形设计、视频编辑、游戏开发等),桌面应用仍然是首选。

用户体验:
桌面应用可以提供更复杂的用户界面和交互,适合需要深度交互的应用。
桌面环境通常提供更多的窗口管理和多任务处理能力,适合需要同时运行多个应用的用户。

企业级应用:
许多企业级应用(如ERP、CRM、数据分析工具等)仍然依赖桌面应用,因为它们需要与本地系统和硬件设备紧密集成。
企业用户通常对安全性和稳定性有更高的要求,桌面应用在这方面往往更有优势。

专业软件:
许多专业软件(如Adobe Photoshop、AutoCAD、MATLAB等)仍然以桌面应用为主,因为它们需要高度定制化的功能和性能优化。

桌面端主要开发语言有 C++、C#、Qt等。
常用的IDE:Visual Studio(Windows开发)、Xcode(Mac开发)、Qt Creator(Qt平台)

4. 移动端主要开发啥?

目前移动端主要有两大主流系统:Android和iOS,加上今年的HarmonyOS Next(市场占有率还比较低),总共就有三个系统。

iPhone手机上搭载的是iOS系统(闭源系统),其主流开发语言是:Objective-C、Swift,后者逐渐替代了前者。

Android手机上搭载的是Android系统(开源系统),因为开源,所以不少硬件厂商都定制了自己的Android系统(ROM),如华为、小米、OPPO、ViVo、荣耀等。
Android 主流开发语言是:Java、Kotlin,后者逐渐替代了前者。

HarmonyOS Next 主要运用在华为手机上,闭源系统。主流开发语言是:ArkTS,类TS语言。

你手机上的应用都属于移动开发的产品范畴,移动端的工作就是开发这些手机上的App。

常用的IDE:Android Studio(开发Android、Flutter、KMP应用)、Xcode(开发iOS应用,Mac上才有这软件),DevEco Studio(开发鸿蒙应用)

5. 前端无处不在?

如果你平时有关注过互联网的招聘,你就会发现前端的岗位特别多(相对其它岗位)。
平时看到的网页就是前端开发的范畴,除了网页,现在各种小程序(微信、支付宝、头条等)也是属于前端开发领域。

最开始的前端核心技术无外乎三个基本点:HTM+CSS+JS。
HTML (HyperText Markup Language) 超文本标记语言,用于描述网页的内容和结构。

CSS (Cascading Style Sheets) 层叠样式表,用于控制网页的外观和布局。

JavaScript,用于实现网页的动态功能和用户交互。

掌握了这三个技术,基本上就会编写简单的前端页面了,随着技术的发展,逐渐出现了框架,通过框架我们更加清晰的组织语言编写复杂的前端页面。

React (2013):由 Facebook 开发,用于构建用户界面,特别是单页应用。
Vue.js (2014):渐进式框架,易于上手,适合中小型项目。
Angular (2010):由 Google 开发,功能全面,适合大型企业级应用。
Svelte (2016):新兴框架,编译时将组件转换为高效的原生 JavaScript,性能优异。

其中国内用Vue.js比较多。

使用框架写好代码之后,还要将代码构建打包,常见的构建工具:

Webpack (2012):模块打包工具,支持多种模块格式和加载器。
Vite (2020):新兴的构建工具,提供快速的开发服务器和高效的构建过程。
Parcel (2017):零配置的模块打包工具,易于使用。

前端也是相对其它端轮子(各种工具库)比较多的端。

常用的语言:TypeScript、JS、HTML
常用的IDE:Visual Studio Code(VS Code,微软出品)、WebStorm(JetBrains出品)

6. 嵌入式用在哪些场景?

嵌入式系统是一种专门为特定功能设计和优化的计算机系统,通常嵌入到其他设备中,以执行特定的任务。

常见的场景:

汽车:引擎控制单元 (ECU)、防抱死制动系统 (ABS)、导航系统。
医疗设备:心电图机、呼吸机、血糖仪。
工业控制:PLC (可编程逻辑控制器)、SCADA (数据采集与监控系统)、机器人。
消费电子:智能电视、智能家居设备(智能音箱、智能灯泡)。
军事和航空航天:导弹制导系统、飞行控制系统、导航系统。

常用的语言:C、C++、汇编
常用的IDE:SourceInsight

7. 为什么需要后端?

image.png

如上图,有4名同学,他们都是微信好友,可是他们在不同的设备、系统上装的微信。
同学1给同学3发送消息,看似直接从苹果手机给Android手机发,实际的步骤是:

  1. 同学1将消息发送到服务器
  2. 服务器将该消息存储下来
  3. 服务器给同学3发消息

同样的,不管你在什么设备、什么系统上安装微信,你都能给任意的好友发消息,这是因为服务端扮演了枢纽的作用。
某个时刻手机断网了就没法发微信了,这是因为此时手机连不上服务器了。

image.png

随着跨端技术的发展,前端和移动端的边界逐渐变得模糊,两者一起通常称为大前端。
服务端有时候也称为后端、云端、后台等,有时候也叫做Web服务器开发。

服务端常用的开发语言:PHP、Java、JavaScript、Python、Go、C#

PHP:Web开发的曾经的王者,一度号称是世界上最好的语言
JAVA:现在Web开发的中流砥柱
JavaScript/TypeScript(Node.js):前端同学统一后端的利器
Go:由Google开发,以其简洁、高效并发处理能力受到欢迎,适用于微服务架构。
C#:微软推出的语言,配合.NET框架,在Windows服务器环境中很常见。
Python:以简洁的语法和强大的社区支持著称,广泛应用于Web开发、数据处理等领域

服务端常用的开发框架:Spring Boot、Flask、Express

Spring Boot:Java开发 全家桶之一
Flask:Python轻量级Web应用框架,易于上手,适合小型项目或需要高度定制化的应用
Express:快速、最小化且灵活的Node.js Web应用框架,提供了强大的路由功能

常用的IDE:IntelliJ IDEA、Eclipse、VSCode、PhpStorm、PyCharm

IntelliJ IDEA:Java开发 生产力工具
Eclipse:曾经Java开发的利器
VSCode(Visual Studio Code):轻量级但功能强大,支持多种编程语言,通过插件可以增强对不同语言的支持,如Python、JavaScript、Go等。
PhpStorm:针对PHP开发的IDE,提供语法高亮、代码重构、调试等功能,适合PHP后端开发
PyCharm:专门为Python开发设计,提供智能代码补全、代码检查、调试等功能,非常适合Python后端开发

8. 总结

上述简单说了在软件开发领域的一些术语,还有很多不曾提及的领域,如游戏、大数据、算法分析、银行大型机包括现在火爆的AI模型等。
软件这行业很广,涉及的知识很多,甚至开发过程中需要学习很多门语言,搭建各式各样的环境,学习蓬勃发展的框架,熟悉各种约定俗成,卷不完的新技术...

给初学者的一些建议。
先了解两个前提:

  1. 作为普通的开发,技术不是全部
  2. 作为普通的打工人,技术是一种谋生的手段

再看技术本身:

  1. 看看自己感兴趣的领域有哪些
  2. 尝试学习该领域的语言并写出Demo,给与自己成就感
  3. 查看该领域的的技术人员市场需求度如何决定是否需要进一步深入
  4. 技术上有了一定深度的积累后同时扩展到其它领域,扩展技术知识的广度

最后说说知识本身:

  1. 知识体系的构建很重要,当形成了体系,学习其它的领域的知识就比较容易触类旁通,因为知识的本身也是千丝万缕的联系
  2. 即使最后没走上技术之路,学习技术的过程也能锻炼逻辑能力

那么还有哪些你使用到的技术或者建议,欢迎在评论区补充,让大家开开眼界~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,188评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,464评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,562评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,893评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,917评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,708评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,430评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,342评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,801评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,976评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,115评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,804评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,458评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,008评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,135评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,365评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,055评论 2 355

推荐阅读更多精彩内容