本文是MVP Ediwang写的回忆一个80后的拖控件的感悟,与君共勉:

每一代人都有记忆里的味道。煤球炉、黑白电视机是属于父母的记忆。而“拖控件”式编程,启蒙了无数像我这样的80后(嗯,89也算80后)。

经典旧世

2000 年那个时候,上海这样的城市里也不是每家每户都有电脑,我家也没有电脑。我在学校经常听几位家里条件不错的同学说他们玩电脑的事情。CIH、千年虫等名词让我对电脑有着非常强烈的好奇心。而我第一次体验到计算机,是在我母亲单位的机房里。它是一台卧式机箱、15寸 CRT 凸面屏显示器的 Windows 95 电脑。

当时的微软对我来说就是神的存在。因为我认识电脑到使用电脑的一切几乎都离不开这家伟大的公司,它就像上帝一样开天辟地,创造万物:WindowsOfficeIE这些当年几乎是唯一的主流产品。而微软的创始人之一比尔·盖茨也成了我的偶像。还记得当年,上海有个PC专题的电视频道,有一天该频道播放了比尔盖茨关于.NET战略的演讲,啥也不懂的我,居然坐在电视机前完整看完了节目。当时的我并不知道,.NET将会彻底改变我的人生轨迹。

图:《人民网》报道 .NET 战略

可能对于现在的年轻一代程序员来说,并不知道“拖控件”是什么意思。在我小时候,当年最流行的编程启蒙语言并不是Python和那满地的少儿培训班,而是Visual Basic 6.0。VB6之所以被称为”toy language”,就是因为它提供了图形界面的可视化设计器,只要拖拽控件(如按钮、文本框)到窗口上,就可以通过事件驱动的模型来编程,极易上手。

而我在VB6上没拖多久控件,就不小心误入了 .NET 的世界,起因是小时候不懂,为了更新编程环境,不小心购买了一张 Visual Studio .NET 的盗版光盘,装完了发现,这个VB怎么和以前的不太一样啊,从此走上了不归路……

图:Visual Studio .NET on Windows 2000

图:Visual Basic .NET 代码

控件的远征

无数程序员就这样拖出了一个时代。工业、医疗、零售、制造、物流等行业至今仍然随处可见 .NET 拖出来的Windows Form、WPF甚至ASP.NET WebForm系统。Visual Studio强大的工具支持,以及拖控件事件编程模型,虽然让生产力发挥到了极致,但也成了不少人对.NET固有的印象:“你这种用.NET的,拖拖控件,小学生都会!

拖控件生态,也养活了诸如DevExpressTelerik葡萄城等队友。这些三方厂商提供了比微软.NET Framework内置控件更强大的免费或收费的控件库,配合Visual Studio使用,开发效率简直恐怖。

控件王之怒

但正常的 .NET程序员都知道,控件只不过是 GUI 应用的一种形式而已。ASP.NET MVC、Web API、Signal R等框架根本拖不了控件。根深蒂固的 “.NET就是拖控件” 的思想,也闹出过笑话。记得8年前,微软刚推出 ASP.NET MVC 3 框架不久,我所在的公司就接到了一个 MVC 的新项目,由于整个部门200多人只有我研究过MVC,公司就派我去给客户做个POC。我第一天就被高级研发经理训斥了:“公司为了这个项目花钱买了 DevExpress 的 ASP.NET 控件,你为什么不用啊?” 。面对公司白买的控件,我笑出了眼泪,就像这样:

最新文章

  1. [AS3.0] FMS改变录制视频的默认地址
  2. redis 多数据库
  3. 多校6 1003 HDU5795 A Simple Nim (sg函数)
  4. 使用Twisted进行socket编程
  5. mongodb----修改器
  6. ICT工作的思考<两>
  7. 再起航,我的学习笔记之JavaScript设计模式27(链模式)
  8. win10 uwp 切换主题
  9. Anaconda系统中管理程序包(Package)
  10. | dp-the Treasure Hunter
  11. 云笔记项目-Spring事务学习-传播NESTED
  12. Spring缓存注解@Cacheable、@CacheEvict、@CachePut使用
  13. bootstrap-table前端修改后台传来的数据重新进行渲染
  14. css:清楚浮动
  15. linux centos 访问根目录 not accessable
  16. vRealize Automation的REST API Reference在哪里可以看到?
  17. Tomcat7启动报Error listenerStart错误
  18. Python—— *与** 参数说明
  19. Android之网络丢包事件
  20. 小tip: CSS后代选择器可能的错误认识——张鑫旭

热门文章

  1. CodeForces 507E Breaking Good 2维权重dij
  2. CF 435B Little Pony and Harmony Chest
  3. Codeforces Round #484 (Div. 2) B. Bus of Characters(STL+贪心)982B
  4. springmvc 全局异常解决方案
  5. NGINX的启停命令、以及动态加载配置文件的命令
  6. EditPlus5.0破解激活
  7. ResourceDictionary主题资源替换(二) :通过加载顺序来覆盖之前的主题资源
  8. 粗糙版ORM(附详细注释)
  9. 服务器扩容SAN存储
  10. Linux防火墙管理