软件随想录(local.joelonsoftware.com/wiki)-2002年08月30日 平台 - Platforms

本文探讨了软件平台的成功要素,强调了平台对于开发者的重要性,并通过多个案例分析揭示了平台供应商应如何正确定位并支持开发者社群。

2002年08月30日 平台 - Platforms

 

平台

From The Joel on Software Translation Project

Platforms Joel Spolsky

Friday, August 30, 2002

A part of Joel on Software, http://www.joelonsoftware.com


词汇表 (Glossary)

  • software developer 软件开发者 人员
  • application, software application 应用软件 应用程序
  • language runtime 程序语言的执行环境
  • platform 平台
  • operating system, OS 操作系统
  • DBMS 数据库管理系统
  • server 服务器
  • ISV (Independent Software Vendors) 独立软件供应商
  • built in 内建
  • license 授权,许可执照
  • dormroom 多人合宿的房间
  • juegos casino

正文

大部分软件开发者,包括Fog Creek Software,光是撰写应用软件就能获得无上的快乐。你知道的, 就是那些能做些什么事或解决特定问题的程序。但是,在我们当中有些勇者想要更彻底地改变这个世界,于是他们选择致力于平台:就像是巨大的软件板块(译注:就像建筑业在盖房子时会先铸好一些水泥板块,到现场再组合),光是板块本身并没有什么功用,但是却能让大家组合应用,造就了一个充满了新奇有趣应用程序的世界。所以,他们撰写操作系统,或数据库管理系统,或 Java 之类的程序语言执行环境,而且他们希望能吸引独立软件开发者在他们的平台之上创造一些很棒的新应用程序。

广义而言,一套操作系统就是一个平台。许多平台必须在操作系统之上运作,Java执行环境就是。还有别忘了 Windows 一开始并不是一套操作系统,起初它是以在 DOS 上执行的一套程序现身,它(刚装好时)没有什么功能,但是却让软件开发者能在其上为便宜的 Intel 机器制作 GUI 应用程序。

判断出你的产品是不是平台真的真的很重要,因为平台需要非常不一样的行销方式才能成功。理由是,平台最初且首先需要吸引的是开发者,不是一般使用者。

我有幸可以先读到Rick Chapman 关于软件业界的蠢事的超棒新书(预测会成为最畅销的书)。身为凡事都要分析的人,我总是寻找共通的论点。软件界失败案例最大的论点之一,就是平台商并不了解他们是平台商,以至于疏远他们的重要顾客:开发者。

案例:网威 (NetWare) 太晚释出适合的NLM开发工具组,以至于当 Unix 和 Windows NT 挟带著更好更便宜的开发工具组出现之际,他们在服务器软件开发人员的心中被扫地出门。

案例:苹果电脑 (Apple) 花了数十年让他们的开发者的生活像场灾难。将近20年来,每一版新的操作系统都需要将应用软件的程序代码东修修西改改。如果你太成功了,苹果电脑就会跟你作对(不过有时会控制一个名为 Claris 的掌上傀儡来跟你竞争,然后假装跟自己无关。)

案例:想要在OS/2 1.0版上开发软件,要先投资 $3000 买 SDK ,而且,如果列印对你来说很重要的话,那你就必须撰写你自己的打印机驱动程序。列印的确重要,所以 OS/2 没有应用软件。

但反例也一样有趣:

案例:第一版的 Windows 包含了一个可以免费再次发布的执行环境,所以,如果你写了一支 Windows 软件,你可以卖给任何有 DOS 的人,而不限于那些少数有买 Windows 1.0 版的怪胎(我!)。

案例:撇开升阳 (Sun) 在 Java 上犯的错误,它的执行环境一直都是免费的,并且,好的 Java 开发工具也很便宜或免费。没有其他开发平台能如此迅速地跃升主流(就算是 Visual Basic,史上卖得最好的电脑语言,也花了几年才往上攀升。)

一个平台想要成功,需要被广泛大量的采用,那意味著你需要开发人员为它开发软件。害死一个平台最好的方式是让开发人员难以在其上建设。因为平台厂商往往要嘛不知道他们所有的是个平台(他们以为是个应用软件),要嘛就是变得贪婪(冀望所有的利益都归他们。)

