您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
用SysML做的编程技巧总结图
 
来源:博客   发布于 2016-11-15
   次浏览      
 

这里主要用泛化关系(Generalization)来叙述,因为每种语言都多少继承了语言技巧的一些特性,而具体的某种语言也是其语言技巧的细化。同样具体技巧对于逻辑技巧也是一种细化。

当编程学到一定阶段以后,就会发觉其中有2种技巧是较为互相独立的,一种是编程语言技巧,另一种是逻辑思维技巧。著名算法书籍《算法导论》里面,也尝试用伪代码来描述算法,说明只要掌握基本逻辑,其逻辑的实现可以用任何功能完善的编程语言来完成。

(这里仅仅列举些样板,其中的概括不是最全面的。图片较小,欢迎用4k屏幕欣赏……大误)

而语言技巧(LanguageSkills)又细分为“1.面向对象”和“2.面向过程”的语言技巧。其实还可以细分出“3.基于对象”的语言技巧(例如JavaScript这类缺乏多态和其它面向对象特性等的语言)。再往下细分,其语言的特性会更为显著、平台化。例如Java只能运行在Java虚拟机中,而C语言虽然通用,但需要依附于特定编译器和编译平台,C#好用却只能在windows平台使用。PHP、JSP、RUBY等可以在Web后端使用(Web服务器端处理好后,生成HTML和JS代码发送到客户端)

语言技巧的实现,大多熟能生巧。而一个语言的好坏,很大程度依赖于这个语言的环境生态。生态环境不好,再简单易用也白搭。生态环境包含3个方面:IDE的完善性、运行平台的流行性和语义的易用性。

这三个特性都是极强依附于编程语言的,是一个编程语言不可替代和更换的部分。因故这里用组合关系(Composition)来说明问题。

例如,C#强烈依附于windows环境,虽然有各种语义简单的优势,上手速度也比苹果的Object-C好多了,但就是因为平台环境受欢迎程度越来越低,导致其语言生态环境近几年比较悲催。

想想6、7年前微软辉煌的时刻,各种C#书籍迎面飞来,蛮多程序员也以会C#为正统。但终究敌不过时代变迁。

不过基于平台的语言也是会发展的,正如C#是在windows强大以后发展而来,Swift也同理是由于苹果的OS强大发展而来,并被苹果寄予厚望取代Swift。其语法简洁,咋一看上手难度也比Object-C低很多。

这里浅谈下高校开的编程基础课,有开C语言的,有只开C的,也有开Java的。大一的课程,大致以基本语言技巧为依托,学习一些基本编程逻辑和算法思维。我们知道C和Java都是面向对象的编程语言,但是绝大多数高校将其作为面向过程或者基于对象的语言来学校,本质并没有涉及到面向对象的核心功能——“多态”。所以在这样的背景下,高校编程语言学校大多数获得的是“语言技巧”和“基本逻辑技巧”一些“算法技巧”和“数据结构技巧”。

我们可以看到,逻辑技巧中的基本逻辑技巧,细化可分为if、while循环、for循环、switch等。其实这个细分如果用泛化箭头来描述,那就意味着基本逻辑技巧是个更为抽象的概念。而如果用组合或者关联关系来描述的话,那就是基本技巧涵盖了这么多if技巧、while技巧、for循环技巧。可能这里用组合或者关联关系比较合适。这是后话。

其实在SysML中,什么情况用什么联系,也是一种仁者见仁智者见智的过程。目前SysML的具体大应用案例还很少,实现阶段也在探索。至于SysML软件更多地用于文档化过程,离制造创新还很远。这里也仅仅是尝试用SysML来描述,看看大家是否觉得这种描述方法清晰。

刚才提到高校编程学习的特性,其实这里也可以谈谈此文运用SysML的缺陷:还未大量涉及块状图(blockdiagram)。毕竟是从UML借鉴和分离出来的新模型语言,自然需要有其特点。我觉得最大的特点就是块状图(block diagram)和接口(port),尤其是接口,这在UML基本是没有的。目前SysML的官方规格文档也比UML2.5简洁,少了300多页。

浅谈一门成功的编程语言:语法简洁是否是一个语言成功的方面呢?——其实答案是否定的。目前要求降低。而对语言的可读性要求,其实在现在来讲,是变高的。这其实可以拿汉字做个比喻,进入计算机时代,虽然手写效率可能慢些,不过打字效率就快多了。所以相对于拼音文字,汉字非但没有衰败,其适用于图形学的形状还能显著提高阅读效率。

当年拼音与五笔之争,现在已经几本确立了拼音的完胜。拼音加上自动总结高频词,推荐用词后,输入效率变得非常高。同样,在各大智能IDE出现以后,变量名、方法名都能在输入完个别首字母后自动补完,这些进步也显著提高了一些老语言的可读性。

UML当然也是一种语言,翻译过来叫统一模型语言。而这门语言是好是坏呢?恐怕蛮多人还是持怀疑态度。至于目前大多数人觉得画草图比用电脑画UML或者SysML好用多了,我觉得真正的原因是UML和SysML的绘图软件做得还不够好。如果你用个iPad和iPencil画个粗糙的框框,它瞬间就给你整得正正方方的,还可以拖动来拖动去呢?那样还是好用的。

总结:其实计算机语言有自我迭代升级的关系——好的编译器是一门好的语言的支柱,编译不出成功的程序,这语言不是废了么?而好的编辑器是让语言迅速流行的关键之一,我打几个字母就给我完成了一大段程序,我既然可以更专注在软件设计上,那我为何还要用其它语言呢?好的编译器和好的编辑器组成了一门好的语言,通过这门语言要能写出更好的编译器和编辑器,这样才能不断迭代循环,进行语言升级。

   
次浏览       
 
相关文章

UML概览
UML图解:用例图(Use case diagram )
UML图解:活动图(activity diagram )
UML图解:类图(class diagram )
UML图解:对象图(object diagram)
UML图解:顺序图( sequence diagram )
 
相关文档

模型跟踪:跟踪图、矩阵、关系(建模工具EA)
自定义表格(Custom Table)在EA中的使用
元素的详情浏览控制
UAF 1.2规范解读(DMM 和 UAFML )
EA中支持的各种图表
EA中的界面原型建模
 
相关课程

UML与面向对象分析设计
UML + 嵌入式系统分析设计
业务建模与业务分析
基于SysML和EA进行系统设计与建模
基于模型的需求管理
业务建模 & 领域驱动设计
最新课程计划
信息架构建模(基于UML+EA)3-21[北京]
软件架构设计师 3-21[北京]
图数据库与知识图谱 3-25[北京]
业务架构设计 4-11[北京]
SysML和EA系统设计与建模 4-22[北京]
DoDAF规范、模型与实例 5-23[北京]

如何向妻子解释OOD
OOAD与UML笔记
UML类图与类的关系详解
UML统一建模语言初学
总结一下领域模型的验证
基于 UML 的业务建模


面向对象的分析设计
基于UML的面向对象分析设计
UML + 嵌入式系统分析设计
关系数据库面向OOAD设计
业务建模与业务架构
使用用例进行需求管理


某航空IT部门 业务分析与业务建模
联想 业务需求分析与建模
北京航管科技 EA工具与架构设计
使用EA和UML进行嵌入式系统分析
全球最大的茶业集团 UML系统分析
华为 基于EA的嵌入式系统建模
水资源服务商 基于EA进行UML建模
更多...