欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      十年學(xué)會編程[最終定稿]

      時(shí)間:2019-05-15 10:26:53下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《十年學(xué)會編程》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《十年學(xué)會編程》。

      第一篇:十年學(xué)會編程

      這里分享一篇 Peter Norvig的 《十年學(xué)會程序設(shè)計(jì)》(Peter Norvig系Google研究院主任、美國計(jì)算機(jī)協(xié)會(ACM)資深會員(Fellow))。全文如下:

      十年學(xué)會程序設(shè)計(jì)

      Peter Norvig(Copyright 2001)原文網(wǎng)址

      為何大家如此匆忙?

      走進(jìn)任何一家書店,你會看到書架上一排不見盡頭的放著如 <7天自學(xué)Java語言> 以及幾天或者幾小時(shí)學(xué)會Windows, 因特網(wǎng)或者Visual Basic 這類書。我在Amazon 網(wǎng)上書店用一下的方式進(jìn)行高級搜索:

      出版年份: 1992以后 書名包括:“天” 和 “學(xué)習(xí)” 或 “自學(xué)”

      得到了268條搜索結(jié)果,其中前78條都是計(jì)算機(jī)書(第79條是 30天學(xué)會孟加拉語)。我用 “小時(shí)” 代替“天” 作為關(guān)鍵字,得到了神奇般類似的結(jié)果:這次有253本書,前77本是計(jì)算機(jī)書,第78本是 24小時(shí)自學(xué)語法和寫作風(fēng)格。排名前200的書中有96%是計(jì)算機(jī)書。

      由此可見,人們要不就是急著想學(xué)會計(jì)算機(jī),要不就是計(jì)算機(jī)相比于其他事情太容易學(xué)會了。比如說把,沒有書是寫在幾天彈奏貝多芬或幾天學(xué)會量子物理,甚至也沒有幾天學(xué)會幫小狗打扮這樣的書。

      讓我們分析一下 三天學(xué)會Pascal語言 [英文網(wǎng)頁] 這樣的標(biāo)題表達(dá)了什么意思:

      ?學(xué)會:

      在 三天內(nèi),你沒有時(shí)間去寫幾個(gè)有意義的程序,或者從成功和失敗中學(xué)到東西。你也沒時(shí)間跟有經(jīng)驗(yàn)的程序員一起工作,所以也無法了解在真正編程是什么樣子。簡短 的說,就學(xué)會而言,時(shí)間顯然不夠。所以這些書只是浮于表面的熟悉,而不是深刻的理解。如同Alexander Pope 所說,一知半解是危險(xiǎn)的。

      ?Pascal 語言:

      三 天內(nèi)你可能學(xué)會Pasacl語言的語法(如果你已經(jīng)掌握一個(gè)類似的編程語言),但你無法學(xué)會如何合理運(yùn)用這些語法。簡言之,如果你是個(gè)Basic 程序員,你可以用Pascal 語言寫出類似Basic 風(fēng)格的程序,但你學(xué)不到Pascal語言的優(yōu)點(diǎn)(還有缺點(diǎn))到底在哪。重點(diǎn)是什么呢? Alan Perlis 曾說: “如果編程語言不能影響你的編程思維,那就不值得去學(xué).” 另一個(gè)可能是,你必須學(xué)會一點(diǎn)點(diǎn)Pascal語言(或是像VB語言、Javascript等),因?yàn)槟阈枰F(xiàn)成的工具組合完成特定的工作。不過這個(gè)時(shí)候,你實(shí)際上學(xué)的不是怎么寫程序,而是要學(xué)著如何完成工作。

      ?三天

      不幸的是三天根本不夠;下面的章節(jié)會告訴你為什么

      十年學(xué)會程序設(shè)計(jì)

      研究者 Hayes, Bloom 的研究表明,在幾乎所有的各種領(lǐng)域,大約要十年才能培養(yǎng)出專業(yè)技能。這些領(lǐng)域包括下西洋棋、音樂作曲、繪畫、鋼琴、游泳、網(wǎng)球,及神經(jīng)心理學(xué)和數(shù)學(xué)拓

      撲學(xué)。似乎沒有真正的捷徑--即便是莫扎特在四歲就展露出音樂天才,在他寫出世界級的音樂之前仍然用了超過十三年的時(shí)間。

      再看另一種類型的領(lǐng)域。披頭士樂團(tuán)似乎是在1964年的Ed Sullivan 劇場表演突然地火起來并成為第一樂隊(duì)的。但其實(shí)他們從 1957 年開始,就在利物浦、漢堡等地的小型俱樂部表演。雖然他們很早就顯現(xiàn)強(qiáng)大的吸引力,但他們決定性的成功作品 Sgt Pepper 也到1967年才發(fā)行。Samuel Johnson 則認(rèn)為或許還不止十年才行,他說:任何領(lǐng)域的卓越成就都必須用一生的努力才能取得;稍微低一點(diǎn)的代價(jià)都是換不到的。Chaucer 則感嘆道: “生命如此短促,學(xué)習(xí)技藝卻要這么地長”

      以下是我在編程上成功的秘訣:

      ?對編程產(chǎn)生感興趣并因?yàn)闃啡ざ鴮懗绦?。確信你自始至終都能樂在其中,這樣你才愿意將十年光陰投入編程事業(yè).?與其他程序員交流;閱讀別人的代碼。這比任何書任何培訓(xùn)都重要。

      ?不斷地編寫。最好的學(xué)習(xí)方法是在實(shí)踐中學(xué)習(xí)。從技術(shù)角度說,”在特定領(lǐng)域的個(gè)人最高效率并不因?yàn)榻?jīng)驗(yàn)夠多就會自動獲得;但若有意識的通過努力去提升經(jīng)驗(yàn),個(gè)人效率會變高”(第336頁)而 “高效的學(xué)習(xí)一般需要明確的任務(wù)和因人而異的適當(dāng)難度,以及及時(shí)的反饋和重復(fù)或者修正錯(cuò)誤的機(jī)會”(20~21頁)Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life(實(shí)踐中認(rèn)知:心智、數(shù)學(xué)與日常文化)是這個(gè)觀點(diǎn)的一本有趣參考書籍。

      ?如 果你愿意,你可以去讀四年大學(xué)(或再讀研究生)。這可以讓你滿足一些工作的學(xué)歷要求,同時(shí)也可讓你對這個(gè)領(lǐng)域有更深的認(rèn)識。但如你不喜歡上學(xué),你也能(得 有犧牲)通過工作獲得類似的經(jīng)驗(yàn)。無論如何,只讀書是不夠的?!禢ew Hacker’s Dictionary》的作者Eric Raymond 曾經(jīng)說過: “計(jì)算機(jī)的教育無法讓人成為編程的專家,正如研究畫筆與顏料不能讓人成為專業(yè)畫家一樣.” 一個(gè)在我所有招聘過的人中屬于最優(yōu)秀之一的程序員只有高中畢業(yè),但他寫出很多很棒 的程序,他甚至有自己的新聞組。他獲得的股票期權(quán)使得他可以擁有自己的午夜酒吧.?跟其他程序員一起完成項(xiàng)目。在一些項(xiàng)目中成為最好的程序員;在一些中則充當(dāng)最差的一個(gè)。當(dāng)你是最佳的,你要測試自己領(lǐng)導(dǎo)項(xiàng)目的能力,并以你的能力鼓勵(lì)他人。當(dāng)你是最差的,要看看高手做些什么,他們不喜歡做什么(因?yàn)樗麄儠心闳退麄冏?.?接手別的程序員完成項(xiàng)目。全心投入并理解別人的程序。當(dāng)原作者不在的時(shí)候,看看在理解與修改時(shí)有什么要注意的。想想如何設(shè)計(jì)你的程序使得后來維護(hù)的人容易上手。

      ?至 少學(xué)會六門編程語言。一種要支持類/對象(class abstractions)的語言, 如Java或C++;一種函數(shù)式(functional abstraction)語言, 如 LISP 或 ML;一種支持語法抽象(syntactic abstraction)的語言 如 LISP;一種聲明式語言, 如Prolog或 C++模版;一種支持協(xié)同式(coroutines)編程, 如 Icon 或 Scheme;還有一種支持并行(parallelism)的語言, 如 Sisal.?記住在 “計(jì)算機(jī)科學(xué)” 中包括”計(jì)算機(jī)” 這個(gè)詞。要知道你的計(jì)算機(jī)執(zhí)行一條指令需要多久,到內(nèi)存中取一個(gè)字需要多久(緩存是否擊中), 到磁盤讀取連續(xù)的字需要多久,而磁盤的定位又需要多久.(解答見文末)

      ?進(jìn)行語言標(biāo)準(zhǔn)化的工作??梢韵袷怯葾NSI C++ 委員會,或由你自己的團(tuán)隊(duì),來決定你們的編碼風(fēng)格,譬如說縮排是2或4個(gè)空格。不管怎樣,你都能學(xué)到別人到底喜歡什么,對語言的感受有多深,甚至能了解到一點(diǎn)他們?yōu)槭裁从羞@樣的感覺。

      ?并具備良好的判斷力,也別老糾纏在語言標(biāo)準(zhǔn)化上.談 了上面所有的想法后,我不禁要問究竟能從書上學(xué)到多少。在第一個(gè)孩子出生前,我讀完了所有的 “怎樣…” 的書,仍覺得自己是個(gè)一無所知的(照顧孩子的)菜鳥。30個(gè)月后,第二個(gè)孩子出世,我要重回這些書好好復(fù)習(xí)么? 不!取而代之的是,我開始相信自己的個(gè)人經(jīng)驗(yàn)。這些難得的經(jīng)驗(yàn),比專家寫的幾千頁手冊還要有用,而且讓我重新找到了自信.Fred Brooks(譯注: <人月神話>作者)在他的文章 沒有銀彈 中指出,發(fā)掘卓越軟體設(shè)計(jì)者的三部曲:

      1.盡早盡可能地以系統(tǒng)化的方式發(fā)掘最佳設(shè)計(jì)人員。

      2.給有潛力者指派生涯規(guī)劃師,并謹(jǐn)慎地規(guī)劃他們的職業(yè)生涯。

      3.提供機(jī)會給正在成長的程序員,讓他們能相互影響,彼此激勵(lì)。

      這里假定了某些人已具備成為卓越設(shè)計(jì)師的必要潛能;工作只是誘導(dǎo)他們前進(jìn)。Alan Perlis 說得更簡潔了,你可以教任何人學(xué)雕塑,但對米開朗基羅而言,要教他的反倒是有哪些事不要做, 卓越的程序員也一樣。

      所以,盡管買那些 Java 書吧!你或許能從中找到點(diǎn)有用的,但是在24小時(shí),幾天或者幾個(gè)月中,這些都不會改變你的人生,你也不能掌握一個(gè)真正的程序員應(yīng)該具備的真正的綜合的技能。

      參考文獻(xiàn):

      Bloom, Benjamin(ed.)Developing Talent in Young People, Ballantine, 1985.Brooks, Fred, No Silver Bullets, IEEE Computer, vol.20, no.4, 1987, p.10-19.Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989.Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.________________________________

      解答:

      各種操作的時(shí)間,以2001年夏季,典型配置的 1GHz 個(gè)人計(jì)算機(jī)為標(biāo)準(zhǔn):

      執(zhí)行單一指令 1 納秒

      從L1 高速緩存取一個(gè)字 2 納秒

      從內(nèi)存取一個(gè)字 10 納秒

      從磁盤取連續(xù)存放的一個(gè)字 200 納秒

      磁盤尋址并取字 8 毫秒

      ________________________________

      附錄 I: 語言的選擇

      好幾個(gè)人問過我一開始應(yīng)該先學(xué)哪個(gè)計(jì)算機(jī)編程語言,這個(gè)問題沒有唯一的答案,不過選擇的時(shí)候可以從以下的幾個(gè)方面考慮:

      ?朋友在用的.當(dāng) 人們問我:”我該用什么操作系統(tǒng)的時(shí)候”,我通常的回答是:“用你朋友用的”.這樣的好處是從朋友那兒學(xué)習(xí)可以彌補(bǔ)復(fù)雜的操作系統(tǒng)差異或者編程語言差異(給你造成的困惑)。這里也要考慮你未來的朋友:如果你一直使用的話,開發(fā)社區(qū)會 是你的朋友。你選擇了一個(gè)具有有巨大的增長的開發(fā)社區(qū)還是一個(gè)小的快消失的開發(fā)社區(qū)的語言? 它有相關(guān)的書,網(wǎng)站和論壇可以獲取解答么? 你喜歡那些論壇上的人么?

      ?保持簡單.諸如C++和Java 是為那些關(guān)心代碼執(zhí)行效率的有經(jīng)驗(yàn)的大型團(tuán)隊(duì)的開發(fā)人員設(shè)計(jì)的。因此這些語言中有些為這些特殊場合設(shè)計(jì)的部件。你只是關(guān)心編程而不需要關(guān)心復(fù)雜情況。你需要一個(gè)為新學(xué)編程的人設(shè)計(jì)的容易學(xué)習(xí)和理解的語言。

      ?實(shí)踐.什么是學(xué)習(xí)鋼琴的好方法呢? 是一邊聽音一邊彈奏的“交互式” 的方法呢,還是全聽完整首歌然后再彈奏的那種“批處理”方式呢? 很顯然, 交互學(xué)習(xí)的方式能夠讓學(xué)鋼琴變得簡單–這也適用于編程.選取一種交互式的編程語言并且堅(jiān)持使用.基于以上的這些標(biāo)準(zhǔn),我對于第一次接觸編程的人推薦 Python 或 Scheme.但是情況各有不同,或許也有其他的選擇.如果你不滿10歲,你可能會喜歡Alice 或者Squeak(年齡大的人或許也喜歡這些).重要的是在選擇后, 立即開始學(xué)習(xí)和使用.附錄II: 書和其他資源:

      很多人問我該從什么書或者什么網(wǎng)頁開始看起。我重申一句:“僅僅看書是不夠的”,不過我也推薦一下的一些:

      ?Scheme: 計(jì)算機(jī)程序的結(jié)構(gòu)和釋義(Abelson & Sussman)可能是計(jì)算機(jī)科學(xué)最好的導(dǎo)論了, 他還告訴程序員怎么理解計(jì)算機(jī)科學(xué), 你可以訪問這本書的 在線視頻講座 和 全文在線.這本書也很有挑戰(zhàn)性,可能會排除掉一些可能在其他領(lǐng)域成功的人.?Scheme: 怎樣設(shè)計(jì)程序(Felleisen 等)是講解怎樣設(shè)計(jì)優(yōu)雅的函數(shù)式語言的最好的書之一.?Python: Python 編程,面向計(jì)算機(jī)科學(xué)的導(dǎo)論(Zelle)是用Python 介紹計(jì)算機(jī)科學(xué)的好書.?Python: 一些關(guān)于Python的 入門教程 可以在 Python.org 上找到.?Oz: 計(jì)算機(jī)編程的概念,技術(shù)和模型(Van Roy & Haridi)可以視為第一本書的現(xiàn)代版.他是關(guān)于編程的一些總攬,包含了比第一本書更加廣泛也更加容易閱讀和理解的領(lǐng)域。這本書使用了一個(gè)不太為人所知的編程語言叫 Oz, 不過這個(gè)可以作為學(xué)習(xí)其他編程語言的一個(gè)基礎(chǔ)。

      ________________________________

      注: T.Capey 指出,在Amazon 的 問題徹底解決者 的頁面上購買了這本書的人還買了: “21天學(xué)孟加拉語” 和 “自學(xué)語法和寫作風(fēng)格” 這兩本書,我估計(jì)大部分是我這個(gè)頁面帶過去的用戶.Peter Norvig(Copyright 2001)

      Eric You XU 翻譯,2007年4月

      第二篇:人人都能學(xué)會的企業(yè)SHELL編程v2

      人人都能學(xué)會的SHELL編程

      目 錄

      1.Shell入門簡介.......................................................................................................2 2.Shell編程之變量詳解...........................................................................................5 3.If條件語句學(xué)習(xí).....................................................................................................8 4.使用if條件語句編寫MySQL備份腳本..............................................................10 5.IF條件綜合Shell實(shí)戰(zhàn)腳本編寫.......................................................................11 6.循環(huán)語句for.........................................................................................................20 7.循環(huán)語句while.....................................................................................................22 8.Until循環(huán)語句.....................................................................................................23 9.Case選擇語句.......................................................................................................23 10.select選擇語句.................................................................................................25 11.Shell編程函數(shù)講解...........................................................................................25 12.Shell數(shù)組編程...................................................................................................27 13.Shell編程之a(chǎn)wk、sed命令案例分析.............................................................30 14.全備和增量備份Linux系統(tǒng)腳本......................................................................31 15.Shell編程之系統(tǒng)硬件信息數(shù)據(jù)庫收集...........................................................34 16.Shell編程之磁盤報(bào)警高級腳本.......................................................................37 17.Shell編程之服務(wù)監(jiān)控檢查腳本.......................................................................40 18.Shell編程之實(shí)戰(zhàn)WEB界面展示一...................................................................40 19.Shell編程之實(shí)戰(zhàn)WEB界面展示二...................................................................40 20.Shell編程之學(xué)習(xí)心得分享及拓展...................................................................40

      1.Shell入門簡介

      說到Shell編程,我想很多從事Linux運(yùn)維工作的朋友都不陌生,都對Shell有基本的了解,可能大家剛開始接觸Shell的時(shí)候,有各種想法? 能不能不學(xué)? 高大上?

      到底是浮云?還是神馬?

      很難???

      我想告訴大家的是,大家有這些想法一點(diǎn)都不覺得驚訝,為什么?這些都很正常,對于任何一件事情在未開始之前,肯定會有總總假設(shè),那我今天想說的是,學(xué)完人人都會Shell編程后,我們會覺得一切的Shell都是浮云,我們每個(gè)人都能很好的使用它,駕馭它,更好的完成我們?nèi)粘_\(yùn)維的工作。

      曾經(jīng)有人說過,玩Linux不知道Shell,那就是不懂Linux;現(xiàn)在細(xì)細(xì)品味確實(shí)是這樣。為了讓更多的人能接觸Shell、了解Shell,使用Shell,所以今天開設(shè)了這樣一個(gè)網(wǎng)絡(luò)課程,讓我們的Shell飛起來。

      好的,其他不多說了,我們正式進(jìn)入主題,什么是Shell呢? Shell是操作系統(tǒng)的最外層,Shell可以合并編程語言以控制進(jìn)程和文件,以及啟動和控制其它程序。shell 通過提示您輸入,向操作系統(tǒng)解釋該輸入,然后處理來自操作系統(tǒng)的任何結(jié)果輸出來管理您與操作系統(tǒng)之間的交互。簡單來說Shell就是一個(gè)用戶跟操作系統(tǒng)之間的一個(gè)命令解釋器。

      Shell是用戶與Linux操作系統(tǒng)之間溝通的橋梁。用戶可以輸入命令執(zhí)行,又可以利用 Shell腳本編程去運(yùn)行。

      Linux Shell種類非常多,常見的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)等。不同的Shell語言的語法有所不同,所以不能交換使用。

      最常用的shell是Bash,也就是Bourne Again Shell,由于易用和免費(fèi),Bash在日常工作中被廣泛使用,也是大多數(shù)Linux系統(tǒng)默認(rèn)的Shell。接下來我們來寫一個(gè)簡單的shell腳本。(shell腳本一般文件名以.sh結(jié)尾,同時(shí)文件第一行定義該腳本為shell腳本)vi first_shell.sh #!/bin/bash #This is my First shell echo “Hello World!”

      這就是我們的第一個(gè)腳本,是不是很簡單呢,注解如下:

      #!/bin/bash //表示定義該腳本是一個(gè)shell腳本(固定格式)。#This is my First shell //這里的#號屬于注解,沒有任何的意義,SHELL不會解析它。

      echo “Hello World!” //shell腳本主命令,我們執(zhí)行這個(gè)腳本講看到: Hello World!信息。

      腳本編寫完畢,如何來執(zhí)行呢,首先執(zhí)行shell腳本需要執(zhí)行權(quán)限,賦予執(zhí)行權(quán)限:

      chmod o+x first_shell.sh 然后./first_shell.sh執(zhí)行即可;也可以直接使用命令執(zhí)行: /bin/sh first_shell.sh,顯示效果一樣。2.Shell編程之變量詳解

      Shell編程語言是非類型的解釋型語言,不像C++/JAVA語言編程時(shí)需要事先聲明變量,SHELL給一個(gè)變量賦值,實(shí)際上就是定義了變量,在Linux支持的所有shell中,都可以用賦值符號(=)為變量賦值。SHELL變量可分為兩類:局部變量和環(huán)境變量。局部變量只在創(chuàng)建它們的shell腳本中使用。而環(huán)境變量則可以在創(chuàng)建它們的shell及其派生出來的任意子進(jìn)程中使用。有些變量是用戶創(chuàng)建的,其他的則是專用shell變量。

      例如在腳本里面定義A=123 ,定義這樣一個(gè)變量,前面變量名,后面是變量的值。

      引用變量可以使用$A,把變量放在腳本里面會出現(xiàn)什么樣的效果呢?如下: #!/bin/bash #Author wugk 2014-06-10 A=123 echo “Printf variables equal is $A” 執(zhí)行腳本:sh test.sh,結(jié)果將會顯示: Printf variables equal is 123 簡單的理解變量,相當(dāng)于定義一個(gè)別名-名稱,引用的時(shí)候加上$符號就可以了。

      例如定義變量 name=wuguangke 執(zhí)行echo $name 將會顯示wuguangke SHELL常見的系統(tǒng)變量解析: $0 當(dāng)前程序的名稱

      $n 當(dāng)前程序的第n個(gè)參數(shù),n=1,2,?9 $* 當(dāng)前程序的所有參數(shù)(不包括程序本身)$# 當(dāng)前程序的參數(shù)個(gè)數(shù)(不包括程序本身)$? 命令或程序執(zhí)行完后的狀態(tài),一般返回0表示執(zhí)行成功。$UID 當(dāng)前用戶的ID $PWD 當(dāng)前所在的目錄

      我們來測試一個(gè)常用變量的腳本:vi auto_var.sh #!/bin/bash #auto print variables #by wugk 2014-09 echo-e '