`
歆渊
  • 浏览: 307839 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

关于 "代码即文档"

阅读更多

我一直在设想下一代程序设计语言, 我想它应该是基于组件的, 相当于现在OO里一个类的概念的东西是一个独立组件的源码. 我觉得至关重要的一个新语言特性是组件之间通过接口相互引用时的角色概念. 这可以从OO平滑引申出来: 可以认为OO的一个组件(比如一个COM对象或者JavaBean)只有一个引用者角色, 那就是调用者, 调用者可以调用任何声明出来的公开接口方法, 也就是所有这个组件的边界方法和属性读写器. 不管是组件容器用于维护性的调用还是其他组件对它的请求性的调用, 在语法的级别上看起来地位都是相同的, 那么如何告诉使用这个组件的应用程序员: 哪些方法适于他去调用, 而另一些不是为他准备的? 这个工作, 就推到了代码文档的头上. 实际上在初始设计一个编程语言的时候, 并没有难以克服的困难妨碍我们制定出表达类似语义的语法结构, 而是早些时候软件开发业还没有达到企业/组件这个规模级别, 没有这种需要. 而当这种需求已经发展出来的时候, 我们又已经背上了一些历史包袱, 受沿袭所致很难完全推翻已有体系结构. 不过变革是迟早的事儿, 程序设计语言也一样, 当结构化编程时代的遗老遗少最终不堪重负, 就算加上了面向对象的特性也不能很好适应组件时代的规模化要求时, 就会有新的血统走上历史舞台. 回到 "代码即文档" 的问题上来, 可以看到其实目前主流编程语言的 "文档观念" 还相当朴素, 他们的首要目标是完成 "算法" 和 "功能", 还没有感觉到文档和程序逻辑应该有什么直观联系. JavaDoc是个创举? 没错, 它让代码文档的编写不用离开编程语言, 并且透过一些非官方的手段还能检查规定范围内文档的完备性. 但这个地步仍然没有让程序文档的编写成为有正规组织, 有标准安排的编程活动的正式组成部分. 仍然是在语言语法上缺乏语素和约束规则. 在这个环境基础上, 把代码写得简明易懂, 起到文档的作用, 还只能是少数优秀工匠所能掌握的一门手艺. 要工业化提高生产质量和效率, 那就得发明新的操作简单的机器来生产程序产品, 也就是新的程序设计语言和开发平台.

 

引用

      ... 

  因为一直能上网,倒是也一直能读到人家的blog,最近看到两篇不错的blog。一篇是...;还有一篇是曾登高转载的《The Rule of Method Design》。尤其是后面这篇,我又是喜欢又是后悔,怎么没有早点把自己的思考总结下来。因为最近我也一直在思考“代码即文档”这样一个概念,什么样的代码,才能让人一看就懂呢?不是注释,而是代码本身,应该足够好懂,应该命名清晰,应该参数合理。。。总之,跟Jeffrey Palermo是如出一辙,只是如今说来,也是马后炮啊。
 
...
分享到:
评论

相关推荐

    C语言中宏定义"#"和"##"符号的用法.doc

    在C语言中,宏定义是预处理器的一种特性,它允许我们创建代换文本,从而简化代码或实现特定功能。在宏定义中,“#”和“##”是两个特殊的符号,它们各自有不同的用途。 1. “#”(双引号)符号: 这个符号被称为...

    基于js disabled="false"不起作用的解决办法

    文章还特别指出,由于OCR扫描技术的限制,文档中的部分内容可能识别有误,建议读者要理解文章的整体意思,并根据上下文进行适当的调整。 需要强调的是,这些知识点不仅限于HTML和JavaScript的初学者,在Web前端开发...

    网页自由打印控件-实现网页中任意定位打印(免费版)网页自由打

    p语句为打印函数,格式:dmPaperWidth文档宽,dmPaperLength文档长以下为完整的VBScript打印程序:(查看源代码) <script language="vbscript">set TML=CreateObject("TML.TMLi") ‘创建对象,DLL...

    WinUI迁移到即将"过时"的.NET MAUI个人体验.doc

    参考文档和代码地址未在文中给出,但可以自行搜索相关资源以了解更多关于.NET MAUI的信息,例如.NET官方文档、工作坊项目以及播客资源等。 总之,.NET MAUI作为微软跨平台开发的新工具,为开发者提供了更广泛的应用...

    业务可视化-让你的流程图"Run"起来.doc

    在本文档中,作者探讨了如何通过让流程图"Run"起来,实现业务流程的动态执行,以此解决流程图与实际代码不一致的问题。 首先,作者指出在传统的开发模式中,流程图与代码通常是分离的,这可能导致经过多次修改后的...

    VisualBasic技术

    集visual Basic学期课程于一起 包括代码 考试划线 及技术文档 代码示例: 窗体上画一个按钮 一个标签 一个timer Dim i As Long Private Sub Command1 Click Timer1 Enabled True End Sub Private Sub Form Load ...

    资料馆1.0 for dvbbs7.0 sp2

    一、文件说明: p_zysy_conn :数据库连接文件及通用函数 p_zysy_index :资料浏览 p_zysy_main :资料管理 p_zysy_admin :...可以支持UBB代码,关于UBB代码的使用方法可以查看动网的论坛帮助。

    pull解析文档

    parser setInput stream "UTF 8" ; int event parser getEventType ; while event XmlPullParser END DOCUMENT { switch event { case XmlPullParser START DOCUMENT: list new ...

    K8飞刀20140725 EXP管理功能 不会编程也能快速"开发"exp工具包

    "K8飞刀20140725 EXP管理功能"是这个工具集的一个版本,它强调了在不编写代码的情况下快速构建和定制自己的数据导出(EXP)工具包。 Oracle数据库中的EXP(Export)是用于导出数据库对象如表、索引、存储过程等的...

    程序2_delphi_milemut_递归算法_

    该项目可能包含了实现上述功能的完整代码、编译后的可执行文件以及相关的文档或资源。 总结起来,"程序2_delphi_milemut_递归算法"是一个使用Delphi编程语言,通过递归方法实现的功能,能够遍历并列出指定目录及其...

    利用JScript中运算符"||"和"&&"的特殊特性实现代码精简第1/2页|angluo-javascript-34553.pdf

    在JScript中,运算符`||`(逻辑或)和`&&`(逻辑与)具有特殊的特性,这些特性使得它们可以被巧妙地...然而,过度依赖这些特性可能会导致代码难以理解和维护,因此在实际应用中应适度使用,并配合适当的文档和注释。

    Jquery中"$(document).ready(function(){ })"函数的使用详解

    $(document).ready()函数和body标签的onload事件有着相似的功能,即它们都用于在页面加载完成后执行代码。然而,$(document).ready()更加灵活和强大。首先,它允许在同一个页面上多次使用,而不会引起冲突,这与...

    深入探讨"<br />"和 "\r\n" 两者有什么区别??

    在浏览器中,` `标签通常是单独使用的,不需要关闭标签(虽然有些文档标准要求使用` </br>`或者` `),其效果是直接反映在网页上,使内容按照指定的位置进行换行显示。例如,在编写HTML页面时,如果...

    SqliteDev 384

    或者你想做嵌入式开发 没有合适的数据库系统 那么现在你可以考虑使用SQLite 目前它的最新版本是 3 7 8 它的官方网站是:http: www sqlite org或者http: www sqlite com cn 能在上面获得源代码和文档 同时因为...

    asp下request.querystring("id")与request("id")区别

    为了演示这些概念,文档中提供了一个简单的ASP示例代码。这段代码使用了标签内的ASP脚本来检查提交按钮是否被按下,并展示从不同Request集合中获取数据的方式。具体来说,它会显示直接使用Request("username")得到的...

    document.getElementBy("id")与$("#id")有什么区别

    首先,`document.getElementById(id)`是JavaScript中的一个内置方法,用于根据指定的ID从DOM(文档对象模型)中查找并返回唯一匹配的元素。这个方法是JavaScript标准库的一部分,适用于所有支持JavaScript的浏览器。...

    css笔记课程笔记2019,5,22

    day02 昨天内容回顾 ... ** 使用标签把要操作的数据包起来,通过修改标签的属性值来... (********):重点,代码看懂,代码会写,代码理解 - (****重点中的重点***) (了解):代码看懂 (理解):能够把原理讲清楚

    js 实现 input type="file" 文件上传示例代码

    在网页开发中,文件上传是一项常见的功能,尤其是在处理用户上传图片、文档等数据时。`<input type="file" />` 是HTML中的一个元素,用于让用户选择本地文件进行上传。然而,这个元素的样式通常不符合现代网页设计的...

    一个简单的碰碰条菜单

    【压缩包子文件的文件名称列表】:名为“新建文件夹”的压缩包可能包含了与博客相关的所有资源,如源代码文件、图片示例、演示应用程序的可执行文件,或者任何其他有助于理解和实现碰碰条菜单的附加文档。...

    php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密

    需要注意的是,由于提供的代码片段是从扫描文档中提取的,可能存在一些OCR识别错误,这会使得某些变量名或字符串被错误地标记。因此在实际应用中,这些变量和字符串可能需要根据上下文进行修正。另外,尽管这段代码...

Global site tag (gtag.js) - Google Analytics