当前位置: 首页 > news >正文

“简单低级”的微软技术与研究生的贬值

简单低级”的微软技术与研究生的贬值

金旭亮

我们学校计算机技术学院给研究生们开设了一门课——《面向对象方法与技术》,这学期由我来讲授。于是我就在博客上发了一个贴子“《面向对象方法与技术》课欢迎业界朋友参与交流”(详见:http://blog.csdn.net/bitfan/archive/2009/02/23/3925577.aspx),介绍了课程的三个组成部分:OOP(以.NET 3.5为例进行剖析)-->UML 2.0-->OOAD

原贴中有一个名为river80的网友发言:

这些东西讲给研究生听,看来研究生真的贬值了.

我估计river80发这个贴子可能包含以下的意思:

1)这些内容太简单了,有必要给研究生讲吗?开设这种“小儿科”的课程:现有的中国高校研究生教育——完了!

2)研究生居然学这种简单的东西,其水平可想而知。总之:现有研究生的水平是“可疑”的,不贬值才怪!

3)这种水平的课,又是由曾被微软牛人狠批过的有着“误人子弟”头衔的金旭亮来讲,能好到哪里去?

4)……。

也许还有其他意思,毕竟我不是对方肚子里的蛔虫,不可能知道得一清二楚,以上仅是猜测。其实,我估计river80网友只是看了我的贴子,一时有感而“灌水”,并未经过仔细地思索。但其中其实涉及到一些很有趣的论题,不妨说说。再次声明:以下论点并非针对river80本人,只是我有感而发。

软件业在中国还很年轻,因此,这个行业中有很多年轻的朋友在其中努力工作,奉献着自己的聪明才智。但年轻容易气盛(特别是本身也比较能干的),很容易出现这样的现象:

在没有比较充分的调查与研究的基础上,轻易地给某个事物“贴标签”;在给某事物下结论作总结时,要么阳光明媚,要么一片漆黑。

具体到本门“研究生选修课”,如果我告诉你,这门课是“计算机学院”所开,但全校各专业研究生都可以“选”的,你还会说——研究生贬值吗?你不知道这个实际情况吧?

的确,扩招所带来的弊端非常明显,尤其是教育部今年为了应付大学生就业压力,要求扩大研究生招生规模,甚至放宽一些特定专业(比如MBA)研究生的入学要求,遭到了社会各届的强烈质疑,作为一名大学基层教师,我也是对此持不赞成的意见。有关扩招所带来的教学质量下滑,无需多说。但事情绝不是只有一面的。

我在高校呆了10年了,还是较有把握地说,哪怕本科生研究生再扩招,由于学生基数大,其中优秀的学生并不比扩招前少,甚至更多。而且由于扩招,相对降低了对分数的要求,也使一部分不太善于考试的人才得以有机会深造。另外,让学生在大学里学习几年,相比将他们全部推入社会去“自生自灭”,去“自学成材”,还是有助于提升国民总体素质的。

教育部那批被人痛骂的“官僚”,其实都是聪明人,制订出这项政策,肯定是各方利益和各种现实因素进行博弈的结果,当然,其屁股未必都坐在百姓一边。

另外,有些学生本身就是非常优秀,把他放到哪,他都能靠自身的努力而“自学成材”,这些自身素质较高的学生(尤其是年岁较长的研究生),是不太容易受到外界环境的影响的。

现在回到具体的技术领域。

我本人愚笨,学计算机学了十多年,弄.NET也有6年了,还是“水平有限公司”的。然而,我的确发现,许多说微软技术“简单”、“低级”,对此不屑一顾的人,其实对微软技术都是浅尝辄止。

软技术的特点是:起始门槛低,但易学难精。我们学校微软俱乐部的学生曾打出一个横幅——十天成为.NET程序员,给我严肃地批评过。“十天成为.NET程序员”,那业界那么多在微软平台一开发就是几年十几年的工程师们,是不是都该去跳楼了?!他们太笨了嘛!

