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

合适的地方使用合适的技术

阅读更多
在合适的地方使用合适的技术,我想这一点没有人会反对。而且大多数人都会觉得做到这一点极端简单,无需乎强调。大家可能会觉得问题倒是在于怎么断定什么是合适的技术这个问题。

但其实这两个问题(1、使用合适的技术,2、判定技术是否合适)并没有明确的分界线。因为显然如果不能判定技术是否合适,我们就不能使用合适的技术。

现在说一下我判断技术是否合适的基本原则。1、要经过时间的考验。2、要有比较严密的理论基础。3、技术本身的流行度高。

看看软件开发过程中涉及到的问题。1、理解问题域。这个过程叫做什么业务建模也罢,叫做什么需求分析也罢,主要的目的就是理解问题域。2、设定解决方案。 这个区间承上启下,是一个关键环节。它一方面影响到问题的解决,一方面也反过来影响到问题的理解。因为解决方案是一个人对问题理解和知识结构做输入产生的 输出,而知识结构跟问题理解是一个扯不清的互相关联的参数。3、实际的解决问题。好多人认为,这个环节比较简单,其实不然,这个环节要把一个世界里的东西 投射到另一个世界里(从现实世界到计算机世界),这里面就会涉及到如何投射的问题,而如何投射显然依赖于:问题模型、计算机模型。大多数人会认为这两个中 前一个已经完成了,而后一个很简单,所以投射不会很复杂,可事实上绝对不是如此,原因是:我们一般并不会把问题模型直接投射到裸的(原始的)计算机模型, 而是投射到被各种装备大大增强了的计算机模型上,比如,我们不会直接处理硬盘的数据读写,而可能是考虑把数据放入数据库系统等等。显然,这个投射过程严重 依赖于我们对于目标机器的设想和假定。也依赖于我们个人占有的信息量或者叫做知识量。4、各种偶发事件的处理。这里面主要包括信息的翻译失真,投射的不匹 配导致的困难,经济压力和时间压力等等。

所以,我们一定要在合适的地方使用合适的技术,才能满足在特定性价比的情况下制造出产品——软件系统。

关于问题与和解决方案,属于特定的领域的专业知识,有其特殊性,我大体上不涉及,我只关注实际的解决问题这个环节。我们知道,工作主要来源于投射,而投射的工作量依赖于问题域和解空间的差异性的大小。差异越小,同质化越强,投射越简单,反之亦反。

这就要求我们引出一个概念叫做DSL。这个概念的引入主要是想弥补我们的翻译(投射)的巨大鸿沟,通过一个或者多个中间翻译站,我们可以比较自然和直观的在人脑复杂度承受范围之内解决复杂问题。

到现在为止,我们都在说形而上的理论,现在我们从形而下的实践开始,两头逼近,搞出个结论。

对于任何软件系统,都会牵扯到:输入输出、处理、状态(或数据)存储(或者叫做永久化)。处理各不相同,可重用的一些方面也已经被总结出来了,比如:事 务,身份认证和安全,冗余备份和分布,处理过程(或者运行轨迹)的记录等等,这些是处理中可以重用的部分,总体来说,处理可以重用的比输入输出和状态存储 少的多。

对于输入输出,根据其对象不同,可以分为:跟人类的交互,跟机器(网络节点、别的进程等等)的交互两大类。根据其内容的不同,可以分为实体信息的交互和控 制信息的交互。我们对于实体信息,总结的和可重用的东西比较多,比如:实体信息包括数字、字符(串)、图形图像、声音、视频以及混合信息,它们的传输、存 储、解析翻译(Codec)和获取生成都是可以重用的部件。而对于控制信息,其定义就有点杂乱,投射到人类交互这个层面,会有好多称作Control的可 重用部件用来表达人和软件系统交换的控制信息,投射到机器交互这个层面,显然就是我们不同的【网络】通信协议了,它们主要是维持和管理控制实体信息交互而 采用的,一般称作信令。

