找回密码
 立即注册
查看: 299|回复: 0

学习编程都有哪些就业方向?全编程语言详解【深度好文 ...

[复制链接]
发表于 2022-7-18 16:50 | 显示全部楼层 |阅读模式
你是否有很多问号?
我想做游戏,不知道该学什么?
现在最火的是 python,可学了python能找到什么工作呢?
会不会我好不容易学会一门技术,结果发现是过时了几年的技术?
对于一个想进入计算机行业的初学者,很容易陷入迷茫当中,毕竟计算机的水很深,很多人容易把握不住。
这篇内容就是给想进入计算机这个行业的同学的科普。
点击链接加入群聊【编程Python学习课堂】:

在这篇文章中,我将分析的点放在以下几个热门领域:


  • 游戏开发
  • 网站前端
  • APP 开发
  • 桌面程序
  • 服务器后端
然后在这几个热门领域中列举几个知名度高的框架或引擎,进行对比。
主要从以下几个方面进行对比,不会涉及过多的技术细节:


  • 引擎/框架所支持的编程语言
  • 引擎/框架的代表产品
  • 引擎/框架的特点
  • 引擎/框架的优劣势
  • 市场占有率
有时可能找不到准确的比对数据,同时为了避免篇幅过长不会贴太多数据,只会仅仅简述一下,较真的同学可以在评论区来较真。
本稿的内容来源主要有三:


  • 本人多年了玩弄各种技术得出的体验
  • 与业内人士的交流
  • 各种查阅资料与 github 的趋势
如有不同见解欢迎指出,有道理就听,没道理会忽略。
游戏开发
很多想学编程的同学,也许当初就是被某款游戏戳中了点,也想自己做一款游戏,才走进计算机的领域。
在游戏开发领域有着很多著名的游戏引擎,比如V社的起源2、EA的寒霜引擎、虚幻引擎、Unity 等等,它们的市场占有率如下图。





下面对比了 unity、虚幻引擎、Cocos Creator、Godot 这个几个在市场占有率、3A游戏、小游戏、开源上分别最有代表性的产品。





Unity
编程语言:C#、JavaScript
代表产品:原神
笔者在 N 年前的时候就已经接触并使用过 Unity3d ,算是一个古老的使用者,当时还是 2.x 的版本,现在已经到以年份命名的版本。
(官方网站上现在已然找不到2.x版本了)





Unity 属于一个真正意义上的跨平台的游戏引擎,跨到什么地步呢,看下面这张图,上面罗列的都是 Unity 支持的平台。
(注意,那个企鹅是 linux 不是腾讯)





Unity 在中小型游戏的开发上很受欢迎,而且多用来开发手机游戏,可以说 unity 目前几乎一统了中小型游戏开发的市场。
Unity 支持的开发语言是 C#,JavaScript。比较推荐使用 C#,因为 C# 经常作为大规模项目的开发语言,其又是静态语言,相对于常用于网页端使用的脚本语言 JavaScript 来说比较适合作为一款游戏的开发语言。





虚幻引擎
编程语言:C++
代表产品:绝地求生、黑神话:悟空
虚幻引擎同样是一个跨平台的游戏引擎,属于开发 3A 大作的不二之选(除去有自研引擎的厂商)。虚幻引擎代表了游戏画面所能达到的最前沿水平,电影级的实时画面演算。虚幻引擎开发的 3A 大作数不胜数,在这些作品上堆积起来的是一套完善的工业开发体系,游戏开发中能遇到的任何问题在虚幻引擎中几乎已经有了解决方案。
出于性能的考虑,虚幻引擎引擎仅支持 C++ 作为其编程语言。





Cocos Creator
编程语言:JavaScript
代表产品:剑与远征、保卫萝卜2
Cocos 有两款比较出名的引擎, 一个是 Cocos2d-x 还有就是Cocos Creator。
Cocos Creator 是一个由国内团队开发的产品,它自身支持跨平台开发,支持安卓、IOS、web、小游戏等多个平台。
作为一个国产产品,它最活跃的战场自然是国内各个厂商的小程序平台,包括最新发布的鸿蒙系统,这一点可以从它的更新日志上可以看出。







