尊重人性的提问方式
這是以前在一個(gè)論壇中的一個(gè)帖子,和一個(gè)學(xué)生發(fā)生了一點(diǎn)誤會(huì),他認(rèn)為我不尊重他,特地予以回復(fù)的內(nèi)容。 學(xué)生================================ 老師,我指出你一個(gè)可能說錯(cuò)的地方,C/C++編譯器中不可能會(huì)見到一個(gè)括號(hào)就新建一個(gè)棧(原因:1.首先,我覺得編譯器沒那么傻 2.我覺得這不是新建棧,而是push一個(gè)標(biāo)識(shí)符,至于內(nèi)存映射到什么地方,那是連接器決定的 3.變量不一定會(huì)存儲(chǔ)在棧上,可能直接存儲(chǔ)在寄存器中) 我================================ 請(qǐng)不要用PHP的思維來想C 學(xué)生================================ 首先,老師 我沒有用php的思維來想C
其次,老師也不要看了我是php愛好者就認(rèn)為我不了解C,感覺老師有點(diǎn)看不起其它語(yǔ)言.
第三:我了解C的編程基礎(chǔ)和編譯原理,曾寫過pascal的編譯器,寫過小游戲,寫過OJ,個(gè)人感覺基礎(chǔ)還行。
第四:老師 我在這只是針對(duì)你的思維提下問題,并沒有什么..若有錯(cuò)誤當(dāng)然可以指正 我================================ void Test1(void)
{
? ? ? ? {
? ? ? ? ? ? ? ? int i=0;
? ? ? ? ? ? ? ? i=100;
? ? ? ? ? ? ? ? printf("%d\n",i);
? ? ? ? }
? ? ? ? printf("%d\n",i);??//錯(cuò)誤點(diǎn)
}
編譯錯(cuò)誤:
1>d:\00xgwork\testulonglong\testulonglong\testulonglong.cpp(59) : error C2065: “i”: 未聲明的標(biāo)識(shí)符 學(xué)生================================ 花括號(hào)之內(nèi)定義的變量花括號(hào)之外不能使用...
............
這個(gè)定義我知道,其實(shí)不止變量會(huì)這樣,函數(shù)的定義也會(huì)這樣。
我主要針對(duì)的是老師所說的在遇到一個(gè)大括號(hào)時(shí)會(huì)新建個(gè)棧。。。這個(gè)說法有誤 比如在main中申明的函數(shù) 在外面也不能使用,不過我現(xiàn)在不是談?wù)撟饔糜虻膯栴} 我================================ OK,堅(jiān)決同意。
C編譯器以后遇到花括號(hào),堅(jiān)決不準(zhǔn)建棧。
以后誰(shuí)說建棧,我拍他!
呵呵。 學(xué)生================================ 感覺老師。。在忽悠我 感覺這邊,真的有語(yǔ)言歧視, 感覺只有把自己的方向改為 C/C++ 或者嵌入式 就可以在C/C++區(qū) 混了 ,不然 老師都不理。、。 我================================ 呵呵,你多心了。這里真的沒有語(yǔ)言歧視。起碼我一般是不太喜歡去評(píng)價(jià)哪個(gè)語(yǔ)言好還是不好,因?yàn)槲艺J(rèn)為公司里面開發(fā),一切根據(jù)需求來,哪個(gè)語(yǔ)言合用,就用哪個(gè)。合適的就是最好的。語(yǔ)言比較沒有意義,我們公司內(nèi)部同時(shí)在用C(注意不是C++哦)、C++、Java和PHP等幾種語(yǔ)言,很多時(shí)候,項(xiàng)目上開會(huì),最后決定是用PHP或Java開發(fā),因?yàn)殚_發(fā)成本低。
不過呢,我覺得這里面有個(gè)人的問題在里面。根據(jù)你的言談,感覺你是一個(gè)很認(rèn)真的人,這可能和同濟(jì)大學(xué)嚴(yán)謹(jǐn)?shù)膶W(xué)風(fēng)有關(guān),這個(gè)呢,有好有壞,好處是可以把一個(gè)問題鉆研得很深入,壞處是有些書生氣,一般討論問題時(shí),不怎么考慮聽眾的感受,我不知道你平時(shí)和同學(xué)討論問題有沒有這個(gè)感覺,就是你太堅(jiān)持一個(gè)意見的時(shí)候,就算你的意見是正確的,同學(xué)們也不太愿意接受。
這個(gè)課堂是C和C++的課堂,你腦門上寫著PHP就跑進(jìn)來PK,給人的感覺呢不是PK問題,是跑進(jìn)來砸場(chǎng)子了,呵呵,你說大家怎么看?也難怪包括我在內(nèi)的回復(fù)會(huì)讓你感到有語(yǔ)言歧視。這其實(shí)是文化了,在這個(gè)圈子里面的文化,或多或少都有點(diǎn)推崇C和C++,所謂入鄉(xiāng)隨俗,你進(jìn)來了,說點(diǎn)C和C++的好話,大家總是愛聽的。
這就好比你跑到南京,腦門上扎個(gè)帶子,上面寫個(gè)“日本人”,然后點(diǎn)評(píng)中日抗戰(zhàn),點(diǎn)評(píng)南京大屠殺,你可能會(huì)以你認(rèn)為很客觀的態(tài)度來說事實(shí),不過我估計(jì)南京人不這么看,被抽的概率極高。你說是不是?
這就是文化的威力,以后你畢業(yè),去公司,要學(xué)會(huì)尊重企業(yè)文化,企業(yè)文化絕對(duì)不是簡(jiǎn)簡(jiǎn)單單就那么幾條,有很多是看不見的,需要自己慢慢去體會(huì)。好比一個(gè)老同志,上班穿短褲,拖鞋,你也學(xué)習(xí),然后老總把你臭罵一頓,說你不注意形象,你就不服氣了,為啥他可以。老總一般很簡(jiǎn)單,等你做到他那步再說,現(xiàn)在照罵。這就是文化。他可能以前為了公司作出了杰出貢獻(xiàn),老總都認(rèn)為他有權(quán)利在公司隨便一點(diǎn)。
這個(gè)群里面有些同學(xué)的態(tài)度不是很端正,我估計(jì)可能是同學(xué)們?cè)趯W(xué)校里面和同輩的同學(xué)PK慣了,嗯,大學(xué)里叫辯論賽,比較喜歡扣帽子。比如以前我在編程規(guī)范的帖子里面,就有一個(gè)同學(xué)給我扣了一頂“代碼官僚主義”的帽子,讓我受寵若驚。感覺到你這次的“語(yǔ)言歧視”,也有點(diǎn)這個(gè)味道。
這其實(shí)是一種常規(guī)的修辭手法了,在政治辯論中比較常用,如果無法說服對(duì)方,就首先證明對(duì)方的立場(chǎng)是錯(cuò)誤的,抽取掉他立足的根本,以此來反證對(duì)方胡說八道。這種手法我在工作中也常常在用。呵呵。
而抽根的最佳辦法,就是順著對(duì)方的意思進(jìn)行推理,超越平衡的將對(duì)方的論點(diǎn)絕對(duì)化,給出一個(gè)絕對(duì)的定義,我們知道,絕對(duì)化的東西都有一點(diǎn)問題,很容易被人反證是錯(cuò)的,因此,一旦給出絕對(duì)定義,就很容易擊垮對(duì)方。
比如這個(gè)“代碼官僚主義”,我的原始提法是公司中,為了保證商業(yè)開發(fā)的準(zhǔn)確性,不得不對(duì)每個(gè)程序員的行為作出規(guī)范,這和每條早上打卡上班是一樣的,是公司的員工守則,但那位同學(xué)很技巧的將正常的管理行為,巧妙地絕對(duì)化為“官僚”這個(gè)詞,用這個(gè)大家都很反感的詞,將正常的管理論證為一種不可理喻,不體察下情的行為,在辯論中爭(zhēng)取民心,并進(jìn)一步擊垮我的論點(diǎn)。
這個(gè)時(shí)候,如果我是辯論方確實(shí)不好回答,說是吧,坐實(shí)了“官僚”兩個(gè)字,說不是吧,我就沒有理由說明代碼要規(guī)范了,呵呵,這算是為競(jìng)爭(zhēng)對(duì)手設(shè)計(jì)的一個(gè)邏輯陷阱。算是常用手法了。
你這個(gè)“語(yǔ)言歧視”也帶有這個(gè)意思,因?yàn)閺拿绹?guó)傳過來,歧視這個(gè)詞讓大家聯(lián)想到“種族歧視”,算是一個(gè)很壞的絕對(duì)定義了,和上面的修辭手法如出一轍,其目的也是利用絕對(duì)化的大帽子,獲取民心,試圖掌控輿論的導(dǎo)向,進(jìn)而擊垮我的論點(diǎn)。
不過這里有個(gè)問題,如果我只有這一篇帖子,很容易被你擊垮,但恰恰我的很多帖子,對(duì)各種語(yǔ)言都有夸獎(jiǎng),因此,只要看了我所有帖子的人,一般對(duì)我這個(gè)人有信任度,因此,這里就不太相信你的說辭,大家可能會(huì)說:“肖老師這么公正的人,你都說他都搞語(yǔ)言歧視,我看你才是真正的語(yǔ)言歧視”,呵呵,這是我的推論,但你想想,有沒有這個(gè)可能?
這說明了辯論技巧的一個(gè)壞處,技巧是雙刃劍,不傷人就傷己,可以用,但不要濫用,這里面本身也有一個(gè)平衡,建議你以后在使用技巧的時(shí)候,要考慮到這一點(diǎn)。美國(guó)很多總統(tǒng)選舉的大逆轉(zhuǎn),民意測(cè)驗(yàn)和實(shí)際投票結(jié)果完全相反,其實(shí)就是雙方用了太多技巧,結(jié)果可能由于這個(gè)雙刃劍原理,不小心割到自己了。你說是不是?
我個(gè)人的建議是,平時(shí)應(yīng)該要求自己做一個(gè)誠(chéng)信、正直的人,以一種堂堂正正的心態(tài)做人做事,用時(shí)間,在大家心目中建立口碑效益,把自己的品牌打出來,這不管是以后找工作,找對(duì)象,還是在單位上逐步發(fā)展提升,都很重要,一旦口碑建立起來,其實(shí)很多時(shí)候,不需要什么技巧的,絕對(duì)的實(shí)力導(dǎo)致絕對(duì)的結(jié)果,當(dāng)大家都認(rèn)為你應(yīng)該成功時(shí),你其實(shí)已經(jīng)成功了。
嗯,說了這么多,其實(shí)不算是批評(píng)了,僅僅是希望客觀的分析一下問題,幫助你看到問題的本質(zhì)。感覺你是一個(gè)很嚴(yán)肅認(rèn)真的人,這在科學(xué)研究上,是一個(gè)非常可貴的品質(zhì),每次我回答你的帖子,最頭疼的就是既要糾正你一些不太好的習(xí)慣和看法,又不愿意打擊你鉆研的精神,我的回復(fù)很難把握一個(gè)度。這才是我前面回答簡(jiǎn)單的原因。
現(xiàn)在說回你的問題,確實(shí)如你所說,可能有的編譯器,沒有采用見到花括號(hào)建棧的方法,因?yàn)榭紤]到內(nèi)聯(lián)函數(shù)的優(yōu)化,CPU的寄存器變量等問題,以及編譯器本身為了優(yōu)化而實(shí)現(xiàn)的等價(jià)替換等原則,最終出來的代碼,可能里面已經(jīng)將這個(gè)建棧過程優(yōu)化掉了。
比如前面我的例子,如果編譯器能敏感的感覺出,i雖然是一個(gè)花括號(hào)內(nèi)部的變量,但花括號(hào)外沒有再使用,它可能也就直接把i優(yōu)化為函數(shù)變量,此時(shí)的內(nèi)部花括號(hào)相當(dāng)于沒有。這也有可能。
寄存器變量更為突出,C和C++,雖然允許程序員自己界定哪個(gè)變量是寄存器變量,但通常編譯器有二次發(fā)言權(quán),一般不是很遵守,inline和register,很多編譯器都是忽略的,至少是某種狀態(tài)下忽略,為什么呢,因?yàn)榫幾g器要保留這些優(yōu)化手段,作為更加重要的段落的優(yōu)化方式。
所以,上述問題你要爭(zhēng)辯的,其實(shí)也有道理,不過我說的,也是一個(gè)通理。理論上,如果我做C的編譯器,哪怕出于代碼簡(jiǎn)潔的原理,也會(huì)把所有的花括號(hào)放到一個(gè)邏輯模塊中處理,我們知道,函數(shù)的花括號(hào),一定會(huì)建立一個(gè)浮動(dòng)棧,并初始化內(nèi)部所有局部變量,如果這個(gè)邏輯被套用到一個(gè)函數(shù)內(nèi)部的花括號(hào),你說會(huì)怎么樣?
不過,這是原理,具體結(jié)果要根據(jù)優(yōu)化來,因此,即使你把編譯出來的代碼發(fā)出來我看,我都還是不承認(rèn)你的結(jié)論是正確的,因?yàn)槟愕恼摀?jù)僅僅是其中一種優(yōu)化情況,而不是所有。
這里面還有個(gè)回答成本的問題,我曾經(jīng)寫過提問題的技巧,其實(shí)就是幫助大家提出簡(jiǎn)單的,關(guān)鍵的問題,老師回答的成本低,回答的老師自然就多,你也比較容易獲得答案。
但是,你這幾次帖子,其實(shí)我覺得很難回答,因此不太愿意回答太詳細(xì),主要是回答成本太高了。
不過,為了不打擊你的積極性,我這里還是做一次詳盡的解答。
你可以簡(jiǎn)單比較一下咱么打字的數(shù)量,你覺得誰(shuí)的成本高?
這不是肖老師自私,而是人性,每個(gè)人對(duì)于成本太高的事情都不太愿意去做,如果你老是提出一些很復(fù)雜的問題,老師要花你兩倍、三倍的字?jǐn)?shù)來回答,最后很多老師可能選擇不回答,其實(shí)最后吃虧的,還是你自己,你說是不是?
說了這么多,真的很累,希望你有個(gè)正確的認(rèn)識(shí)。 學(xué)生================================ 謝謝肖老師的回復(fù),讀了肖老師的文,深有感觸,是的,我平時(shí)喜歡磚牛角尖,因?yàn)槲覜]感覺到這對(duì)我有什么壞處,也喜歡對(duì)自己的老師一點(diǎn)錯(cuò)誤就指出,呵呵,這些也許是我的毛病,但看了老師的文后,我覺得不光是我還是大家 都有必要改正,主要是要考慮聽眾的感受,大家都感受,我開始看到這個(gè)帖子時(shí),看到老師關(guān)于宏和inline函數(shù)的pk 也客氣的說 你看這樣好不好,你呢,繼續(xù)堅(jiān)持用inline,我呢,繼續(xù)堅(jiān)持用宏,咱倆互不影響,好不好? 我覺得老師很謙讓。呵呵 也許這是個(gè)每個(gè)學(xué)生都沒有的職業(yè)道德。在這我記住肖老師的話。謝謝。
另外老師,其實(shí)我是非常愛C這門語(yǔ)言的,喜歡它的嚴(yán)謹(jǐn),喜歡它的簡(jiǎn)潔。至于我為什么選擇php是跟我的職業(yè)規(guī)劃有關(guān)。希望老師以后我再進(jìn)C、C++課堂時(shí),就當(dāng)我是C愛好者好了,謝謝。
另外,我想說老師你回答的成本不高,你的回答將會(huì)影響我的下一步該怎么做! 該怎么做人上人!謝!
...........
“平時(shí)應(yīng)該要求自己做一個(gè)誠(chéng)信、正直的人,以一種堂堂正正的心態(tài)做人做事,用時(shí)間,在大家心目中建立口碑效益,把自己的品牌打出來,這不管是以后找工作,找對(duì)象,還是在單位上逐步發(fā)展提升,都很重要,一旦口碑建立起來,其實(shí)很多時(shí)候,不需要什么技巧的,絕對(duì)的實(shí)力導(dǎo)致絕對(duì)的結(jié)果,當(dāng)大家都認(rèn)為你應(yīng)該成功時(shí),你其實(shí)已經(jīng)成功了。”
謝謝老師這段話,我會(huì)記住的。
感覺老師不僅是位技術(shù)人才還是位耐心的教育者,就像以前微軟的副總裁李開復(fù)一樣。
最后謝謝,老師給我說了這么多,謝謝! 另一個(gè)學(xué)生================================ 對(duì)于老師那段話,總結(jié)一下,就3點(diǎn):
1.不要?jiǎng)硬粍?dòng)就給別人扣帽子。
2.尊重各自的選擇。說白了就是:你如果認(rèn)為我不對(duì),就不必聽我的~
3.對(duì)于回答成本高的問題,老師不愿意做出回答。
對(duì)于第一點(diǎn),我很贊同。這是做人問題。
對(duì)于第二點(diǎn),我比較贊同。如果只是習(xí)慣或者編程風(fēng)格問題,我認(rèn)為不必大驚小怪。A不想用B規(guī)定的編程風(fēng)格寫代碼,B就不聘請(qǐng)A,A有實(shí)力去了C公司做大了一樣OK。一切只跟A自己相關(guān),也就這么簡(jiǎn)單,選擇決定價(jià)值。如果一個(gè)問題的確有且僅有一個(gè)正確答案,那么問題也很簡(jiǎn)單,錯(cuò)了或者正確。
3.對(duì)于第三個(gè)問題,我想說,這畢竟只是一個(gè)網(wǎng)上的社區(qū),老師不是學(xué)校的老師。說白了,就是老師不夠?qū)I(yè)(老師不要記恨我啊,我實(shí)話實(shí)說)。老師的職責(zé)就是傳道授業(yè)解惑,不能夠因?yàn)榛卮鸪杀靖呔屯硕苤.?dāng)然我指的是學(xué)生提的問題是能夠被解答的情況下(見"提問的訣竅"一貼)。就我而言我也提過幾道算法問題,自認(rèn)為完全符合要求,結(jié)果沒有老師給出令人滿意的答案…… 我================================ 嗯,換個(gè)說法比較準(zhǔn)確。
我以前說過,CSDN的老師,不是學(xué)校里收學(xué)費(fèi)的老師,我們沒有義務(wù)回答問題的,僅僅是根據(jù)愛好。也就是說,我們提供的是“不保證服務(wù)”。
既不保證一定會(huì)服務(wù),也不保證服務(wù)效果。
因此,第三點(diǎn),你說的不夠?qū)I(yè),我的理解是我們不必很專業(yè)。因?yàn)槲覀儧]有收錢啊。呵呵。
這好比你用開源的代碼出了bug,老板扣你的薪水,但是你沒有辦法去扣原作者的薪水一樣,因?yàn)槿思乙彩遣槐WC服務(wù)的。
高水平的服務(wù)品質(zhì),是需要高報(bào)酬來維持的,你說是不是? 學(xué)生================================ 恩!老師說的對(duì)~ 我================================ 因此,建議你改變一下思路。
你的問題無人解答,不是老師不是人,而很可能是你的問題誘惑力不夠。
試著重新設(shè)計(jì)你的問題,引誘某些老師(比方說我)忍不住誘惑,過來解答,怎么樣?
誘惑人非常簡(jiǎn)單,你只要說明回答這個(gè)問題,老師有什么好處就夠了。人是不會(huì)做沒有好處的事情的。
可以不明著說,但可以用暗示的。
嗯,注冊(cè)個(gè)人妖號(hào)怎么樣?用你GF的名義,再把照片發(fā)上來?呵呵
再或者,用點(diǎn)什么夸張的語(yǔ)句,什么跪求啦,360度拜求啊,呵呵。
又或者,重新思考你的問題,把一個(gè)復(fù)雜的大問題,分拆成n個(gè)小問題,讓大家覺得答了也無所謂,不如答一下,當(dāng)所有問題被回答完畢,你的原始問題自己就沒有了,你說這個(gè)辦法好不好? 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
其次,老師也不要看了我是php愛好者就認(rèn)為我不了解C,感覺老師有點(diǎn)看不起其它語(yǔ)言.
第三:我了解C的編程基礎(chǔ)和編譯原理,曾寫過pascal的編譯器,寫過小游戲,寫過OJ,個(gè)人感覺基礎(chǔ)還行。
第四:老師 我在這只是針對(duì)你的思維提下問題,并沒有什么..若有錯(cuò)誤當(dāng)然可以指正 我================================ void Test1(void)
{
? ? ? ? {
? ? ? ? ? ? ? ? int i=0;
? ? ? ? ? ? ? ? i=100;
? ? ? ? ? ? ? ? printf("%d\n",i);
? ? ? ? }
? ? ? ? printf("%d\n",i);??//錯(cuò)誤點(diǎn)
}
編譯錯(cuò)誤:
1>d:\00xgwork\testulonglong\testulonglong\testulonglong.cpp(59) : error C2065: “i”: 未聲明的標(biāo)識(shí)符 學(xué)生================================ 花括號(hào)之內(nèi)定義的變量花括號(hào)之外不能使用...
............
這個(gè)定義我知道,其實(shí)不止變量會(huì)這樣,函數(shù)的定義也會(huì)這樣。
我主要針對(duì)的是老師所說的在遇到一個(gè)大括號(hào)時(shí)會(huì)新建個(gè)棧。。。這個(gè)說法有誤 比如在main中申明的函數(shù) 在外面也不能使用,不過我現(xiàn)在不是談?wù)撟饔糜虻膯栴} 我================================ OK,堅(jiān)決同意。
C編譯器以后遇到花括號(hào),堅(jiān)決不準(zhǔn)建棧。
以后誰(shuí)說建棧,我拍他!
呵呵。 學(xué)生================================ 感覺老師。。在忽悠我 感覺這邊,真的有語(yǔ)言歧視, 感覺只有把自己的方向改為 C/C++ 或者嵌入式 就可以在C/C++區(qū) 混了 ,不然 老師都不理。、。 我================================ 呵呵,你多心了。這里真的沒有語(yǔ)言歧視。起碼我一般是不太喜歡去評(píng)價(jià)哪個(gè)語(yǔ)言好還是不好,因?yàn)槲艺J(rèn)為公司里面開發(fā),一切根據(jù)需求來,哪個(gè)語(yǔ)言合用,就用哪個(gè)。合適的就是最好的。語(yǔ)言比較沒有意義,我們公司內(nèi)部同時(shí)在用C(注意不是C++哦)、C++、Java和PHP等幾種語(yǔ)言,很多時(shí)候,項(xiàng)目上開會(huì),最后決定是用PHP或Java開發(fā),因?yàn)殚_發(fā)成本低。
不過呢,我覺得這里面有個(gè)人的問題在里面。根據(jù)你的言談,感覺你是一個(gè)很認(rèn)真的人,這可能和同濟(jì)大學(xué)嚴(yán)謹(jǐn)?shù)膶W(xué)風(fēng)有關(guān),這個(gè)呢,有好有壞,好處是可以把一個(gè)問題鉆研得很深入,壞處是有些書生氣,一般討論問題時(shí),不怎么考慮聽眾的感受,我不知道你平時(shí)和同學(xué)討論問題有沒有這個(gè)感覺,就是你太堅(jiān)持一個(gè)意見的時(shí)候,就算你的意見是正確的,同學(xué)們也不太愿意接受。
這個(gè)課堂是C和C++的課堂,你腦門上寫著PHP就跑進(jìn)來PK,給人的感覺呢不是PK問題,是跑進(jìn)來砸場(chǎng)子了,呵呵,你說大家怎么看?也難怪包括我在內(nèi)的回復(fù)會(huì)讓你感到有語(yǔ)言歧視。這其實(shí)是文化了,在這個(gè)圈子里面的文化,或多或少都有點(diǎn)推崇C和C++,所謂入鄉(xiāng)隨俗,你進(jìn)來了,說點(diǎn)C和C++的好話,大家總是愛聽的。
這就好比你跑到南京,腦門上扎個(gè)帶子,上面寫個(gè)“日本人”,然后點(diǎn)評(píng)中日抗戰(zhàn),點(diǎn)評(píng)南京大屠殺,你可能會(huì)以你認(rèn)為很客觀的態(tài)度來說事實(shí),不過我估計(jì)南京人不這么看,被抽的概率極高。你說是不是?
這就是文化的威力,以后你畢業(yè),去公司,要學(xué)會(huì)尊重企業(yè)文化,企業(yè)文化絕對(duì)不是簡(jiǎn)簡(jiǎn)單單就那么幾條,有很多是看不見的,需要自己慢慢去體會(huì)。好比一個(gè)老同志,上班穿短褲,拖鞋,你也學(xué)習(xí),然后老總把你臭罵一頓,說你不注意形象,你就不服氣了,為啥他可以。老總一般很簡(jiǎn)單,等你做到他那步再說,現(xiàn)在照罵。這就是文化。他可能以前為了公司作出了杰出貢獻(xiàn),老總都認(rèn)為他有權(quán)利在公司隨便一點(diǎn)。
這個(gè)群里面有些同學(xué)的態(tài)度不是很端正,我估計(jì)可能是同學(xué)們?cè)趯W(xué)校里面和同輩的同學(xué)PK慣了,嗯,大學(xué)里叫辯論賽,比較喜歡扣帽子。比如以前我在編程規(guī)范的帖子里面,就有一個(gè)同學(xué)給我扣了一頂“代碼官僚主義”的帽子,讓我受寵若驚。感覺到你這次的“語(yǔ)言歧視”,也有點(diǎn)這個(gè)味道。
這其實(shí)是一種常規(guī)的修辭手法了,在政治辯論中比較常用,如果無法說服對(duì)方,就首先證明對(duì)方的立場(chǎng)是錯(cuò)誤的,抽取掉他立足的根本,以此來反證對(duì)方胡說八道。這種手法我在工作中也常常在用。呵呵。
而抽根的最佳辦法,就是順著對(duì)方的意思進(jìn)行推理,超越平衡的將對(duì)方的論點(diǎn)絕對(duì)化,給出一個(gè)絕對(duì)的定義,我們知道,絕對(duì)化的東西都有一點(diǎn)問題,很容易被人反證是錯(cuò)的,因此,一旦給出絕對(duì)定義,就很容易擊垮對(duì)方。
比如這個(gè)“代碼官僚主義”,我的原始提法是公司中,為了保證商業(yè)開發(fā)的準(zhǔn)確性,不得不對(duì)每個(gè)程序員的行為作出規(guī)范,這和每條早上打卡上班是一樣的,是公司的員工守則,但那位同學(xué)很技巧的將正常的管理行為,巧妙地絕對(duì)化為“官僚”這個(gè)詞,用這個(gè)大家都很反感的詞,將正常的管理論證為一種不可理喻,不體察下情的行為,在辯論中爭(zhēng)取民心,并進(jìn)一步擊垮我的論點(diǎn)。
這個(gè)時(shí)候,如果我是辯論方確實(shí)不好回答,說是吧,坐實(shí)了“官僚”兩個(gè)字,說不是吧,我就沒有理由說明代碼要規(guī)范了,呵呵,這算是為競(jìng)爭(zhēng)對(duì)手設(shè)計(jì)的一個(gè)邏輯陷阱。算是常用手法了。
你這個(gè)“語(yǔ)言歧視”也帶有這個(gè)意思,因?yàn)閺拿绹?guó)傳過來,歧視這個(gè)詞讓大家聯(lián)想到“種族歧視”,算是一個(gè)很壞的絕對(duì)定義了,和上面的修辭手法如出一轍,其目的也是利用絕對(duì)化的大帽子,獲取民心,試圖掌控輿論的導(dǎo)向,進(jìn)而擊垮我的論點(diǎn)。
不過這里有個(gè)問題,如果我只有這一篇帖子,很容易被你擊垮,但恰恰我的很多帖子,對(duì)各種語(yǔ)言都有夸獎(jiǎng),因此,只要看了我所有帖子的人,一般對(duì)我這個(gè)人有信任度,因此,這里就不太相信你的說辭,大家可能會(huì)說:“肖老師這么公正的人,你都說他都搞語(yǔ)言歧視,我看你才是真正的語(yǔ)言歧視”,呵呵,這是我的推論,但你想想,有沒有這個(gè)可能?
這說明了辯論技巧的一個(gè)壞處,技巧是雙刃劍,不傷人就傷己,可以用,但不要濫用,這里面本身也有一個(gè)平衡,建議你以后在使用技巧的時(shí)候,要考慮到這一點(diǎn)。美國(guó)很多總統(tǒng)選舉的大逆轉(zhuǎn),民意測(cè)驗(yàn)和實(shí)際投票結(jié)果完全相反,其實(shí)就是雙方用了太多技巧,結(jié)果可能由于這個(gè)雙刃劍原理,不小心割到自己了。你說是不是?
我個(gè)人的建議是,平時(shí)應(yīng)該要求自己做一個(gè)誠(chéng)信、正直的人,以一種堂堂正正的心態(tài)做人做事,用時(shí)間,在大家心目中建立口碑效益,把自己的品牌打出來,這不管是以后找工作,找對(duì)象,還是在單位上逐步發(fā)展提升,都很重要,一旦口碑建立起來,其實(shí)很多時(shí)候,不需要什么技巧的,絕對(duì)的實(shí)力導(dǎo)致絕對(duì)的結(jié)果,當(dāng)大家都認(rèn)為你應(yīng)該成功時(shí),你其實(shí)已經(jīng)成功了。
嗯,說了這么多,其實(shí)不算是批評(píng)了,僅僅是希望客觀的分析一下問題,幫助你看到問題的本質(zhì)。感覺你是一個(gè)很嚴(yán)肅認(rèn)真的人,這在科學(xué)研究上,是一個(gè)非常可貴的品質(zhì),每次我回答你的帖子,最頭疼的就是既要糾正你一些不太好的習(xí)慣和看法,又不愿意打擊你鉆研的精神,我的回復(fù)很難把握一個(gè)度。這才是我前面回答簡(jiǎn)單的原因。
現(xiàn)在說回你的問題,確實(shí)如你所說,可能有的編譯器,沒有采用見到花括號(hào)建棧的方法,因?yàn)榭紤]到內(nèi)聯(lián)函數(shù)的優(yōu)化,CPU的寄存器變量等問題,以及編譯器本身為了優(yōu)化而實(shí)現(xiàn)的等價(jià)替換等原則,最終出來的代碼,可能里面已經(jīng)將這個(gè)建棧過程優(yōu)化掉了。
比如前面我的例子,如果編譯器能敏感的感覺出,i雖然是一個(gè)花括號(hào)內(nèi)部的變量,但花括號(hào)外沒有再使用,它可能也就直接把i優(yōu)化為函數(shù)變量,此時(shí)的內(nèi)部花括號(hào)相當(dāng)于沒有。這也有可能。
寄存器變量更為突出,C和C++,雖然允許程序員自己界定哪個(gè)變量是寄存器變量,但通常編譯器有二次發(fā)言權(quán),一般不是很遵守,inline和register,很多編譯器都是忽略的,至少是某種狀態(tài)下忽略,為什么呢,因?yàn)榫幾g器要保留這些優(yōu)化手段,作為更加重要的段落的優(yōu)化方式。
所以,上述問題你要爭(zhēng)辯的,其實(shí)也有道理,不過我說的,也是一個(gè)通理。理論上,如果我做C的編譯器,哪怕出于代碼簡(jiǎn)潔的原理,也會(huì)把所有的花括號(hào)放到一個(gè)邏輯模塊中處理,我們知道,函數(shù)的花括號(hào),一定會(huì)建立一個(gè)浮動(dòng)棧,并初始化內(nèi)部所有局部變量,如果這個(gè)邏輯被套用到一個(gè)函數(shù)內(nèi)部的花括號(hào),你說會(huì)怎么樣?
不過,這是原理,具體結(jié)果要根據(jù)優(yōu)化來,因此,即使你把編譯出來的代碼發(fā)出來我看,我都還是不承認(rèn)你的結(jié)論是正確的,因?yàn)槟愕恼摀?jù)僅僅是其中一種優(yōu)化情況,而不是所有。
這里面還有個(gè)回答成本的問題,我曾經(jīng)寫過提問題的技巧,其實(shí)就是幫助大家提出簡(jiǎn)單的,關(guān)鍵的問題,老師回答的成本低,回答的老師自然就多,你也比較容易獲得答案。
但是,你這幾次帖子,其實(shí)我覺得很難回答,因此不太愿意回答太詳細(xì),主要是回答成本太高了。
不過,為了不打擊你的積極性,我這里還是做一次詳盡的解答。
你可以簡(jiǎn)單比較一下咱么打字的數(shù)量,你覺得誰(shuí)的成本高?
這不是肖老師自私,而是人性,每個(gè)人對(duì)于成本太高的事情都不太愿意去做,如果你老是提出一些很復(fù)雜的問題,老師要花你兩倍、三倍的字?jǐn)?shù)來回答,最后很多老師可能選擇不回答,其實(shí)最后吃虧的,還是你自己,你說是不是?
說了這么多,真的很累,希望你有個(gè)正確的認(rèn)識(shí)。 學(xué)生================================ 謝謝肖老師的回復(fù),讀了肖老師的文,深有感觸,是的,我平時(shí)喜歡磚牛角尖,因?yàn)槲覜]感覺到這對(duì)我有什么壞處,也喜歡對(duì)自己的老師一點(diǎn)錯(cuò)誤就指出,呵呵,這些也許是我的毛病,但看了老師的文后,我覺得不光是我還是大家 都有必要改正,主要是要考慮聽眾的感受,大家都感受,我開始看到這個(gè)帖子時(shí),看到老師關(guān)于宏和inline函數(shù)的pk 也客氣的說 你看這樣好不好,你呢,繼續(xù)堅(jiān)持用inline,我呢,繼續(xù)堅(jiān)持用宏,咱倆互不影響,好不好? 我覺得老師很謙讓。呵呵 也許這是個(gè)每個(gè)學(xué)生都沒有的職業(yè)道德。在這我記住肖老師的話。謝謝。
另外老師,其實(shí)我是非常愛C這門語(yǔ)言的,喜歡它的嚴(yán)謹(jǐn),喜歡它的簡(jiǎn)潔。至于我為什么選擇php是跟我的職業(yè)規(guī)劃有關(guān)。希望老師以后我再進(jìn)C、C++課堂時(shí),就當(dāng)我是C愛好者好了,謝謝。
另外,我想說老師你回答的成本不高,你的回答將會(huì)影響我的下一步該怎么做! 該怎么做人上人!謝!
...........
“平時(shí)應(yīng)該要求自己做一個(gè)誠(chéng)信、正直的人,以一種堂堂正正的心態(tài)做人做事,用時(shí)間,在大家心目中建立口碑效益,把自己的品牌打出來,這不管是以后找工作,找對(duì)象,還是在單位上逐步發(fā)展提升,都很重要,一旦口碑建立起來,其實(shí)很多時(shí)候,不需要什么技巧的,絕對(duì)的實(shí)力導(dǎo)致絕對(duì)的結(jié)果,當(dāng)大家都認(rèn)為你應(yīng)該成功時(shí),你其實(shí)已經(jīng)成功了。”
謝謝老師這段話,我會(huì)記住的。
感覺老師不僅是位技術(shù)人才還是位耐心的教育者,就像以前微軟的副總裁李開復(fù)一樣。
最后謝謝,老師給我說了這么多,謝謝! 另一個(gè)學(xué)生================================ 對(duì)于老師那段話,總結(jié)一下,就3點(diǎn):
1.不要?jiǎng)硬粍?dòng)就給別人扣帽子。
2.尊重各自的選擇。說白了就是:你如果認(rèn)為我不對(duì),就不必聽我的~
3.對(duì)于回答成本高的問題,老師不愿意做出回答。
對(duì)于第一點(diǎn),我很贊同。這是做人問題。
對(duì)于第二點(diǎn),我比較贊同。如果只是習(xí)慣或者編程風(fēng)格問題,我認(rèn)為不必大驚小怪。A不想用B規(guī)定的編程風(fēng)格寫代碼,B就不聘請(qǐng)A,A有實(shí)力去了C公司做大了一樣OK。一切只跟A自己相關(guān),也就這么簡(jiǎn)單,選擇決定價(jià)值。如果一個(gè)問題的確有且僅有一個(gè)正確答案,那么問題也很簡(jiǎn)單,錯(cuò)了或者正確。
3.對(duì)于第三個(gè)問題,我想說,這畢竟只是一個(gè)網(wǎng)上的社區(qū),老師不是學(xué)校的老師。說白了,就是老師不夠?qū)I(yè)(老師不要記恨我啊,我實(shí)話實(shí)說)。老師的職責(zé)就是傳道授業(yè)解惑,不能夠因?yàn)榛卮鸪杀靖呔屯硕苤.?dāng)然我指的是學(xué)生提的問題是能夠被解答的情況下(見"提問的訣竅"一貼)。就我而言我也提過幾道算法問題,自認(rèn)為完全符合要求,結(jié)果沒有老師給出令人滿意的答案…… 我================================ 嗯,換個(gè)說法比較準(zhǔn)確。
我以前說過,CSDN的老師,不是學(xué)校里收學(xué)費(fèi)的老師,我們沒有義務(wù)回答問題的,僅僅是根據(jù)愛好。也就是說,我們提供的是“不保證服務(wù)”。
既不保證一定會(huì)服務(wù),也不保證服務(wù)效果。
因此,第三點(diǎn),你說的不夠?qū)I(yè),我的理解是我們不必很專業(yè)。因?yàn)槲覀儧]有收錢啊。呵呵。
這好比你用開源的代碼出了bug,老板扣你的薪水,但是你沒有辦法去扣原作者的薪水一樣,因?yàn)槿思乙彩遣槐WC服務(wù)的。
高水平的服務(wù)品質(zhì),是需要高報(bào)酬來維持的,你說是不是? 學(xué)生================================ 恩!老師說的對(duì)~ 我================================ 因此,建議你改變一下思路。
你的問題無人解答,不是老師不是人,而很可能是你的問題誘惑力不夠。
試著重新設(shè)計(jì)你的問題,引誘某些老師(比方說我)忍不住誘惑,過來解答,怎么樣?
誘惑人非常簡(jiǎn)單,你只要說明回答這個(gè)問題,老師有什么好處就夠了。人是不會(huì)做沒有好處的事情的。
可以不明著說,但可以用暗示的。
嗯,注冊(cè)個(gè)人妖號(hào)怎么樣?用你GF的名義,再把照片發(fā)上來?呵呵
再或者,用點(diǎn)什么夸張的語(yǔ)句,什么跪求啦,360度拜求啊,呵呵。
又或者,重新思考你的問題,把一個(gè)復(fù)雜的大問題,分拆成n個(gè)小問題,讓大家覺得答了也無所謂,不如答一下,當(dāng)所有問題被回答完畢,你的原始問題自己就沒有了,你說這個(gè)辦法好不好? 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖
總結(jié)
- 上一篇: 使用C#开发ActiveX控件[Obso
- 下一篇: 揭秘ASP.NET 2.0的Eval方法