贪婪的平台厂商没办法容忍所有各种的下等痞子可以从他们的平台赚钱,所以任何人要为它开发东西都近乎该死的不可能。要阐释这点,最著名的失败例子大概是 IBM 的 PS/2,挂著一大拖拉库的私有技术,例如新的 Microchannel 架构设计成确保只有 IBM 能制造扩充卡。这当然有够短视的。没人想要 PS/2,因为,呃,想要扩充卡时没得用,有得用时则太贵了。作为一个平台供应商,在其上开发的人们有多么成功,你才算那么成功。

更细微的问题是,平台供应商不认为他们所有的是一个平台,而认为他们有个应用软件。为了阐释这点,我要再次地讲到 Groove

「为什么你不断地提到 Groove,思博兄?」三个理由:

他们有个吸引人的架构,提供了重要的平台功能,可以实际用在我自己的产品中。他们使得独立软件供应商无法在他们的平台之上开发(或至少是不切实际的),于是注定了被遗忘的命运,若非出于贪婪,就是因为他们把 Groove 当作应用软件而非平台,而且 Groove 发明人 Ray Ozzie 有写部落格(weblog),所以如果他认为我错了,他可以回答我。(他回答了。)

让我说说我是怎么发现Groove的问题的。我有个简单的桌上网站内容管理程序CityDesk,可以用于部落格(Weblog),公司的网站,小型组织等等,是给那些需要内容管理却负担不起大系统,或者无法随处控制服务器,或是不打算浪费工夫在服务器上按装perl脚本系统的人。

我们的 1.0版有些弱点。最大的一个问题是:人们想要透过网际网络(Internet)在CityDesk网站上共同合作。这是很合理的要求。我们必须在下个大版本释出时做点事情来解决此限制。基本上有两个选择。传统上的选择是做成主从式架构(client-server):搞出一个CityDesk服务器,让你安装在某处,然后每个人就可以共同合作。

但另一个选择是利用安全的点对点架构,可以保持CityDesk不需要放任何东西在服务器上的优点。而这正好就是Groove所提供的。

因此我考虑著移植CityDesk到Groove上。接著发现:

1. 没有免费的Groove执行环境。我每一个客户都必须购买Groove。

2. 没人有Groove。

Groove这个点子的命运从一开始就被注定要完蛋。我向几个据称正在为Groove开发软件的Groove "合作伙伴"请教,问说"与Groove的关系有任何好处吗?" "哈!" 他们说道:"付了$1500,仅从他们网页得到每月少于10次的点阅连结(也就是经由Groove网站连过来的访客数)。真是浪费钱。我们甚至没办法要求Groove分享顾客名录。"

这不是我想用来开发的平台。虽然技术上它确实是我想用来开发的平台,但却被一家贪婪(或无知)的公司所控制。它正在切断自己的命脉:那些在 Groove 上跑的应用程序. Ray Ozzie 正热衷于酷毙的网志,但 Groove 的网志在哪里?又有谁会想帮它写一个?是 Blogger 的创造者 Evan Williams 吗?就算是 Blogger Pro 一年也只要付 35 美元,而这还不够付 Groove 一个使用者的使用许可 99 美元呢。

如果Groove执行环境是免费的又将如何?顺著Windows的轨迹,一开始以免费的执行环境出现,一次能让你跑一个GUI应用程序。最终,为了Windows的文件管理,在不同应用程序间剪贴资料等好处,很多人买下完整版,然后Windows 3.0版现身了,这么受欢迎,有著这么多的应用程序,以致于每台个人电脑都搭售Windows。如今的Windows就像英国的电视税。除了开发者以外所有人都得付钱。只要你在撰写Windows的软件,就不用再付一分钱。事实上在Windows的历史上,开发人员从来不用担心Windows本身的费用。

任何曾经是过贩卖软件元件(ActiveX 控制元件, beans等等)的人,都知道执行环境必须免权利金,否则开发者绝对是敬而远之。微软(Microsoft)甚至让你免费地再分布Jet这个完整的关联式数据库引擎,这相当于微软Access程序的十分之九。而且更夸张的是,这个引擎已经事先安装进Windows 2000了。

Groove平台想要成功就要做相同的事情。让Groove执行环境可免费再分布,意谓著会冒出上百个应用程序,进一步使得执行环境又远又广地传播出去。很多使用者会看到购买内建合作功能的Groove完整版之价值所在。如hosted reflectors之类的Groove服务,应会拥有更大的潜在观众群。

当然啦,他们可以延著Notes的轨迹,假定卖出软件的唯一途径就是,用酷酷的投影片让 CEO们发出哇噢的叫声,然后卖价值百万但无用而冷门的企业软件(corporate shelfware)授权。这样做的确是有帮莲花公司(Lotus)赚钱,因为Notes有一个吸引人的应用程序:电子邮件软件。而且还是内建的!

