色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

語(yǔ)言真是不重要的嗎?談?wù)Z言的*層次*與技術(shù)的三六九等

  關(guān)注——或“專注”于多語(yǔ)言編程之后,老趙對(duì)于語(yǔ)言的關(guān)注也越來(lái)越多,對(duì)于語(yǔ)言在編程中所帶來(lái)的“美感”也有了越來(lái)越深的體會(huì),還在博客的標(biāo)題中加上“追求編程之美”。關(guān)注語(yǔ)言多了,關(guān)注純粹的編程實(shí)踐多了,自會(huì)有所比較,然后寫出了引人注目的《為啥老趙不喜歡Java*語(yǔ)言*》。這篇文章所得到的負(fù)面評(píng)論的確也和想象中差不多,大部分朋友的觀點(diǎn)是“語(yǔ)言不是關(guān)鍵”或類似說(shuō)法,似乎對(duì)語(yǔ)言的討論和比較非常沒(méi)有必要。有個(gè)朋友說(shuō)的更是直接:“在看到這些文章之前,我還是比較敬重老趙的,不過(guò)現(xiàn)在發(fā)現(xiàn)你也就這點(diǎn)高度”。老趙認(rèn)為,這是對(duì)這方面的誤解,而有這種誤解無(wú)論是對(duì)于社區(qū)還是個(gè)人的發(fā)展都是沒(méi)有益處的,因此單獨(dú)開篇,討論一下這個(gè)問(wèn)題1

  “高度”,是個(gè)多么“發(fā)人深省”的名詞,往往直接就將事物分了三六九等。封建社會(huì)將人認(rèn)為三六九等即從“出身”或“行業(yè)”決定了一個(gè)人的社會(huì)地位高低,例如,即使是“戲子”或“工匠”等下等職業(yè),就算成就再高也被主流社會(huì)所排斥,大部分人依舊從心底里瞧不起那些人。不知道您對(duì)這樣的劃分有什么看法,老趙對(duì)此沒(méi)有看出任何科學(xué)性,也沒(méi)有任何好感。不過(guò)現(xiàn)在國(guó)內(nèi)“主流”觀點(diǎn)也在技術(shù)方向分了三六九等,例如以下便是一個(gè)典型:

  • 上等:系統(tǒng)架構(gòu)
  • 中等:框架設(shè)計(jì)
  • 下等:語(yǔ)言實(shí)現(xiàn)

  為了證明自己的“高度”,為了避免接下去討論的內(nèi)容把老趙“下等人”的老底給顯露出來(lái),老趙先用一段話為自己披上“上等人”的外衣:

  “如果要實(shí)現(xiàn)一個(gè)‘高性能’、‘大并發(fā)’的網(wǎng)站,前端使用4層7層負(fù)載均衡,如果不用F5等商業(yè)產(chǎn)品可以先用Nginx等做反向代理。后臺(tái)實(shí)現(xiàn)要對(duì)系統(tǒng)作劃分,避免單點(diǎn)失敗,也可以作獨(dú)立優(yōu)化。系統(tǒng)之間可以用異步消息傳遞來(lái)降低耦合;系統(tǒng)中不采用二段式提交或分布式事務(wù),CAP原則中的“一致性”往往需要做出讓步,而采用‘最終一致’策略。數(shù)據(jù)存儲(chǔ)方面可以做橫向或縱向的劃分,或者構(gòu)建查詢表。合理使用Schemaless的設(shè)計(jì)方式或如何MemcacheDB或Tokyo CabiNET等Key-Value存儲(chǔ)方式可以帶來(lái)更好的伸縮性。除此之外,系統(tǒng)中還需要部署Memcached集群作為緩存。靜態(tài)文件可以使用Squid或Varnish作為緩存,避免所有IO都直接落到文件存儲(chǔ)上……”

  其實(shí)老趙只是把大腦皮層最表面的某些“知識(shí)”給傾倒出來(lái)一些,我不知道這些內(nèi)容給您感覺(jué)是什么,是不是會(huì)覺(jué)得很有“高度”。但是老趙覺(jué)得,這些東西看起來(lái)可能會(huì)“過(guò)癮”,但是卻毫無(wú)營(yíng)養(yǎng)。其實(shí)所謂我們很多草根人士平時(shí)在談?wù)?ldquo;系統(tǒng)架構(gòu)”的時(shí)候,往往就是把各種產(chǎn)品,原理,實(shí)踐進(jìn)行組合拼接,其實(shí)說(shuō)起來(lái)和看著市場(chǎng)上產(chǎn)品報(bào)價(jià)然后攢出一臺(tái)電腦沒(méi)有本質(zhì)的區(qū)別。因此老趙現(xiàn)在看到這些東西已經(jīng)不太感冒了,目前一直在設(shè)法研究從某個(gè)細(xì)節(jié)方面真正有效地提高“某個(gè)參數(shù)”,而不是從一個(gè)非常高屋建瓴的方面對(duì)整體提出一個(gè)所謂的“指導(dǎo)”。

  不是每個(gè)人都有能力和條件成為鄧爺爺那樣偉大的改革開放總架構(gòu)師的。

  作為一個(gè)普通人,我們很容易對(duì)自己不太了解的東西產(chǎn)生一種崇敬之情。例如搞.NET編程的,往往會(huì)對(duì)“操作系統(tǒng)”,“線程調(diào)度”,“文件系統(tǒng)”,“匯編”等名詞望眼欲穿,覺(jué)得那些才是真正有“技術(shù)含量”的東西。其實(shí)每個(gè)人的工作都是建立在另一批人的抽象之上,然后再這個(gè)抽象上產(chǎn)生更多的價(jià)值,如果因此對(duì)自己產(chǎn)生懷疑,硬要分個(gè)高低貴賤三六九等,這估計(jì)可以算作一種“妄自菲薄”。而“語(yǔ)言”作為我們技術(shù)人員每天都會(huì)接觸的事物,似乎人人都會(huì),人人都懂,談了再多也只是一種“低級(jí)”的問(wèn)題。如果還在專注,還在比較,那么“你也只能算是這點(diǎn)高度了”。

  我們每個(gè)人從接受計(jì)算機(jī)教育的一開始似乎都會(huì)被告知一個(gè)正確的道理:“語(yǔ)言只是工具,重要的是能力與思想”。這句話本沒(méi)有錯(cuò),但是一句正確的話被強(qiáng)調(diào)過(guò)渡了可能也會(huì)成為一種錯(cuò)誤。例如KISS原則的本意是要避免“過(guò)渡設(shè)計(jì)”,而老趙不止一次發(fā)現(xiàn)它已經(jīng)被某些朋友用作“不設(shè)計(jì)”的理由。語(yǔ)言之余技術(shù)人員,就好比兵器之于武林人士。強(qiáng)調(diào)“能力”好比強(qiáng)調(diào)“武功內(nèi)力”這不會(huì)有錯(cuò),但是根據(jù)老趙多年閱讀的沒(méi)有上百也有數(shù)十本武俠小說(shuō)中,的確沒(méi)有發(fā)現(xiàn)武林人士對(duì)神兵利器的品評(píng)與追求體現(xiàn)出嗤之以鼻的態(tài)度。

  很多朋友認(rèn)為,高手是不會(huì)介意語(yǔ)言的選擇,而語(yǔ)言也不會(huì)影響高手的能力。老趙并不同意這個(gè)看法。老趙同意“對(duì)于同樣的工具來(lái)說(shuō),能力決定了生產(chǎn)力”,卻不同意“有了能力,工具對(duì)于生產(chǎn)力的作用微不足道”。在TL上有朋友說(shuō)了一句老趙認(rèn)為非常有道理的話:有些武功也必須是有特定的兵器才能修煉的。如果只有匯編語(yǔ)言,那么大部分人都無(wú)法突破“子過(guò)程”這個(gè)抽象級(jí)別,更別說(shuō)“面向?qū)ο?rdquo;了。因?yàn)?ldquo;語(yǔ)言”往往會(huì)對(duì)“設(shè)計(jì)”有巨大影響,所以Linus會(huì)炮轟C++Anders HejlsbergJames Gosling會(huì)對(duì)語(yǔ)言設(shè)計(jì)中是否應(yīng)該有Checked Exception持不同意見。

  看大師爭(zhēng)論很過(guò)癮,那些總不會(huì)是“低層次”的爭(zhēng)論吧!

  “圖靈完備”已經(jīng)從理論上保證了語(yǔ)言的能力“足夠”表現(xiàn)出任何邏輯,但是世界上還是有各種各樣的語(yǔ)言層出不窮,在一個(gè)又一個(gè)地方放出不同光輝。而由于一般的“通用語(yǔ)言”在表現(xiàn)某個(gè)特定問(wèn)題的時(shí)候會(huì)顯得比較“嘈雜(Noise)”,因此現(xiàn)在DSL的概念也愈發(fā)蓬勃了起來(lái)。老趙懷疑,高手的能力真能忽略語(yǔ)言的特性的不同,得到同樣高度的生產(chǎn)力嗎?如果真是這樣的話,老趙現(xiàn)在所追求的“混合編程”的意義又在哪里?老趙不知道Martin Fowler為什么會(huì)說(shuō)“People may say that Ruby is less noisy than Java, or that external DSLs are less noisy than internal DSLs”。不過(guò)我懷疑小李探花手持天機(jī)棍2后是否還能在兵器譜上排名第三。

  誠(chéng)然,高手超能力的作用無(wú)法被忽視,他們也可以用Java寫出流暢的API(fluent interface),正如jMock在為Java平臺(tái)帶來(lái)了一股清新的空氣。但是Moq使用C# 3.0中引入了Lambda表達(dá)式之后,從Rhino Mocks(與jMock的語(yǔ)法類似)手中搶走了大量的市場(chǎng)份額,迫使它也不得不使用Lambda表達(dá)式應(yīng)戰(zhàn)。同樣,即使C#的擴(kuò)展方法特性可以在一定程度上改進(jìn)單元測(cè)試的語(yǔ)義,如果您把它和Scala實(shí)現(xiàn)的specs,或者F#實(shí)現(xiàn)的FsUnit相較“Behavior-Driven Development”,高下立判。今后老趙也會(huì)給出自己在混合編程上的探索,您一定可以更明顯地發(fā)現(xiàn)不同語(yǔ)言在解決相同問(wèn)題時(shí)產(chǎn)生的區(qū)別。

  “語(yǔ)言只是工具,重要的是能力與思想”。這句話本沒(méi)有錯(cuò),但是如果把它作為“輕視語(yǔ)言”的理由,認(rèn)為“語(yǔ)言”是低層次的東西,那只能說(shuō)是一種誤用了。

  最后,老趙再稍微談一下對(duì)另一個(gè)觀點(diǎn)的看法:“一個(gè)好的程序員應(yīng)該兼容并包,不該有門戶之見”。老趙舉雙手雙腳同意這個(gè)看法,這也是老趙推崇“混合編程”的原因。但是老趙認(rèn)為這不代表不能“批評(píng)”一個(gè)語(yǔ)言,“兼容并包”講究的是“各取所長(zhǎng)”而并非是“各護(hù)其短”。老趙不搞“平衡論”,不代表老趙有“門戶之見”,不是嗎?

  就用“門戶之見”來(lái)結(jié)束這篇文章吧:有錯(cuò)誤的是“重語(yǔ)言而輕其他”,或者僅從語(yǔ)言來(lái)說(shuō)明事物(例如通過(guò)語(yǔ)言來(lái)說(shuō)明程序員能力高低,項(xiàng)目好壞等等)。而研究語(yǔ)言,比較語(yǔ)言,思考語(yǔ)言,談不上所謂層次淺,高度低——“層次”所指的是“怎么搞”,而不是“搞什么”。否則,不也是一種“門戶之見”嗎?

 

注1:這篇文章的內(nèi)容原本屬于《老趙看“偽專業(yè)”》一文,但是在寫作過(guò)程中發(fā)現(xiàn)這一塊可能是誤解最深,也最難以被人識(shí)破的觀念,因此單獨(dú)成文,想把這個(gè)問(wèn)題說(shuō)明清楚。

注2:在白曉生“兵器譜”排名中,“天機(jī)棍”排名第一,而“小李飛刀”李尋歡排第三。

 

it知識(shí)庫(kù)語(yǔ)言真是不重要的嗎?談?wù)Z言的*層次*與技術(shù)的三六九等,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 博白县| 广东省| 华安县| 元朗区| 桃园市| 江北区| 阿勒泰市| 宜城市| 筠连县| 万全县| 峡江县| 凤翔县| 达日县| 张家川| 隆化县| 綦江县| 邛崃市| 嘉荫县| 镇雄县| 汾阳市| 雅安市| 江华| 开江县| 盐源县| 喀喇| 通州市| 新乐市| 安化县| 洪雅县| 忻城县| 阿坝县| 抚州市| 高邑县| 富裕县| 永昌县| 绵阳市| 酉阳| 通渭县| 广丰县| 阿拉尔市| 阳朔县|