IT行业有那么多分支,又有那么多编程语言,不可能把所有编程语言都学会,该选择哪些语言作为自己的学习方向?
| 软件开发分支 | 编程语言 | |
| Web开发 | 前端 | HTML,CSS,javascript |
| 后端 | java,C++,C#,python,Golang,PHP,Node.js,Ruby,perl | |
| 桌面开发 | C++,Java,C# | |
| 移动端开发 | java,Kotlin,swift,object-c | |
| 游戏开发 | C++,C#,java | |
我学的专业是机械设计制造及自动化,但我的兴趣并不在此,我更想找一个软件开发的工作。我根据自己的理解将软件开发分成了四种类型,并了解了一下每种开发工作需要掌握的编程语言,最后绘制成上表,考虑一般情况,表中只列出了常用的语言。
现在比较热门的还是互联网行业,互联网软件开发分为前端和后端,前端是给用户呈现内容并与用户交互的部分。前端的语言比较统一,用HTML和CSS呈现内容,用javascript实现动态化,学好这三种语言即可从事前端开发。但前端开发是我最不想做的工作,因为网页变化的太快了,做不动就会被淘汰,而且前端开发讲究漂亮、易用,我并不擅长这点。
后端是个非常考验技术的工作,除了基础的编程语言还要掌握并发、数据库等技术,以及跟语言配套的各种框架。后端的开发语言太多了,每种语言都各有优点,而编程是一种手艺活,对语言用的越熟写的越好。从事后端开发不能光靠自己的喜好选择语言,还得看看想去的公司用的什么语言,如果遇见新成立的公司,突然决定重构,要换开发语言就非常悲催了。
桌面开发是个“历史悠久”的工作,图形界面库也越发成熟,C++中最好的图形界面库是Qt,C#的图形界面库是winForm和wpf,java大多用Swing。其他语言没有成熟的图形界面库,因此不太适合做桌面开发,不过现在也有一些软件用前端技术开发桌面的图形界面。
移动端最多的就是android和iOS两大平台,如果不考虑使用高端技术,在android上开发就是用java或Kotlin,在iOS上开发就是object-c或swift,两大平台都有自己的图形界面库。
游戏开发中用的最多的是C++和C#。用C++自然是其运行效率高,适合游戏这种大运算量的应用,开放的虚幻引擎和不少封闭的游戏引擎都是用C++。而C#因为有了unity这样简单易用的游戏引擎也被广泛使用,并且C#相对于C++也更安全易用。桌面端也有些游戏用的java开发,例如著名的Minecraft。游戏开发需要掌握的不只是编程语言,更多的要掌握计算机图形技术。
我所掌握的语言是C\C++,python,C#,会用的图形界面库是Qt和wpf,这些都是随着兴趣去学的,看来我比较适合做桌面开发。