不过想像一下,如果Notes的执行版本是免费的,如果Notes从80年代起在这个软件之上形成一个软件产业,某些小小的新创公司很可能已经为Notes制作出令人激赏的超文件应用程序,并取代现在的Web网络了。巨大的Notes公众网络之梦或许早就实现,那么Notes在个人电脑上就会和接龙游戏一样普遍了。如今,Notes仍只不过是又一个邮件系统而已,而且是一套没什么未来的邮件系统。

我是一直在找Groove的碴,不过这只是因为在其中存在有趣的地方,因为吸引人的技术少之又少,而它是其中之一。是的,Groove工程师是架构太空人(architecture astronauts)。那并不成问题,他们正在建立一套架构。可是目前他们将它定位成应用程序,而我认为如果他们那么做的话,Groove是红不起来的。总会有某人将会带著一套P2P架构打进来,并且以元件(component)的方式来销售,或是做作开发源码的程序库形式(是的,我察觉到JXTA),而那将是软件开发者会去用的。

 

源码来自:https://pan.quark.cn/s/fdd21a41d74f 正方教务管理系统成绩推送 简介 使用本项目前: 早晨睡醒看一遍教务系统、上厕所看一遍教务系统、刷牙看一遍教务系统、洗脸看一遍教务系统、吃早餐看一遍教务系统、吃午饭看一遍教务系统、睡午觉前看一遍教务系统、午觉醒来看一遍教务系统、出门前看一遍教务系统、吃晚饭看一遍教务系统、洗澡看一遍教务系统、睡觉之前看一遍教务系统 使用本项目后: 成绩更新后自动发通知到微信 以节省您宝贵的时间 测试环境 正方教务管理系统 版本 V8.0、V9.0 如果你的教务系统页面与下图所示的页面完全一致或几乎一致,则代表你可以使用本项目。 目前支持的功能 主要功能 每隔 30 分钟自动检测一次成绩是否有更新,若有更新,将通过微信推送及时通知用户。 相较于教务系统增加了哪些功能? 显示成绩提交时间,即成绩何时被录入教务系统。 显示成绩提交人姓名,即成绩由谁录入进教务系统。 成绩信息按时间降序排序,确保最新的成绩始终在最上方,提升用户查阅效率。 计算 计算百分制 对于没有分数仅有级别的成绩,例如”及格、良好、优秀“,可以强制显示数字分数。 显示未公布成绩的课程,即已选课但尚未出成绩的课程。 使用方法 Fork 本仓库 → 开启 工作流读写权限 → → → → → 添加 Secrets → → → → → → Name = Name,Secret = 例子 程序会自动填充 尾部的 ,因此你无需重复添加 对于部分教务系统,可能需要在 中添加 路径,如: 开启 Actions → → → 运行 程序 → → 若你的程序正常运行且未报错,那么在此之后,程序将会每隔 30 分钟自动检测一次成绩是否有更新 若你看不懂上述使用...
综合能源系统零碳优化调度研究(Matlab代码实现)内容概要:本文围绕“综合能源系统零碳优化调度研究”,提供了基于Matlab代码实现的完整解决方案,重点探讨了在高比例可再生能源接入背景下,如何通过优化调度实现零碳排放目标。文中涉及多种先进优化算法(如改进遗传算法、粒子群优化、ADMM等)在综合能源系统中的应用,涵盖风光场景生成、储能配置、需求响应、微电网协同调度等多个关键技术环节,并结合具体案例(如压缩空气储能、光热电站、P2G技术等)进行建模与仿真分析,展示了从问题建模、算法设计到结果验证的全流程实现过程。; 适合人群:具备一定电力系统、能源系统或优化理论基础,熟悉Matlab/Simulink编程,从事新能源、智能电网、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展综合能源系统低碳/零碳调度的科研建模与算法开发;②复现高水平期刊(如SCI/EI)论文中的优化模型与仿真结果;③学习如何将智能优化算法(如遗传算法、灰狼优化、ADMM等)应用于实际能源系统调度问题;④掌握Matlab在能源系统仿真与优化中的典型应用方法。; 阅读建议:建议结合文中提供的Matlab代码与网盘资源,边学习理论模型边动手调试程序,重点关注不同优化算法在调度模型中的实现细节与参数设置,同时可扩展应用于自身研究课题中,提升科研效率与模型精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值