本文提出了很多F#和C#的问题,例如F#和C#的关系怎样?二者将何去何从?F#会如开发团队所预期的那样?笔者对于这些问题有了自己的独到见解。

F#.net 出来有些年头儿了,将从 VS 2010 起在 .net framework 渠道上以“一等公民”身份粉墨登场的它,将会给计算机科技与软件工业带来哪些悲喜剧呢?

鬼话F#和C#:是否会重蹈C#失利的覆辙?  F#和C# 第1张

F# 将扮演一个什么人物?在 .net fx 渠道中?在软件开发的东西中?在整个软件工业的思潮中?在计算机科技的范畴中?

F# 和C# 的联系是怎样的?二者将何去何从?F# 会如开发团队所预期的那样,替代C#,由其现在的“一等公民”身份晋升为“榜首言语”么?F# 将靠什么来完成它的雄伟野心呢?F# 和C# 的远景?

F# 引起了我许多许多的考虑……

F#.net 从 07 年有音讯以来我并没有注意到它的存在。一方面是微软还觉得 F# 不行火候,仍然对主打愈加“反常” 的 C# 这张牌的战略不变;一方面是由于我有适当长一段时间着眼于算法和底层的问题,而疏远了 .net fx 渠道。后来 VS 2010 的音讯出来了,我才注意到这世上还有 F# 这么一个玩儿玩儿。所以近来我一向在重视微软 F# 开发团队的博客,对这门“新鲜”言语有了必定程度的了解。

这儿引荐一个微软 F# 开发团队队员 Brian 的博客,还有 MSDN 上 Chris Smith 的博客。对 F#.net 还不了解的读者能够阅览他们的文章,对这门言语由浅入深有一个全面的知道。

我对 F# 真实燃起爱好,是由于我一向在寻觅一门数学化、高效、可与 C、C++ 和 .net fx 渠道交互的言语。兼具面向言语、面向对像、面向多核开发特征的函数式言语 F#.net 全面地满意我当下的需求。

我曾对 matlab 寄予厚望,不过“矩阵试验室”的一些体现让我很绝望。虽然从 Matlab 2008 / 2009 起其与 .net fx 渠道的交互现已完成,但做为一门脚本言语,它在 .net fx 渠道下的功能体现实在是不忍目睹。它的 OOP 体现也不尽善尽美——是它命中注定的。而动态数组则是 Matlab 的硬伤——这是我不得不先它搁一边的重要理由。

有人说,F# 将会超卓地为科学研究范畴服务。身世函数式言语的 F# 祖上能够追到 ML ……,现在的 F#.net 根据强壮的 .net fx 渠道,应用到科研范畴将解放更强壮的科技生产力,当然也将为微软拓荒出又一片更宽广,也更具争议的商场,带来更多的收益和费事……

好像 FP,Functional Programming 先天便是为试验室服务的。微软现在可不这么想,它便是想经过 F# 让 FP 走向软件工业。我遗漏才学,凭“感觉和经历”判别,让 FP 走向软件工业的测验想必微软不是榜首家儿,可是显着微软的动作更具商场性。

抱负是好的,FP 在软件工业是否走得通呢?现在,软件工业几乎是 IP、Imperative Programming 的全国,如三巨子 JAVA、C、C++。至少在我国的大学,理工学科的学生又有多少知道这世上有 FP 这个东西?学编程便是学 C/C++/JAVA,便是学指令式编程言语,对计算机的了解也是彻底机器化的、指令式的,而不是人性化的、数学化的——这一切看起来好像都很合理,原本么,计算机便是 0 和 1。可是这种教育的直接结果便是把学计算机的人“成功”地从学数学的人傍边分裂出来,使得计算机学生更倾向于向“代码民工”的方向蜕化而彻底忘却了计算机开端是由一帮数学家搞出来,是为数学服务的。学计算机的和学数学的学生的思维现已严峻分解,学数学的对编程不感爱好,学计算机的对数学的了解便是 ACM……

在商场和教育“狼狈为奸”的,不,是“左右开弓”的影响下,IP 在软件工业的传统实力根深柢固。FP 被关在试验室现已很久了,F# 初出茅庐,能走得顺么?

至少,F# 的呈现,让我开端从头审视自己对计算机的学习和了解。也让我有意识地去了解 FP 的前史,知道到了 IP 强大的过程中对 FP 养分的吸收。比方早在 UNIX 和 C 之前,LISP 就现已产生了 GC 机制,再比方 C#3.0 中的 LINQ 技能。每逢 IP 走到一个瓶颈,就会从 FP 那里取得创意而改进自己。这让人看到了 FP 的优异品质。