因为 Cocos Creator 支持了很多小程序平台,因此很多时候  Cocos Creator 被用来开发种树、养小鸡、棋牌这些小游戏上,所以不太适合对做精品游戏有执念的同学。不过国内的现状大家也懂,这些小游戏也正是很多国内公司的业务组成部分,因此也就存在着大量 Cocos Creator 的就业岗位。





Godot
编程语言:GDScript、C++、C#
代表产品:传奇生物、幸运房东
Godot 是一款遵循MIT开源协议的跨平台游戏引擎,这意味着我们可以免费使用 Godot 甚至对其源码进行个性化修改。轻便灵活是它最大的特征,整个安装包也只有几十MB。
Godot 内置了很多工具避免了重复造齿轮,该有的功能基本都有,属于开源游戏引擎中最优秀的一款。适合个人或小团队使用,开发一些独立游戏。
Godot  在国外的社区很火,只要你有问题基本都能在社区得到解决,在国内的使用人数就比较少,但这不妨碍它是一个优秀的引擎。只是不太适合作为职业方向,因为开源代表着没有售后支持,导致没有商业公司会选择它。
小结
如果你主要考虑就业:Unity、Cocos Creator
如果你想开发好游戏为目标:Unity、虚幻引擎
如果你是个人或小团队:Unity、Godot
如果你想开发3A大作:虚幻引擎
学游戏引擎不光是学习语言就够了,还需要学习图形学的基础,自己的数学功底也要好。因为在 3D 游戏中,人物就是一个个三角面拼合而成的模型,在光线反射、碰撞效果,各种物理模拟上会进行大量的矩阵运算,一定的线代数学基础是避免不了的。





网站开发
网站开发有两种方式,一种是动态网页的开发方式,还有就是前后端分离的方式。有关动态网页的开发,常见的开发框架或语言有 PHP, 还有 Java 的 JSP 或 C# 的 ASP 技术。
动态网页与前后端分离最大的区别是,动态网页在开发上是服务器根据业务需求生成页面再返回到浏览器,而此时的页面结构与业务服务是存在于一个项目中的。而前后端分离是先返回基本的页面结构与样式到浏览器,再在浏览器访问服务器的接口获取数据并填充页面,此时的前端与后端是分开的两个项目。
前后端分离的开发有什么好处?前后端项目的分离能降低项目的耦合度,降低项目复杂度,分开的项目能更好地区分开发人员的职责,更好地协同任务开发,方便项目的管理与控制开发的进度。
由于现在的趋势已经侧重于前后端分离的开发模式,所以我们这里只是谈及前后端分离下常用的前端框架,关于后端会在最后的时候再谈。





Vue
编程语言:HTML、CSS、JavaScript
代表产品:bilibili、掘金
vue 是国人尤雨溪大佬开发的前端框架,框架容易上手,在国内也是最受欢迎的前端框架。
Vue 胜在轻量,但又麻雀虽小五脏俱全,需要用到什么组件可以直接安装。Vue 使用的是 web 开发者更熟悉的模板与特性,单个文件直接以类 HTML 的模板语言 + JavaScript + CSS 的组合,理解起来很直观,只要有网页开发基础的人都能很容易地上手 Vue。
Vue 是Github上最受欢迎的开源项目之一, 其 star 数目前为 185k,同时间的 React 的 star 数为 171k,  angular 为 74.3k。
2021/07/01 数据











React
编程语言:HTML、CSS、JavaScript
代表产品:Facebook、Instagram
React 是主要由 Facebook 研发并开源的一个跨平台前端框架,特色在于函数式编程的理念,对于没有很好的编程基础的同学,React 的函数式编程则显得略微难以理解了。也正因为 React 的设计理念,使得 React 的灵活度相对于 Vue 来说更高,能更好的自定义以适应自己的业务场景。
React 在国外是最流行的前端框架,同时 React 也可以用作手机 APP 的开发。





