自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大話F#和C#:是否會重蹈C#失敗的覆轍?

開發(fā) 后端
本文提出了很多F#和C#的問題,例如F#和C#的關(guān)系怎樣?二者將何去何從?F#會如開發(fā)團(tuán)隊(duì)所預(yù)期的那樣?筆者對于這些問題有了自己的獨(dú)到見解。

F#.net 出來有些年頭兒了,將從 VS 2010 起在 .net framework 平臺上以“一等公民”身份粉墨登場的它,將會給計(jì)算機(jī)科技與軟件工業(yè)帶來哪些悲喜劇呢?

F# 將扮演一個(gè)什么角色?在 .net fx 平臺中?在軟件開發(fā)的工具中?在整個(gè)軟件工業(yè)的思潮中?在計(jì)算機(jī)科技的領(lǐng)域中?

F# 和C# 的關(guān)系是怎樣的?二者將何去何從?F# 會如開發(fā)團(tuán)隊(duì)所預(yù)期的那樣,取代C#,由其現(xiàn)在的“一等公民”身份晉升為“第一語言”么?F# 將靠什么來實(shí)現(xiàn)它的宏偉野心呢?F# 和C# 的前景?

F# 引起了我很多很多的思考……

F#.net 從 07 年有消息以來我并沒有注意到它的存在。一方面是微軟還覺得 F# 不夠火候,仍然對主打愈加“變態(tài)” 的 C# 這張牌的策略不變;一方面是由于我有相當(dāng)長一段時(shí)間著眼于算法和底層的問題,而疏遠(yuǎn)了 .net fx 平臺。后來 VS 2010 的消息出來了,我才注意到這世上還有 F# 這么一個(gè)玩兒玩兒。于是近來我一直在關(guān)注微軟 F# 開發(fā)團(tuán)隊(duì)的博客,對這門“新鮮”語言有了一定程度的了解。

 這里推薦一個(gè)微軟 F# 開發(fā)團(tuán)隊(duì)隊(duì)員 Brian 的博客,還有 MSDN 上 Chris Smith 的博客。對 F#.net 還不了解的讀者可以閱讀他們的文章,對這門語言由淺入深有一個(gè)全面的認(rèn)識。

我對 F# 真正燃起興趣,是由于我一直在尋找一門數(shù)學(xué)化、高效、可與 C、C++ 和 .net fx 平臺交互的語言。兼具面向語言、面向?qū)ο?、面向多核開發(fā)特色的函數(shù)式語言 F#.net 全面地滿足我當(dāng)下的需要。

我曾對 matlab 寄予厚望,不過“矩陣實(shí)驗(yàn)室”的一些表現(xiàn)讓我很失望。盡管從 Matlab 2008 / 2009 起其與 .net fx 平臺的交互已經(jīng)實(shí)現(xiàn),但做為一門腳本語言,它在 .net fx 平臺下的性能表現(xiàn)實(shí)在是慘不忍睹。它的 OOP 表現(xiàn)也不盡如人意——是它命中注定的。而動態(tài)數(shù)組則是 Matlab 的硬傷——這是我不得不先它擱一邊的重要理由。

有人說,F(xiàn)# 將會出色地為科學(xué)研究領(lǐng)域服務(wù)。出身函數(shù)式語言的 F# 祖上可以追到 ML ……,現(xiàn)在的 F#.net 基于強(qiáng)大的 .net fx 平臺,應(yīng)用到科研領(lǐng)域?qū)⒔夥鸥鼜?qiáng)大的科技生產(chǎn)力,當(dāng)然也將為微軟開辟出又一片更廣闊,也更具爭議的市場,帶來更多的收益和麻煩……

似乎 FP,F(xiàn)unctional Programming 先天就是為實(shí)驗(yàn)室服務(wù)的。微軟目前可不這么想,它就是想通過 F# 讓 FP 走向軟件工業(yè)。我疏漏才學(xué),憑“感覺和經(jīng)驗(yàn)”判斷,讓 FP 走向軟件工業(yè)的嘗試想必微軟不是第一家兒,但是顯然微軟的動作更具市場性。