当今软件工业盛行的是 CLR 理念,即“多种言语,一种渠道”,比方微软的 CLI/.net 便是一个很好的实践。一个根植于老练、优异的渠道的新言语,将得到更广泛的推行和运用。虽然 LISP 的前史比 C 还要早,但由于 FP 自身的尊贵和渠道的约束使其得不到合理的发挥空间,被后来者 IP 抢先一步称雄商场。而 F# 一出生就架构在 .net fx 渠道上,有利于它的推行。

不得不提一提 C#,从 C# 2.0 开端我一向在重视它。我对 C# 一向持慎重的情绪,从 C# 3.0 起,它开端“反常”……听说 C# 4.0 它将变得更反常。C#,一门静态指令式高度封装面向对像言语——这是它的完好特点界说,一个一开端被规划得以为完美无瑕的 OOP 言语,被微软赋予了整合整个软件世界的重担——能够说从 C# 诞生之初,就决议了它的“反常实质”。高度的封装化让它变得很笨,比方成灾的重载结构函数,还硬生生造出许多概念,比方托付,运用起来又是那么鄙陋,所以它开端运用匿名托付,开端运用反射,所以,它开端“走向反常”。不久,C# 就傻眼了,它的 OOP 言语规划,只封装了类型,却封装不了改变,多此一举不只没有确保“开闭准则”的理念的实践,反而捆住了自己的四肢——失利吧!C# 现已是失利的了。但丫的不服啊,你赚我笨我就开端简化——所以 3.0 开端引进了 LINQ,开端“类型推导”,所以不得不愈加依靠“无耻的反射”,开端自残式地“反常”,4.0 开端,这门静态言语开端引进 dynamic,被 ILASM 编译出来之后几乎便是一坨“反射”屎……,彻底地走向“反常”吧……

带四个加号的 C# 终究干不过只要两个加号的 C++,由于 C++ 是贵族,每一步测验都走得那么当心,经过了谨慎的证明。有人试图把 C++ 给 C# 化,便是让 C++ 也走向反常,这是无耻的主意……

C# 立志让编程的体会变得愉快,VS IDE 对 C# 照料得是那样地细致入微。到现在 2010 版 VC++ 也得不到 VC# IDE 平等的待遇。C# 造就了真实的软件工人,彻彻底底的“代码民工”,让软件产业彻底走向世俗化——原本这“荣誉”应该是 JAVA 去背的,可是显着 MS VC#.net 做得更彻底——这也彻底契合 BILL GATES 创立 MS 的理念。现在微软也是这么想的——我弱智化程序员有我的道理,关于软件企业来说,人力资源的本钱要比机器本钱高得多,所以,弱智化程序员,下降程序员门槛,对软件公司来说,将能够发明更大的经济效益。

当然,JAVA 更烂,JAVA 是我见过的最烂的言语。我不才,或许还有更烂的我没见过罢……JAVA 是很精干,但不过是一“民工东西”罢了,再精干撑死也便是一“瑞士军刀”,彻底的商场化工业化的产品,从言语自身来说,它是最失利的。

F# 仍然躲在后边,微软好像现已开端默认了 C# 的失利,并开端经过引进“函数式编程思维”,测验着 FP 在软件工业中的实践,有的人以为 F# 的开展不过是为了愈加丰厚完善 C# 而做的试验罢了,但我不这么看,由于我个人以为 C# 失利了。所以换过来说,是 C# 在为 F# 做衬托,更合理。

我不知道 F# 是否会重蹈 C# 失利的覆辙,至少现在我没有找到比它更契合我要求的言语,我还会持续了解它、运用它。就算它终究仍然失利了,我仍是会用它,就像我现在还在用着 C# 相同,由于它确实精干,虽然干得很烂——没有最烂,只要更烂,言语,也正在这样不断向前开展着。

以上,便是自己对F#和C#的一些考虑。如有雷同,纯属巧合。

【修改引荐】

  1. 装备C#指令行编译器的过程介绍
  2. C#衔接数据库的办法简介
  3. 如安在C#增加鼠标右键菜单
  4. .Net Framework中的托付与事情
  5. Observer规划形式典范详解
转载请说明出处
知优网 » 鬼话F#和C#:是否会重蹈C#失利的覆辙?

发表评论

您需要后才能发表评论