我声明我不黑微软
至少微软的Windows平台让我们大家学会了工作中需要的技术和知识.如C/C++, ps, coreldraw, 3dmax, pre, ug,CAD,.....这些软件对我们的工作和学习帮了很大的忙.这些重量级的产品离不开C/C++,以及汇编。C++它是最好探索编程世界的入口。学好C++,必须以学好C语言为前提。同理:学好其他语言如PHP,JS,java,又必须要以C/C++为前提。违背这个原则,你会遇到无法超越的技术瓶颈。你的编程职业生涯就会打折。
很多人没有感觉到跟着微软很疲惫吗?..
微软确实是一个喜新厌旧的公司,
微软确实是个玩软件的公司,注意是玩,举个例吧(摘自网络)
-
当java用jsp时,微软在用asp
-
当java在用java bean时,微软开始sp.net绑sql
-
当java在用Struts mvc时,微软开始webform
-
当java在用jquery时,微软开始mvc
-
当java在用extjs时,微软开始jquery。
-
当java在用html5时,微软开始extjs
-
当java在用opengl 加速html5时,微软开始html5。
-
当java在用云计算hadoop时,微软没办法玩了,因为每个cd-key都是要钱的。
曾几何时,微软的一切产品都是。NET开头的,比尔还在任的时候说把一切产品包括操作系统都统一成一种语言来编写(C#),也许工程师们做不到。。后来总是存在这样或那样的问题............
下面是一个Delphi的使用者对C#及微软件技术的一些看法:(摘自网络)
为什么继续选择DELPHI?
已经钻DELPHI很深了,当然现在DELPHI是过了最辉煌的时代。但为什么要继续下去,而不转向其它的?这是不是死脑筋?
我看了一下C#的LINQ的产生,然后又被实体框架所代替。思考了一下:
1)LINQ的确是有好处,但是所用的场景又不多,这样就会变得很鸡肋。所以说学新的东西,有时对自己来说不一定有相当大的好处。
2)软件编程发展现在,会有很多花巧的小东西,这些小东西可能带给你好处,但也不一定。只要你用不上,就没有好处。而且有些东西只是过渡性,尝试性,上家觉得不好又可能把它放弃,这的确对开发员很忌的事情,不跟M$也是这个原因。C语言很老,但到现在还是排第2,可以说明这些问题。因为C什么都可以自己做,自己做上家做轮子。它功能够单一,不需要太多东西也能排第2。
3)框架问题,其实深入一件事,在长时间编程中,会积累对自己工作有利的框架。这样自己的工作效率也会不断提高。如果跳到另一个坑,又得重新积累,所以这样不一定划得来。而框架积累到一定时,效率不一定比新玩意差多少。
4)客户要求,大部分都对语言没有要求。只要方向不变,何苦要折腾自己。也许有些客户是有要求,但这样的单子可以不做。如果对语言有要求,同理又可以要求使用什么框架,什么结构等。但是框架是千变万化,编码风格也是。一份源码,就算是最热门的语言,给另一个人维护也不容易。
5)D继续发展,不怕小众。只要还是自己用,就不怕小众。一个人只能做好自己的本份事。自己写得舒服,客户用得舒服就行。知足常乐,不必什么事都要争第1,腾出的时间可以做好其它东西。其它的事情也很重要。人就是要平衡好,如果人太苛刻,事事求最好,事事反做不好。
6)善用不起眼的小东西,思考问题。升提自己。之前我有点抱怨DELPHI分实现部分和定义部分,改代码不方便。后来用了MMX,发现这个缺点没有这么明显了。工作起来也舒服得多。最新的DELPHI XE IDE,CNPACK,MMX各种小东西不断深入再深入,发现用得好,也是不错。虽然总体和最热门的C#总有些差别,但总体问题不大,可以接受。
调试代码也是,觉得VB一类的语言可以边调试边改代码,D不能。但后来改进了调试技术和调试习惯,发现问题也不算非常大。
其实这也是处人处事的哲理,一个人也是,不必因为小小的事情,就抱怨自己的所处环境如何不好,要换这个换那个。其实生活和工作,只要用心分析,就算是在有限的资源下,不断的进行小改进,也会取得好的结果。
以上几点只是针对自己个人情况所思所想的交流见解,也许读者来说,会有另一番不同想法。
为什么尽量少用微软的工具,有原因的。。。这个问题很简单,因为微软的产品心术不正。
看官请先别爆粗口。这里所谓的心术不正,实际上并没有沦丧到36x和竞x排名之类的层次,而是更高尚一点。
微软什么心术呢?就是总想着把用户绑在自己的平台上。你一旦用上了微软的产品或者技术,很好,以后你有什么进一步的需求或者扩大规模的需要,你基本上就只能选择微软给你提供的整套解决方案,或者在微软认可的生态圈子中做出有限的调整——这些解决方案通常相当精致复杂,然而往往却并不是最佳的,而且还经常不便宜。微软所有的产品都完美地贯彻了一个宗旨:让用户从微软平台迁出的成本尽可能的高昂,以便留住客户。——即使这个产品本身很糟糕,但是这个宗旨也能很完美地体现。
试图让用户多多使用自己的平台无可厚非,但这不应该影响到真正功能的实现,不应该让用户在获得服务的时候出卖自己的选择权,或者未来的选择权。这就是为什么经常微软有解决方案,但是大家却不会首先考虑使用它。
很多人说技术在进步,不全正确.计算机的结构没有改变,你现在用的古老的C,汇编,C++知识绝对是有用的.微软用C/C++,汇编搞出的东东如:Forxpro, vb, VBScript,Asp,J++,Asp.net,Silverlight,WCF,WPF,winfom, Netframework, xna,数据库的CLR(你敢在企业级应用吗?) ........这些产品出来一些年份后,就被边缘化了的,没有一样成就了大规模的应用市场, 只是在现有计算机结构上玩玩罢了...
-
VB.NET, TypeScript, F#, C#语法美吗?我不认为美(又臭又长的代码东东,搞LINQ想减少代码量也不如意), 大量的语法糖,代码的长度让人眼花,不知道你还想不想思考业务和计算逻辑呢??这些高级语言就是微软让你使用其产品的工具.所谓“高级”就是提供商(微软)对底层知识的封装和集成,如果你深迷于它之上,你就会象现在的VB程序员或J++程序员一样被排挤掉.
-
微软的NetCore还在初级段,发展的也很快的。但是我要说的不是Net Core我说的是new framework 1.0至4.5....不管你承不承认这就是微软的技术实践,现在就是一个被边缘化的产品,说的好听一点就是玩了我们10多20年(有点过了哈,原谅!),很多人不知道什么是边缘化了,还傻傻地问为什么微软还不是在升级吗?还是回到我前面说的,兄弟年轻思想没有高度。。。看不透这些。。。哈哈。。。,但总之,说不定Net Core不知它玩到什么程度又会加入这样的行列:FoxBase, Forxpro, visual FoxPro, VB, VBScript,asp,J++,,Asp.net ASP.Net MVC, Silverlight,WebServiceWCF,SharePoint, winfomwpf, xamrain(到死不活),WinCE,WinMobile,Netframework, XNA, CLR,Remoting........NetCore。再微软决定废弃两个框架。废弃的理由是无法兼容微软自己的sql产品,linq只是在.net语言基础上衍生出来的查询范式,在linq to sql设计上提供不了对所有类型和sql控制符的映射。不过至少它还会坚持到.net 4.0以及visual studio 2010.另一个是Connected Services这个蛮有野心的框架终于因为无法渗透到特定领域,没有商业上的支持而告终。Exchange, SharePoint, Communications Server,Customer Care Framework还是作为微软的call center的产品存在。大量的微软产品稳健性太差, 这也是经济不景气和微软的行业定向性差的写实。祝愿net core成功!!
再举个细化点的例子:如最早的C#有AarryList类,后来建议不用了,用ListT来代替,还美其名曰说什么避免装拆箱,为什么不一次性搞好,浮躁!让我们做小白鼠。还有String.Replace()的功能也是很业余的,如果要指定替换次数如何办?实现起来也小小复杂。学习一下专业的python的作法(只要对客户有利,我想客户也不会说你在抄袭别人吧。日本抄袭别人的技术,现在汽车的质量相当稳定)Python: str.replace(str1, str2, 替换次数)。我见到很多python使用者的博客贴出来的算法(多是图形算法)写的相当精简,这一点C#是很难做到的。科学计算底层上还是C、fortran的天下。我声明并不是说python有多好。我想说的是在功能上应有点工匠的精神好不好,别把客户当小白鼠。对于工匹精神我想多说一点: 我们在用Winform的时候,什么互操作,什么这样引用那么引用.为了Listview, DatagridView等列表导出到Excel, CVS.....到处找三方的组件.还有那些本来很简单的问题搞得很复杂.如List<T>的FindIndex, Indexof, FindIndexAll.................参数还来个什么predicate的委托.....要查找一个子集合是如此罗嗦。。如:var subCollection = array.ToList().GetRange(2, 4);
好象在C#8.0又要改为var subCollection = array[2..^5],以前学的又要建议不用了。。哎。。。不过学习python也是可取的很多时候事物要从外部去看才能看清本质。在掌握了许多非微软的技术后,你才能够看清微软技术的优点和缺点.微软的所谓的层出不穷的新技术其实就是微软对方向的迷途动作吧...... 现在的微软不象其它公司在一个稳定市场对产品加固 如:ORACLE还是那个ORACLE, java还是那个java....python,php,delphi,photoshop, CAD,Linux, mysql还是它自已, 但是它们对自已的产品进行了功能的加强再加强...而不是丢弃...呵呵
有些微软粉丝用着微软要淘汰的产品,而微软出于对客户负责任的态度进行小小补丁,这些人还以为很好很牛逼. 思想是有点肤浅了。
-
我本想写一个这方面的文章,对兄弟们选择技术方面给点建议,可是那些刚入行或刚用微软产品的兄弟年轻气盛嘛又何必去争呢.因为这是一个生态和社会教育问题.现在培训机构为了学费就让你学微软的什么Winform,wpf, C#,vb.net,Asp.net ,...这些都是短平快可以去挣点小钱的.想提高是不可能的,因为没有基础呀,基础我就不说了 [如: 电路基础, 数学分析 数值分析 数据分析 高等代数 近世代数 空间解析几何 微分几何 概率论与数理统计 离散数学 随机过程 常微分方程 偏微分方程 运筹学 数学模型 最优化方法 复变函数与积分变换 实变函数与泛函分析.还有曲线积分 重积分 曲面积分.....] 这些选几样都让你学几年的......很多还有半路出家的想学什么人工智能,机器学习..我靠....我说不能去搞又打击了别人的积极性,只能半忽悠地说加油.我不知道你知道以前园里有个牛人.玩什么Silverlight,webservice,WCF...很溜的喔.............现在呢..也许也后悔没有听我的话..哈哈.........就说到这里吧..祝兄弟们成功!
-
引用“珍惜生命,我用python”,我可以这样说“珍惜青春,远离微软”-----所以,选择很重要,人生短暂,跟着微软10多20年,微软公司没有什么影响,而你却花费了宝贵的青春,当你还在学习微软的所谓新技术的时候,你的小孩已经长大了,你学的东东不能传授给你的小孩(除了计算原理, 数据结构, C/汇编等)你难道还要让你的小孩跟着微软为它无私奉献跟着学c#,D#, E#,F#,G#,K#..........基本上全新的东东,不是吗?
我有时候也关注一下微软也关注一下微软的粉丝想法 ,看到他一味地追逐微软的高级语言或将要被微软弃掉的产品..心里有时真的不好受...........青春可贵呀..............2002我追随.NET到现在有多少年呀..那个时候安装还需要4张光盘(MSDN 2张)............时间真快!!!
如果你觉得我说的不对,你去看看乔布斯如何评价微软的:
点这里: