由C#風(fēng)潮想起的-給初學(xué)編程者的忠告(轉(zhuǎn)貼)
Jun 21, 2016 am 09:11 AM編程|初學(xué)
由C#風(fēng)潮想起的-給初學(xué)編程者的忠告(轉(zhuǎn)貼)
??
出處?????http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39041202,00.htm
??
我始終認(rèn)為,對一個初學(xué)者來說,IT界的技術(shù)風(fēng)潮是不可以追趕的,而且也沒有能力去追趕。我時常看見自己的DDMM們把課本扔了,去賣些價格不菲的諸如C#, VB.Net 這樣的大部頭,這讓我感到非常痛心。而許多搞不清指針是咋回事的BBS站友眉飛色舞的討論C#里面可以不用指針等等則讓我覺得好笑。C#就象當(dāng)年的ASP一樣,“忽如一夜春風(fēng)來,千樹萬樹梨花開”,結(jié)果許多學(xué)校的信息學(xué)院成了“Web 學(xué)院”。96,97級的不少大學(xué)生都去做Web 了。當(dāng)然我沒有任何歧視某一行業(yè)的意識。我只是覺得如果他們把追趕這些時髦技術(shù)的時間多花一點在基礎(chǔ)的課程上應(yīng)該是可以走得更遠(yuǎn)的。
幾個誤區(qū)
??
初學(xué)者對C#風(fēng)潮的追趕其實也只是學(xué)習(xí)過程中經(jīng)常遇到的幾個誤區(qū)之一。我將用一些實際的例子來說明這些現(xiàn)象,你可以按部就班的看看自己是不是屬于其中的一種或者幾種:
認(rèn)為計算機技術(shù)等于編程技術(shù):
有些人即使沒有這個想法,在潛意識中也有這樣的沖動。讓我奇怪的是,許多信息學(xué)院的學(xué)生也有這樣的念頭。認(rèn)為計算機專業(yè)就是編程專業(yè),與編程無關(guān)的,或者不太相關(guān)的課程他統(tǒng)統(tǒng)都不管,極端的學(xué)生只要書上沒帶“編程”兩個字他就不看。
其實編程只是計算機技術(shù)應(yīng)用過程中一種復(fù)雜性最低的勞動,這就是為什么IT業(yè)最底層的人是程序員(CODER)。計算機技術(shù)包括了多媒體,計算機網(wǎng)絡(luò),人工智能,模式識別,管理信息系統(tǒng)等等這些方面。編程工作只是在這些具體技術(shù)在理論研究或者工程實踐的過程中表達(dá)算法的過程。編程的人不一定對計算機技術(shù)的了解就一定很高。而一個有趣的現(xiàn)象是,不少大師級的計算機技術(shù)研究者是不懂編程的。網(wǎng)上的炒作和現(xiàn)實中良好的工作待遇把編程這種勞動神秘化了。其實每一個程序員心里都明白,自己這些東西,學(xué)的時候并不比其它專業(yè)難,所以自然也不會高檔到哪里去。
咬文嚼字的孔已己作風(fēng):
我見過一本女生的《計算機網(wǎng)絡(luò)原理》教材,這個女生象小學(xué)生一樣在書上劃滿了橫杠杠,筆記做得滿滿的,打印出來一定比教材還厚。我不明白的是,象計算機網(wǎng)絡(luò)原理這樣的課程有必要做筆記?我們的應(yīng)試教育的確害了不少學(xué)生,在上《原理》這一類課程的時候許多學(xué)生象學(xué)《馬列原理》一樣逐字背誦記憶。這乃是我見過的最愚蠢的行為。所謂《原理》,即是需要掌握它為什么這樣做,學(xué)習(xí)why,而不是how(怎樣做)。極端認(rèn)真的學(xué)生背下以太網(wǎng)的網(wǎng)線最大長度,數(shù)據(jù)幀的長度,每個字段的意義,IP報頭的格式等等,但是忘了路由的原則,忘了TCP/IP協(xié)議設(shè)計的宗旨??傊S多人花了大量的時間把書背得滾瓜爛熟卻等于什么也沒學(xué)。
在學(xué)習(xí)編程的時候這些學(xué)生也是這樣,他們確切的記得C++語法的各個細(xì)節(jié)。看完了C++教程后看《Thinking in C++》(確實是好書),《Inside C++》,《C++ reference》,this C++, that C++……,然后是網(wǎng)上各種各樣的關(guān)于C++語法的奇聞逸事,然后發(fā)現(xiàn)自己又忘了C++的一些語法,最后回頭繼續(xù)惡補…。有個師弟就跟我說:“C++ 太難了,學(xué)了這里忘了那里,學(xué)了繼承忘了模板。”我的回答道:“你不去學(xué)就容易了”。我并沒有教壞他,只是告訴他,死摳C++的語法就和孔已己炫耀茴香豆的茴字有幾種寫法一樣毫無意義。你根本不需要對的C++語法太關(guān)心,動手編程就是了,有不記得的地方一查MSDN就立馬搞定。我有個結(jié)論就是,實際的開發(fā)過程中對程序語法的了解是最微不足道的知識。這是為什么我在為同學(xué)用Basic(我以前從沒有學(xué)過它)寫一個小程序的時候,只花了半個小時看了看語法,然后再用半個小時完成了程序,而一個小時后我又完全忘記了Basic 的所有關(guān)鍵字。
不顧基礎(chǔ),盲目追趕時髦技術(shù):
終于點到題目上來了。大多數(shù)的人都希望自己的東西能夠馬上跑起來,變成錢。這種想法對一個已經(jīng)進(jìn)入職業(yè)領(lǐng)域的程序員或者項目經(jīng)理來說是合理的,而且IT技術(shù)進(jìn)步是如此的快,不跟進(jìn)就是失業(yè)。但是對于初學(xué)者來說(尤其是時間充裕的大中專在校生),這種想法是另人費解的。一個并未進(jìn)入到行業(yè)競爭中來的初學(xué)者最大的資本便是他有足夠的時間沉下心來學(xué)習(xí)基礎(chǔ)性的東西,學(xué)習(xí)why 而不是how。時髦的技術(shù)往往容易掌握,而且越來越容易掌握,這是商業(yè)利益的驅(qū)使,為了最大化的降低軟件開發(fā)的成本。但在IT領(lǐng)域內(nèi)的現(xiàn)實就是這樣,越容易掌握的東西,學(xué)習(xí)的人越多,而且淘汰得越快。每一次新的技術(shù)出來,都有許多初學(xué)者跟進(jìn),這些初學(xué)者由于缺乏必要的基礎(chǔ)而使得自己在跟進(jìn)的過程中花費大量的時間,而等他學(xué)會了,這種技術(shù)也快淘汰了。基礎(chǔ)的課程,比方數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng)原理等等雖然不能讓你立馬就實現(xiàn)一個linux(這是許多人嘲笑理論課程無用的原因),但它們能夠顯著的減少你在學(xué)習(xí)新技術(shù)時學(xué)習(xí)曲線的坡度。而且對于許多關(guān)鍵的技術(shù)(比方Win32 SDK 程序的設(shè)計,DDK的編程)來說甚至是不可或缺的。
一個活生生的例子是我和我的一個同學(xué),在大一時我還找不到開機按紐,他已經(jīng)會寫些簡單的匯編程序了。我把大二的所有時間花在了匯編,計算機體系結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng)原理等等這些課程的學(xué)習(xí)上,而他則開始學(xué)習(xí)HTML和VB,并追趕ASP的潮流。大三的時候我開始學(xué)習(xí)Windows 操作系統(tǒng)原理,學(xué)習(xí)SDK編程,時間是漫長的,這時我才能夠用VC開發(fā)出象模象樣的應(yīng)用程序。我曾一度因為同學(xué)的程序已經(jīng)能夠運行而自己還在學(xué)習(xí)如何創(chuàng)建對話框而懊惱不已,但臨到畢業(yè)才發(fā)現(xiàn)自己的選擇是何等的正確。和我談判的公司開出的薪水是他的兩倍還多。下面有一個不很恰當(dāng)?shù)谋确剑杭僭O(shè)學(xué)習(xí)VB編程需要4個月,學(xué)習(xí)基礎(chǔ)課程和VC的程序設(shè)計需要1年。那么如果你先學(xué)VB,再來學(xué)習(xí)后者,時間不會減少,還是1年,而反過來,如果先學(xué)習(xí)后者,再來學(xué)VB,也許你只需要1個星期就能學(xué)得非常熟練。
幾個重要的基礎(chǔ)課程
??
如果你是學(xué)生,或者如果你有充足的時間。我建議你仔細(xì)的掌握下面的知識。我的建議是針對那些希望在IT技術(shù)上有所成就的初學(xué)者。同時我還列出了一些書目,這些書應(yīng)該都還可以在書店買到。說實在的,我在讀其他人的文章時最大的心愿就是希望作者列出一個書單。
大學(xué)英語-不要覺得好笑。我極力推薦這門課程是因為沒有專業(yè)文檔的閱讀能力是不可想象的。中文的翻譯往往在猴年馬月才會出來,而現(xiàn)在的許多出版社干脆就直接把E文印刷上去。學(xué)習(xí)的方法是強迫自己看原版的教材,開始會看不懂,用多了自然熟練。吃得苦下得狠心絕對是任何行業(yè)都需要的品質(zhì)。
計算機體系結(jié)構(gòu)和匯編語言-關(guān)于體系結(jié)構(gòu)的書遍地都是,而且也大同小異,倒是匯編有一本非常好的書。《80x86匯編語言程序設(shè)計教程》(清華大學(xué)出版社,黑色封面,楊季文著)。你需要著重學(xué)習(xí)386后保護(hù)模式的程序設(shè)計。否則你在學(xué)習(xí)現(xiàn)代操作系統(tǒng)底層的一些東西的時候會覺得是在看天書。
計算機操作系統(tǒng)原理-我們的開發(fā)總是在特定的操作系統(tǒng)上進(jìn)行,如果不是,只有一種可能:你在自己實現(xiàn)一個操作系統(tǒng)。無論如何,操作系統(tǒng)原理是必讀的。這就象我們?yōu)橐粋€芯片制作外圍設(shè)備時,芯片基本的工作時序是必需了解的。這一類書也很多,我沒有發(fā)現(xiàn)哪一本書非常出眾。只是覺得在看完了這些書后如果有空就應(yīng)該看看《Inside Windows 2000》(微軟出版社,我看的是E文版的,中文的書名想必是Windows 2000 技術(shù)內(nèi)幕之類吧)。關(guān)于學(xué)習(xí)它的必要性,ZDNET上的另一篇文章已經(jīng)有過論述。
數(shù)據(jù)結(jié)構(gòu)和算法-這門課程能夠決定一個人程序設(shè)計水平的高低,是一門核心課程。我首選的是清華版的(朱戰(zhàn)立,劉天時)。很多人喜歡買C++版的,但我覺得沒有必要。C++的語法讓算法實現(xiàn)過程變得復(fù)雜多了,而且許多老師喜歡用模塊這一東西讓算法變得更復(fù)雜。倒是在學(xué)完了C版的書以后再來瀏覽一下C++的版的書是最好的。
軟件工程-這門課程是越到后來就越發(fā)現(xiàn)它的重要,雖然剛開始看時就象看馬哲一樣不知所云。我的建議是看《實用軟件工程》(黃色,清華)。不要花太多的時間去記條條框框,看不懂就跳過去。在每次自己完成了一個軟件設(shè)計任務(wù)(不管是練習(xí)還是工作)以后再來回顧回顧,每次都會有收獲。
Windows 程序設(shè)計-《北京大學(xué)出版社,Petzold著》我建議任何企圖設(shè)計Windows 程序的人在學(xué)習(xí)VC以前仔細(xì)的學(xué)完它。而且前面的那本《Inside Windows 2000》也最好放到這本書的后面讀。在這本書中,沒有C++,沒有GUI,沒有控件。有的就是如何用原始的C語言來完成Windows 程序設(shè)計。在學(xué)完了它以后,你才會發(fā)現(xiàn)VC其實是很容易學(xué)的。千萬不要在沒有看完這本書以前提前學(xué)習(xí)VC,你最好碰都不要碰。我知道的許多名校甚至都已經(jīng)用它作為教材進(jìn)行授課??梢娖渲匾?br>
上面的幾門課程我認(rèn)為是必學(xué)的重要課程(如果你想做Windows 程序員)。
對于其它的課程有這樣簡單的選擇方法:如果你是計算機系的,請學(xué)好你所有的專業(yè)基礎(chǔ)課。如果不是,請參照計算機系的課程表。如果你發(fā)現(xiàn)自己看一本書時無法看下去了,請翻到書的最后,看看它的參考文獻(xiàn),找到它們并學(xué)習(xí)它們,再回頭看這本書。如果一本書的書名中帶有“原理”兩個字,你一定不要去記憶它其中的細(xì)節(jié),你應(yīng)該以一天至少50頁的速度掌握其要領(lǐng)。盡可能多的在計算機上實踐一種理論或者算法。
你還可以在CSDN上閱讀到許多書評。這些書評能夠幫助你決定讀什么樣的書。
日三省乎己
每天讀的書太多,容易讓人迷失方向。一定要在每天晚上想想自己學(xué)了些什么,還有些什么相關(guān)的東西需要掌握,自己對什么最感興趣,在一本書上花的時間太長還是不夠等等。同時也應(yīng)該多想想未來最有可能出現(xiàn)的應(yīng)用,這樣能夠讓你不是追趕技術(shù)潮流而是引領(lǐng)技術(shù)潮流。同時,努力使用現(xiàn)在已經(jīng)掌握的技術(shù)和理論去制作具有一定新意的東西。堅持這樣做能夠讓你真正成為一個軟件“研發(fā)者”而不僅僅是一個CODER。
把最多的時間花在學(xué)習(xí)上
這是對初學(xué)者最后的忠告。把每個星期玩SC或者CS的時間壓縮到最少,不玩它們是最好的。同時,如果你的ASP技術(shù)已經(jīng)能夠來錢,甚至有公司請你兼職的話,這就證明你的天份能夠保證你在努力的學(xué)習(xí)之后取得更好的收益,你應(yīng)該去做更復(fù)雜的東西。眼光放長遠(yuǎn)一些,這無論是對誰都是適用的。
相信你已經(jīng)能夠決定是否學(xué)習(xí)C?;蛘呤裁磿r候去學(xué)它了。
--------------------------------------------------------------------------------
劉巍 - 高級程序員、軟件設(shè)計師,精通VC,VB,COM,PLATFORM SDK,DDK,TCP/IP。獨立開發(fā)過多種windows應(yīng)用程序,WDM USB驅(qū)動程序,網(wǎng)絡(luò)應(yīng)用程序。熟悉加密技術(shù),熟悉LINUX下的C/C++開發(fā)。

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