Angular
编程语言:HTML、CSS、JavaScript
代表产品:Gamil、PayPal
Angular 是由 Google 开源的一个前端框架,其自身的设计的理念较为先进。
Angular 更像一个完整的前端解决方案,这使得我们使用 Angular 就能解决前端开发下绝大部分可能面临的业务场景。但也正因如此, Angular 显得有些臃肿与呆板,不太适合一些灵活度高的项目。
不过由于历史原因,Angular 在国内的占有率远低于 Vue 与 React。
小结
因为网页都是运行在浏览器上的,而浏览器只认识html,css,javascript。所以不管学什么框架都必须打好 HTML、CSS、JavaScript 的基础。
三大前端框架在国内的公司中使用的数量为 Vue > React > Angular,国际上来说是 React > Vue > Angular。
如果考虑就业:Vue 、React
如果追求项目灵活度:React
如果想要一整套的解决方案:Angular
APP 原生开发
就像网站一样,一个 APP 的运行同样离不开前端和后端。
前端属于手机运行的程序,用于显示界面,处理用户交互。
后端跑在服务器上,用于处理业务逻辑。
这里先聊聊前端部分。
APP 主要搭载的平台为安卓 与 IOS(Windows Phone 已经凉透了)。那首先介绍的必须是安卓与IOS的原生开放方式,他们的特点都是开发之后只能在一个平台上运行。




安卓 原生开发
编程语言:Java、Kotlin
学习安卓开发不止可以用来开发手机APP, 以后是一个万物互联的时代,而这些设备不管是车载系统、智能音响、甚至电冰箱空调上搭载的都是安卓系统,毕竟安卓开源、免费、现有的开发工程师也多。所以学习安卓开发能兼容的业务场景相对 IOS 就广阔得多。
安卓开发支持的编程语言是 Java 与 Kotlin。安卓研发之初为了吸纳广大的开发者,选择了 Java 这个热门语言。然后之与 Sun 公司的官司便闹个不停,于是便另外扶持了 Kotlin 这门语言。
Kotlin 可以看作一个 better java,提供了更多的语法糖。目前很多公司的项目还是以 java 为主, 因此如果要学习安卓原生还是建议使用 java,有需要可以再学下 Kotlin, Kotlin 更像 Java 的一个补集,学习起来也会轻松很多。




IOS 原生开发
编程语言:Objective-C、Swift
学习 IOS 开发,同样不止能开发 APP, 苹果全家桶都是你开发的舞台,包括 Iphone、Mac、ipad、watch 等等。因为这些系统上使用的语言,开发工具都是一样的,都是在 Xcode 下开发,无非是一些系统接口的不同。
IOS 开发所使用的开发语言为 Objective-C 和 Swift。Objective-C, 是一个扩充C的面向对象编程语言,学习难度略高,而且比较古老。
而 Swift 则是苹果推出的语言,旨在取代古老的  Objective-C, 使 IOS 的开发更简单。不过现在很多公司内部的项目还是使用 Objective-C 开发, 所以还是推荐先学 Objective-C,之后再学习 Swift。
APP 跨平台开发
跨平台开发有很多框架,出于国内市场流行度的原因这里仅是介绍 Flutter、Reat、uni-app。
Flutter 目前在 github 上的 star 数为 124k,React Native 为96.4k,uni-app 则为 32.1k。
2021/07/01 数据










Flutter
编程语言:Dart
代表产品:闲鱼、Google Ads
Flutter 是目前最流行的跨平台解决方案之一,由谷歌推出。目前来说, Flutter 是一众跨平台 APP 框架中性能最好的。
Flutter 使用的编程语言为 Dart,一款谷歌自行研发的语言,目前主要的应用场景仅为开发 Flutter 应用。
换句话说,你学习 Dart 这门语言就只能用来开发 Flutter,除此之外很少有应用场景。




React Native
编程语言:HTML、CSS、JavaScript
代表产品:Facebook、Instagram、QQ 空间
React Native 是Facebook于2015年4月开源的跨平台移动应用开发框架,其在国内外已经收获了一大批忠实用户,Facebook 也将其用在了自家多个产品上。
React Native 可以让开发者像开发网页一样来开发跨平台的移动应用。既保留了 React 的开发效率,又同时拥有原生应用的良好体验。虽然我们使用的是 JavaScript 语言编写的代码,但是实际上是调用了原生的 API 和原生的 UI 组件。因此,体验和性能足以媲美原生应用。




uni-app
编程语言:HTML、CSS、JavaScript
uni-app 是一个使用 Vue 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台。
可以简单地理解为 uni-app 是先在手机上运行一个浏览器,再通过浏览器来运行你的APP网页,这使得其运行速度相对于原生开发会差一些。
https://uniapp.dcloud.io/h5/ (二维码自动识别)

