期间:2008
Dsl例外论
关于写外部的一个棘手的事情是DomainSpecificLanguages我所涉足的领域已经被编程语言社区紧紧追踪。编程语言研究一直是学术活动中一个受欢迎的领域,我是第一个承认我在这个话题上的深度远不如许多在这一领域研究多年的人。所以不可避免地会有这样一个问题:为什么像我这样的新手认为他可以在这样一个被人熟知的领域写一本书?
学术旋转
不久前,我和一位即将走上学术道路的博士后聊天。他问我关于研究课题的问题,想要我的意见,因为他觉得我可以告诉他什么是有实际用途的研究。我没有提供太多帮助,但我确实提到了做到这一点的最佳方法是花一些时间在行业中了解软件开发是如何工作的,以及通过一些研究工作可以解决什么问题。华体会登录网址他对这个想法的回答非常令人不安。
DSL业务可读
dsl允许业务人员在不涉及程序员的情况下编写软件规则吗?
当人们谈论dsl时,通常会提出业务人员为自己编写代码的问题。我喜欢将COBOL推理应用到这一思路中。那就是COBOL最初的目标之一是允许人们在没有程序员的情况下编写软件,我们知道这是如何实现的。因此,当任何计划在没有程序员的情况下编写代码时,我必须问一下,在COBOL(和许多其他东西)失败的情况下,这次有什么特别之处可以使它成功。
估计的兴趣
TechnicalDebt是一个非常有用的概念,但它提出了如何衡量它的问题?遗憾的是,技术债务不同于金融债务,因此很难说你有多少债务(尽管我们最近似乎在衡量金融债务方面遇到了一些麻烦)。
人道的注册表
soa喷涌者所提倡的服务新世界的特征之一是注册中心的概念。这通常是用自动化系统来描述的,它允许系统自动在注册表中查找有用的服务,并自行绑定和使用这些服务。
电脑可能偶尔看起来很聪明,但我不太相信这个想法。虽然自动化服务查找可能会有一些奇怪的边缘情况,但我估计有22次是由人类程序员进行查找的。
数据库解冻
几年前,我听到编程语言的人在Java引起的语言中谈论“核冬天”。当时的感觉是,每个人都如此趋同于Java的计算模型(当时的c#被认为不过是一种剽窃),以至于编程语言的创造力已经消失了。这种感觉现在正在减弱,但也许一种更重要的解冻正在开始——对数据库的思考将变得更长久、更深入。
敏捷者和架构者:盟友而不是对手
在2008年旧金山QCon上,丽贝卡·帕森斯(Rebecca Parsons)和我做了一个关于敏捷方法如何与企业架构组一起工作的演讲。华体会体育网页版入口目前,敏捷项目团队和架构团队之间存在着许多不信任和冲突。华体会体育网页版入口我们将深入研究这一现象的原因,并探索这些团队合作的方式。
服务托管
让我们设想一个soa幸福的美好世界,在这个世界中,企业的计算需求被分割为许多小应用程序,这些应用程序相互提供服务,以实现有效的协作。在一个晴朗的早晨,消费者服务需要从提供者服务获得一些信息。问题在于,尽管供应商服务拥有获取此信息所需的数据和处理逻辑,但它还没有通过服务接口公开该信息。供应商有一个潜在的服务,但它还没有真正存在。
早期的疼痛
几年前,我与一位客户交谈,他告诉我他不喜欢我们使用的敏捷方法:“在项目的早期出现这些困难感觉不太对”。与他的反应相反,在我心目中,这种早期的痛苦是最大的痛苦之一好处敏捷或任何迭代开发过程的。
奥斯陆
Oslo是微软的一个项目,在本周的PDC会议之前,关于它的各种消息都被听到了,但细节却很少。我们所知道的是,这与ModelDrivenSoftwareDevelopment而且DomainSpecificLanguages.
打造新联盟
Thoughtworks经常组织“季度技术简报会”——在我们有办公室的城市为社区举行公开会谈。在多伦多的这次QTB中,Scott Shaw和我讨论了如何在IT和业务之间建立新的关系。这解释了为什么我们认为It部门应该被解散。
DSL对Neal Ford和Jeffery Snover的采访(jaao 2008)
微软第九频道对我、我的同事尼尔·福特和杰弗里·斯诺弗(PowerShell的创造者)的采访。总的主题是dsl——Neal和我刚刚在JAOO 2008上完成了一个关于这个主题的教程,并与Jeffery进行了一些愉快的交谈。
观察到的需求
需求是在开始构建产品之前应该发现的东西。在构建过程中,或者更糟的是,当客户开始使用您的产品时,发现需求是如此昂贵和低效,以至于我们会认为没有一个思维正常的人会做这件事,并且不会再提及它。
——苏珊娜和詹姆斯·罗伯逊
敏捷方法违背了这个基本假设,因为它打算在构建过程中和交付之后发现“需求”。但即使是这种对上述明智建议的漠视,与当今许多领先网站所做的相比也不值一提。这些网站通过观察用户在网站上的行为来探索需求,并使用这些信息来产生以下新功能的想法:
进化准则
SOA可以用敏捷方法来完成吗?
DSL q & a
我被要求对非技术类型的dsl进行讨论。也许我读得太多了Stephen O’grady但我有一种不可抗拒的冲动,想用问答的方式来回答。它来了。
语言工作台
语言工作台(Language Workbench)是我在2005年创造的一个术语,用来描述一类新的软件开发工具,旨在通过一个丰富的、多种、集成的、华体会登录网址DomainSpecificLanguages.这些工具距离成为主流还有很长的路要走,但它们的开发仍在继续,而且仍然很有趣。它们是我认为能够显著改变编程领域的少数东西之一。
MDS和DSL
它们之间的联系是什么ModelDrivenSoftwareDevelopment(MDSD)和DomainSpecificLanguages(dsl) ?
在MDSD的上下文中出现术语“DSL”是很常见的。实际上,一些MDSD人士似乎认为dsl只存在于MDSD世界中。我最近为我的书写了很多关于领域特定语言的文章,但是到目前为止,我还没有真正触及MDSD的角度。相反,我关注的是领域特定语言在更传统编程中的作用。dsl同时存在于文本语言和MDSD世界中,并且在两者中扮演着几乎相同的角色。
模型驱动软件开发华体会登录网址
模型驱动软件开发(MDSD华体会登录网址)是一种软件开发风格,它认为自己是传统编程风格的替代品。该方法的核心是建立软件系统的模型。这些模型通常通过图表设计符号来显示——UML是一种选择。其思想是使用这些图将系统指定给建模工具,然后用传统的编程语言生成代码。
增量迁移
就像任何职业一样,软件开发也有经常被遗忘的华体会登录网址活动,这些活动通常被忽视,但却有在错误的时刻反咬一口的习惯。其中之一就是数据迁移。
敏捷和精益
我正在考虑使用敏捷软件开发——但是我应该使用精益软件开发华体会登录网址吗?
分割的新鲜
媒体网站最大的问题之一是处理大量的流量。媒体就是为了吸引眼球,但如果你一次获得太多点击量,表现缓慢就会造成问题,损害你的声誉。这一问题因网络流量的爆发性而加剧。你可以以一个可控的速度前进,然后受到一个大新闻故事的冲击,导致一个大峰值。我们的一个客户在几分钟内就看到了两个数量级的峰值。
语法的噪音
这是一个经常被提及的短语DomainSpecificLanguages(或实际上任何计算机语言)是嘈杂的语法。人们可能会说Ruby比Java更安静,或者外部领域特定语言比内部领域特定语言更安静。所谓“句法噪声”,人们指的是无关紧要的字符,这些字符不是我们真正需要表达的内容的一部分,而是为了满足语言定义而存在的。噪声字符很糟糕,因为它们模糊了程序的含义,迫使我们弄清楚它在做什么。
解析器的恐惧
我经常和人们谈论DomainSpecificLanguages我对外部dsl的一个常见反应是很难编写解析器。事实上,使用XML作为外部DSL的载体语法的一个理由是“您可以免费获得解析器”。这与我的经验不相符——我认为解析器的编写比大多数人想象的要容易得多,实际上并不比解析XML难多少。
领域特定语言
领域特定语言(DSL)的基本思想是针对特定类型的问题的计算机语言,而不是针对任何类型的软件问题的通用语言。特定于领域的语言已经被讨论过,并且几乎从计算开始使用起就一直在使用。
软件开发学院华体会登录网址
第n次,我肯定不是最后一次,我开始讨论定义实践,给其中一些贴上“最佳”的标签,可能还有c字(认证)。这是一个熟悉的讨论,虽然我们才刚刚开始,但我可以大致预测它的走向。它是由一种非常合理的愿望驱动的,即确定谁是更好的软件开发人员,以及现有的开发人员如何提高他们的能力。
我的巴士穿这个看起来大吗?
我的同事Jim Webber因采用轻量级的、面向业务的方法在企业中进行集成而名声大噪。他也是一个非常活跃和有趣的演讲者。所以我既紧张又兴奋,因为我和他在QCon 2008上同台演讲。他做了一个非常有趣的演讲,其中穿插了一些严肃的荤段子。然后我们就一头扎进去做了——可能是在讲话前喝了一品脱酒。我们讨论了企业集成的历史,自认为强大但实际上臃肿的系统的发展,敏捷思维的作用,web的影响(包括Jim关于它为什么被发明的独特理论),以及这如何导致游击式SOA。
便宜的人才假说
在软件界有一个普遍接受的信念,那就是有才华的程序员效率更高。因为我们CannotMeasureProductivity这是一种无法被证明的信念,但它似乎是合理的。毕竟,几乎每一次人类的努力都表明有些人比其他人更好,而且往往是明显的。程序员自己也经常注意到这一点,尽管这似乎总是被那些认为自己更有天赋的人所注意到。
喜欢设计技能
想象一下招聘的情况。有两个候选人都有几年的经验。在蓝色的角落里,我们有一个在你喜欢的设计风格中具有广泛设计技能的人(在我的例子中,我喜欢的是DRY、模式的明智使用、TDD、交流代码等,但实际的列表并不重要——这是你喜欢的)。但是她对你使用的平台技术一无所知。在红色的角落里,我们有一个对这些问题几乎没有什么知识(或兴趣)的人,但是非常了解您的平台——语言中的边缘情况,可用的库,手指自然地移动在工具上。假设他们的其他方面都是一样的(除了像这样的思维实验外,从来不会是一样的),你的团队没有任何空缺可以让这个候选人填补。你喜欢哪一个?
投影编辑
另一种选择SourceEditing系统的核心定义应该在模型中,并通过投影进行编辑。