计算机编程语言选择的层次分析模型
作者: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
:
表示每个i
行j
列准则间或方案间两两比较的权重。
k
表示序列号。
A
表示准则层对目标层的方阵。r
表示A
的最大特征值,w
表示A
的特征向量。
B1 B2 B3 B4 B5 B6
分别表示方案层对对应的六个准则层的方阵。
r
i
,
w
i
分别表示B1
到B6
的最大特征值和特征向量。
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
分享到:
相关推荐
实践课程是提升学生编程能力的重要途径。教师应设计并指导实践项目,让学生体验完整的编程过程,包括问题分析、算法设计、程序编写、调试和结果评估。通过实际操作,学生能够更好地理解和掌握编程知识。 教学策略...
《计算机组成原理与汇编语言程序设计》是学习计算机科学不可或缺的基础课程,它涵盖了计算机硬件的基本构造和软件的低级编程语言。在这个压缩包中,我们可能会找到一系列关于这两个主题的资料,包括教材、讲义、习题...
6. 层次结构模型:讲解计算机系统从微体系结构层到面向问题语言层的五层模型,帮助理解软件和硬件的相互作用。 7. 计算机的工作过程:详述从问题分析到硬件执行目标程序的完整步骤,包括编写程序、编译、指令执行...
Python语言在计算机理论教学中的应用广泛且深远,它以其...总之,Python语言在计算机理论教学中扮演着重要角色,通过实际操作和项目实践,能有效提高学生对计算机理论的掌握程度,培养他们的编程思维和问题解决能力。
在这个过程中,不仅锻炼了硬件设计能力,还涉及软件编程,如汇编语言或微代码编写,实现了硬件和软件的结合。 在【压缩包子文件的文件名称列表】中提到的"模型机",可能是学生完成的课程设计项目文件,可能包含了...
计算机网络是计算机之间通信的基础,包括网络协议(如TCP/IP)、网络层次模型(OSI七层模型或TCP/IP四层模型)、路由与交换、网络安全等。这些知识对于理解互联网的工作原理至关重要。 数据库管理系统(DBMS)用于...
一个完整的大学计算机专业培养计划通常包括多个层次的知识模块,涵盖了计算机科学的基础理论、编程语言、数据结构、算法分析、操作系统、网络技术、数据库管理、软件工程等多个方面。 在基础理论部分,学生将学习...
4. 计算机网络:讲解网络协议、通信模型、TCP/IP层次结构,以及互联网的工作原理。 5. 人机交互与用户界面设计:讨论用户界面设计原则,以及如何提高软件的易用性。 课后习题答案是巩固和检验学习效果的关键环节。...
了解各种编程语言的特性,如C++的面向过程,Java的面向对象,Python的简洁易用,有助于选择合适的工具解决问题。 5. 数据结构与算法:数据结构是组织和存储数据的方式,如数组、链表、栈、队列、树、图等。算法是...
学生可能会接触到一种或多种编程语言(如Python、C++),了解编程的基本结构(变量、条件语句、循环、函数等),并学习如何解决简单的问题。 这个教学资源包可能包含课件、讲义、练习题、案例分析、编程项目等多种...
3. 网络与数据库:《计算机网络》和《数据库系统》是重要的专业课程,学生将深入理解TCP/IP协议、网络层次模型以及数据库的设计与管理。 4. 人工智能与机器学习:随着AI的发展,清华计算机系的课程也涵盖了《人工...
此外,计算机专业的学生通常还需要了解C++、Java、Python等其他编程语言。 在学习了基础的编程语言之后,学生会接触到更高级的编程概念。《编写优质代码》系列书籍和其他一些编程教程,比如《编程珠玑》和《编程...
《计算机科学导论》是高等教育领域的一门基础课程,它为学生打下坚实的计算机理论基础,涵盖编程语言、数据结构、算法分析、操作系统、网络、数据库等多个方面。本课件集合了这些关键知识点,旨在帮助学生系统性地...
为了构建这个教学指导系统,首先运用层次分析法(Analytic Hierarchy Process, AHP)来建立合理的语言课程教学评价指标体系。AHP是一种多准则决策分析工具,可以帮助分解复杂问题,确定各因素的相对重要性。通过AHP...
2. **计算机网络**:涵盖TCP/IP协议栈、网络层次模型、网络拓扑结构、路由选择和网络安全等内容。了解这些知识有助于理解互联网的工作原理和数据通信过程。 3. **数据结构与算法**:这部分会深入讨论数组、链表、栈...
- **编程语言**:通过实践项目让学生掌握至少一种编程语言的使用方法。 - **数据结构与算法**:教授如何选择合适的数据结构来解决特定问题,并实现高效的算法。 #### 3. 网络与互联网技术 - **计算机网络基础**:...
3. **计算机学生专业课程本质讲解**:计算机科学专业的课程不仅涵盖了编程技能,还包括算法、数据结构、计算机组成原理等多个方面,这些都是成为合格程序员的基础。 4. **用C++进行开发要学到什么程度**:C++是一门...
【基于Scratch语言的人工智能少儿编程教育系统】 在当今数字化时代,计算机科学与人工智能(AI)已经成为全球教育的重要组成部分,特别是在K12阶段。基于Scratch语言的人工智能少儿编程教育系统旨在培养孩子们的...
计算机网络课程设计中,开发一个网络协议编辑器和网络协议分析器是常见的实践项目,它旨在帮助学生深入理解网络协议的工作原理以及数据在网络中的传输过程。在这个项目中,使用Python编程语言来实现这样的工具,这...
C语言程序设计课程的教学特点是面向过程的,旨在让学生通过学习程序设计语言结构、算法分析、数据表达等基础知识,掌握C语言编程和算法设计方法。课程目标是培养学生解决复杂科学问题的思维能力,涉及的知识单元包括...