关于选择的问题


很久之前在知乎看到了那个“一个初学者应该选择学python 2.7还是直接学python 3.*” 的问题,最近几天又推到了时间线上了,这个问题是2011年就提出来了的,没想到这么久了还这么有生命力。

关于技术选型,从编程语言诞生的那天起就成为了编程界的三大难题之一。选择开发语言,选择系统平台,选择开发框架,选择开发工具,简直随便拎一条出来都能撕逼三天三夜。每一个梦想成为软件开发大师的少年都经历过这一段痛苦的撕逼过程。看到自己选择的技术路线被其他人踩在脚下被嘲笑被唾弃,真是心如刀割,冲上去就开始撕逼了,撕了半天竟然自己都开始动摇了:”是不是这个东西真的很垃圾,是不是我也应该去尝试着用一下他说的东西?”。

每个学编程的人都应该知道编程学习第一原则:编程语言的原理都是相通的,学好了一门语言再学其他的都很简单了。嗯,对此深信不疑的人最后都牺牲了。编程语言并不是相通的,编程语言有分类,可以说同类的语言是基本相通的,但是能说不同类型的语言也相通?肯定不是的,面向过程和面向对象完全是不同的思想,过程式与函数式也完全不同,本地程序和分布式程序的开发也不是相通的。

编程语言是对项目开发影响最大的,在学习和使用编程语言的过程中,自己的思维方式也会被这门语言所改变。对于一个学过数学而没有学过编程的人来说 x=y 简直违背常理,链式调用对于C语言开发者来说也很奇怪吧。

对于一个对某个领域一知半解的新人来说,在众多选择中选择一种是很困难的,今天想学这个明天想学那个简直太花心了。更多人是这个也想学,那个也想学在不断的纠结中浪费了时间和精力最后却什么都没学好就要找工作毕业了。

按我个人的经验,学什么自然要靠个人的努力,也要考虑历史的进程,不是我自己要学这个东西,是 人民群众 要我学这个。我一开始是乱学C,Java自己看,后来武威大神教了PHP觉得PHP也不错嘛,就学了很久的PHP,如果当时我有的选,在PHP,Python,Ruby这些之中选,做一堆调研之后肯定不会选PHP吧(只是说明有更多选择的时候,往往更难选择)。这就是要考虑历史的进程,不是你想选什么就选什么的,要看缘分。

在选择技术路线之前当然要做一些调查,但是不要深入其中,因为语言各有优劣,不可能找到你中意的那种的。一个简单的方法看哪那个顺眼就选那个。比如我就是。。。哪个名字好就选哪个,虽然JavaScript名字很长,但是js只有两个字符,所以我很喜欢js的。Golang虽然也不短,但是go就只有两个字符了啊,我也很喜欢这个语言。为什么我不太喜欢python,就是名字太长了啊。没错,C是最好的。C#这种奇葩还加了个特殊字符,虽然C#加VS确实很好,但是打个名字还要按Shift键,好麻烦的。MySQL就比SQLServer短(当然最重要的是用不起SQLServer),不过现在要换到MariaDB了,让我好难选择啊。

对于其他的选择都可以用这个方法啊,Yii只有三个字符,laravel/phalcon一看名字好长;Evernote名字好长,wiz就很短(没错,我从印象笔记迁移到为知笔记了,没迁的赶紧吧)。为什么我不用ubuntu了,因为这个名字太奇葩了,最开始用的时候,都读“优班图”啊,这么读了好久最后说应该读“乌班图”,这简直是对我智商的侮辱,就再也不用了,转了Fedora和centos。

当然上面的都是瞎说,信不信由你。