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