因为现在公司的一个网站项目是用ASP.NET写的,我周末抽时间学习了一下相关的概念,对于ASP.NET有了一定的了解。 学习过程就是看一遍W3School的教程。 我没有下载Visual Studio实际编写,因为只需要能够看懂项目代码就可以了。
总体来说,我觉得微软的技术有这些特点:
复杂:微软为了让普通程序员能够上手,做了大量的工作,集成在Visual Studio里面。 你用微软的集成环境,按照教程一步步做,就可以跑出来一个东西。但是在这个过程中,你会发现接触到一堆微软特有的概念,以及用到大量微软设计出来的工具。 可能有的人认为微软的东西比较简单,刚刚毕业的大学生就可以拖拉出来一个东西。但是仔细看看,就会发现微软的东西非常复杂,每一步都隐含了大量的复杂度。 微软有自己的设计思路和概念,但是感觉挺别扭,要么是离本质有点远,要么是文档讲了一堆,你还是搞不清楚它到底是什么。
既定路线:如果按照微软设计的路线走,可以很快开发出来一个东西,但是如果需要定制,就会面对重重阻力:工具和库假设你会按照这条路走。 如果说这条路线很顺也就罢了,但是我感觉微软的设计总是不够好,感觉有些偏门,不是“大道”。
依赖:学习一个东西,牵连出来需要学习一整块的东西,而不是单独学习一个内容。同时用了微软的一个工具,就要用微软的一套工具。 这是微软的赚钱战略,如果只生存在这个环境里面就没有什么问题,但是眼界宽一些,感到被限制住就有点难受了。
学习曲线:使用微软提供的解决方案,能够很快进入状态,写一个东西出来,比单独组合工具学习曲线低。 但是再更深一步就很困难,学习曲线就陡峭起来。这里面就有一个平衡:选择更强大的工具,还是更容易理解的工具。 更强大的工具能够更快,但是带来了更多的复杂度,复杂度过高,人就无法控制了。
现在用微软解决方案的人越来越少,这是好事。作为程序员其实自主选择容易被大环境控制,其他人如果都用一个烂工具,很难独善其身。 你不可能采用一个很少有其他人会用的技术,一个是技术成熟度需要程序员的时间去堆,另外一个是项目不是一个人的事情,要有其他人一起做,或者至少能够找到维护人员。
微软的操作系统也是,国内基于微软的生态系统乱七八糟,作为程序员自己可以用linux或者apple的生态圈,但是总是免不了被其他人拉回来, 重装系统,解决问题。看到操作系统差劲的用户体验,漫天飞的木马病毒,大大小小的流氓软件,死活找不到东西的搜索引擎,不由觉得普通人真辛苦。