返回介绍

代码之城

发布于 2023-05-23 15:33:22 字数 1885 浏览 0 评论 0 收藏 0

对于开发者来说,互联网软件与桌面软件最显著的区别就是,前者不是一个单独的代码块。它是许多不同种类程序的集合,而不是一个单独的巨大的二进制文件。设计桌面软件就像设计一幢大楼,而设计互联网软件就像设计一座城市:你不仅需要设计建筑物,还要设计道路、路标、公用设施、警察局、消防队,并且制定城市发展规划和紧急事件的应对方案。

Viaweb的软件包括:与用户直接对话的一些大型应用程序、被这些大型程序使用的程序、常驻后台报告系统出错的程序、重新启动出错部分的程序、生成统计报告或数据库索引的程序(偶然运行)、回收资源或者移动及恢复数据的程序(手动运行)、伪装成用户的程序(为了测试系统和发现bug)、诊断网络故障的程序、完成备份的程序、对外提供服务界面的程序、实时显示服务器状态和访问数据的程序(很受用户欢迎,对我们也是必不可少的)、修改后的开源软件程序(包括修正bug)以及许许多多的配置和设定文件。在我们被雅虎买下以后,Trevor Blackwell写过一个令人叹为观止的程序,可以在不关闭网站的情况下,将网上商店转移到另一个机房的服务器上。此外,还有向系统管理员发出传呼信号的程序,向用户发传真和电子邮件的程序,引导完成信用卡交易的程序,在套接字、通信管路、HTTP请求、SSH、UDP数据包、共享内存、文件之间互相通信的程序。一部分Viaweb服务器上故意不安装某些程序,因为保证Unix系统安全的关键之一就是不运行那些不需要的东西,降低服务器被侵入的可能性。

光有软件还不够,我们还花了许多时间琢磨服务器应该如何配置。我们自己搭服务器,不仅为了省钱,也是为了让机器完全满足我们的需要。我们还考虑哪些ISP连接主干网的带宽比较大。我们一直与RAID供应商保持联系。

但是,硬件需要考虑的地方,不仅仅在于怎么才能避免出问题,还在于怎样才能最大地发挥它们的作用。只要你控制了硬件,就能为用户提供更多的功能。如果你的产品是桌面软件,你就只能规定硬件的最低配置,无法为了某一个功能而要求用户增加硬件。但是,如果你控制了服务器,你就能轻而易举地增加功能,使用户可以发出寻呼、发送传真、通过电话操作网站、使用信用卡付款等。你所需要做的只是安装相关的硬件。我们总是在寻找通过硬件增加新功能的方法,因为这可以赢得用户,还可以让我们超越那些不直接控制硬件的竞争者(他们要么出售桌面软件,要么通过ISP分销互联网软件)。

由于互联网应用程序由多种软件而不是单独一个二进制文件构成,所以可以使用多种编程语言开发。如果你的产品是桌面软件,一般来说,你总是被迫采用与操作系统一致的语言,也就是C和C++。所以,这些语言就被认为是“正统的”软件开发语言(非技术人员尤其可能这样想,比如经理层和风险投资家)。但是,这其实是一个伪信号(artifact),不能因为桌面软件是这样开发的,就认定所有软件都是这样开发的。对于互联网软件,你可以使用任何你想用的语言^。当今,许多顶尖黑客使用的语言与C和C++大相径庭:Perl,Python,甚至还有Lisp。

^「1995年我们创立Viaweb的时候,Java applet被认为是互联网软件的解决方案。但是我们觉得,applet采用的还是过时的概念,它还是要求下载软件到客户端运行。更好更简单的方法,应该是所有的工作都放在服务器端完成。我们在applet上面浪费了一点时间,还好没延误什么,但是数不清的其他创业公司经不起引诱,掉进了这个泥潭,它们几乎都没有逃脱失败的命运。」

对于互联网软件,没人规定只能使用某些语言开发,因为所有的硬件都控制在你手里,你想要用什么语言,就能用什么语言。不同的语言适合不同的任务,你应该根据不同场合,挑选最合适的工具。尤其是在竞争者存在的情况下,“可以这样做”就变成了“必须这样做”(详见后文),因为如果你不利用语言的优势,那就会听任对手超过你。

我们的大多数竞争者使用C和C++,这使得他们的软件明显不如我们,因为(不考虑其他原因)他们无法解决CGI脚本不能识别用户状态的问题。如果用户想要修改表单的部分内容,你不得不把表单的所有内容都放在同一个页面上,然后在最下面放一个“更新”按钮。正如我将在第12章中解释的,通过使用Lisp这种许多人眼中的教学语言,我们使得Viaweb编辑器更接近桌面软件带给用户的体验。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文