Python
一句话概括:需要拿着游标卡尺学习的语言
Python 是一款服务器端解释型开源非编译脚本语言。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。浙江小学一年级语文一对一辅导 https://baike.hfjy.com/primary/g1-yw-type1-area4/
Python 的优势:Python 学习简单,被誉为 “最易学习的语言”
Python 的不足:Python 存在一些只在特定情况下才会出现(无法重现)的 bug
职业路线:
(1)用 Django 框架进行 Web 开发:和 Java 没什么两样。
(2)用 PIL 框架进行图形处理
(3)物联网:Raspberry Pi 等物联网平台都选择了 Python 作为开发语言
(4)Python 有一个无所不能的 Hack 库,如果认为 “打工时不可能打工的” 就去当一个自由的黑客吧
分割线
C/C++
一句话概括:大多数中国程序员的第一个语言
C 语言是面向过程语言在当代的鲁殿灵光,常用于编写操作系统。C++ 是 C 语言的一个超集,既有指针又有对象使它成为最复杂的语言。
C/C++ 的优势:几乎所有现代编程语言都脱胎于 C/C++,因此了解了 C/C++,就了解了关于编程语言的一切,非常有利于快速掌握其他各类编程语言。
C/C++ 的不足:据说 C/C++ 发明的时候为了提高入行门槛和行业收入水平刻意制造了学习难度。
C/C++ 的优势:C/C++ 可以被嵌入任何现代处理器中,几乎所有操作系统都支持 C/C++,跨平台性非常好。
C/C++ 的不足:尽管 C 语言体型小巧,可最常使用的 C++ 规模可观且拥有大量极为复杂的功能交互方式,容易造成资源浪费。
职业路线:
(1)首推 Unix/Linux 等操作系统软件的开发和嵌入式开发。
(2)Android ROM 的定制,以及 Android App 的 NDK 开发。
(3)用 Cocos2d-x 开发游戏也是 C++ 程序员的好出路。
分割线
Java
一句话概括:最长寿的语言
Java 是最典型的面向对象语言。Java 不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等坑爹概念。今明两年毕业的大学生大多是 Java 的同龄人(1995 年)。
Java 的优势:Java 平台不断迎来新功能,比如移动互联网时代的 Android,大数据时代的 Hadoop,人工智能时代的 TensorFlow。
Java 的不足:国内 Java 及其衍生技术的就业环境被培训班破坏得太厉害,培训班 HR 曾问我:“Android 不吃香了,你能推荐几个Hadoop 讲师吗?”
Java 的优势:Java 是世界上使用范围最广的语言——Java 环境安装时那句 “3 Billion Devices Run Java” 谁没见过?
Java 的不足:Java 占用大量内存,并且启动时间较长——搞 Android 的都被 Windows 系统中的 Android AVD 坑过。
职业路线:
(1)招聘网站上常见的 “招聘 Java 开发” 指的就是狭义的 Java 开发——基于 JavaEE 的后台开发,以前一度流行过 SSH 框架和SSM 框架,现在入门建议学习 SpringMVC 框架。
(2)在移动互联网时代,Java 可用于 Android App 开发。但 Java 之于 Android 的地位可能被 Kotlin 取代,并且近年培训班造成了低水平 Android 程序员的泛滥。
(3)在大数据时代,Java 可用于 Hadoop 的开发,前景非常广阔,但可能有泛滥的趋势。
(4)在人工智能时代,Java 可用于 TensorFlow 深度学习的开发。
分割线
C#
一句话概括:自称不是 Java 的 Java 语言
C#是微软看到 Java 太火了而发明的和 Java 语法差不多的语言。
C#的优势:C#的最大优势在于全面集成.Net 库,提供出色的功能与完美的库访问能力。
C#的不足:由于集成.Net 库造成跨平台能力太差。
C#的优势:VR 时代的到来让 Unity-3d 开发者有很好的发展前景。
C#的不足:目前.Net 在国内就业环境不太好,收入较低。
职业路线:
(1)招聘网站上常见的 “招聘 C#开发” 和 “招聘.Net 开发” 指的都是狭义的 C#开发——基于.Net 框架的后台开发。
(2)Unity-3d 也用 C#作为开发语言,除了能开发 3D 游戏,在 VR 时代也会大放光芒。
分割线
JavaScript
一句话概括:不是 Java 语言的语言。
JavaScript 是一种动态类型、弱类型、基于原型的直译式脚本语言,也是使用频率最高的给 HTML 网页增加动态功能的语言。外行最常闹的笑话是以为它是 Java 语言的分支。
JavaScript 的优势:作为脚本语言,JavaScript 可立即运行而无需等待服务器响应,速度非常出色。
JavaScript 的不足:代码在用户电脑上运行,可能会被别有用心的坏人恶意利用。
JavaScript 的优势:JavaScript 是动态类型语言,学习难度低。并且掌握了 JavaScript 语言就等于成为能同时开发网页(HTML5)、后台(Node.js)、移动端(React Native、Weex)的全栈工程师。
JavaScript 的不足:JavaScript 过于依赖浏览器,在不同的浏览器上有不同的表现。
职业路线:
(1)首选 HTML5 的初心:网站和手机站的前端页面开发。
(2)用 Node.js 或 Bmob 云端代码进行后台开发
(3)基于 React Native、PhoneGap、Weex、HBuilder、AppCan 进行移动开发,只需写一遍代码,就有 Android 和 iOS 两个软件
(4)微信开发:包括微信公众号、微信小游戏、微信小程序。不要把这个方向当成中国特色方向,国外的 Android 机也是需要 PWA开发的。
(5)如果以上四样全能做到,那么你就是全栈工程师。
分割线
SQL
一句话概括:数据库离不开的语言
SQL 是一种专精于数据库的特殊目的语言。用于存取数据以及查询、更新和管理关系数据库系统。
SQL 的优势:存储过程可以重复使用, 可减少数据库开发人员的工作量,开发速度快。
SQL 的不足:和 Java 语言的大多数设计模式一样,SQL 开发速度是靠牺牲运行速度换来的。
SQL 的优势:SQL 可设定只有某此用户才具有对指定存储过程的使用权,安全性好。
SQL 的不足:不同数据库系统之间的 SQL 不能完全相互通用,可移植性差。
职业路线:
(1)掌握了 SQL 可以从事 DBA(Database Administrator,即数据库管理员),主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
分割线
PHP
一句话概括:世界上最好的语言
PHP 是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,利于学习,使用广泛,主要适用于 Web 开发领域。号称 “世界上最好的语言”
PHP 的优势:PHP 学习简单,易于快速上手。
PHP 的不足:PHP 的运行速度比较慢。
PHP 的优势:历久弥新的 PHP 拥有庞大而活跃的官方社区,开发者面临的大部分难题都有现成的解决方案,很多十几年前的解决方案在当代也有指导意义。
PHP 的不足:PHP 的错误处理机制比较糟糕,以为 PHP 需要支持大量旧版本的功能。
职业路线:
(1)适合进行 Web 开发,配合 Node.js 效果更佳。
分割线
Objective-C 和 Swift
一句话概括:被培训班害苦了的语言
Objective-C 和 Swift 都是 OS X 和 iOS 系统上的专用语言。Objective-C 在三年前是国内收入最高的语言,从去年开始大量培训班输出了一大堆 “三年经验” 的速成 “iOS 工程师” 成了脉脉匿名区的笑话。
Objective-C 的优势:苹果提供了丰富的工具和库以便开发者使用 Objective-C 开发软件。
Objective-C 的不足:Objective-C 拥有自己独特的编程方法思路,与其他编程语言思路差别较大。
Swift 的优势:随着时间推移,Swift 在 iOS 和 OS X 软件中占的代码比例会越来越多。
Swift 的不足:版本更迭太快,不同版本差别过大,近年发生过几次 “从精通到重新入门” 的情况。
Objective-C 和 Swift 的优势:因为仅需要在少数平台上运行,不容易遇到兼容性问题。
Objective-C 和 Swift 的不足:这俩语言的就业环境被培训班彻底毁了,现在才开始学这两种语言可能会有像 2007 年 6000 点时入市的散户的结局。
职业路线:
(1)这两种语言都是专为 iOS 和 OS X 服务的,入行前记得先准备一台苹果电脑和苹果开发者账号。近年培训班造成了低水平Objective-C 和 Swift 程序员的泛滥。
分割线
Kotlin
一句话概括:运行在 JVM 但不是 Java 的语言
Kotlin 是最新问世的一个基于 JVM 的编程语言,专用于开发 Android。
Kotlin 的优势:和 Java 的互操作性极佳。其他 JVM 语言都实现了自己语言的标准库。而 Kotlin 则使用 Java 的标准库,只是对其进行了扩充。更轻巧,Apk 更小。
Kotlin 的不足:同时可能也继承了 Java 比较坑爹的东西。
Kotlin 的优势:因为弱化了数据类型,学习成本较 Java 低。
Kotlin 的不足:能且仅能在 Android Studio 3.0 上运行,这点有点像易语言。
职业路线:
(1)只能用来开发 Android。即使你想干点别的,除了 Android Studio 3.0 还有别的编译器吗?