不知不觉,c#已经诞生n年了,人生有几个十年?c#就浪费了整整一个十年。

这十年里面,电脑发展缓慢,而服务端和手机发展迅速,这是一个移动和后端化的十年,而这个方向,正正是c#没有关注到的,c#把注意力放在了前端,放在了电脑,虽然微软也想弄手机系统,但是失败了,为什么会失败?我也搞不清楚,总之就是失败了。

未来c#还有没有机会?实际上是蕴含一次大变革的。现在世界经济如此困难,中国经济如此困难,这一切都要求社会变革,科技变革,产业变革。既然必将有大翻盘,大革命,那固然人人都有机会。关键在于效率的提升,这个效率不是运行效率,而是应用效率,行政效率。VB诞生,是windows开发的一次革命,类似的,新世界也需要一次新的VB革命。

我的看法,这次的重点在于流程,大数据,大流量,互联关系。比如现在是农村社会,将来就是城市时代,需要的就是聚集起来的能力,一种聚集起来却不会零乱破败的能力。未来的应用,要求面向的不是个人用户,而是集团用户,要求处理的不是一个人的工具性问题,而是一群人的问题,后端必然是一套大数据,一套逻辑严密的系统,而前段是多端接入,流程复杂化。正如2000年提出来的所谓信息孤岛,这种超前的视野没有得到社会认可,而不久,这个正式成为我们需要解决的问题。

未来的应用前端,不再是华丽的界面,不再是漂亮的控件的问题,也不再是处理各种事件,营造一个人性化环境的问题,也不是一个让开发者更加快捷的问题,而是一个能够实时部署,轻车上路的问题,怎样在不同平台,和不同应用沟通,怎么匹配接口。而界面如何随着业务逻辑变化迅速便捷的对应上来的问题。说了这么多,其实有个最好的样板,那就是网页。只是网页缺乏不同app互动的能力而已。

未来前端是软件化的网页,而后端才是软件开发的重心。当从一个单机变成一个多端输入的系统,这里面的变化就要求了更多的存储能力,更好的安全边界,更好的采集能力和分析能力,因为这才是价值所在,有数据不会用,有什么意义?根本的进化,就在于软件复杂度的变化,如果以前开发的是一个小软件,将来就是一个中型软件,甚至大型系统。从程序设计语言层面来说,就是要适应这种复杂化的变动,如何让一些本来复杂很多的东西,突然变得一般程序员也能掌握了,这似乎不可能完成,但是历史上VB做到了。

可惜,c#没有做到,c#这10年,把重点花在“炫酷”二字上,你看,我做得酷不。错错错,你虽然做得很酷,但是你把一件原本就很简单的东西,变得更加复杂了,你没有降低复杂度啊,你是在添加麻烦啊!winform很土,wpf很酷,但是wpf没有很简单啊!同理很多很多都是这样的结果。c#不断的推出更炫酷的技术,简直就是嘉年华,但是缺乏方向感,不知道自己该向那个目标努力,没有能够把技术转化为对生产力的解放。而酷的结果,反而是恰恰的和这十年的潮流反向而行,行业要求的是轻便快捷,而不是不停的添加累赘!如果一个语言在效率上迷失了,那只能说它不再是一个工具,因为工具的特征就是效率。并不是说发展,或者是复杂化是错误的,语言发展和复杂化是完全正确的一件事,但是你不能让你的用户适应你,而是你变复杂,却让你的用户变得简单,这才叫效率!

因此,我观察c#这十年迷失在两点上,一个是方向,如果他在后端变得复杂,添加更多概念进来,增加程序员的“麻烦”,这未必不是不能理解的,因为目标本身就复杂化了,程序员绝对没有办法用一个简单的思维去解决原本就更加复杂的问题,程序员本身也需要学习。可惜c#选择在前段变得复杂。第二个是前面说到的,炫技而不注重效率。

微软这些年,把重心转移到云后端,想必积累了不少经验,慢慢这些成绩也会反馈到工具层面上来,因此c#还是有很大的发展前景的。