对于状态存储,现在比较自然和流行的包括三类,二进制内存存储, 二进制或者文本的【xml】文件存储,二进制的数据库存储。其实(文本可以认为是一种特化的二进制)。对于这些实体信息或者叫做状态,它们的操纵和处理可重用的地方非常大。

上面简要分析了最低层次的(相对而言)的Domain,对于这些Domain,我们有没有对应的DSL呢?

有的,显然,数据领域是SQL、XQuery,处理领域有无数种计算机编程语言,它们都比较合格,尤其是提供了OO能力和Aspect能力以后,用来描述 处理一般没有什么困难,而表现领域(输入输出领域)呢?我认为还是有的,比如:适合图形表现的SVG,适合控制表现的XForms,适合多种实体信息表现 的XHTML2(注意其中的object),适合视频表现的Flash,这些都是该领域的特定语言,可以非常自然高效的表达希望表达的信息。

从这个低层次的分析我们就发现,我们现在把问题空间投射到解空间的方法并不是最好,甚至可以说是相当的差,而近来有些公司已经意识到这一点,比如 Microsoft,Adobe,Sun,它们分别推出了XAML,MXML,JavaFX,用来为输入输出层提高生产率。问题不在于它们的技术,而在 于:1、它们都期望绑定程序员,2、它们的技术都有一定的壁垒,3、现在它们还都不够流行。所以,我个人认为如果提供一个基于标准(XHTML、 XForms、SVG+Other)的表现层运行时,会有很大的竞争力。当然,我的市场敏感度极低,大家自己分辨吧。

有些程序员总是固守着自己的那一块小地盘,期待着所有的事情都用一个办法搞定,这不是不行,只是不够好而已。采用多种DSL构造Application, 一个潜在的问题是这些不同的DSL定义的部件组装在一起的问题。ORM部分的解决了数据领域和业务领域的组装问题,而新出现的表现层Runtime期待着 解决业务领域和输入输出领域的组装。

软件开发的前途看来还是比较光明的。
分享到:
评论