理想是好的,F(xiàn)P 在軟件工業(yè)是否走得通呢?目前,軟件工業(yè)幾乎是 IP、Imperative Programming 的天下,如三巨頭 JAVA、C、C++。至少在中國的大學(xué),理工學(xué)科的學(xué)生又有多少知道這世上有 FP 這個(gè)東西?學(xué)編程就是學(xué) C/C++/JAVA,就是學(xué)命令式編程語言,對計(jì)算機(jī)的理解也是完全機(jī)器化的、命令式的,而不是人性化的、數(shù)學(xué)化的——這一切看起來似乎都很合理,本來么,計(jì)算機(jī)就是 0 和 1。但是這種教育的直接后果就是把學(xué)計(jì)算機(jī)的人“成功”地從學(xué)數(shù)學(xué)的人當(dāng)中割裂出來,使得計(jì)算機(jī)學(xué)生更傾向于向“代碼民工”的方向墮落而完全忘卻了計(jì)算機(jī)最初是由一幫數(shù)學(xué)家搞出來,是為數(shù)學(xué)服務(wù)的。學(xué)計(jì)算機(jī)的和學(xué)數(shù)學(xué)的學(xué)生的思維已經(jīng)嚴(yán)重分化,學(xué)數(shù)學(xué)的對編程不感興趣,學(xué)計(jì)算機(jī)的對數(shù)學(xué)的理解就是 ACM……

在市場和教育“狼狽為奸”的,不,是“雙管齊下”的影響下,IP 在軟件工業(yè)的傳統(tǒng)勢力根深蒂固。FP 被關(guān)在實(shí)驗(yàn)室已經(jīng)很久了,F(xiàn)# 初出茅廬,能走得順么?

至少,F(xiàn)# 的出現(xiàn),讓我開始重新審視自己對計(jì)算機(jī)的學(xué)習(xí)和理解。也讓我有意識地去了解 FP 的歷史,認(rèn)識到了 IP 壯大的過程中對 FP 營養(yǎng)的吸收。比如早在 UNIX 和 C 之前,LISP 就已經(jīng)產(chǎn)生了 GC 機(jī)制,再比如 C#3.0 中的 LINQ 技術(shù)。每當(dāng) IP 走到一個(gè)瓶頸,就會從 FP 那里獲得靈感而改良自己。這讓人看到了 FP 的優(yōu)秀品質(zhì)。

當(dāng)今軟件工業(yè)流行的是 CLR 理念,即“多種語言,一種平臺”,比如微軟的 CLI/.net 便是一個(gè)很好的實(shí)踐。一個(gè)根植于成熟、優(yōu)秀的平臺的新語言,將得到更廣泛的推廣和使用。盡管 LISP 的歷史比 C 還要早,但由于 FP 本身的高貴和平臺的限制使其得不到合理的施展空間,被后來者 IP 搶先一步稱霸市場。而 F# 一出世就架構(gòu)在 .net fx 平臺上,有利于它的推廣。

不得不提一提 C#,從 C# 2.0 開始我一直在關(guān)注它。我對 C# 一直持謹(jǐn)慎的態(tài)度,從 C# 3.0 起,它開始“變態(tài)”……據(jù)說 C# 4.0 它將變得更變態(tài)。C#,一門靜態(tài)命令式高度封裝面向?qū)ο裾Z言——這是它的完整屬性定義,一個(gè)一開始被設(shè)計(jì)得以為完美無瑕的 OOP 語言,被微軟賦予了整合整個(gè)軟件世界的重任——可以說從 C# 誕生之初,就決定了它的“變態(tài)本質(zhì)”。高度的封裝化讓它變得很笨,比如成災(zāi)的重載構(gòu)造函數(shù),還硬生生造出很多概念,比如委托,使用起來又是那么猥瑣,于是它開始使用匿名委托,開始使用反射,于是,它開始“走向變態(tài)”。不久,C# 就傻眼了,它的 OOP 語言設(shè)計(jì),只封裝了類型,卻封裝不了變化,多此一舉不僅沒有保證“開閉原則”的理念的實(shí)踐,反而捆住了自己的手腳——失敗吧!C# 已經(jīng)是失敗的了。但丫的不服啊,你賺我笨我就開始簡化——于是 3.0 開始引入了 LINQ,開始“類型推導(dǎo)”,于是不得不更加依賴“無恥的反射”,開始自殘式地“變態(tài)”,4.0 開始,這門靜態(tài)語言開始引入 dynamic,被 ILASM 編譯出來之后簡直就是一坨“反射”屎……,徹底地走向“變態(tài)”吧……

