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

C#對(duì)陣Java:告訴你該如何選擇

開發(fā) 后端
作為.NET平臺(tái)中的一員大將,C#擔(dān)負(fù)著.NET開發(fā)的主要責(zé)任。從51CTO-.NET頻道的調(diào)查數(shù)據(jù)來看,三分之二的程序員更關(guān)心C#的發(fā)展。本文從C#的語法角度來談一下選擇該工具的原因及意義。

51CTO-.NET頻道之前也報(bào)道過《C#與C++誰更強(qiáng)?還是關(guān)公戰(zhàn)秦瓊》,開發(fā)技術(shù)的爭(zhēng)論還是主要以工作環(huán)境需要和個(gè)人喜好為主,希望能有更多客觀的評(píng)價(jià)誕生。

1. C#的語法糖

在之前,每當(dāng)別人問起我,某個(gè)C#的新語言特性的時(shí)候,我總會(huì)說,其實(shí)就是這么一回事,他不過是一個(gè)語法糖,沒什么稀奇的,你可以看一下Reflector反編譯出來的代碼。

可是現(xiàn)在當(dāng)我仔細(xì)思考之后,發(fā)現(xiàn)其實(shí)語法糖更多地不僅僅是為了我們使用上的方便,而且是代表了一種編程模式以及思維模式的轉(zhuǎn)變。

[[12550]]

從最簡(jiǎn)單地說起,我在之前的文章說過一點(diǎn),面向過程的語言的核心不在于函數(shù),而在于處理事情的過程,而函數(shù)則完全是為了代碼的規(guī)范,以及可維護(hù)性才出現(xiàn)的。但是當(dāng)我們把若干個(gè)函數(shù)整理成了我們的類庫之后,我們除了使用上方便之外,更意味著我們需要提高我們的邏輯層次,將原本的細(xì)粒度邏輯粗化。

我看到了在winter-cn的文章中舉了這樣一個(gè)例子,把大象放入冰箱分成幾步,第一第二第三,Ivovy老大回復(fù)了這樣一句話,語言的發(fā)展是讓這些都變成一步:把大象裝入冰箱。我非常贊同,我認(rèn)為這就是未來語言的發(fā)展方向。

在我之前的文章《基于自然語言的軟件工程與程序設(shè)計(jì)》中,我談到未來語言的發(fā)展方向是基于自然語言的編程,還談到了一種理想的狀況,就是會(huì)說話的人就會(huì)寫程序。即使我們不把眼光放得這么遠(yuǎn),我認(rèn)為,只要了解業(yè)務(wù)邏輯的人就會(huì)編程,這個(gè)是完全不過分的。

接下來,我們看一個(gè)在C# 3.0 中的關(guān)鍵字:var。在之前,很多人說var最大的作用是為了讓懶的人可以不必去打字打出類型。其實(shí)我個(gè)人更認(rèn)為當(dāng)var關(guān)鍵字和我們強(qiáng)大的Visual Studio工具結(jié)合起來的時(shí)候,就在倡導(dǎo)我們用一種團(tuán)隊(duì)思維的角度去看待問題。

當(dāng)我們調(diào)用底層提供給我們的接口,或者使用其他類庫返回給我們的方法時(shí),我們不需要了解他的具體類型,我們只需要用var來得到該類型,然后用強(qiáng)大的VS開發(fā)工具的智能感知去得到我們需要的屬性(或方法)即可。

至于像Lambda表達(dá)式所提倡的FP思維,我就更不多說了。

總之,F(xiàn)irelong眼中說,C#語言越來越臃腫的語言特性,然后應(yīng)該越來越從簡(jiǎn),我個(gè)人認(rèn)為,這不是在抹殺C#的進(jìn)步,更關(guān)鍵的是在抹殺一種編程思維的進(jìn)步。

2. 語言,還是語言

在語言產(chǎn)生之初,語言之爭(zhēng)似乎就從未停止。無論是C和C++。還是Java與C#。從來都是各執(zhí)一詞,然后難分勝負(fù)。

我不是一個(gè)牛人,無法像Jeffery Zhao一樣來舉出各種各樣的理由來反對(duì)Java,或者反對(duì)其他語言。至少在我目前的階段來看,我不是一個(gè)語言方面的攻擊者。

我只能從經(jīng)濟(jì)學(xué)的角度去分析:每門語言,每門流行的語言,在市場(chǎng)上占有一定份額的語言,必定有著他的優(yōu)勢(shì)所在,否則他必定會(huì)被市場(chǎng)所淘汰。而每門語言也必然有著他的劣勢(shì),和不適用性,正是這樣才催生了其他語言的發(fā)展,從而產(chǎn)生一種平衡的關(guān)系。