uni-app 的优势在于其国内多个小程序平台的支持,缺点就是执行速度、第三方库的数量与调用原生功能的能力不如 Flutter 或 React Native。
小结
原生在执行速度,使用体验上无疑是最佳的。但因为需要针对不同的平台招聘不同的开发者,研发的成本会比较高。所以一般是大公司使用原生开发,而很多中小公司或创业公司则偏向于跨平台的解决方案。
如果你想学最热门的技术:Flutter
如果首先考虑就业:Flutter、uni-app、React Native
如果你注重APP体验:IOS原生、安卓原生
桌面应用
在桌面应用上同样有原生开发与跨平台的开发方案,由于现在的 Electron 、Qt 等跨平台的框架开发出来的产品在用户使用体验上已经不逊色原生开发,所以这里只谈及跨平台的框架。




Electron
编程语言:HTML、CSS、JavaScript
代表产品:VS Code、WhatsApp、Twitch
如果说要写桌面程序,首要推荐 Electron。Electron是通过写网页的方式来写桌面应用,其根本的原理就是先运行了一个浏览器内核,再通过这个内核去执行我们写好的网页应用。
同时弊端也很明显了,就是不管多简单的一个应用,由于都必须带上一个浏览器内核,使得我们的程序至少一百MB左右的大小,并且由于需要先运行浏览器,所以应用在打开时会略微有点慢。




Qt
编程语言:C++、Python、Java、Go
代表产品:WPS、Maya、Opera、咪咕音乐
Qt 是一款跨平台的开源框架,从 1991 年诞生到现在已有不少的年头,先后被诺基亚和 Digia 收购。由于桌面应用开发领域一直比较稳定,不像手机应用开发的框架,能一年冒出好几个,所以 Qt 一直是桌面应用开发领域的领头羊。
虽然 Qt 支持了挺多编程语言,但通常来说还是习惯使用 C++ 来编程。由于 Qt 是使用的 C++ 开发,所以执行速度上很快,但同时开发效率自然也会比较低下。
小结
Electron 在开发效率上略胜一筹,但执行效率略慢、打包出来的软件体积较大。Qt 打包出来的软件能很好地控制大小,执行效率也更高,用户体验同样更好,开发效率却比较低下。因此 Electron 经常被用来开发音乐软件、播放器、社交软件等更新频率高的软件,而 Qt 则更多被用来开发建模软件、图像编辑器等更新周期长、执行速度要求高的软件。
桌面应用开发上 Qt 一直占有率第一,不过最近 Electron 已有赶超的势头、出于开发成本与开发效率的考量,很多公司已经加入了 Electron  的行列。
学 Electron 在很多技术上是与网页前端互通的,所以学习起来会轻松不少,而 Qt 的一些信号槽技术理念是其独有的,再搭配 C++ 这门语言,学习起来困难许多。
如果首先考虑就业:Electron
如果你想学习最新的开发理念:Electron
如果你以更在乎产品体验:Qt
后端开发
编程语言:Java、Python、Go、C#、C++、JavaScript
关于网站的后端,就属于一个百花齐放的状态了。
对于整个项目来说来说,他们是承载业务逻辑的核心部分。
一般来说,APP后端与网站后端所用的框架都比较一致,因为他们倾向于 IO 密集型,因为不需要大量的计算,只需要处理好密集的 HTTP 请求。很多语言都能用来开发后端,最流行的莫过于 Python、Java、Go。
而游戏的后端则倾向于大量的计算,因为很多游戏需要在服务器实时的进行计算,曾经也流行放在客户端计算,但结果就是挂逼层出不穷,毕竟把计算与数据放在客户端,就是让别人来改的。
游戏后端由于涉及很多计算,所以需要一些计算速度比较快的语言。谈到速度 C++ 肯定首当其冲,接着就是 Java 和 Go 这两个速度比较快,后端开发中也比较成熟的语言。
如果首先考虑就业:Python、Java、Go
如果是网页或APP后端:Java、Python、Go、JavaScript
如果是游戏后端:C++、Java、Go



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 15:58 , Processed in 0.263839 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表