第二章個人技術和流程課後題
1.軟件工程和程序設計大調查
專業 用時 代碼 用工具
16計本 兩天 500行 Java c語言
16數本 兩天 200行 SQ c語言
說明軟件開發是一項繁重的工作,一個人做的話需要耗費大量時間經歷,所以需要團隊合作,不同的人有不同的想法,開發需要顧慮到每個人的想法,因此團隊配合很重要,整合意見再開發,加之程序的復雜程度不同,個人能力有限,所以軟件完成的效率有高有低。(源代碼管理的應用)
2.各種編程玩法
首先,編程不是一種知識,而是一門手藝。既然是手藝,就要用學手藝的思路來學習。
我認為我雖然學過c語言和Java,但接觸編程的時間不長,只能說會一些皮毛。
#include”datastru.h”
#include”stdio.h”
#include”mlloc.h”
#define MAX 10000
MGRAPH create_mgraph()
{ Int i,j,k,h;
char b,t;
MGRAPH mg;
mg,kind=3;
printf(“請輸入頂點數和邊數:”);
scanf(“%d,%d”,&i,&j);
mg.vexnum=i;
mg.arcnum=j;
for(i=0;i<mg.vexnum;i++)
{getchar();
pintf(“第%d個頂點信息:”,i+1);
scanf(“%d”,&mg.vexs[i]);}
for(i=0;i<mg.vexnum;i++)
for(j=0;j<mg,veznum;j++)
mg.arcs[i][j]=MAX;
for(k=l;k<=mg.arcnum;k++)
{ printf(“\n第%d條邊的起始頂點編號和終止頂點編號:”,k);
scanf(“%d,%d”,&i,&j);
while(i<l||i>mg,vexnum||j<l||j>mg,vexnum)
{printf(“編號超出範圍,重新輸入:\n\t”);
scanf(“%d,%d”,&i,&j);}
printf(“此邊的權值:”);
scanf(“%d”,&h);
mg.arcs[i-l][j-l]=h;}
return mg;
}main(){
MGRAPH mg;
int cost[MAXLEN][MAXLEN];
int path[MAXLEN],s[MAXLEN];
int dist[MAXLLEN];
int i,j,n,v0,min,u;
mg=create_mgraph(); //建立有向圖的鄰接矩陣結構
printf(“請輸入開始頂點的編號:”); //有向圖中頂點的編號從1編起
scanf(“%d”,&v0);
v0- -;n=mg.vexnum;
for(i=0;i<n;i++) //cost矩陣初始化
{for(j==0;j<n;j++) cost[i][j]=mg.arcs[i][j];
cost[i][j]=0;}
for(i=0;i<n;i++)
{dist[i]=cost[v0][i];
if(dist[i]<MAX&&dist[i]>0) //dist數組初始化
path[i]=v0;} //path數組初始化
for(i=o;i<n;i++)
s[i]=0; //s數組初始化
s[v0]=l;
for(i=0;i<n;i++) //按最短路徑遞增算法計算
{ min=MAX;
u=v0;for(j=0;j<n;j++)if(s[j]==0&&dist[j]<min){min=dist[j];
u=j;}
s[u]=l; //u頂點是求得最短路徑的頂點編號
for(j=0;j<n;j++) if(s[j]==0&&dist[u]+cost[u][j]<dist[j]) //調整dist
{dist[j]=dist[u]+cost[u][j];
path[j]=u;} //path記錄了路徑經過的頂點
}
for(i=0;i<n;i++) //打印結果
if(s[i]==l)
{u=i;
while(u!=v0)
{printf(“%d<-”,u+l);
u=path[u];}
printf(“%d”,u+l);
printf(“d=%d\n”,dist[i]); //有路徑
}
else
printf(“%d<-%d d=X\n”,i+l,v0+l); //無路徑
}
以上是我用C語言寫的一個程序。
3.Coder和Hacker的區別
coder和hacker雖然都是寫程序的人,但他們在本質上有很大的不同:
我們都知道code的翻譯是代碼,顧名思義,coder可以說是寫代碼的人,它在工程師的等級劃分中可以說是最底層的。coder知識為了寫代碼而寫代碼,他們並不關心寫的程序的目的和作用,只是為了完成屬於自己的任務,為了自己的生活。他們有一種固定的思維——這是上司交代的工作,必須完成,因為這關系這自己的工資、獎金。而且他們希望自己的工作量最少,所以不會主動做會讓自己增加工作量的事,比如對團隊開發項目中發現的問題不會提出來,也不會想完善開發的項目。總之,coder只會機械的完成自己份內的工作,也是在未來最大可能會被人工智能取代的一類人。相較之下,hacker就是比coder更高層次的等級了。他們寫程序都有自己的目的,為了達到自己的目標,會對程序進行反復的修改,直到達到自己的要求。而且,他們有很強烈的探索欲,當接觸到新事物時,他們會用盡全力去探索其原理,並付諸實踐,而且樂在其中。此外,hacker會將程序做到自己覺得最好的狀態,並且提出會讓項目更好的建議或者提出項目的問題並提出自己的解決辦法。
以上都是我認為coder和hacker中的不同之處。
4.分析開發工具
軟件開發中的性能優化對程序員來說是一個非常重要的問題。一個小問題可能成為一個大的系統的瓶頸。但是對於程序員來說,通過自身去優化代碼是十分困難的。幸運的是,有一些非常棒的工具可以幫助程序員進行代碼分析和性能測試,從而大大簡化程序員進行代碼性能優化的過程。
AMD CodeXL
2011年發布的AMD CodeAnalyst Performance Analyzer 現在已經被AMD CodeXL所替代。AMD CodeXL的主要目的是幫助開發者更好利用CPU, GPU和APU的計算性能,具有強大的GPU調試、CPU和GPU代碼分析、及靜態的OpenCL內核性能分析等能力。 AMD提供了支持Windows 7、Windows 8和Linux系統的單機版CodeXL分析工具。在Visual Studio 2010,2012和2013上也有AMD CodeXL的擴展版,其在Visual Studio開發環境中集成了GPU和APU的調試和分析能力。舊的AMD CodeAnalyst Performance Analyzer extension目前仍然可用。
Visual Studio質量和診斷中心
除了上述分析工具,Visual Studio本身也內置了優秀的分析和調試工具,都放在 Visual Studio的質量與診斷中心。 質量和診斷中心除了包括熟悉的Visual Studio分析工具,還有一些新的工具,其功能包括JavaScript內存分析, HTML UI響應能力分析,和Windows應用商店應用的XAML UI響應能力分析,和能量消耗、CPU使用、內存使用情況分析等。此外,Visual Studio 2012中的JavaScript函數時間和性能向導也已經更新,包含在新的質量和診斷中心中。因為這些工具現在都可以在中心中獲得,所以可以在一個單獨的分析會話中運行多個工具,並獲得相互結合和交叉分析的結果。 你還可以在Visual Studio 2015的性能和診斷頁面運行分析工具。Visual Studio 2015中的一些調試和診斷功能得到了增強,包括支持基於JavaScript的Apache Cordova項目,以及基於C # 的Xamarin和Android項目的跨平臺調試 其他改進包括在“監視”窗口通過lambda表達式進行step,通過Visual Studio遠程工具運行、調試和測試其他計算機上的程序,內置的HTTP流量數據的網絡診斷等。 許多這些新工具與強大的Visual Studio 2015診斷工具調試器窗口放在了一起,並組合了輸出窗口,IntelliTrace歷史數據,以及性能和診斷中心的工具。
Telerik JustTrace
2013年,Telerik獲了EQATEC,因此EQATEC分析工具現在是Telerik JustTrace .NET內存和性能分析工具的一部分。JustTrace提供兩種模式的性能分析,輕量化分析的采樣分析工具和收集CLR事件進行更深入分析的跟蹤工具。它還具有捕獲 .NET實例分配快照的內存分析的功能。 JustTrace集成了Visual Studio 2013,2012,2010和2008,也可以作為一個單機版的分析工具。Telerik提供30天的試用期,同時JustTrace也可作為DevCraft工具套件的一部分。
JetBrains dotTrace
JetBrains dotTrace經過四年漫長的發展,現在已經是一個包含代碼執行跟蹤工具和性能分析工具的套件。它包括dotTrace Performance和dotTrace Memory 兩個工具,dotTrace Performance用來分析代碼性能,比如函數執行時間,調用次數,消耗時間比率等,dotTrace Memory一般用來分析內存占用情況。你可以在本地和遠程系統中對代碼進行跟蹤、采樣或逐行分析。dotTrace對微軟.NET框架的支持一直到4.5.2版本,也可用於分析Silverlight4或5的單機桌面應用程序、Web應用程序、Windows通信基礎(WCF)服務等。新功能包括時間軸分析(timeline profiling)和SQL查詢分析。 dotTrace extension Visual Studio Gallery網頁提供了一個非常清晰,簡潔的產品概述。通過看完概述如果你對產品有興趣,可以到JetBrains網站決定下載或購買。 JetBrains目前提供有時間限制的免費試用版以及幾種許可選項,例如ReSharper Ultimate包,其中包括ReSharper,dotCover,dotTrace,dotMemory,以及ReSharper C + +,所有包只需要一個許可證。
第二章個人技術和流程課後題