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

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

To run programs as administrator, you can use Windows' own functions: 1. Right-click the menu to select "Run as administrator", which is suitable for temporary privilege hike scenarios; 2. Create a shortcut and check "Run as administrator" to achieve automatic privilege hike start; 3. Use the task scheduler to configure automated tasks, suitable for running programs that require permissions on a scheduled or background basis, pay attention to setting details such as path changes and permission checks.

When you encounter Windows stuck in the "GettingWindowsready, Don't turnoff your computer" interface, you should first confirm whether it is really stuck; 1. Observe whether the hard disk indicator light is flashing, 2. Check whether the fan sound has changed, 3. Wait at least 30 to 60 minutes to ensure that the system has enough time to complete the update operation.

When the Windows clipboard history is not working, you can check the following steps: 1. Confirm that the clipboard history function is enabled, the path is "Settings>System>Clipboard", and if it is not enabled, Win V will not respond; 2. Check whether the copy content type is limited, such as large images, special formats or file paths may not be saved; 3. Ensure that the system version supports it, Windows 101809 and above, and some enterprise versions or LTSC do not support it; 4. Try to restart the ClipboardUserService service or end the clipups.exe process; 5. Clear the clipboard cache or reset the settings, close and then turn on the "Clipboard History" or run the "echooff|clip" command to clean up the cache

The computer is stuck in the "Undo Changes made to the computer" interface, which is a common problem after the Windows update fails. It is usually caused by the stuck rollback process and cannot enter the system normally. 1. First of all, you should wait patiently for a long enough time, especially after restarting, it may take more than 30 minutes to complete the rollback, and observe the hard disk light to determine whether it is still running. 2. If there is no progress for a long time, you can force shut down and enter the recovery environment (WinRE) multiple times, and try to start repair or system restore. 3. After entering safe mode, you can uninstall the most recent update records through the control panel. 4. Use the command prompt to execute the bootrec command in the recovery environment to repair the boot file, or run sfc/scannow to check the system file. 5. The last method is to use the "Reset this computer" function

When encountering the "RPCserverisunavailable" problem, first confirm whether it is a local service exception or a network configuration problem. 1. Check and start the RPC service to ensure that its startup type is automatic. If it cannot be started, check the event log; 2. Check the network connection and firewall settings, test the firewall to turn off the firewall, check DNS resolution and network connectivity; 3. Run the sfc/scannow and DISM commands to repair the system files; 4. Check the group policy and domain controller status in the domain environment, and contact the IT department to assist in the processing. Gradually check it in sequence to locate and solve the problem.

The problem of slowing right-click menus is usually caused by extensions or third-party software loaded by the system. Solutions include troubleshooting plug-ins, optimizing settings, and uninstalling suspicious software. 1. Use the ShellExView tool to view and disable non-essential Shell extensions, and gradually test to find plug-ins that slow down the right-click menu; 2. For advanced users, you can lower the menu delay time to 0 or 200 milliseconds by modifying the MenuShowDelay key value in the registry to speed up the response speed, but you need to be careful to backup before operation to avoid causing system abnormalities; 3. Uninstall or update software that may cause conflicts such as old compression tools, screenshot software, antivirus software, etc., and observe whether the right-click menu returns to normal. If the problem is alleviated, it means that it is the performance problem caused by the software.

Windows time inaccurate is mainly caused by abnormal network time synchronization or aging of CMOS batteries. Solutions include: 1. Check the "Internet Time" setting to ensure that synchronization is enabled and use time.windows.com or ntp.aliyun.com; 2. Modify the registry key RealTimeIsUniversal to 0 to correctly identify the BIOS time; 3. Replace the motherboard CMOS battery to avoid resetting time after power outage; 4. Turn off "Auto-adjust daylight saving time" or confirm that the time zone settings are accurate. The troubleshooting order is recommended to set the software first and then the hardware problem.

When you encounter the "DefaultGatewayisNotAvailable" prompt, it means that the computer cannot connect to the router or does not obtain the network address correctly. 1. First, restart the router and computer, wait for the router to fully start before trying to connect; 2. Check whether the IP address is set to automatically obtain, enter the network attribute to ensure that "Automatically obtain IP address" and "Automatically obtain DNS server address" are selected; 3. Run ipconfig/release and ipconfig/renew through the command prompt to release and re-acquire the IP address, and execute the netsh command to reset the network components if necessary; 4. Check the wireless network card driver, update or reinstall the driver to ensure that it works normally.
