第二章个人技术和流程课后题

 

1.软件工程和程序设计大调查

专业         用时                代码                用工具

16计本     两天                500行             Java c语言

16数本     两天                200行             SQ  c语言

 说明软件开发是一项繁重的工作,一个人做的话需要耗费大量时间经历,所以需要团队合作,不同的人有不同的想法,开发需要顾虑到每个人的想法,因此团队配合很重要,整合意见再开发,加之程序的复杂程度不同,个人能力有限,所以软件完成的效率有高有低。(源代码管理的应用)

2.各种编程玩法

首先,编程不是一种知识,而是一门手艺。既然是手艺,就要用学手艺的思路来学习。

我认为我虽然学过c语言和Java,但接触编程的时间不长,只能说会一些皮毛。

#include”datastru.h”

#include”stdio.h”

#include”mlloc.h”

扫描二维码关注公众号,回复: 609060 查看本文章

#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 + +,所有包只需要一个许可证。

猜你喜欢

转载自www.cnblogs.com/July1/p/9028788.html