ToresolvenetworkconnectivityissuesinWindows,resettheTCP/IPstackbyfirstopeningCommandPromptasAdministrator,thenrunningthecommandnetshintipreset,andfinallyrestartingyourcomputertoapplychanges;ifissuespersist,optionallyrunnetshwinsockresetandrebootagain

Linux sesuai untuk perkakasan lama, mempunyai keselamatan yang tinggi dan boleh disesuaikan, tetapi mempunyai keserasian perisian yang lemah; Perisian Windows kaya dan mudah digunakan, tetapi mempunyai penggunaan sumber yang tinggi. 1. Dari segi prestasi, Linux ringan dan cekap, sesuai untuk peranti lama; Windows mempunyai keperluan perkakasan yang tinggi. 2. Dari segi perisian, Windows mempunyai keserasian yang lebih luas, terutama alat dan permainan profesional; Linux perlu menggunakan alat untuk menjalankan beberapa perisian. 3. Dari segi keselamatan, pengurusan kebenaran Linux lebih ketat dan kemas kini adalah mudah; Walaupun Windows dilindungi, ia masih terdedah kepada serangan. 4. Dari segi kesukaran penggunaan, lengkung pembelajaran Linux adalah curam; Operasi Windows adalah intuitif. Pilih mengikut keperluan: Pilih Linux dengan prestasi dan keselamatan, dan pilih Windows dengan keserasian dan kemudahan penggunaan.

