- 博客(19)
- 收藏
- 关注
原创 重读《人月神话》(10)-削足适履(Ten Pounds in a Five-Pound Sack)
因此,程序设计人员需要精心策划用户可选功能的颗粒度,以便既能满足个性化需求,又能有效控制软件的体积与成本。例如, IBM APL 交互式软件系统,它的租金为每月 400 美金,在使用时,它至少占用 160K 字节的内存。技艺改进的结果往往是战略上的突破,而不仅仅是技巧上的提高。这种战略上突破有时是一种新的算法,如快速傅立叶变换,或者是将比较算法的复杂度从 n^2降低到 n log n。程序的空间开销,即其占用的内存大小,是衡量软件成本的重要因素之一。程序的大小,包括代码大小和内存占用的大小。
2024-10-27 21:15:39 554
原创 重读《人月神话》(9)-胸有成竹(Calling the Shot)
使用高级语言可以显著提高生产力,但无论使用何种语言,系统编程的生产率都相对较低,尤其是在涉及大量交互和复杂控制逻辑的情况下。因此,在进行项目估计时,需要全面考虑各个阶段的工作量,并留有足够的缓冲时间以应对不可预见的问题。在复杂程度这片“沼泽”上的指导原则是:编译器的复杂度是批处理程序的三倍,操作系统复杂度是编译器的三倍。在 Bell 实验室,Harr 发现控制程序的生产率为 600 指令/人年,而语言翻译程序的生产率为 2200 指令/人年。将程序员的生产效率量化到指令/年,是一个过时的好方法吗?
2024-10-23 22:06:00 419
原创 编程考古-计算机发展(上)
ENIAC重30吨,使用了约18800个真空电子管,1500个继电器,功率达174千瓦,占地约140平方米,使用十进制运算,每秒能运算5000次加法,比当时最快的计算机快1000倍,是手工计算的20万倍,但是它不像现在这样的电脑有输入控制设备,只能通过人工来扳动庞大面板上的各种开关和插拔电缆来进行数据信息输入,虽然现在看来它真的很落后,但是在当时它代表着人类计算技术的最高成就,它奠定了电子计算机的发展基础,开辟了信息时代。所谓“差分”的含义,就是把函数表的复杂算式转化为差分运算,用简单的加法代替平方运算。
2024-10-19 20:06:26 984
原创 重读《人月神话》(8)-为什么巴比伦塔会失败?(Why Did the Tower of Babel Fail?)
团队组织的目的是减少不必要交流和合作的数量,因此良好的团队组织是解决上述交流问题的关键措施。实际上,树状结构反映了权力和责任的分配,但沟通结构更加网状,不受此限制。在小型团队中,一人身兼多职较为常见,但在大型项目中,这几乎不可能实现,因为同时具备管理和技术能力的人才稀缺,且每个角色都需要全职投入。工作手册的本质并未改变,仍是项目文档的集合,但分发机制和查询方法的改进有助于提升工作效率。沟通和由此产生的组织是成功的关键,管理者必须重视沟通和组织技能的培养,正如重视软件技术的发展一样。
2024-10-18 22:28:07 484
原创 重读《人月神话》(7)-贯彻执行(Passing the Word)
正如《System360 Principles of Operation》中的附录所示,它精确地规定了System/360的兼容性边界,定义了兼容性的标准,描述了预期目标,并列举了由于不同模型间的差异而导致的变化点以及不变项,甚至包括了因工程变更而引起的细微差别。年度大会则是在手册定稿前举行的为期两周的会议,涵盖了所有关键人员,旨在审查并解决长期积累的问题,通过每日更新的手册来反映会议成果,确保每个人都参与到决策过程中,从而加深对决策背后复杂考量的理解。敏捷开发中每天的站会,恰是此种场景的最新发展与应用。
2024-10-16 22:20:49 834
原创 编程语言-Object Pascal语言的面向对象扩展
面对来自社区的声音,尤其是关于语言现代化的需求,Free Pascal 团队选择了一条与 Delphi 语法保持一致的道路,尤其是在启用了 Delphi 兼容模式的情况下。1986年,Borland为Macintosh的Turbo Pascal产品引入了类似的面向对象扩展,命名为Object Pascal,并在1989年为DOS平台的Turbo Pascal 5.5也加入了这一扩展。值得注意的是,尽管 Free Pascal 在追求与 Delphi 的兼容性方面做出了努力,但它并未止步于此。
2024-10-13 13:04:09 1327
原创 重读《人月神话》(6)-画蛇添足(The Second-System Effect)
此时,我们很容易因为对已有成果的信心而陷入过度自信的陷阱,从而忽视了最初的设计理念和目标。:为每个小功能分配一个具体的值,例如每次改进的功能 X 不得超过 M 字节的内存和 N 微秒的时间消耗。第二个系统:这是最危险的阶段,结构师倾向于过度设计,加入许多在第一个系统中被推迟的功能和想法,结果往往成为一个臃肿的“大馅饼”。第三个及后续系统:随着经验积累,结构师能够更好地识别出通用特性以及经验中的不足之处,从而做出更合理的设计。709:作为 704 的升级版,设计上过于丰富,导致仅一半的操作被实际使用。
2024-10-13 11:21:01 366
原创 重读《人月神话》(5)-贵族专制、民主政治和系统设计
对于不同的系统类型(如编程环境、编译器或控制系统),这些文档的形式会有所不同,但其目的都是为了让用户能够顺利完成自己的工作。例如,虽然某些语言如 Mooers 的 TRAC 或 Algol 68 可以通过较少的基本概念达到简洁的效果,但由于其组合规则过于复杂,使得实际使用变得困难。然而,与大教堂不同的是,大多数软件系统在构建时并未花费如此长时间,但其内部的概念差异和不一致性却往往超出预期。因此,为了实现概念完整性,即使某些特性可能带来功能上的改进,但如果它们破坏了整体的一致性,也应慎重考虑是否纳入系统。
2024-10-10 22:13:36 224
原创 2024年10月的TIOBE指数 TIOBE Index for October 2024
这一指数每月更新一次,其数据依据包括全球范围内熟练工程师的数量、相关课程数量以及第三方供应商的支持情况。TIOBE 利用 Google、Amazon、Wikipedia、Bing 等超过 20 家知名网站的数据来计算各项评级。值得注意的是,TIOBE 指数并不用于评判哪种编程语言最好,也不是根据编程语言编写的代码量来排名。开发者可以通过这一指数来检验自己的编程技能是否与行业趋势保持同步,也可以将其作为制定战略决策的重要参考,比如在开始构建新的软件项目时选择合适的编程语言。
2024-10-07 09:13:27 1023
原创 50年光辉历程:Pascal语言历久弥新
Wirth在回顾Pascal历史时似乎有意回避了Delphi,只专注于了他的学术研究路径,但这显然忽视了Delphi作为活跃在现代工业中的Pascal衍生语言的重要性。尽管Wirth指出诸如Java和C#等语言受到了Oberon或Pascal的影响,但实际上,Delphi通过Anders Hejlsberg的思想对C#产生了更大的影响,并通过Borland和Sun Microsystems在属性(properties)的概念上的合作对Java产生了影响。
2024-10-07 08:43:33 1177
原创 重读《人月神话》(4)-外科手术队伍(The Surgical Team)
在软件工程项目管理中,经常面临这样一个两难选择:一方面,小型且精干的团队被认为能够更有效地协同工作,从而实现更高的生产力与更好的成果质量;相比之下,在外科手术团队中,成员间的角色定位更为清晰。一方面,原有的开发队伍不是理想的小型强有力的团队,因为通常的共识是不超过 10 个人,而该团队规模如此之大,至少需要两层的管理,或者说大约 5 名管理人员。需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果(系统调试)。首先,分解技术依然是必不可少的。
2024-10-06 16:37:25 862
原创 重读《人月神话》(3)- 什么是人月神话
理想情况下人员数量与时间消耗之间的关系,即随着投入人力的增加,项目所需时间呈现递减趋势,这在割小麦或收获棉花的工作中是可行的;在本章中作者揭示了这种想法的误区。随着项目的推进,外部环境的变化可能会要求计划进行相应的调整,这就需要管理者具备灵活应变的能力,及时作出必要的修正以保证项目顺利进行。在单纯的数字上,这个等式是成立的,但有点软件开发常识的人都知道这个等式是不成立的,因为有太多不确定的因素在公式的背后。当发现进度落后时,通常的做法是增加更多的人力,然而,如前所述,这并不总是最有效的解决方案。
2024-10-04 22:21:44 1012
原创 编程语言-Pascal
Pascal 是一种命令式和过程式编程语言,由 Niklaus Wirth 设计,是一种小型、高效的语言,旨在鼓励使用结构化编程和数据结构化的良好编程实践。它以法国数学家、哲学家和物理学家布莱斯·帕斯卡 (Blaise Pascal) 的名字命名。Pascal语言是在ALGOL 60语言的基础上发展起来的。ALGOL (Algorithmic Language)(算法语言的缩写),ALGOL 60(Algorithmic Language 1960 的缩写)。
2024-10-04 10:12:51 1412
原创 重读《人月神话》(2)- 焦油坑、编程的乐趣和苦恼
编程系统是多个能够相互协作的程序集合。要将一个简单的程序转变为编程产品,需要付出更多努力——包括详尽的测试和完备的文档。根据经验数据,相同功能的编程产品的成本至少是已经过测试的程序的三倍。在整个的软件开发过程中,“编程系统产品”才是真正的目标,也是最具价值的产品形态。当你将一个个看似无关紧要的小模块拼凑起来,见证它们如何巧妙地协同运作,达到预期的效果时,那份惊喜与激动丝毫不亚于观看一场精彩的魔术表演。编程系统产品的开发不仅涉及编码,还包括全面的设计、严格的测试以及详尽的文档,确保最终产品既可靠又易于维护。
2024-10-03 11:17:52 740
原创 重读《人月神话》(1)-概述
半个世纪以来,《人月神话》经久不衰,Brooks博士为人们管理复杂项目提供了最具洞察力的见解,既有很多发人深省的观点,又有大量软件工程的实践。今天,让我们再次翻开这本书,结合自身在实际项目中的经历,重新审视那些曾经让我们眼前一亮的观点,看看它们是如何在现实世界中落地生根的。即便计算机领域已飞速发展了几十年,硬件越来越快、网络愈发迅捷、计算与存储资源日益丰富,再加上无数优秀的重用库、完善的框架、便捷的语言以及先进的思想等,这些都远超我们的想象。很多时候,辛辛苦苦开发出来的软件并不能真正打动用户的心。
2024-10-01 23:00:00 655
原创 一位传奇的计算机科学家:尼克劳斯·沃斯(Niklaus Wirth)
Wirth 是编程语言 Euler (1965)、PL360 (1966)、ALGOL W (1966)、Pascal (1970)、Modula (1975)、Modula-2 (1978)、Oberon (1987)、Oberon-2 (1991) 和 Oberon-07 (2007) 的首席设计师。Programmieren in modula-2.计算机科学中的文本和专著,第三校正版,施普林格1985 年,ISBN 3-540-13301-1,第 1-140 页。
2024-10-01 16:45:24 1441
原创 致敬编程巨匠:Anders Hejlsberg 安德斯·海尔斯贝格
自 2000 年以来,他一直是开发 C# 语言的团队的首席架构师,在Microsoft的支持下,他继续推动着编程技术的发展,并成为了.NET框架的核心开发者之一以及C#语言的设计领导者。在 1990 年代,Anders 领导的 Delphi 取得了巨大的成功,这也对 Microsoft 的 Visual Basic 构成了巨大的威胁。正是在这个阶段,年轻的Anders展现出了他在编程方面的天赋,他编写了一个Pascal编译器内核,最初命名为Compass Pascal,随后改称Poly Pascal。
2024-09-23 06:58:08 1172
原创 2023年Stack Overflow 开发者调查
与专业开发人员相比,那些学习编码的人报告结果展示使用 Java(37% 对 31%)、C++(32% 对 20%)和 C(32% 对 17%)。对于今年的所有受访者,我们看到 “独立承包商、自由职业者或个体经营者 ”略有增加,与去年相比,全日制学生人数的下降幅度相同(1个百分点),其他就业状况的变化也小于此。排名前十的国家占所有受访者的 60%。Visual Studio Code 仍然是所有开发人员的首选 IDE,与专业开发人员相比,它在学习编码的人中的使用有所增加(78% 对 74%)。
2024-09-22 13:23:58 728
原创 Pascal 编程语言:从辉煌到传承
随着时间的推移,Free Pascal不仅保持了与Turbo Pascal的兼容性,而且还引入了许多新的特性和改进,比如支持复杂类型的函数返回值等。后来他的学生Philipe Kahn毕业后和Anders Hejlsberg(Delphi之父)创办了Borland公司,靠Turbo Pascal起家,很快成为了将Borland发展成为全球最大的开发工具厂商,这一切都不得不说要归功于Pascal语言的魅力。尽管随着时间的推移,Pascal语言的流行度有所下降,但它对后续编程语言的发展产生了深远的影响。
2024-09-21 22:17:10 1213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人