• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            [轉載]學習時注意思考方法——只獻給初學者

            來自CU的文章,我覺得很有價值,大家都可以看看的:)
            原文:http://bbs.chinaunix.net/viewthread.php?tid=880434&extra=page%3D21


            不管是在現實中還是網上,總遇到一些人再問一些奇怪的問題。很多問題讓大牛
            們哭笑不得,總是推薦這些人看一些經典的書籍。結果過了一段時間,其他人的
            知識已經滄海桑田,不少人成了大牛,大牛們已經成了大大牛。這些人還在重復
            著類似的問題。本人不是大牛,但是覺得大牛們在技術上幫助別人的同時還應該
            更多的傳播思維方法。如果大牛們沒有時間,那么小弟只好拋磚引玉,談一些不
            成熟的見解,同時希望大牛們多提意見,我再把你們的經驗總結起來一齊奉獻給
            大家。

            1)分層思考
            在我的同學中有一個人算是經典案例,他學習起來很用功,但似乎不管長時間也
            沒有氣色。并且常問一些讓人哭笑不得的問題。我花可長時間也無法讓他明白學
            校開的課程到底和實際的開發有什么聯系。有一天我突然發現,我用如何處理以
            太網偵來舉例子來說明如何是用C語言的struct的使用他居然就輕易的弄懂了。之
            后我總結出來的結論是:他在學習的時候總是嘗試一次弄清楚涉及的每一個細節,
            結果就陷入了無窮個疑問中,每次都把自己弄的暈頭轉向。

            這里引出了一個對于學習者最終要也是最基本的思考方法:分層。可以說99%論
            壇上的哭笑不得的問題是因為沒有分層思考造成的。遇到這樣的人只能先教他們
            學會如何的進行分層思考,再向他們推薦學習資料。

            練習分層思考其實非常簡單,你考慮拓撲時,就不要考慮數據流程,考慮數據流
            程時就不要考慮存儲,考慮網絡間的協議時,就不要考慮一臺機器上的數據是如
            何處理的。只要忽略具體的細節,每次只弄懂和問題相關的最小的部分。等你全
            部弄懂之后,再考慮層次之間的聯系。經常假設“它就是那個樣子”,跳過一些問
            題也是好的方法,當你發現跳過一些問題會加速自己的理解時,這些跳過的問題
            往往就是處于不同層次下的,甚至當你發現一些問題是屬于其他層次的時候,問
            題本身不復存在了。

            分層思考在讀書的時候是很容易掌握的,因為大牛們的書本來就會用科學的方法
            向你表述他的思想。難在讀代碼,或者在hacking幾乎沒有教材的技術的時候,需
            要靈活掌握。

            2)從整體到局部,從局部到整體
            當學會了分層思考后,掌握2)就變得十分簡單了。在每個層次上,很多的問題是
            相互獨立的,將他們歸納出來,如果有必要了解,逐個擊破。很多人會抱怨某某
            東西很難,其實加上分層再劃分之后,逐個解決起來就容易多了。分層是為了獲
            得綜覽,劃分局部是實際解決問題的必要的步驟。

            整體到局部的另一個好處是,實際上你獲得了某個技術的最小單位。這些最小單
            位通常也會被其他的技術所采納。舉個例子,你了解LDAP時熟悉的FQDN、OID、
            realm、BNF等等,在了解電子郵件,HTTP,Keberos的時候也會有用。事實上劃分
            是再自然不過的方法,只是對于初學者,也許需要特別強調一下。

            此外,有些局部的技術可能是不需要了解的,比如說UPnP,可能你只有在解決實
            際環境的問題的時候才需要考慮,雖然它哪里都可以見到,但是你絕大部分情況
            可以忽略它,無論是在考慮拓撲時,還是在分析代碼時。

            3)創造和發現問題
            創造和發現問題并不一定在你完全掌握了某個技術之后。而是在1)、2)的前提
            下,能夠在學習的過程中提出建設性的問題。這些問題絕大多數會在學習的過程
            中自然的獲得答案,少數會在論壇的討論中得到結論。如果還有剩下的,那么可
            能你發現了技術本身存在的缺陷,恭喜你。

            事實上創造和發現問題的人很少出現“迷惘”,或者找不到“實踐的途徑和方法”的
            情況。如果出現了這種情況,很可能1)、2)的條件都沒有具備。如果1)、2)
            都具備了的話,才有下面的方法訓練:

            多問“如果”。典型的就是在1)時,先問自己,如果是自己會怎樣設計?把這個問
            題從開始保留到結束。
            多問“為什么”。配合“如果”,多問別人為什么這么設計,并且把讓這個問題貫穿
            到整個的學習過程。
            多問“哪些”,哪些東西是可以替換的?通常配合2),這樣可以發現實現同一目
            的不同方法,很容易發現當前協議的不足之處以及更好的解決辦法。

            總結
            事實上通篇的內容可以歸納為:不斷的問下面5個問題:What(1)、Which(2、
            3)、What if(3)和Why(3)。僅僅是自己的一點不成熟的經驗,而且也寫的比
            較匆忙,漏洞很多。希望大家指正,也希望真正牛人們多多介紹自己的經驗,我
            會抽出時間來幫助你們整理,然后奉獻給大家。

            posted on 2007-03-19 21:56 楊粼波 閱讀(975) 評論(7)  編輯 收藏 引用

            評論

            # re: [轉載]學習時注意思考方法——只獻給初學者 2007-03-20 00:06 璞石

            好文章,雖然編程好幾年了,但是有時還是不自覺的陷入某些細節不可自拔,越來越混亂。有良好的思維通常能事半功倍  回復  更多評論   

            # re: [轉載]學習時注意思考方法——只獻給初學者 2007-03-20 01:35 lovedday

            謝謝,受益了。  回復  更多評論   

            # re: [轉載]學習時注意思考方法——只獻給初學者 2007-03-20 11:28 空明流轉

            有道理。其實跟人感受是,有些東西,理解了固然更好,如果一時之間沒有理解,那就記住它,遲早是會理解的。  回復  更多評論   

            # re: [轉載]學習時注意思考方法——只獻給初學者 2007-03-20 15:31 Corner Zhang

            文章很好,可有些偏頗!
            說實話,我學生時就是學習很用功,但成效不大的那個樣子,現在看來這樣也有好處,是成為所謂大牛前的磨礪階段。
            把學習比作人生的話,就是每個人都處于自身成長過程中不同境遇下時,采用的不同發展策略而已。  回復  更多評論   

            # re: [轉載]學習時注意思考方法——只獻給初學者 [未登錄] 2007-03-20 17:45 隨意

            我已經出來一年了,
            在我看來,
            學校是積累基礎的時刻,
            而工作是學以致用的時刻,
            在這一年我思考了很多,改變了很多.
            過去的一年是痛苦的,
            但是卻是值得的,
            讓我成長了很多很多.

            做程序本來就是靠腦力吃飯,
            如果以為是體力活,
            那么就永遠都沒有長進,
            做的永遠都是體力活.

            我最初寫的代碼很糟糕,
            維護性很差,
            但是不斷的重構中變得更可維護了,
            維護一份維護性很差的代碼是體力活;
            但是維護一份維護性很好的代碼就是腦力活了.

            萬物相通,
            人生的道理可以用在程序中,
            程序中的道理可以用于人生.
            只有多思,多想,多問(不一定問別人,可以自問),多學才行啊....  回復  更多評論   

            # re: [轉載]輕輕松松從C一路走到C++系列文章之一 2007-03-20 20:30 asdf

            摘要

            C++技術固然是很時髦的,許多C用戶都想在盡可能短的時間內為自己貼上C++的標簽。介紹C++的書很多,但只有那些已經僥幸入門的用戶才偶爾去翻翻,仍有不少在C++門口徘徊的流浪漢。

            本文只針對C用戶,最好是一位很不錯的老用戶(譬如他在遇到最簡單的問題時都嘗試著使用指針),通過一些C和更好的C++(本文用的是Borland C++3.1版本)例程介紹有關C++的一些知識,讓讀者朋友們“淺入深出”,輕輕松松C to C++!

            一、標簽!標簽!

            快快為你的程序貼上C++的標簽,讓你看起來很像個合格的C++用戶……

            1.注釋(comment)

            C++的注釋允許采取兩種形式。第一種是傳統C采用的/*和*/,另一種新采用的則是//,它表示從//至行尾皆為注釋部分。讀者朋友完全可以通過//使你的代碼帶上C++的氣息,如test0l:

            //test01.cpp#include <iostream.h>//I'm a C++user!//…and C is out of date. void main(){ cout<<"Hello world!/n"; //prints a string}


            Hello-world!

            如果你嘗試著在test0l. exe中找到這些高級的注釋,很簡單,它們不會在那里的。

            2. cincout

            你可能從test0l中嗅出什么味兒來了,在C++中,其次的貴族是cout,而不是很老土的printf ( )。左移操作符’<<’的含義被重寫,稱作“輸出操作符”或“插入操作符”。你可以使用’<<’將一大堆的數據像糖葫蘆一樣串起來,然后再用cout輸出:

            cout << "ASCII code of "<< 'a' << " is:" <<97; ASCII code of a is:97


            如何來輸出一個地址的值呢?在C中可以通過格式控制符”%p”來實現,如:

            printf ("%p,&i);

            類似地,C++也是這樣:

            cout << & i;

            但對字符串就不同啦!因為:

            char * String="Waterloo Bridge";

            cout << String; //prints ‘Waterloo Bridge'

            只會輸出String的內容。但方法還是有的,如采取強制類型轉換:

            cout<<(void *)String;

            cin采取的操作符是’>>’,稱作“輸入操作符”或“提取操作符”。在頭文件iostream.h中有cin cout的原型定義,cin語句的書寫格式與cout的完全一樣:

            cin>>i; //ok

            cin>>&i; //error. Illegal structure operation

            看到了?別再傻傻地送一個scanf()常用的’&’地址符給它。

            C++另外提供了一個操縱算子endl,它的功能和’/n’完全一樣,如test0l中的cout語句可改版為:

            cout << ”Hello world!”<

            3.即時聲明

            這是筆者杜撰的一個術語,它的原文為declarations mixed with statements,意即允許變量的聲明與語句的混合使用。傳統C程序提倡用戶將聲明和語句分開,如下形式:

            int i=100;float f; //declarations i++;f=1.0/i; //statements


            而C++拋棄這點可讀性,允許用戶采取更自由的書寫形式:

            int i=100;i++;float f =1. 0/i;


            即時聲明常見于for循環語句中:

            for(int i = 0; i < 16; i++) for(int j = 0; j < 16; j++) putpixel(j i Color[i][j]);


            這種形式允許在語句段中任點聲明新的變量并不失時機地使用它(而不必在所有的聲明結束之后)。

            特別地,C++強化了數據類型的類概念,對于以上出現的”int i=1 j=2;”完全可以寫成:

            int i(1) j (2);

            再如:





            http://www.itfensi.com/exploit/Cjj/  回復  更多評論   

            # re: [轉載]學習時注意思考方法——只獻給初學者 2007-03-21 08:46 hehe

            大牛,真正的大牛!
            對我這樣的新手,太好了

            最近在看侯杰的<深入淺出>,我被繞暈了,快要放棄了...  回復  更多評論   

            国产精品gz久久久| 狠狠综合久久AV一区二区三区| 亚洲欧美一区二区三区久久| 欧美精品福利视频一区二区三区久久久精品 | 99久久精品这里只有精品| 国产精品99久久久久久宅男| 久久久久亚洲AV无码专区桃色| 亚洲精品无码久久毛片| 久久久久夜夜夜精品国产| 久久99精品国产麻豆宅宅| 久久高潮一级毛片免费| 97久久精品无码一区二区天美| 日本精品久久久久久久久免费| 大蕉久久伊人中文字幕| 久久精品国产乱子伦| 久久se这里只有精品| 精品久久久久久无码专区| 久久久无码精品亚洲日韩按摩| 蜜桃麻豆WWW久久囤产精品| 亚洲AV伊人久久青青草原| 久久99精品综合国产首页| av午夜福利一片免费看久久| 欧美伊人久久大香线蕉综合69| 国产一级持黄大片99久久| 亚洲AV乱码久久精品蜜桃| 久久亚洲AV成人无码国产| 精品人妻久久久久久888| 狠狠色丁香久久婷婷综合蜜芽五月| 久久精品国产影库免费看| 久久久久久人妻无码| 色综合久久中文字幕无码| 精品国产乱码久久久久软件| 色偷偷88欧美精品久久久| 久久久久久噜噜精品免费直播| 开心久久婷婷综合中文字幕| 99热精品久久只有精品| 久久精品国产亚洲欧美| 777久久精品一区二区三区无码| 国产精品99久久精品| 精品综合久久久久久97超人| 久久九九青青国产精品|