相关推荐

    使用SIMD技术提高C++程序性能

    编程语言只是工具,要把工具用到最合适的地方,扬其长且避其短,打造出有价值的软件产品,那么使用这工具的人自然身价就高了。C++语言有哪些优势呢?当然有很多,不然早消亡了。但泛泛地说“有很多”没意义。到底有...

    delphi 开发经验技巧宝典源码

    0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的菜单项 12 0019 构成Delphi项目的主要文件 12 0020 如何在程序中调用帮助文件 12 第2章 语言基础 17 2.1 基础语言 18 0021 如何对代码进行注释 ...

    三种Web开发主流技术ASP-PHP-JSP的评价

    一个好的技术要用在最合适它的地方,所以本文可以做为你参考的一个文章,而不会告诉你任何一个技术的“最”。 · ASP我们先来谈谈它,因为ASP是到现在开发人郡最广的一个技术了,所以想来大家也会对它最关注。ASP是...

    delphi 开发经验技巧宝典源码06

    0017 安装合适的Delphi版本 11 0018 熟练掌握Delphi中的菜单项 12 0019 构成Delphi项目的主要文件 12 0020 如何在程序中调用帮助文件 12 第2章 语言基础 17 2.1 基础语言 18 0021 如何对代码进行注释 ...

    后端开发开发技巧总结与入门常用的技巧总结.docx

    缓存策略:在合适的地方引入缓存机制(如Redis、Memcached)提高系统性能。 分页与批量处理:对于大数据量的处理,采用分页或流式处理,减轻服务器压力。 服务化架构:采用微服务架构,将复杂系统拆分为多个独立可...

    SQL Hacks 100个业界最尖端的技巧和工具 读书笔记 第一章

    作为一个程序员,如果能够在合适的地方用上精巧的sql语句,能够给开发带来无与伦比的轻巧与快捷。如果你的基础较好的话,应该只用看这个读书笔记就能够掌握这些技巧。配套的sql文件是基于MySQL的,如果你能够在读...

    论文研究 - 基于RS / GIS技术的雅各布巴德城市生活垃圾处理场选择

    将城市垃圾倾倒在不合适的地方给附近的当地居民带来了严峻的挑战。 城市固体废物,如果管理不当,是可能进一步导致不同疾病传播,美学和气味滋扰以及大气和水污染等的主要环境问题之一。用于处理使用地理信息系统和...

    Java SSM 商户管理系统 客户管理 库存管理 销售报表

    Java SSM 商户管理系统 客户管理 库存管理 销售报表 项目源码 本商品卖的是源码,合适的地方直接拿来使用,不合适的根据自己的需求二次开发 系统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC...

    TEAM论坛1.0RC3

    感谢你使用本论坛版本. 使用前请看清以下内容 1.程序内核:2005年12月22日 TEAM 1.0 RC3 ... ... 采用缓存技术,访问速度更快,对服务器的压力更小 ... 针对搜索引擎进行优化,使你的文章更快的加入搜索...更加的合适您的使用.

    软件测试中的网站测试技术要领.zip

    基于Web的系统测试与传统的软件测试既有相同之处,也有不同的地方,对软件测试提出了新的挑战。基于Web的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统在不同用户的浏览器端的显示是否合适。...

    三种Web开发主流技术的性价评价

    ASP:MS IIS 4/Visuale Interdev 6 PHP:Apache 1.2.x/HomeSite 4.5/PHP 4 Java:iPlanet Web Server 4.1/JBuilder 3.5/JDK 1.2.2 以上技术本人却实使用过...一个好的技术要用在最合适它的地方,所以本

    编程课程+PHP技术+PHP高级课程和项目实战+系列课程

    第二部分将带您了解国内外活跃的PHP社区和活动,包括主要的在线论坛、社交媒体群组、技术大会和地方用户组。您将学会如何有效利用这些资源来扩展职业网络、获取最新技术动态和参与面对面的技术交流。 第三部分将...

    2009 年度十大 SQL Server 技巧文章

    它还支持一些定义数据如何导出、导入到什么地方、加载哪些数据等选项。  用bcp工具导入和导出批量数据(上)  用bcp工具导入和导出批量数据(中)  用bcp工具导入和导出批量数据(下) 使用SQL Server的...

    硕士生,博士生论文排版技巧方法

    word格式排版技巧(1)---本科,硕士,博士毕业论文排版 2007-12-03 21:28 2007-12-22 15:08 )word格式排版技巧(1)---本科,硕士,博士毕业论文排版 2007-12-03 21:28 一.图表和公式的自动编号 在论文中,图表...

    电力信息通信技术.doc

    通信网架层利用通信网络将电网设备层的各类型设备连接成一个整体,其中网络方式较 传统的其他方式具有连接简单、易维护等特点,在有线网络不易部署的地方可以采用无 线方式或公网方式,辅予合适的网络安全策略。...

    【毕设课设】JAVA web健身房管理系统(源码+文档+数据库)

    当代快节奏的生活和较强的工作压力,使得人们有健身和放松的需要,而健身馆就是这样一个合适的地方。但目前很多健身馆还是采用人工方法进行管理,因此开发本系统势在必行。基于WEB方式的健身馆管理系统是利用完全的...

    车载智能语音:语音识别的核心技术.docx

    其实仔细想想,用户使用智能语音助手的场景,在很长一段时间是解放双手作为最大的吸引点,想想你在开车,想给某个人打电话或者导航到某个地方,无论是安全还是有效性,语音都是最佳选择,还有当你在拖地做家务时,...

    2009 remobject SDK 中文帮助文集

    当人们搜索适当的文章时可能有不同的需要,例如你可能很熟悉我们的产品只想看看随着时间的推移产品有多少改变,这样,推荐你使用下面的阅读...而且最近相关文档也不完整,对'Vinci' 的回顾和更新将放在下面合适的地方

    睿豪报表设计器 Report Machine 6.5

    ★完全、自由自定义页面、边距、字体,标题和页眉页脚,并可以在自认合适的地方插入函数来实现当前日期,页合计,总合计等功能,合计字段可以放在页头,分组头,并支持条件合计,对分组合计,分页合计,总计等只需简单...

Global site tag (gtag.js) - Google Analytics