C#错过的10年的更多相关文章

  1. 不可错过的10个超棒jQuery表单操作代码片段

    jQuery 绝对是一个伟大的开源javascript类库,是帮助我们快速和高效开发前端应用的利器.可能大家在日常的开发过程中常常会处理表单相关的 javascript,在今天这篇代码片段分享文章中, ...

  2. iOS开发人员不容错过的10大工具

    内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用 ...

  3. 每位iOS开发人员不容错过的10大实用工具

    内容简介 1.iOS简介 2.iOS开发十大实用工具之开发环境 3.iOS开发十大实用工具之图标设计 4.iOS开发十大实用工具之原型设计 5.iOS开发十大实用工具之演示工具 6.iOS开发十大实用 ...

  4. Android程序员不容错过的10款在线实用工具

    Android十款在线工具,在做Android开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了.Android在线工具,包括在线测试工具,及其他较为重 ...

  5. Web开发人员不容错过的10个HTML5工具

    HTML5已经成为当今世界的一个必定组成部分.由于World Wide Web万维网是使用超文本标记语言来架构和呈现的,于是HTML5成为了最流行的编程语言之中的一个.随着网络的不断扩张,Web开发者 ...

  6. Web开发者不容错过的10个HTML5工具

    HTML5已经成为当今世界的一个必然组成部分.由于World Wide Web万维网是使用超文本标记语言来架构和呈现的,于是HTML5成为了最流行的编程语言之一.随着网络的不断扩张,Web开发人员非常 ...

  7. 每位iOS开发者不容错过的10大有用工具

    内容简单介绍 1.iOS简单介绍 2.iOS开发十大有用工具之开发环境 3.iOS开发十大有用工具之图标设计 4.iOS开发十大有用工具之原型设计 5.iOS开发十大有用工具之演示工具 6.iOS开发 ...

  8. 学习Swift,一定不能错过的10大开源项目!

    如果你是位iOS开发者,或者你正想进入该行业,那么Swift为你提供了一个绝佳的机会.Swift的设计非常优雅,较Obj-C更易于学习,当然也非常强大. 为了指导开发者使用Swift进行开发,苹果发布 ...

  9. Web开发者不容错过的10段CSS代码

    Web开发技术每年都在革新,浏览器已逐渐支持CSS3特性,并且网站设计师和前端开发者普遍采用这种新技术进行设计与开发.但仍然有一些开发者迷恋着一些CSS2代码. 本文将分享20段非常专业的CSS2/C ...

随机推荐

  1. iOS Version 和 Build 版本号

    Version 和 Build 版本号 开发者都知道,无论是对于 iOS 和 Android 的应用,每个应用都有两个不同的版本号.分别是: Version Build(在 Android 上叫 Ve ...

  2. Sharepoint学习笔记—其它—如何知道某个Sharepoint环境的安装类型

    我们在安装sharepoint 2010时会出现三种安装类型: Standalone, Server Farm Standalone与Server Farm Complete. Standalone ...

  3. Android Activity launchMode研究

    Android Activity launchMode研究 Activity的Launch mode一共有四种: standard, singleTop, singleTask, singleInst ...

  4. Google C++单元测试框架GoogleTest---TestFixture使用

    一.测试夹具(Test Fixtures):对多个测试使用相同的数据配置 如果你发现自己写了两个或更多的测试来操作类似的数据,你可以使用测试夹具.它允许您为几个不同的测试重复使用相同的对象配置. 要创 ...

  5. 基于Ruby的watir-webdriver自动化测试方案与实施(一)

    基于Ruby的watir-webdriver自动化测试方案与实施(五)   基于Ruby的watir-webdriver自动化测试方案与实施(四)   基于Ruby的watir-webdriver自动 ...

  6. RMAN备份脚本一列分享

    在ORACLE数据库中,RMAN备份的脚本非常多,下面介绍一例shell脚本如何通过RMAN备份,以及FTP上传RMAN备份文件以及归档日志文件的脚本. fullback.sh 里面调用RMAN命令做 ...

  7. jQuery中多个元素的Hover事件

    1.需求简介 jQuery的hover事件只是针对单个HTML元素,例如: $('#login').hover(fun2, fun2); 当鼠标进入#login元素时调用fun1函数,离开时则调用fu ...

  8. [译文]通过ID, TagName, ClassName, Name, CSS selector 得到element

    致谢原文: <http://xahlee.info/js/js_get_elements.html> 通过ID得到element: Document.getElementById(id s ...

  9. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理9

    前两天因有事就没来得及写.今天刚刚好空了.这次写的是对角色和管理员对页面按钮之间的控制.先看页面效果 说明:先根据角色设置好角色的权限,然后管理员在对应的角色下的权限去设置其权限. 在设置角色权限的时 ...

  10. [Java入门笔记] Java语言基础(五):数组

    简介 数组可用用于存储存储多个数据,Java的数组要求所有的数组元素具有一种相同的数据类型.一旦数组初始化完成,数组在内存中的空间被固定下来,长度不可改变,即使把数组的元素清空,所占用的空间依然被保留 ...