帶四個(gè)加號的 C# 最終干不過只有兩個(gè)加號的 C++,因?yàn)?C++ 是貴族,每一步嘗試都走得那么小心,經(jīng)過了嚴(yán)謹(jǐn)?shù)恼撟C。有人妄圖把 C++ 給 C# 化,就是讓 C++ 也走向變態(tài),這是無恥的想法……

C# 立志讓編程的體驗(yàn)變得愉快,VS IDE 對 C# 照顧得是那樣地細(xì)致入微。到現(xiàn)在 2010 版 VC++ 也得不到 VC# IDE 同等的待遇。C# 造就了真正的軟件工人,徹徹底底的“代碼民工”,讓軟件產(chǎn)業(yè)徹底走向世俗化——本來這“殊榮”應(yīng)該是 JAVA 去背的,但是明顯 MS VC#.net 做得更徹底——這也完全符合 BILL GATES 創(chuàng)建 MS 的理念。現(xiàn)在微軟也是這么想的——我弱智化程序員有我的道理,對于軟件企業(yè)來說,人力資源的成本要比機(jī)器成本高得多,所以,弱智化程序員,降低程序員門檻,對軟件公司來說,將可以創(chuàng)造更大的經(jīng)濟(jì)效益。

當(dāng)然,JAVA 更爛,JAVA 是我見過的最爛的語言。我不才,可能還有更爛的我沒見過罷……JAVA 是很能干,但不過是一“民工工具”而已,再能干撐死也就是一“瑞士軍刀”,完全的市場化工業(yè)化的產(chǎn)物,從語言本身來說,它是最失敗的。

F# 依然躲在后面,微軟似乎已經(jīng)開始默認(rèn)了 C# 的失敗,并開始通過引入“函數(shù)式編程思想”,嘗試著 FP 在軟件工業(yè)中的實(shí)踐,有的人認(rèn)為 F# 的發(fā)展不過是為了更加豐富完善 C# 而做的實(shí)驗(yàn)而已,但我不這么看,因?yàn)槲覀€(gè)人認(rèn)為 C# 失敗了。所以換過來說,是 C# 在為 F# 做鋪墊,更合理。

我不知道 F# 是否會重蹈 C# 失敗的覆轍,至少目前我沒有找到比它更符合我要求的語言,我還會繼續(xù)了解它、使用它。就算它最終依然失敗了,我還是會用它,就像我現(xiàn)在還在用著 C# 一樣,因?yàn)樗拇_能干,盡管干得很爛——沒有最爛,只有更爛,語言,也正在這樣不斷向前發(fā)展著。

以上,就是本人對F#和C#的一些思考。如有雷同,純屬巧合。

【編輯推薦】

  1. 配置C#命令行編譯器的步驟介紹
  2. C#連接數(shù)據(jù)庫的方法簡介
  3. 如何在C#添加鼠標(biāo)右鍵菜單
  4. .Net Framework中的委托與事件
  5. Observer設(shè)計(jì)模式范例詳解
責(zé)任編輯:book05 來源: csdn
相關(guān)推薦

2017-09-01 17:05:16

CNCFOpenStack服務(wù)

2009-08-04 14:23:55

C# Actor

2012-06-15 13:11:33

Windows 8Vista

2016-12-02 19:56:11

2022-11-10 08:26:54

.NET 7C# 11

2009-08-13 17:04:09

C#語言C#程序

2009-08-27 16:11:03

C# delegateC# event

2009-08-25 17:15:50

C#隱藏C#重寫C#重載

2009-08-19 16:50:32

Visual C#C#語言特性

2009-08-26 10:34:15

C#類型C#變量

2009-08-27 16:18:47

C#類C#結(jié)構(gòu)體

2009-08-26 09:54:45

C#打印預(yù)覽C#打印

2024-10-31 09:51:28

2021-04-14 06:53:52

C# 修飾符 Public

2009-08-10 10:04:25

C#抽象類C#接口

2009-09-01 17:51:47

C#拆箱C#裝箱

2009-07-30 15:24:13

C#析構(gòu)函數(shù)C#構(gòu)造函數(shù)

2009-08-25 17:21:31

C#索引

2009-09-02 17:10:45

C#語言入門

2009-08-19 10:09:21

C#和C++
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號