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

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

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

但其实这两个问题(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期待着 解决业务领域和输入输出领域的组装。

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

相关推荐

    ACCESS中使用SQL语句应注意的地方及几点技巧

    ### ACCESS中使用SQL语句应注意的地方及几点技巧 在ACCESS数据库管理系统中,SQL(Structured Query Language)是非常重要的组成部分,它不仅用于数据查询,还可以用来创建、更新和删除数据。为了更好地利用ACCESS...

    PIC单片机的内部比较器的使用技巧

    ### PIC单片机的内部比较器使用技巧详解 #### 技巧#1:低电池电量检测 在使用电池供电的应用中,确保系统能在电池电量不足时做出适当响应至关重要。这通常通过电压比较器来实现,它能监测电池电压并通知微控制器...

    Endnotes的style:IEEE Trans(修改了不合适的地方)和国标GBT7714

    然而,描述中提到“修改了不合适的地方”,这可能意味着用户对原始风格进行了自定义,例如更改了编号样式、字体、间距或排序规则,以满足特定期刊或出版社的要求。对于SCI论文,遵守特定的引用格式是必需的,因此...

    使用ImageView应该注意的地方

    为了避免这种问题,可以采用延迟加载技术,如Glide或Picasso库。这些库能够智能地管理图片加载,仅在图像进入视口时才加载,从而提高应用性能。 再者,内存管理也是使用ImageView时需要考虑的因素。Android系统会为...

    扫描仪的使用方法与技巧.docx

    然而,要获得高质量的扫描结果,不仅需要合适的硬件,还需要掌握正确的使用方法和一些实用技巧。 首先,了解扫描仪的基本工作原理至关重要。扫描仪主要通过CCD(电荷耦合元件)或CIS(接触式图像传感器)捕捉光线...

    visual studio.net使用技巧

    1. 快速启动项目:使用"File > New Project"来创建新项目,选择合适的模板,如Windows Forms、ASP.NET或Console Application。 2. 多项目解决方案:通过"Solution Explorer"管理多个相关的项目,便于代码共享和协同...

    C代码优化方案1、选择合适的算法和数据结构__ 4 2、使用尽量小的数据类型__ 5

    例如,当需要至少执行一次循环体时,使用`do…while`循环更为合适。 - **示例**:在需要保证循环体至少执行一次的情况下,使用`do…while`循环。 - **循环展开**:通过增加循环步长来减少循环迭代次数,进而...

    PowerPoint使用技巧指南

    要创建新幻灯片,只需将光标定位到合适位置并按回车键,如果需要插入空行,使用[Shift+Enter]。使用“大纲”工具栏的“升级”、“降级”、“上移”、“下移”等功能可以进一步优化幻灯片布局。 2. **PowerPoint转...

    混缩的20个小技巧

    在使用压缩器时,选择合适的膝盖类型也很关键。“软膝”可以提供更平滑的过渡效果,而“硬膝”则适合需要快速响应的情况。根据不同的音乐风格和个人喜好选择合适的膝盖类型。 #### 技巧九:注意乐器之间的平衡 在...

    电烙铁使用安全技术交底

    下面将详细讨论“电烙铁使用安全技术交底”这一主题,旨在提供安全、有效的电烙铁操作指导。 1. 选择合适的电烙铁 - 功率选择:根据工作需求,选择适当功率的电烙铁。一般来说,小功率(20-30W)适用于精细焊接,...

    生活信息网源码 asp中型地方门户信息网站源码

    以上是构建和管理【生活信息网源码 ASP中型地方门户信息网站源码】所需的关键技术点。开发者需要具备ASP编程、数据库管理、前端开发、网络安全和服务器配置等相关知识,才能有效地利用和修改这个源码来满足特定地方...

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

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

    齐博地方门户系统V3.5商业版(12套模板+无限制)

    10. **27源码网.url**:这可能是一个指向27源码网的快捷方式,该网站可能提供了更多类似的开源代码资源或者技术支持。 齐博地方门户系统V3.5商业版提供的不仅仅是基本的网站框架,还包括了与用户交互、内容管理、...

    ### LaTeX 介绍与使用技巧

    ### LaTeX 介绍与使用技巧详解 #### 一、LaTeX 的基本概述 LaTeX 是一种在科学和技术领域广泛应用的排版系统,它...希望以上介绍和技巧能帮助读者更好地理解和使用 LaTeX,为自己的学术研究和技术写作提供有力支持。

    触摸屏使用的十点技巧

    以下是对触摸屏使用技巧的详细解析: 1. 全屏运行:为了充分利用触摸屏的优势,应该移除文件名栏和菜单栏,使得应用程序能全屏运行,提高用户的沉浸感和操作体验。 2. 选择合适的背景色:明亮的背景色可以掩盖指纹...

    地方媒体操作指南.pptx

    总的来说,这份地方媒体操作指南为企业提供了一套系统的媒体规划和操作方法,通过深入理解目标消费者、分析地方媒体特性和选择合适的广告形式,能够有效地提高广告效益,推动产品在地方市场的销售。

    示波器的原理和使用发生地方

    示波器是一种重要的电子测量仪器,它能够显示电压信号随时间变化的图形,广泛应用于电子工程、通信工程、物理学、自动化技术等多个领域。本讲座主要围绕示波器的原理和使用方法进行深入探讨。 首先,我们要理解示波...

    地方城市旅游信息介绍网系统源代码

    【地方城市旅游信息介绍网系统源代码】是一个专门为展示和管理各地方城市旅游信息而设计的软件系统。这个系统的源代码提供了对城市景点、酒店、餐饮、交通等旅游相关服务的详细信息展示、管理和更新的功能。通过分析...

    北京地方标准-图像信息管理系统-技术规范-2009_10

    ### 北京地方标准—图像信息管理系统技术规范(2009_10)解析 #### 标准概述 《北京地方标准—图像信息管理系统技术规范》是一部针对图像信息管理系统的技术性规范,主要应用于北京市的安防工程项目中。该标准旨在...

    Asp小型地方生活网源码

    【Asp小型地方生活网源码】是一种基于ASP(Active Server Pages)技术构建的地方性信息服务网站的源代码。ASP是微软公司开发的一种服务器端脚本环境,主要用于动态网页的生成,它可以在IIS(Internet Information ...

Global site tag (gtag.js) - Google Analytics