就拿好象很简单的面向对象编程最基础概念:比如类的“静态方法”与“实例方法”,类的“实例字段”和“静态字段”,用起来“好简单啊!”。那我问几个问题:.NET程序运行的对象模型是怎样的,它怎样装载程序集,对象又是如何创建的?CLR是如何管理对象的“实例字段”和“静态字段”的?类的“静态方法”与“实例方法”都是“方法”,那么,他们编译后在内存中是放在一起吗?CLR又是通过什么机制来区分它们的?应用程序的多态特性——同一句代码在不同的上下文中会有不同的执行结果,.NET是怎么做到的?是在运行时实现的还是在编译时实现的?.NET怎么处理混合语言调用问题,你怎么能让语法完全不同的C++去继承一个VB编写的类?……

再拿广泛应用的ASP.NET技术来说,以下几个问题好多人都回答不出:

Http管线是如何处理HTTP请求的?HttpModuleHttpHandler在此管线中是什么角色?微软为什么在设计ASP.NET框架时要做这么复杂的设计,是不是“吃多了”?ASP.NET架构设计师的目的是什么?

还有.NET 3.0、3.5中引入的多项新技术,以WPF为例,其中一个引人注目的特性是依赖属性与路由事件。用一用,好神奇啊,以前困扰程序员多时的“图形重绘”和“动画缓冲”问题好象不存在了耶!比如你给WindowBackground赋一个画笔,窗体怎么就会自动应用新的画笔重绘自己,它怎么知道该绘制哪块屏幕区域,为何重绘过程没有闪烁?为何有些依赖属性可以被子元素自动地继承,而另外有些依赖属性一但改变所有的相关元素都会得到通知?为何一个在底层控件上触发的事件可以在高层被处理?……。如果仅仅在WPF中只会用XAML设计界面,啊,好简单啊!但一切真的是那么简单吗?!

还有更多的例子,我就不举了。

微软技术好简单啊!那如此简单的东西,为何你会为调试一个程序而加班到深夜最后才发现原来是自己并未真正理解了某个技术点?为何你会为一个BUG搞不掂而火冒三丈?是应该怪“微软封装得太多了”,还是应该怪自己太“浅尝辄止”了呢?

有些事情看别人做起来好象很简单,还会“奇怪”他为何不做得更好些。自己去做一做就会明白了,事情没那么简单的,有许多因素,不实地去做一下,你是无法想象的。相反,坐而论道,浅尝辄止是最容易的。

到此,这篇短文似乎可以结尾了,又似乎不能结尾,也很难结尾。我再狗尾续貂几句吧:

微软技术是不是“简单低级”,要看你钻研与应用到哪个层次,而“研究生是否贬值”,其实与个人无关。问题的关键是:自己贬值了吗?别因偷懒而被时代所淘汰哟!

金旭亮(2009.3.8于北理工)

相关文章:

  • 中缀表达式转后缀表达式
  • wxGlade wxFormBuilder
  • 价值驱动:移动支付的推手
  • 赖床随想记录
  • 世博会助中移动从3G迈向4G
  • 《中关村两个男人的斗争》外传——西直门
  • JavaScript 面向对象的使用
  • Symbian下自动切换SDK的批处理代码
  • [Web开发] 在线 Javascript 代码格式美化工具
  • 如果浏览器是女人……
  • C#几种常用的排序算法
  • DFS测试_引用状态持续缓存时间
  • “139邮箱”练好内功比发电影票更重要
  • 7 个效果震憾的 HTML5 应用组件
  • 校内网是如何赚钱的
  • 【译】JS基础算法脚本:字符串结尾
  • AngularJS指令开发(1)——参数详解
  • C++11: atomic 头文件
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • magento 货币换算
  • OSS Web直传 (文件图片)
  • Python利用正则抓取网页内容保存到本地
  • Vue学习第二天
  • web标准化(下)
  • 编写符合Python风格的对象
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 中文输入法与React文本输入框的问题与解决方案
  • ​iOS安全加固方法及实现
  • # Java NIO(一)FileChannel
  • #HarmonyOS:基础语法
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (1)SpringCloud 整合Python
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (算法设计与分析)第一章算法概述-习题
  • (一)插入排序
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • *p++,*(p++),*++p,(*p)++区别?
  • ... 是什么 ?... 有什么用处?
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET Core中的去虚
  • .NET DataGridView数据绑定说明
  • .net 按比例显示图片的缩略图
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .netcore 获取appsettings
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @GetMapping和@RequestMapping的区别
  • [ C++ ] STL---stack与queue
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作