`
zhenzhujeromemessage
  • 浏览: 16455 次
文章分类
社区版块
存档分类
最新评论

计算机学生编程语言选择的层次分析模型

 
阅读更多

计算机编程语言选择的层次分析模型

作者:JeromeCen

一、 摘要

通过大量搜索实际数据建立层次结构模型,使用科学计算和一致性检验解决长期困扰国内入门程序员如何选择编程语言的问题。最终得 无论是从当前还是趋势应该选择 java 是较为科学而全面的选择, C/C++ 方向也是不错的考虑;当然本决策系统的组合一致性检验不是严格,反映出对主观因素的估计不是非常严格,当然不同的人会得出可能不一样的结果。 故本结果仅作为普通的计算机学生选择语言的参考,至于你的决策,自然会仁者见仁,智者见智。

二、关键词

编程语言 层次分析模型 matlab 现实意义

三、问题提出

因为信息技术在最近几十年得到了飞速的发展。从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能 在所有机器上通用。经过努力, 1954 年,第一个完全脱离机器硬件的高级语言 --FORTRAN 问世了, 40 多年来,共有几百种高级语言出现,有重要意义的有几十种,影响较大、使用较普遍的有 FORTRAN ALGOL COBOL BASIC LISP SNOBOL PL/1 Pascal C PROLOG Ada C++ VC VB JAVA 等。我们最初学的是 C 语言 C++ 语言,后面学 JAVA 语言;数据库语言,多种基于 Web 的脚本语言;还要面临 C#,Python,XML,Object-C 等后起语言的冲击。

计算机语言的众多让很多学计算机的同学面临着如何选择一门主修语言的问题?毕竟社会是基于分工的,人的精力是有限的;如果我们只是每门语言都懂一些,最终将导致什么也不懂,故选择一门精通的语言是很有现实意义也很有必要的,本论题也是基于这样的假设。

但是如何选择呢?怎样才能用数据进行科学而全面的判断,以下提出对较复杂决策问题进行层次分析的数学模型问题:

1. 综合分析影响选择一门语言的因素并构造合理的层次模型?

2 .得到准确且大量的数据进行比较分析?

3. 得出科学而全面的选择方案?

四、问题分析

一、目标是选出一门适合一个入门者的语言,而影响的因素主要的有社会市场提供的语言应用岗位数量,平均年薪,兴趣爱好等。因素之间是相互独立且有可比性的;与上层具有层次决定关系。因为兴趣及自豪感,领域及前景是可以合并且对相对的因素的影响是很小的可以忽略;故可将其合并,方案层的 PHP Python 都是较新兴且相对简单的语言具有相似性本分析中也将其合并,本方案中没有取 Delphi 是因为它采用的是 pascal 语法为一种结构化语言,已逐渐被淘汰,当然在工控领域还会较长期的存在,当然也没有考虑 Erlang 高性能计算语言,所以方案的设计是较为普遍的方案不可能面面俱到,但是已达到解决问题的目的。以下是选择入门语言的层次结构:

解决此问题可以使用层次分析法。层次分析通过相互比较,确定各准则对于目标的权重,以及个方案对于每个准则的权重,将这两方面的权重进行综合,最终通过组合权重计算确定个方案对目标的权重,即权重最大的作为合理的选择语言。但在运用层次分析法解决此问题的过程中。在计算各方案对每一准则的权重时:有M 个准则就会有M 个方案层数量阶矩阵。此处使用层次分析法的1-9 尺度度量法。通过matlab 软件计算各个n 阶矩阵的特征值进而用CI=n-y/n-1 结合随机数的CR 进行一致性检验即可。也可通过较为简单的w 向量和计算得矩阵的特征值和特征向量。进而确定权值最大的为适合广大学生特别是适合矩阵构造者的语言。

五、符号说明

i j: 表示行标为i ,列标为j 的准则或方案因素,从1 开始记号。

a ij : 表示每个ij 列准则间或方案间两两比较的权重。

k 表示序列号。

A 表示准则层对目标层的方阵。r 表示A 的最大特征值,w 表示A 的特征向量。

B1 B2 B3 B4 B5 B6 分别表示方案层对对应的六个准则层的方阵。 r i w i 分别表示B1B6 的最大特征值和特征向量。

CI 为一致性指标,RI 为随机一致性指标,CR 为一致性比率。

六、模型假设

1. 选择一门特长语言是有必要的,且只有准则层内的元素起到决定性的作用,其它因素如男女等条件忽略。

2. 使用全面而科学理性的方式决定选择的对象,而合理的估计情感在其中的部分作用。

七、模型建立与求解

1. 较全面科学的数据来源:从网上可以得到很多数据,自己整理后得数据:

从上表 2002 2010 年的语言趋势可以粗略的估计市场上语言岗位的数量和语言的前景结合英才,智联招聘网上可以得到较为合理的语言在数理和前景中的两两 1-9 比重。

对于语言间平均年薪的两两比重依据:

关于领域问题(来自 csdn2007 年):

关于准则层对目标层,难易程度和兴趣爱好问题则更多的是来自于对很多信息的阅读和自己学习过程的理解进而使用 1-9 度量法对其进行两两权值比较,这个具有相当的主观性,当然这样得出的结果将是更符合测试者的。最终导致普遍性不是非常高,但也是个人较为科学合理全面的决策结果。

2. 准则层对目标层的特征值和特征向量求解和一致性检验:

1 1/3 1/5 1/3 1/2 4

3 1 1/3 1/2 1 3

5 3 1 1 1/3 2

A= 3 2 1 1 1/2 6

2 2 1/3 1/2 1 5

1/4 1/3 1/2 1 /6 1/5 1

构造特征方程: rw =Aw (rE -A )w =0

matlab7.1 软件求解得最大特征根: r=6.2621

Saaty 一致性检验公式: CI=(r-n)/(n-1), 其中 n=6 CI=0.0524

CR=CI/RI=0.0422 (RI n=6 时指标值为 1.24) 故满足一致性要求。

r 值对应的特征向量为:

w = -558/2639,-3883/10840,-603/1037,-691/1267,-842/2003,-395/3258 )而用 matlab 中的

norm 求范数得 1 ,故其结果是正确的。

归一化处理得 w = 0.0945,0.1600,0.2600,0.2437,0.1878,0.0542 .

3. 方案层对准则层的特征值和特征向量求解及一致性检验:

通过综合考虑以上数据用 1-9 度量法构造出四个语言方向对各个准则的正互反矩阵得:

1 2 4 5 1 3 5 7

2 1 3 5 1/3 1 3 4

B1= 1/4 1/4 1 3 B2= 1/5 1/3 1 3

1/5 1/5 1/3 1 1/7 1/4 1/3 1

1 1/3 2 6

3 1 2 3 1 1/3 2 2

B3= 1/2 1/2 1 2 B4= 3 1 2 3

1/6 1/3 1/2 1 1/2 1/2 1 2

1/2 1/3 1/2 1

1 3 5 7

1/3 1 2 3 1 2 3 6

B5= 1/5 1/2 1 2 B6= 1/2 1 3 5

1/7 1/3 1/2 1 1/3 1/3 1 4

1/6 1/4 1/4 1

构造出来的 6 个矩阵,用 matlab 求解分别为:

方案对准则一岗位数量的特征方程最大特征根为: r1=4.5690

CI=0.5690/3=0.1897 CR=CI/RI=0.2107>0.1 要对矩阵进行修正(提高全面科学性):

1 2 4 8

B1= 1/2 1 2 4

1/4 1/2 1 2 再计算最大特征根得: r1=4.0354

1/7 1/4 1/2 1

CI=0.0354/3=0.0118 CR=CI/RI=0.0131 符合 Saaty 允许的主观信度范围。

求解最大特征值对应的特征向量为:

W1= -1177/1357 -631/1455 -273/1259, -272/2423

列向量归一化处理得:

W1= 0.5321,0.2660,0.1330,0.0689

同理计算可得决策问题第三层的计算结果:

B3 进行修正:

1 1/2 2 1/3

B3= 2 1 3 1/2

1/2 1/3 1 1/4

3 2 4 1

1

k

1

2

3

4

5

6

W k

0.5321

0.2660

0.1330

0.0689

0.5683

0.2523

0.1203

0.0909

0.1601

0.2772

0.0954

0.4674

0.2404

0.4582

0.1851

0.1163

0.0587

0.2179

0.1228

0.0722

0.4629

0.3173

0.1584

0.0614

r k

4.0354

4.1184

4.0310

4.1431

4.0192

4.1934

CI K

0.0118

0.0395

0.0103

0.0477

0.0064

0.0645

CRk

0.0131

0.0439

0.0114

0.053

0.0071

0.0716

从第三层对第一层的一致性检验得:

CI 3 =[CI 1 3 ,…CI 6 3 ]*W 2 =0.0264

RI 3 =[RI 1 3 ,…CI 6 3 ]*W 2 =0.294

CR 3 =CI 3 /RI 3 =0.0898

CR*= CR 2 +CR 3 =0.132 这个结果接近 0.1 ,对于要求不是很严格的一致性检验;此处也可通过检验。因为从新构造的确是太繁杂了。这里已经达到目的。故组合一致性检验通过,矩阵的构造是较为合理的。

进而求组合权向量得:

>> B=[0.5321 0.5683 0.1601 0.2404 0.0587 0.4629

0.2660 0.2523 0.2772 0.4582 0.2179 0.3173

0.1330 0.1203 0.0954 0.1851 0.1228 0.1584

0.0689 0.0909 0.4674 0.1163 0.0722 0.0614]

>> A=[0.0945

0.1600

0.2600

0.2437

0.1878

0.0542]

>> W=B*A

得: W 3 =(0.2775 0.3074 0.1334 0.1878) T. 无论是从当前还是趋势应该选择 java 是较为科学而全面的选择, C/C++ 方向也是不错的考虑;当然本决策系统的组合一致性检验不是严格,当然不同的人会得出可能不一样的结果。

八、模型评价

层次分析方法是一种将定量与定性结合,将人的主观判断用数量形式表示出来的方法,将因素按支配关系分成递阶层次结构,并通过因素的两两比较得出对目标方案选择的权值;通过量化分解,判断,综合,解决重大决策的全面而科学的方法。本模型是基于网络上较为大量的数据作为 1-9 Saaty 度量法依据,普遍性较强。但是准则层没有考虑男生,女生;学生职业规划方向的不同,工作区域等因素。方案层也有很多的语言没有考虑进去,像 Apple object-c 等。因为兴趣和自豪感在其中的比重较难估计,故不同的学生可能会出现不同的结果。而且领域在不同的语言中选择的比重也是较难确定的,有很多是从事相关的领域即确定了选择的语言。故本结果仅作为普通的计算机学生选择语言的参考,自然会仁者见仁,智者见智。最后说一句没有什么难以抉择的,既然选择了就要风雨兼程呵。

九、参考文献

[1] 数学模型(第三版) 姜启源 谢金星 叶俊 高等教育出版社, 2006.12

[2] 线性代数 林桂莲 尹长明 刘德光 等编 中国人民大学出版社, 2008.1

[3] 计算机科学导论 赵致琢 科学出版社 2008.4

[4] http://community.csdn.net/ csdn 社区统计数据

十、附录

部分矩阵特征值和特征向量的计算:

>> format rat

>> A=[1 1/3 1/5 1/3 1/2 4

3 1 1/3 1/2 1 3

5 3 1 1 1/3 2

3 2 1 1 1/2 6

2 2 1/3 1/2 1 5

1/4 1/3 1/2 1/6 1/5 1]

>> [V,D]=eig(A)

V =

Columns 1 through 3

-558/2639 645/2239 - 515/2841i 645/2239 + 515/2841i

-3883/10840 -325/1584 - 450/1489i -325/1584 + 450/1489i

-603/1037 -671/805 -671/805

-691/1267 230/4723 + 203/9465i 230/4723 - 203/9465i

-842/2003 -221/23804 - 394/4591i -221/23804 + 394/4591i

-395/3258 124/2551 + 336/1615i 124/2551 - 336/1615i

Columns 4 through 6

101/1177 365/2679 -427/4360

-1161/2419 56/10835 443/1389

371/1125 72/347 -683/2748

959/1954 -405/427 -156/289

1427/2271 -737/3929 659/903

-253/1895 134/2245 -343/6319

D =

Columns 1 through 3

2198/351 0 0

0 -163/1013 + 662/393i 0

0 0 -163/1013 - 662/393i

0 0 0

0 0 0

0 0 0

Columns 4 through 6

0 0 0

0 0 0

0 0 0

-1747/2325 0 0

0 213/3509 0

0 0 460/613

>> B1=[1 2 4 8

1/2 1 2 4

1/4 1/2 1 2

1/7 1/4 1/2 1

]

B1 =

1 2 4 8

1/2 1 2 4

1/4 1/2 1 2

1/7 1/4 1/2 1

>> [V,D]=eig(B1)

V =

-1177/1357 614/741 * *

-631/1455 307/741 -447/488 -266/1789

-273/1259 307/1482 -731/3369 1333/1483

-272/2423 -736/2341 1111/3292 -1137/2758

D =

456/113 0 0 0

0 -113/3192 0 0

0 0 * 0

0 0 0 *

>> B2=[1 3 5 7

1/3 1 3 4

1/5 1/3 1 3

1/7 1/4 1/3 1]

B2 =

1.0000 3.0000 5.0000 7.0000

0.3333 1.0000 3.0000 4.0000

0.2000 0.3333 1.0000 3.0000

0.1429 0.2500 0.3333 1.0000

>> [V,D]=eig(B2)

V =

-0.8935 -0.8686 -0.8686 0.8997

-0.3967 -0.0721 - 0.4210i -0.0721 + 0.4210i -0.4089

-0.1891 0.2278 - 0.0154i 0.2278 + 0.0154i 0.1379

-0.0929 -0.0069 + 0.1049i -0.0069 - 0.1049i -0.0654

D =

4.1184 0 0 0

0 -0.0064 + 0.6974i 0 0

0 0 -0.0064 - 0.6974i 0

0 0 0 -0.1057

>> B3=[ 1 1/2 2 1/3

2 1 3 1/2

1/2 1/3 1 1/4

3 2 4 1]

B3 =

1.0000 0.5000 2.0000 0.3333

2.0000 1.0000 3.0000 0.5000

0.5000 0.3333 1.0000 0.2500

3.0000 2.0000 4.0000 1.0000

>> [V,G]=eig(B3)

V =

-0.2787 -0.3592 -0.2498 + 0.0499i -0.2498 - 0.0499i

-0.4826 0.5934 -0.0004 + 0.4268i -0.0004 - 0.4268i

-0.1661 0.1535 -0.0252 - 0.1758i -0.0252 + 0.1758i

-0.8135 -0.7038 0.8493 0.8493

G =

4.0310 0 0 0

0 -0.0276 0 0

0 0 -0.0017 + 0.3533i 0

0 0 0 -0.0017 - 0.3533i

矩阵相乘的 C++ 语言测试代码:

#include<iostream>

using namespace std;

void main()

{

double a[6]={0.0945,0.1600,0.2600,0.2437,0.1878,0.0542};

double b[4][6]={{0.5321,0.5683,0.1601,0.2404,0.0587,0.4629},

{0.2660,0.2523,0.2772,0.4582,0.2179,0.3173},

{0.1330,0.1203,0.0954,0.1851,0.1228,0.1584},

{0.0689,0.0909,0.4674,0.1163,0.0722,0.0614}};

double c[4]={0,0,0,0};

for(int i=0;i<4;i++)

{ //c[i]=0;

for(int j=0;j<6;j++)

c[i]=c[i]+a[j]*b[i][j];

// cout<<"running?";

//sum[i]=c[i];

}

cout<<"the matrix is:"<<endl;

for(int k=0;k<4;k++)

cout<<c[i]<<" ";

cout<<endl;

int t1[3]={1,100,3};

int t2[2][3]={{1,2,4},

{2,32,5}};

int t3[2]={0,0};

for(int i1=0;i1<2;i1++)

for(int j1=0;j1<3;j1++)

t3[i1]=t3[i1]+t1[j1]*t2[i1][j1];

cout<<"test:"<<endl;

for(int j2=0;j2<2;j2++)

cout<<t3[j2]<<" :";

}

分享到:
评论

相关推荐

    计算机学院—基于Scratch语言下的人工智能少儿编程教育系统-计划书1

    【基于Scratch语言的人工智能少儿编程教育系统】 在当今数字化时代,计算机科学与人工智能(AI)已经成为全球教育的重要组成部分,特别是在K12阶段。基于Scratch语言的人工智能少儿编程教育系统旨在培养孩子们的...

    本科毕业设计开题报告(学生电子作业提交与分析系统的设计与实现V2)

    使用Visual Studio 2010, 专业开发人员能够: 使用改进后的可视化设计工具、编程语言和代码编辑器,享受高效率的开发环境 在统一的开发环境中,开发并调试多层次的服务器应用程序使用集成的可视化数据库设计和报告...

    计算机专业相关课程描述.docx

    序号 课程名称 课程描述 1 程序设计基础 本课程主要介绍 C 语言的基本语法、基本语句、数据类型、基本控制结构以及程序设计的一般方法,使学生具有使用当今流行的系统平台的初步能力,具有熟练使用 C 语言编程解决...

    简单模型计算机的设计.doc

    系统的完整性体现在DVCC系列机与学生常见到的简单计算机大体相同,其主要组成与 运行方式和PC机差不多,该系列机是一台硬软件相对完整、配置巧妙合理的完整的计算 机系统,通过它能体现出重要教学内容、能完成主要...

    模型机系统设计(文档+实现代码)

    模型机系统设计是一种常见的本科计算机科学与技术专业的实践任务,旨在让学生掌握计算机系统的基本构造和工作原理。在本设计中,学生需要自主设计指令,并基于EDA(电子设计自动化)软件构建一个复杂的模型机系统。...

    智能聊天机器人在C语言程序设计教学中的应用.pdf

    C语言程序设计是计算机科学及信息安全等领域的基础,对于培养学生的编程能力和逻辑思维至关重要。然而,传统的课堂教学往往难以满足所有学生的需求,由于学习能力差异和个体差异,部分学生可能会感到课程难度大或者...

    本科毕业设计---基于java开发的企业内部通信系统.doc

    Java是一种广泛应用于企业内部通信系统开发的编程语言,具有平台独立性、面向对象、动态加载类库等特点。Java开发可以用于构建企业内部通信系统的各个模块,例如用户管理模块、信息传输模块、数据存储模块等。 知识...

    汇编期末练习题整理.docx

    1. **汇编语言程序设计**:汇编语言是一种低级编程语言,它与计算机的硬件紧密相关,允许程序员直接控制计算机的硬件资源。期末练习题可能涵盖指令集、寻址模式、运算符、跳转指令、子程序、内存管理等方面。 2. **...

    Deep_Learning_with_Python_Keras(优秀英文原版教材).pdf

    Python 是一门流行的编程语言,广泛应用于数据分析、机器学习和人工智能等领域。Keras 是一个基于 Python 的深度学习库,提供了一个简洁易用的接口,用于构建和训练深度神经网络模型。Keras 支持多种类型的神经网络...

    软件工程-图书管理系统

    DBMS 产品还提供编程语言和对编程语言的接口。运行子系统处理用设计子系统开发的应用组件。它所包含的运行处理器用来处理窗体和数据库的数据交互,以及回答查询和打印报表等。 在图书管理系统中,管理员可以通过...

    基于JAVA的模拟ATM系统的设计与实现【文献综述】.pdf

    优点二,Java 是一种纯粹面向对象的语言,Java 类被组织成一个等级层次,在层次结 构中,一个子类能够继承其超类的行为,并可用子类所具备的一些特有功能来扩展其超类 的功能。其对象模型是能定义对应真实事物的...

    信息系统开发与管理——选择题整理

    在信息系统开发与管理中,涉及多个关键知识点,这些知识点对于准备自考的计算机专业学生尤其重要。以下是根据标题、描述和部分内容整理出的相关知识: 1. **系统分类**:按系统与环境的关系,可以分为封闭系统和...

    JAVA基础课程讲义

    编程语言发展史 52 类和对象是如何产生发展的?如何进化的? 52 面向对象思想初步(OOP初步Object Oriented Programming) 53 面向对象编程的语言的三大特征简介 56 对象和类的概念 56 类和对象初步 57 测试类的定义方式...

    基于php英语学习网站设计与实现.docx

    同时,考虑到互动性,应提供在线测试、讨论论坛、教师答疑等功能,以满足不同层次和学习风格的学生需求。 二、功能设计 1. 课程资源:网站提供各种类型的英语课程,包括基础课程、进阶课程、专业英语等,用户可以...

    毕业论文java vue ssm mysql 012高校推免报名.docx

    【高校推免报名管理系统】是基于现代网络技术,利用Java编程语言、SSM(Spring、SpringMVC、MyBatis)框架以及MySQL数据库构建的一款信息化管理平台。此系统旨在提升高校推免(免试推荐)报名流程的效率,提供一个...

    数据库酒店管理系统.doc

    数据库课程设计报告 酒店管理系统的设计 系 部 信息工程系 专 业 计算机软件专业 班 级 学 号 ____________ 姓 名 _______________课 题 _____________ 指导教师 报告成绩______________ 目 录 1 课程设计目的及要求...

    c语言编写单片机技巧

    而初学者应当具备软件编程相关知识,单片机一般软件编程是以汇编语言为主,各家有各家的语法,但大都以RISC的MCU架构为主,其中 RISC (Reduced Instruction Set Computer) 代表MCU的所有指令。都是利用一些简单的...

    数据库酒店管理系统(1).doc

    数据库课程设计报告 酒店管理系统的设计 系 部 信息工程系 专 业 计算机软件专业 班 级 学 号 ____________ 姓 名 _______________课 题 _____________ 指导教师 报告成绩______________ 目 录 1 课程设计目的及要求...

    较为全面的基于PROTEUS仿真51单片机动态数码管课程设计(WORD版).doc

    " " "设计报告 "20 "报告结构严谨,逻辑严密,论述层次清晰 " " " " ",语言流畅,表达准确,重点突出,报告 " " " " "完全符合规范化要求,用计算机打印成文 " " " " "。 " " "工作态度 "10 "工作态度认真,按时...

Global site tag (gtag.js) - Google Analytics