前言
Swift、java、Dart(Flutter)、NodeJs、Js、Python... 现在的开发语言真丰富,真是最好的年代也是最坏的年代。 作为一个 ios 开发者,看到看到如此多的编程语言,感觉都与自己有关,感到力不从心,到底该学哪些,该如何学。不要说关键是思想是逻辑和解决问题的能力,语言不重要。 再高深的内涵都必须用语言表达出来,都要落到实地。 等你精通了某门语言,成为了专家后再来说这些话。
先来看看这些语言都有哪些特点(从我的角度理解的)详细的其实去官网都有。
Objective-C
苹果平台开发语言,很C++一样很早就有语言,由于 iphone 的火爆 产生了大量的需求,很多程序员开始学习它。主要运用在苹果平台 iphone、ipad、Mac等。
Swift
苹果新一代编程语言,现代化、高效、安全、易学易用。主要运用于苹果平台软件开发,但是支持多平台。像Linux、服务器、客户端ios/Android、物联网、脚本、Andriod 平台也是可以用Swift 开发的。机器学习 tensorflow 也有swift版本。只是目前,还不是很成熟。我学习了一段Swift,写了一些代码,仅从语言使用层面看,的确很现代,包含了很多现代语言的新特性,新思想。
现代语言相对以前的语言是:把好的编程思想直接融入的语言层面。
Dart(Flutter)
紧跟swift之后,Google 也推出了自己的现代语言 Dart,也是跨平台,主要是为了统一多端开发, Dart 我没有深入学习,但看介绍,Swift 拥有的特性,它都有或是有对应的替代特性,但内部原理,了解甚少。
Node.js
官方介绍,Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
初看介绍我是懵圈的,经过学习,基本理解其含义。 Node.js 相当于提供了一个Chrome 对 js 的功能,就是说可脱离浏览器以运行js了。
Node.js主要是用于服务器。以前的服务器对用户每一个请求,会创建一个连接来响应(耗费巨大资源),响应结束前,阻塞后面的请求。 NodeJS 对每一个请求创建一个事件(可以理解为一个回调,耗费很少资源),可以不停地接受请求。当对应的任务处理结束调用对应的回调。这样就不阻塞了。
我们自己的ios工程中也有这种思路的,对数据库的处理我们就用的是这种方案。(目前,我正在整理归纳这部分代码)
现实中的例子:
以前的Server/Apache之类 就像我们去食堂打饭,多个窗口,每个窗口多人排队等前面的人结束了轮到自己
Node.js 就像我们去面馆吃面, 一个取号机 ,每个客人拿号,面好了叫号领面
js
js/css 主要用于 web 开发。现在的JS已经远远不是我上学时学的js了,现在是大前端,各种框架我用过vue,各种功能,结合nodejs可以开发服务器,结合weex可以开发ios /android。多端融合一直是大家目标。
Python
Python 胶水代码功能强大,主要用于后端吧,我用它写过爬虫,编写过大数据,机器学习代码,用它写脚本。
Java
主要还是Android 和服务器方面用的多吧。网上这个太多,我就不多说了。
C++
主要在学校学过皮毛,C++灵活高效,写代码时,语言层面的东西考虑的要多一些,选对了API,写好了代码,才会高效。常用在服务器,游戏,底层。我工作中基本不直接使用。但是,学习C++还是很重要的,首先,C++也在不停发展,它比较复杂,可以说反应了各种编程思想和内部原理,这样学的比较全面。最重要的是现在很多语言底层都是C++实现的,C++比较擅长这些底层的东西。Objective-c 底层也有大量的C++,苹果也实现了类似STL的库,Java,Swift 底层都有C++,以前看WebKit也是C++实现。所以为了深入学习,应该了解C++。
总结
作为一个ios开发者,我认为h5/android/iOS 多端统一是大趋势。swift/dart 都是很好的语言,到底哪一个以后会更火,这个不是语言本身决定的,而是由它的生态和需求决定。iPhone 出现以前objiectiv-c 基本无人问津,而iPhone 出现之后,objective-c的火爆不言而喻。
从我目前的角度看,先学好swift理解其精髓,在语言的基础上夯实架构,设计模式,数据结构,算法等能力,时刻关注其发展状态。 也要看看Dart 适当练练手,我深信学好swift 转Dart很轻松,他们只是“形”不一样,“神”是一样的。他们推出的目的都一样,如果从战略的角度看:苹果推出Swift 是不是想让其他程序员都来学习Swift 抢Java/Android 的地盘。也为以后的大数据人工智能物联网布局。Dart又何尝没有这些考虑。
对应Js 有机会也要深入学习,本来自己是有些基础的,要拓宽向大前端靠拢,ios/android 会不会也经历PC的从CS发展到BS,我想可能性很大。
Node.js 我理解为 Web服务器或者时 前端服务器,属于大前端的范畴,也要学习。 后端逻辑处理多用java完成。
至于大数据,机器学习/神经网络,人工智能,物联网要关注了解,必然是趋势。去年自己花了不少时间学习相关内内容,本想转行加薪,最后的痛苦只有自己明白,但是自己不后悔,虽然没有转化为收入但毕竟自己学到了很多知识。
作为一个工作9年的程序员,现在自己应该明白,自己最明确的目标就是: 做一个 前端软件开发工程师(争取向后端扩展,争取向技术专家发展),至于转行 大数据,人工智能那要看机遇。
所以对于这么多语言, 精通 Swift,有空学学Dart、js,能看懂C++代码,将其思想和swift互补。拓展Swift 到大数据人工智能、机器学习/神经网络、物联网才是自己比较容易、清晰明确的道路。
不要被众多的编程语言迷惑,不焦虑, 以认真踏实的态度抓住自己吃饭的工具,解决现实问题,为家庭,更为自己努力奋斗。相信自己,只要时刻进取,就会不服老,就不会被时代抛弃。