在這里,我只說托管語言。從某種程度上,至少從我目前的程度上,我認(rèn)為,托管語言來開發(fā)桌面程序的確是不大合適的,相對(duì)于C++。(在此強(qiáng)調(diào),我并沒有過太多桌面程序開發(fā)的經(jīng)驗(yàn))針對(duì)當(dāng)前大多數(shù)的商業(yè)商品來說,無論是舊版的飛信,還是概念版的QQ,采用托管語言無疑都是失敗的,而我們看大部分成熟的桌面程序,還是采用C++來開發(fā),這確實(shí)也能說明一定道理。

而著名的《鬼泣4》采用C++和C#做交互來共同開發(fā),也在一定程序上說明了C#在UI上的薄弱性。(只是看新聞傳說,未經(jīng)證實(shí))

總之,我個(gè)人認(rèn)為:不要輕易地去抨擊某一門語言,每門語言都有著他的適用性,你的項(xiàng)目因?yàn)镃#而失敗,只能說是你項(xiàng)目不該選擇C#,而不能說C#無法滿足你的項(xiàng)目,就說C#是失敗的。這樣的邏輯明顯就是不對(duì)的。

3. 語言與設(shè)計(jì)模式

在之前的文章中,我拋出過這樣的一個(gè)觀點(diǎn):設(shè)計(jì)模式實(shí)際上是犧牲了語義的自然性,來換取軟件的可重用性和可維護(hù)性。

對(duì)于C#這樣一門面向?qū)ο蟮恼Z言而言,根本還是要從面向?qū)ο髞沓霭l(fā),那么面向?qū)ο蟮暮诵氖鞘裁??每個(gè)類都有章可循。

但是,在很多的時(shí)候,我們?yōu)榱藬U(kuò)展性,重用性,可維護(hù)性,不得不求助于GOF或者其他的設(shè)計(jì)模式,我個(gè)人認(rèn)為,設(shè)計(jì)模式是凸顯了“語言”的無助。

因而,在語言的層面上融入設(shè)計(jì)模式,我個(gè)人認(rèn)為,這不是一種錯(cuò)誤,相反,這卻是語言發(fā)展的必然,至少是基于面向?qū)ο笳Z言發(fā)展的必然。到面向?qū)ο笳Z言發(fā)展到極致的時(shí)候,應(yīng)該是一種我們不需要借助設(shè)計(jì)模式,只要依靠語言提供給我們的語法(或者是”語法糖“)就足夠完成我們用其他的設(shè)計(jì)模式可以完成的工作,這才是面向?qū)ο笳Z言發(fā)展的大成。

再進(jìn)一步地說,沒有任何一門編程模式是銀彈,可以解決我們的所有問題,無論是面向?qū)ο?,面向過程,還是FP,一種發(fā)展逐漸完善的語言應(yīng)該是將各種編程模式于一體,提供給程序員一種極高的思維抽象,這才是未來語言的方向。

原文標(biāo)題:輕松簡(jiǎn)單搭建Linux下的C#開發(fā)環(huán)境

鏈接:http://www.cnblogs.com/domslab/archive/2010/07/08/1774005.html

【編輯推薦】

  1. C#模式窗體中的按鈕操作
  2. C#模式窗體操作詳解
  3. C#窗體繼承原理以及實(shí)現(xiàn)淺析
  4. C#窗體關(guān)閉事件的重載實(shí)現(xiàn)淺析
  5. C#窗體位置與大小設(shè)置詳解
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2019-12-30 14:30:50

云計(jì)算公有云私有云

2016-12-29 11:01:54

ReactVue

2019-07-05 10:53:55

ReactVue前端

2012-10-10 08:44:18

NativeWebHybrid

2009-08-19 13:36:21

C++資源管理方式

2019-11-22 10:06:24

PythonGolangJava

2014-07-15 09:44:07

Linux Web服務(wù)Nginx

2020-11-06 10:41:35

酷睿i5-10600KF游戲

2019-03-10 22:21:47

框架AI開發(fā)

2015-03-05 09:39:12

專場(chǎng)培訓(xùn)

2016-01-20 11:22:17

增量部署全量部署運(yùn)維

2009-08-26 13:15:38

C#選擇控制

2017-12-27 22:13:34

2014-11-05 10:58:00

編程

2015-06-08 11:16:02

PaaS私有PaaS應(yīng)用開發(fā)

2017-10-10 16:22:21

主板芯片硬件

2009-09-04 11:15:07

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

2021-10-26 10:30:31

代碼編輯器LinuxVS Code

2020-01-03 09:57:33

Microsoft SSQL數(shù)據(jù)庫
點(diǎn)贊
收藏

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