日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

现代软件工程 第二章 【个人技术】 练习与讨论

發(fā)布時(shí)間:2024/7/23 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 现代软件工程 第二章 【个人技术】 练习与讨论 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?1? 基本作業(yè): 從Hello World開(kāi)始

要求每個(gè)讀者(或者學(xué)生)開(kāi)始管理自己的源代碼:

  • 每個(gè)人都有一個(gè)VSTS的客戶端,系統(tǒng)管理員給每一個(gè)人都創(chuàng)建了TFS項(xiàng)目,每個(gè)學(xué)員都是各自項(xiàng)目的管理員。
  • 每個(gè)同學(xué)去申請(qǐng)一個(gè)GitHub [i]的項(xiàng)目,或者 www.coding.net 項(xiàng)目,存放源程序和其他文檔。
  • 下面的練習(xí)可以用來(lái)鍛煉學(xué)生的編程基本功。

    (1)全部用命令行工具和notepad編輯器,不用Visual Studio 等集成編輯環(huán)境,每人手工創(chuàng)建并編譯一個(gè)C的命令行程序:“Hello World”。

    (2)練習(xí)數(shù)值計(jì)算。找出一個(gè)整數(shù)數(shù)組中子數(shù)組之和的最大值,例如:數(shù)組[1, -2, 3, 5, -1],返回8(因?yàn)榉弦蟮淖訑?shù)組是 [3, 5]);數(shù)組[1, -2, 3, -8, 5, 1],返回6(因?yàn)榉弦蟮淖訑?shù)組是 [5, 1]); 數(shù)組[1, -2, 3,-2, 5, 1],返回7(因?yàn)榉弦蟮淖訑?shù)組是 [3, -2, 5, 1])。

    (3)寫(xiě)一個(gè)命令行程序, 找出一本英文長(zhǎng)篇小說(shuō)中最常出現(xiàn)的字母數(shù)大于 4 的單詞的前十名, 和最常出現(xiàn)的兩個(gè)相鄰單詞的短語(yǔ)前十名。 并用效能分析工具來(lái)分析程序中最費(fèi)時(shí)的函數(shù)是什么, 如何改進(jìn)? 請(qǐng)看《構(gòu)建之法》 中效能分析部分。

    (4)使用工具Visual Studio,創(chuàng)建一個(gè)C++或C# Windows程序,在主窗口中顯示“Hello World”,用戶可以用鼠標(biāo)拖動(dòng)“Hello World”在主窗口中移動(dòng)。

    (5)很多同學(xué)自己會(huì)寫(xiě)不少程序,但是往往看不懂別人寫(xiě)的程序,這也需要練習(xí)。不借助電腦的幫助,回答下面的問(wèn)題(如代碼清單2-8所示)。

    View Code

    問(wèn)題1:這個(gè)程序要找的是符合什么條件的數(shù)?

    問(wèn)題2:這樣的數(shù)存在么?符合這一條件的最小的數(shù)是什么?

    問(wèn)題3:在電腦上運(yùn)行這一程序,你估計(jì)多長(zhǎng)時(shí)間才能輸出第一個(gè)結(jié)果?時(shí)間精確到分鐘(電腦:單核CPU 4.0G Hz,內(nèi)存和硬盤(pán)等資源充足)。

    問(wèn)題4:在多核電腦上如何提高這一程序的運(yùn)行效率?


    [i] GitHub 的資料請(qǐng)看: https://github.com/

    2? 軟件工程和程序設(shè)計(jì)大作業(yè)的調(diào)查

    請(qǐng)同學(xué)們做一個(gè)調(diào)查,到相關(guān)的軟件學(xué)院或計(jì)算機(jī)學(xué)院采訪學(xué)長(zhǎng)或?qū)W弟學(xué)妹,調(diào)查一下程序設(shè)計(jì)大作業(yè)的完成情況:程序花多少時(shí)間完成?程序量是多少(多少行代碼)?開(kāi)發(fā)過(guò)程中使用了源代碼管理等工具么? 完全獨(dú)立完成的同學(xué)有多少個(gè)?程序解決實(shí)際問(wèn)題么?在一些學(xué)校里,全班50 個(gè)同學(xué),交上來(lái)的作業(yè)只有 4 到 5 種版本。這說(shuō)明了什么?

    3??效能分析的討論

    果凍:噫吁唏,危乎高哉!我以前一直害怕做效能分析,看來(lái)是否會(huì)用效能分析工具來(lái)提高程序質(zhì)量是一個(gè)優(yōu)秀程序員的標(biāo)志之一。我在今天之前都是盲人騎瞎馬。

    小飛:改成盲人摸象更恰當(dāng)。我聽(tīng)說(shuō),如果一個(gè)程序員從來(lái)沒(méi)有用過(guò)效能分析工具,那他就不是一個(gè)程序員,只是一個(gè)編程愛(ài)好者罷了。

    我的WC 程序事實(shí)上是最快的。但是在今天的程序評(píng)比之前,我想更進(jìn)一步,就再優(yōu)化了一下,估計(jì)能把速度提高2%。沒(méi)想到出了一個(gè)小錯(cuò)誤,導(dǎo)致報(bào)告的結(jié)果(行數(shù)、詞數(shù)、字?jǐn)?shù))僅僅差了1。由于程序不正確,因此不能參加速度評(píng)比。我才是最需要大喊“噫吁唏”的人。

    阿超:這有兩個(gè)教訓(xùn):

    (1)先保證正確性,再提高效能。一個(gè)“僅僅差了1”的錯(cuò)誤可能會(huì)導(dǎo)致緩沖區(qū)溢出(Buffer Overflow[i])的嚴(yán)重漏洞。

    (2)如果效能的提高效果在5%以下,用戶不會(huì)注意到程序效能的區(qū)別。所以要考慮那些微小的提高是否值得。

    另外,WordFreq算法的時(shí)間復(fù)雜度是多少?能否再優(yōu)化?請(qǐng)寫(xiě)實(shí)際程序加以驗(yàn)證。

    荔荔:怎么才能快捷地得到有適量重復(fù)文字的文件,來(lái)幫助我們進(jìn)行測(cè)試和效能分析?

    小飛:我是這樣做的,在電腦的根目錄下,運(yùn)行“dir /s > c:\temp\test.txt”命令。

    阿超:好主意,大家還有沒(méi)有別的辦法?

    4 各種編程的玩法 編程可以是一門(mén)理論,也可以是一門(mén)工程,還可以是一門(mén)手藝,這些年來(lái)程序員們玩出了不少好手藝,請(qǐng)看: http://news.cnblogs.com/n/501488/ 5 學(xué)什么,怎么學(xué)? 程序員經(jīng)常在學(xué)習(xí),交流,提高自己,怎樣才是有效的學(xué)習(xí)方法呢?? 打字快就能寫(xiě)程序快么?? 哪一種語(yǔ)言、編輯器是最好的? 請(qǐng)看: http://news.cnblogs.com/n/509554/ http://www.tuicool.com/articles/r6Vramr? 6. Coder, and Hacker 的區(qū)別: http://news.cnblogs.com/n/513177/? http://st-threath.blogspot.tw/2013/06/an-engineer.html? http://aknow-work.blogspot.tw/2013/06/reply-to-coder-hacker-and-architect.html [i] 參見(jiàn):http://en.wikipedia.org/wiki/Buffer_overflow

    總結(jié)

    以上是生活随笔為你收集整理的现代软件工程 第二章 【个人技术】 练习与讨论的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。