Hyper-vcanbeenabledonwindowspro, perusahaan, oreducationeditionsbymeetingsystemrequirementsincluding64-bitcpuwithslat, vmmonitormodeextension, bios/uefivirtualizationenabled, andatleast4gbram.2bram

Kanan-klikthedesktopandSelect "Displaysettings" toopenthedisplayOptions.2.UNDERTHE "paparan", klik "paparanResolution" dropdownandchoosearesolution, lebih disukaiThereCommendeNeForbeStimagequality.3.confirmthechanges

Checkifthetouchpadisdisabledbyusingthefunctionkey(Fn F6/F9/F12),adedicatedtogglebutton,orensuringit’sturnedoninSettings>Devices>Touchpad,andunplugexternalmice.2.UpdateorreinstallthetouchpaddriverviaDeviceManagerbyselectingUpdatedriverorUninstal

Sahkan visifewiWowSoisfrommicrosoftandRecreatetheBebootaTableSabableusBusthemediacreationToolorrufusWithCorrectSettings; 2.ensureHardwaremeeterRequirements, testRamandstorageHealthelheurals;

WindowsdoesnotnegieldsupportPortanlySavingProcessorfinityfinityforapplications, butyoucanachievePersisentifityAnfinySingscriptsorthird-partytools.1.ProcessorAffityBindsAprocessTospecificcpucores, IntervingProveAnderThermalManagement, walaupunWindowSrealagement

OpendeviceManagerBypressingwin xandselectingitorsearchingInthestartMenu.2.locatetheproblematicDevice-suchasdisplayadapters, soundvideoandgamecontrollers, networkadapters, orinputdevices
