| 4 | 1/1 | 返回列表 |
| 查看: 1108 | 回復(fù): 3 | |||
yalefield金蟲 (文壇精英)
老漢一枚
|
[交流]
【轉(zhuǎn)帖】寫給Web程序員 已有3人參與
|
|
程序員是一個脆弱、特殊的群體,以各種方式生存在只有01的世界里。 程序員的特點(diǎn): -狂躁,但是有修養(yǎng) -隨和,但是瘋癲 -肯向任何人學(xué),但是不服任何人 -守約,但是不守時 -感情豐富,但是單純 …… Web程序是程序員中的一個別具特色的群體,他們有著和HTTP協(xié)議類似的無狀態(tài)性、無序性、不可預(yù)測性。我這么說,是因?yàn)閣eb程序員的出身、成分、學(xué)習(xí)途徑、從業(yè)歷程多種多樣。Web程序員,是現(xiàn)今IT從業(yè)者中最具活力也最復(fù)雜的最可愛的一群人。 相比于傳統(tǒng)的“學(xué)院派”程序員(請暫時允許我這么說),Web程序員的普遍出身都比較“貧寒”,這是行業(yè)事實(shí),尤其是處于剛?cè)胄胁痪玫倪@一大部分人中,有很多是沒有上過大學(xué),受過正常高校教育體制折磨的。高中、專科甚至初中學(xué)歷的程序員比比皆是,他們通過自己的努力,掌握了一定的技能,取得了一項(xiàng)不錯的工作。 “學(xué)院派”包括很多集團(tuán)性質(zhì)的大規(guī)模開發(fā)活動,外包項(xiàng)目,基于底層或硬件的開發(fā),研究性的開發(fā)等等,體現(xiàn)在開發(fā)工具上多集中于C、C++、 Ada等學(xué)院氣息濃厚的語言,Java在某種程度上也可以算作其中,他們的特點(diǎn)是基礎(chǔ)牢固、嚴(yán)謹(jǐn)、重視內(nèi)在,又有些枯燥的味道。Web開發(fā)更傾向與靈活、開發(fā)效率和表現(xiàn)形式。 然而,由于各種原因,很多高等學(xué)府中的學(xué)生有一種很不正確的誤解,認(rèn)為Web開發(fā)是低于傳統(tǒng)開發(fā)的,沒有水平的,浮躁的,實(shí)在沒工作的表現(xiàn),從而看不起它。 相對的,很多Web從業(yè)者認(rèn)為大學(xué)生畢業(yè)后去的大公司的工作是死板的,缺乏創(chuàng)造性的,枯燥的,沒有真才實(shí)學(xué)的,更認(rèn)為大學(xué)里學(xué)不到什么,從而也看不起,甚至仇視大學(xué)教育(包括一些受過高等教育的人)。這是一個非,F(xiàn)實(shí)的矛盾。 當(dāng)然這個矛盾只是集中沒有畢業(yè)的學(xué)生和從業(yè)時間不長的人群中,等到工作一段時間之后,相互接觸得多了,都會覺得自己原本并沒有體驗(yàn)到對方的真實(shí)內(nèi)涵。傳統(tǒng)開發(fā)中有很多富有創(chuàng)造性富有激情的內(nèi)容值得互聯(lián)網(wǎng)行業(yè)借鑒,而Web開發(fā)中千奇百怪的想法和時刻面對億萬用戶的幾乎無法預(yù)測的使用環(huán)境都是傳統(tǒng)開發(fā)者覺得羨慕不已的,而兩者結(jié)合更是體現(xiàn)了學(xué)院的嚴(yán)謹(jǐn)、知識的重要、來自用戶的成敗決定性,比如搜索引擎,比如企業(yè)級的B/S分布系統(tǒng)。 一個精熟C語言并有著豐富經(jīng)驗(yàn)的人,轉(zhuǎn)行從事Web開發(fā)是比較快的,甚至可以說是如魚得水,但是一個做了兩年P(guān)HP而又沒有什么其它的語言背景的程序員,在自身發(fā)展上就會受到阻礙了。 任何一門語言上升到一定高度,它所面對的問題已經(jīng)不再是這門語言本身。語言只是工具,使用工具的方法才是生產(chǎn)效率的決定因素。熟習(xí)了語言之后,慢慢地在工作中會碰到諸如執(zhí)行效率、存儲方法、算法優(yōu)化等更多偏向分析而不是代碼藝術(shù)的內(nèi)容。通常對于一個沒有受過系統(tǒng)的計(jì)算機(jī)教育,沒有受過自認(rèn)為“沒用”的大學(xué)培養(yǎng)的程序員,在這些問題面前表現(xiàn)都是比較盲目、無助的。很多問題需要嚴(yán)整的數(shù)學(xué)分析,查閱參考資料需要比較好的英文水平和數(shù)學(xué)基礎(chǔ),聰明一點(diǎn)的會馬上意識到大學(xué)基礎(chǔ)教育的重要性,多半都會后悔上課睡覺了,呵呵~~ 一些人對于分析方法等抱著不以為然的態(tài)度,認(rèn)識多是浮于表面,比如對于數(shù)據(jù)結(jié)構(gòu)和算法的淡漠,覺得在Web開發(fā)中極少或不可能觸及到這些內(nèi)容。誠然,現(xiàn)在的Web開發(fā)腳本語言都有豐富的函數(shù),靈巧的使用方式,多數(shù)已經(jīng)不需要再像C語言一樣聲名變量、創(chuàng)建指針、計(jì)算內(nèi)存地址、寫排序算法。而且基于互聯(lián)網(wǎng)的不可預(yù)知性,也很難有一個完美的算法解決所有情況下的問題,比如排序。程序員在這種情況下都是使用語言內(nèi)置的各種功能在完成操作,當(dāng)然我不是說什么都要從頭開始自己寫,那是莽夫做的傻事,但是我想,既然用了,多多少少也應(yīng)該知道函數(shù)是怎么回事。自己寫的function是函數(shù),系統(tǒng)提供的就不是函數(shù)了么?不求看懂源碼,至少也應(yīng)該知道它是在做什么。每天追求執(zhí)行效率和頁面執(zhí)行時間的程序員,更是忽略了系統(tǒng)函數(shù)本身的效率問題,把所有的系統(tǒng)函數(shù)都想象成了匯編中的NOOP這種單元操作。 Web開發(fā)中碰到的算法問題很少么? 舉一個小例子:iForum論壇中記載用戶組權(quán)限的方法,是在數(shù)據(jù)表中插入一條類似 11110010011100的字符串,每一位代表一種操作,1就是表示有權(quán)限進(jìn)行操作,0就是沒有。 這種方式很簡單實(shí)用,但是它受到Varchar的長度限制(雖然255種操作已經(jīng)足夠復(fù)雜了),而且字符串的計(jì)算效率又是低于數(shù)字,那么有沒有想過這種算法的本質(zhì)是什么呢?有沒有想過優(yōu)化它呢? 中國古代有一套數(shù)學(xué)理論叫做“盈不足術(shù)”,例如,有十只盒子,第一個盒子里放一個盤子,第二個盒子里放兩只,第三個盒子里放四只,第四個盒子里放八只……第九個盒子里放256只,第十個盒子放512只,即第N只箱子里放2^(N-1)只盤子,一共1023只。那么命題如下:在1023這個數(shù)字之內(nèi),任何一個數(shù)目都可以由這十只盒子里的幾只組合相加而成(大家自己算算就知道了……呵呵)。 那么1、2、4、8、16、32、64、128、256、512這個序列為什么有這么個魔力?這個數(shù)列的特點(diǎn):1、每項(xiàng)是后一項(xiàng)的二倍,2、每項(xiàng)都比前面所有項(xiàng)的和大,而且大1。這個1就是關(guān)鍵,就因?yàn)檫@個1,它才可以按1遞增,拼出總和之內(nèi)任意一個整數(shù)。這個序列叫做超遞增序列,它是解決背包問題的基礎(chǔ)。 對于一個整數(shù),假設(shè)377,它的二進(jìn)制表示為“101111001”,它就是由第一只、第四只、第五只、第六只、第七只和第九只箱子拼成的,對于一個表現(xiàn)了9種操作的描述,377就是這個描述下的一個實(shí)例,是一個權(quán)值。 那么相比于保存這個字符串和保存這樣一個數(shù)值,好處和壞處都在哪里呢? 很明顯的,保存字符串的好處是運(yùn)算壓力小。我們可能聽過一個故事,就是把這個超遞增序列延伸到第64項(xiàng),就是那個術(shù)士和皇帝在國際象棋棋盤上要米粒的傳說。64項(xiàng)的和是一個天文數(shù)字!但是不要忘了,計(jì)算機(jī)本身就是一個只認(rèn)識二進(jìn)制的機(jī)器! (這點(diǎn)很多Web程序員都忽視了,很多人不知道位操作是什么玩意)有人擔(dān)心數(shù)據(jù)庫的int不夠長,那么既然可以保存一個只有0、1組成的 varchar字符串,為什么不能保存一個十六進(jìn)制的字符串,有人規(guī)定varchar只能保存01嗎?十六進(jìn)制串的長度正好是二進(jìn)制的四分之一,而十六進(jìn)制到二進(jìn)制的轉(zhuǎn)化是非常直接方便的。 以上就是這個權(quán)限串的由來,不知道有多少web程序員想到過這些…… 而一個C或匯編程序員看到這個字符串第一眼就會想起這是個十進(jìn)制的 15516(當(dāng)然不是馬上就算得出來)。 由此引出的和web相關(guān)的,比如多選框的保存,投票選項(xiàng)的保存等等…… Web程序員需要學(xué)習(xí)一些數(shù)據(jù)結(jié)構(gòu)、算法分析等知識,雖然在工作中不會使用得那么明顯,但是這些概念是學(xué)習(xí)本身語言的一個很好的催化劑,它會讓程序員更有效地理解資料上的信息,達(dá)到事半功倍的目的,也會在問題陷入苦處不得解脫時候幫助開發(fā)者理清頭緒,以一個清晰的思維過程找到解決問題的突破點(diǎn)。 阻礙程序員學(xué)習(xí)這些的原因 第一就是基礎(chǔ)學(xué)科不扎實(shí),比如數(shù)學(xué)。計(jì)算機(jī)劃分為理工科是非常有道理的,計(jì)算機(jī)科學(xué)建立在深厚龐大的數(shù)學(xué)系統(tǒng)之上,至于如何學(xué)數(shù)學(xué)……這是功夫問題了。 第二是心理障礙,覺得離開學(xué)校就學(xué)不好。自然學(xué)校是學(xué)習(xí)基礎(chǔ)學(xué)科的最好地方,但是往往工作上需要的知識更貼近實(shí)際,在實(shí)際中學(xué)習(xí)通常會比在枯燥的書本上搬東西效果更好。 第三是客觀原因:從業(yè)者多半工作都很忙,業(yè)余時間很少(這幾乎是程序員的標(biāo)志),那么學(xué)習(xí)只能在工作中見縫插針,這種學(xué)習(xí)方式需要會用巧功,會聯(lián)系。 第四個就是信息來源,F(xiàn)在適合Web程序員學(xué)習(xí),根據(jù)Web腳本語言特點(diǎn)編寫的基礎(chǔ)類書籍太少了!比如數(shù)據(jù)結(jié)構(gòu)類書籍多半是以C/C++/Pascal這類強(qiáng)類型的嚴(yán)謹(jǐn)?shù)膫鹘y(tǒng)語言為描述基礎(chǔ),操作系統(tǒng)原理多是以匯編等底層腳本描述,設(shè)計(jì)思想多是以Java這種純OO的語言為主,我沒有發(fā)現(xiàn)有使用Perl這種怪異的語言教授數(shù)據(jù)結(jié)構(gòu)的學(xué)校。 基于以上的研究結(jié)果,我們可以有條理地整理思路,多站在Web程序員的角度上考慮,做出一些適合這個特殊群體學(xué)習(xí)提高的有意義的活動。 http://apps.hi.baidu.com/share/detail/5669789#content |
金蟲 (正式寫手)
新蟲 (初入文壇)
![]() |
| 4 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 086500 325 求調(diào)劑 +3 | 領(lǐng)帶小熊 2026-03-19 | 3/150 |
|
|---|---|---|---|---|
|
[考研] 工科材料085601 279求調(diào)劑 +7 | 困于星晨 2026-03-17 | 9/450 |
|
|
[考研] 一志愿中國海洋大學(xué),生物學(xué),301分,求調(diào)劑 +5 | 1孫悟空 2026-03-17 | 6/300 |
|
|
[考研] 梁成偉老師課題組歡迎你的加入 +9 | 一鴨鴨喲 2026-03-14 | 11/550 |
|
|
[考博] 東華理工大學(xué)化材專業(yè)26屆碩士博士申請 +8 | zlingli 2026-03-13 | 8/400 |
|
|
[考研] 材料與化工求調(diào)劑 +7 | 為學(xué)666 2026-03-16 | 7/350 |
|
|
[考研] 286求調(diào)劑 +6 | lemonzzn 2026-03-16 | 10/500 |
|
|
[考研] 一志愿福大288有機(jī)化學(xué),求調(diào)劑 +3 | 小木蟲200408204 2026-03-18 | 3/150 |
|
|
[考研] 一志愿中海洋材料工程專碩330分求調(diào)劑 +7 | 小材化本科 2026-03-18 | 7/350 |
|
|
[考研] 一志愿天大材料與化工(085600)總分338 +5 | 蔡大美女 2026-03-13 | 5/250 |
|
|
[考研] 一志愿華中科技大學(xué),080502,354分求調(diào)劑 +4 | 守候夕陽CF 2026-03-18 | 4/200 |
|
|
[考研] 070300化學(xué)319求調(diào)劑 +6 | 錦鯉0909 2026-03-17 | 6/300 |
|
|
[考研] 303求調(diào)劑 +4 | 睿08 2026-03-17 | 6/300 |
|
|
[考博] 26博士申請 +3 | 1042136743 2026-03-17 | 3/150 |
|
|
[考研] 304求調(diào)劑 +4 | ahbd 2026-03-14 | 4/200 |
|
|
[考研] 一志愿211 0703方向310分求調(diào)劑 +3 | 努力奮斗112 2026-03-15 | 3/150 |
|
|
[考研] 304求調(diào)劑 +3 | 曼殊2266 2026-03-14 | 3/150 |
|
|
[考研] 0703化學(xué)調(diào)劑 290分有科研經(jīng)歷,論文在投 +7 | 膩膩gk 2026-03-14 | 7/350 |
|
|
[考研] 復(fù)試調(diào)劑 +3 | 呼呼?~+123456 2026-03-14 | 3/150 |
|
|
[考研] 招收0805(材料)調(diào)劑 +3 | 18595523086 2026-03-13 | 3/150 |
|