C#,你真的入門了嗎?(CSDN副總韓磊談訪錄)

來源:互聯網
上載者:User
C#你真的入門了嗎?                                     孟言:大家下午好,又是我給大家主持這一期的訪談節目,今天我邀請到大名鼎鼎的韓磊,他一方面是CSDN的運營者,另一方面是著名的技術專家,前不久他翻譯了一本書,叫《Beginning C# Objects》,當時我知道的時候很詫異,我不知道為什麼他在這樣一個位置上還去作這樣一個事情,後來他跟我講了,他認為這本書很有意義,對於C#對於編程很有意義的一本書,今天請他來給我們介紹一下為什麼要翻譯這本書,有何意義?那韓磊你先給我介紹一下你為什麼會想起來翻譯這本書,因為這本書在我們看來是初級到中級的一本書。    韓磊:看起來對一個譯者來講不是一個討好的事情。    孟言:對,不是一個揚名立萬的書。    韓磊:這本書我拿到的時候他有800頁厚,我前後翻譯這本書也經過了波折,你在做一個面向初學者的一本書,看起來不太討好,最初我知道這本數之後,我知道博文有這本書之後我就要拿出來,從我作CSDN的網站開始,我就強烈感受到中國的開發人員或者世界的開發人員對編程或者認識普遍來講不是很樂觀,我感覺大家對物件導向這種感覺還不夠深入,在具體的語言上還有怎樣去物件導向很多人還欠缺一個很基本的概念或者對一個有幾年編程經驗的人也有這種問題。    孟言:對,你說的這種現象其實我也感覺到了,隨著現代的開發供給越來越完善,就是很多人在不瞭解具體原理的情況下,三下五除二就殘除一個應用了,那麼作為初學者不失為是一個快速入門的好方法,但是作為專業的開發人員,長期處於這個狀態的話,他加入一個Team之後,他寫的代碼會成為一個長期的隱患。    韓磊:對,是一個巨大的隱患,現在的IDE開發工具或者一些方便的IDE會人你拖拉的方式去寫代碼,相當於IDE給你提供了一塊一塊的磚頭讓你去砌房子,但是這樣砌出來的房子肯定不會太高,你可以做一個簡陋的雛形,做一個簡陋的窩棚,但是你想起一個帝國大廈,中央大樓根本不可能,因為真正的程式是需要一個很好的架構,很好的物件導向的一種東西,不是說靠一個IDE拖來拖去就能蓋起高樓大廈了。    孟言:對,不錯,有很多人在一知半解的情況下,“try and test”,還有人作CSS,他有的時候就那麼幾個參數,他一個一個去試, 試完了之後他覺得哪個達到它的要求效果就去用了,事實上有很多人都還不瞭解這個的試劑機制,我的朋友當中作web開發的也不少,還有很多人都受到這個拖拉的影響了,我相信你在CSDN已經作這個不少時間了,你有沒有觀察到我們的Team Dev有這樣的現象?    韓磊:其實我們的Team Dev也有這樣的問題,拿到開發平台之後有兩個極端,一個是SP那套方式,到後來有一段時間太喜歡物件導向,所以必須以對象來面向。    孟言:沒錯,那可能很難把握,這本書雖然是面向初級和中級這樣的一本書,但是他在解釋物件導向這方面確實有獨特之處,或者說他把這個事情講清楚了,那您能給我們講一下,你把這本書翻譯清楚了,那他物件導向到底是怎麼一回事?    韓磊:其實我有很多年的開發經驗,翻譯之後給我的感覺就是C#你入門了嗎?我確實沒有入門,他給我的感覺就是恰當的應用,不能濫用,我覺得濫用就是你去開發,加入他有一個很大的訪問量的網站,那這中間有很多的轉換東西,這樣東西去轉換頁面,這中間也損耗了很多的效能,其實物件導向是貫穿於其中,而不是說整篇文章去搞成資料庫這樣物件導向是不對的,這本書在教你他分做幾個部分,第一就是怎樣去物件導向,第二就是怎樣去架構或者設計應用程式,第三部分就是把所謂的UMS的藍圖轉換。    孟言:對,你剛才說的階段我相信不管是作什麼語言,很多人都經過過這個階段,我自己是C++,我們曾經都走過極端,我們如果不用物件導向,就會有一種負罪感內疚感,其實我覺得這些都是一個階段,如果走過這個階段這本數該能夠協助大家認識這個事情了。    韓磊:對,你說的這個負罪感特別有意思,負罪感是對於是誰?你是對於這個語言的發明者有負罪感嗎?這就錯了,你要對這個項目的甲方有負罪感那就對了。    孟言:對,就像你剛才舉的例子,在這個web應用中間作多層,這個層與層之間畢竟有耦合,這個耦合下來肯定經過資料庫多變的翻譯就上去了,好象用這種方式的人特別多。那段有一段時間就是在道德尚處於居高臨下的感覺,現在大家還是覺得以實用為本,如果大家看到很早的看到這本書的話,肯定可以協助大家糾正一些問題?    韓磊:對,我可以改正一些錯誤的思想,你怎麼用物件導向去搞他?或者你解決問題的領域怎麼去堅固。    孟言:你說的這個問題是物件導向中最難的問題,這個就是思想基礎大廈的問題,這個問題也不是非常的完備,你剛才提到的就是物件導向業務的一個領域。我曾經給人舉過一個例子,我們稱它為對象,如果在一個公司裡面就是要考慮這個凳子的面積體積損失以後的報價,這是物流公司要考慮的,可是如果是商場裡面,他考慮得就是廠商款式出廠價這些,對於同一個本質的東西在不同的環境裡面他是有不同的屬性的,那麼如果在一個遊戲裡面這個凳子可能會被作為殺人工具,它的重量等等就很重要了,所以你根本不可能對這個對象把他所有的方方面面全搞到位,這是不可能的,在業務環境當中去解決這個問題。    韓磊:我記得這本書第一章他就舉出個例子就是什麼是物件導向,就是在荒郊野地的一塊地,那每個人去看看到不同的東西,生物學家就看到生物多樣性,有花有草有魚,建築工程師看到了就是能把這快建設的多好多好,那小孩去看就是說我在這個樹上建設一個樹屋怎麼樣?其實每個人去看一個客觀世界的事物的時候,他對這個東西的認識是不一樣的,屬性也是不一樣的,小孩他理解的就是樹屋,建築師理解就是高樓大廈。    孟言:對,你還記不記得,咱倆90年代末期的時候,當時我們可能在接觸物件導向了,現在看來可能誤導了很多人,我們現在說物件導向是為了對客觀世界建模,沒錯,這是客觀世界的優勢,那麼需求發生一些變化的時候,所以你的改變就不會大,這個想法帶來很多副作用,就是很多人拿來一個項目之後,根本不會去想項目的具體需求,就是開始對項目的建模,而且他根本不知道這些建模的屬性和方法,所以他導致最後建了很多方法都是沒有用的,對,大概98年的時候之後uml提出,我覺得uml最大一個特點就是Access很重要。    韓磊:對,Access包括uml包括傳統方案裡面,很重要的。一定是一個使用的情境。    孟言:他是告訴大家即使是在物件導向的世界裡面你也要使用者故事來導向。    韓磊:對其實開發方法都是對客觀世界的一種翻譯,我是搞語言出身的,我經常將語言的一種例子,當時的建模是對客觀世界的一種抽象,其實翻譯裡面損失了很多東西,程式員或者比較好的程式員應該決定損失了什麼東西,保留了什麼東西,所以我的確很統一就是當時在uml方法出來之前,大家還不大理解整個系統架構的時候,那個不叫濫用是叫用的無法無天。    孟言:對,很多人都為了寫自己的應用程式,大量的重複和稀奇古怪的網域名稱,我覺得經曆過那個年代的人都徹悟了這些問題。現在的程式員沒有經曆過那些事情,一上來就有語言,還有我現在關注的Ruby,好象什麼東西都不用你自己去寫了,這樣的事情事情就會走到另外一個事情,它實際上是把物件導向當成基礎類庫,我用基礎方法去纏。    韓磊:對,有大配量序員都是這樣想的,我覺得程式員特別是入門級的程式員,就是我希望以後建的是自己的一個窩棚還是一個高樓大廈,如果真的是高樓大廈就是基礎的知識是要怎樣去掌握,這本書我覺得好處是正確的去教給你觀念,而不是拖一個東西過來去雙擊,我們現在也是這樣作,uml或者C++現在拖一個按紐過來就好了,但是你要明白,你拖一個按紐就是委託應用的一個東西,當年我們在作花視窗的時候,很多人還會去創造一個視窗,語言的視窗等等,沒有這個按紐沒有那個按鈕,其實裡面蘊含了很多很多物件導向的知識。    孟言:對,windows系統的一些。    韓磊:對,看起來很麻煩的東西,但其實是整個系統啟動並執行機制。    孟言:對,你這談的就是怎樣成為一個進階程式員的問題了。你以前是搞越南語的,程式設計語言你大概學了集種?    韓磊:我是foxpro入門的,java也搞過,C++我做過一些,我自己玩自己在一些裝置上作著應用,然後就是C#。    孟言:我學的跟你的數量差不多,其實我覺得學成一本語言沒有現實社會上說得那麼輕鬆,但實際上我不知道你是不是這麼看這個問題,剛才咱們說的那些語言沒有一個語言是輕鬆就能學好的。    韓磊:其實學一門語言是非常簡單的,無外乎就是文法和詞彙,但是如果你能把詞彙和文法都記好了,你一樣講不出地道的語言,這個道理是一樣的。    孟言:對,現在太多人在用這個。    韓磊:對,他不會主動去接納你的觀點,如果你學一門語言如果不能在段時間內不能用外語去撰寫很好的文學作品,那麼同樣你學電腦語言同樣不能夠用語言去撰寫很好的應用程式。    孟言:沒錯,剛才列舉的五六個語言,我對C++還是很有信心,但是對其他的可能沒有太足的信心,大量的實踐廣泛的思考去閱讀,我覺得作為一個程式員還是應該去into。    韓磊:對,我真的覺得追的很辛苦,但是回過頭來看,他中間的變化正好給程式員一些很好的啟示一些機會,所以我覺得那個架構編程,這是一個暢銷好的書,這是一個好的現象。    孟言:對,說說C++,第一我對他沒有很好的印象,第二就是我讀過這本書,我一直覺得這個語言的設計就是說,我們把現在的語言分為三層,我們把最底層的語言就是C++的語言,中層的語言就是java,和C#,我覺得在中層語言來說C#編程超級無敵一霸王三千這種趨勢,你剛才提到3.0,我想很多人都會有興趣,他2.0已經加進去了,4.0可能正在往裡加,至少他在文法層給你一個很動態感覺,實際上有一個問題是這樣的,其實就我所知,很多程式員連2.0都還沒有消化好,這個讓我回想起C++,作為C#的程式員應該是怎樣的?    韓磊:當時2.0已經出來了嘛,就是可以不限制與現在和未來的東西,當然你用了的確可以提升你的能力。    孟言:還是應該限制有利我們就用。    韓磊:對,而且現在技術圈裡也有人對它有一些看法。    孟言:我們這隨手插一句,就是他根本不瞭解訪問資料庫是一個非常好事的東西。    韓磊:對,那相當可怕。你自己覺得還挺好的,但是用起來就非常可怕,漏洞非常多。C#是一個中層語言,你還是要考慮的,我看到一本書就是祭司,聖殿祭司,他寫了一本2.0的書,他就沒有告訴你從頭到尾的步驟,還有微軟作的就比較好。    孟言:沒錯,我覺得現在有很大的問題就是你可以為項目忙忙碌碌,也可以為項目去採用一些做法,那麼你必須要拿出一些經理來去用心的作,這個基礎還是最重要的。    韓磊:對,有讀者就問我,我買這本數到底合適不合適?我說很難講合適不合適,他適合兩類人,一類就是我不知道如何去編程式,第二類人就是在C#這邊還是有點欠缺。    孟言:馬上微軟就要推出他的新的平台了,我現在已經用IE7.0了,web開發的領域未來的方向,還有你覺得微量的位置是怎樣的?    韓磊:那天孫輝過來提到一點就是IE6.0和IE7.0分開了,這代表微軟在作業系統更緊密的去支援網路,將來有兩種東西,一種就是微軟去實現IE的瀏覽器特性,在新的Vista上面,很多東西都具有瀏覽器的介面了,很多程式都具有瀏覽器的介面,直接可以訪問網路,或者你沒有連上網,就是本地你都可以去作,這也是一種東西,web開發是一種大的趨勢,大家都要重新整理了,我原來寫過一篇文章叫做隔夜炒的雞蛋飯,其實很早就有了,在幾年以前就有了,但是現在又火起來了,我覺得未來這會是一個趨勢,你作的東西也許會是一個趨勢,所以原來C#或者.net,他這個東西之前應該是完全沒有的,他是基於一種重新整理的東西,但是不是一定要用微軟的體系呢?這個很難講,因為他有各式各樣的開源架構,但是都能夠協助你完成任務,最好的使用者體驗,我覺得C#會是程式員的首選,這個應該注意。    孟言:說到這個作為web的方向,我倒有一個問題向跟你探討,我感覺最讓人痛苦的就是指令碼調試還有撰寫,當我們熟悉的Java還有C#它的模型很清晰,他是很全面的語言,這個事情會持續很久嗎?Java當年是一個急救章,儘管他後面作了很多改進,急救章就是急救章,他等於是早產兒,不可能繼續下去。    韓磊:對,這個不會一致持續下去,他是在逆反潮流,你在其他部分都很爽就在這個部分不爽那肯定是這個有問題,如果想的比較遠一點的話,你在伺服器端的代碼會很好的解決他這個問題,如果你運行一個很好的代碼也可以用C#來使用的話,這就是一個很好的問題。    孟言:對,我記得幾年以前就討論過這個事情,你剛才提到的很多應用程式很容易就可以訪問web,其實這樣的一個景象實現了以後,我們又何必局限在瀏覽器裡面的東西呢?並且很容易跟程式去整合去應用,而且瀏覽器有兩方面,一方面就是極大的豐富了我們生活的方式,C#這種模式改變了我們開發圖形介面的應用,另外一方面C#加大幾家廠商之間的關係,使他很長時間以來到現在我們也沒有看到他們跨平台的很漂亮的介面端。    韓磊:對,這個還是一個平台的問題。    孟言:我覺得這一頁能夠越早翻過去的話,對我們開發人員越是一個好事情。    韓磊:對,這個對開發人員或者對廠商來講都是一個好事情。    孟言:對,先修出來,然後再開源或者幹嗎。    韓磊:搞IT不要犯政治化,第二不要犯道德化,不要說微軟就是邪惡的,開源就是不邪惡的,就是說當我們去批評微軟去作業系統壟斷的時候,作業系統去變遷,其實真的是這樣的,在windows出來之前大家用的都是各式各樣的作業系統,其實在web端也是一樣的,在web一個巨大的問題就是在於他出來的太快了,還有就是不夠統一,而在這之前,每家都要作不同的瀏覽器,所以我覺得將來如果web真正去整合到一個系統裡面,對微軟肯定是一個好處,那麼Java所謂的就是一次編寫到處運行,理念是非常好的,假如你有一個百分之百的人都去用那你幹嗎還去考慮其他的呢?    孟言:對,Java作為一個很漂亮的圖形介面,說句實在話還是挺遺憾的,你剛才已經說到了我們寫程式關鍵問題還是解決IT的問題,等我們這些東西都統一了,我希望看到IT有一個更好的發展,你能不能將一下從業餘程式員開始是如果走到現在這個位置?對程式員來說如何往上走?你看我們周圍的程式員說比較局限的人還是比較多的。    韓磊:對,我感覺這個問題是這樣的,不管你作程式也好作事業也好做人也好,你的眼光一定要大,如果你想建立一個程式很好的應用高樓大廈不動搖那你一定要把架構做穩做牢,你將來做一個事業不管怎樣你一定要看你對這個事業有沒有花很長的時間去搞他,有沒有做好這個基礎?其實你跟人打交道或者跟人打交道是一樣的,這個是做人的基本道理,一個程式員用研究程式的熱情去研究和人打交道和事業打交道眼光足夠高遠,要麼就是一直做下去要麼由於專座管理,怎麼去讓這些人很好的執行你的思想,讓另一些人去滿足,這三類就是去創業,那個要求就更高一些,其實我感覺我是相信世界上道理都是一樣的,從我的立場來看都是翻譯,人的思想也是靠翻譯的,我要請你辦一件事情我需要告訴你我的思想,我的翻譯能力要非常強,我的思考能力要非常強,一定要很用心的作事。因為你鑽進去之後你不要問別人怎麼作,開發也一樣,開發是解決問題,你得有問題,這個問題一定有解決辦法,一定有方法去實現這個方法的流程,最後有方法去遵循這個流程,最終出來的東西至少不會產生壞的結果。    孟言:好,今天非常有意思,也很好玩,咱們今天就到這吧。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.