跳至内容

Clipper 教程:开源 Clipper(s) 指南/入门

来自维基教科书,为开放世界提供开放书籍

开源和许可证

[编辑 | 编辑源代码]

让我们定义开源。开源软件是指以任何人都可以学习、根据自身需求修改并重新分发的源代码形式发布的软件。它通常也是免费的(即免费)。它与→版权概念相关联。存在版权持有人,从这个意义上说,它与公有领域软件不同。

可以在此处找到一个非常好的定义(包含 10 个标准):https://opensource.org/osd,它源于 Debian 社会契约https://www.debian.org/social_contract#guidelines

Harbour、xHarbour 和 Clip 在 GNU 通用公共许可证 (GPL) 下发布,同时还提供了一个选项,允许用户在他们选择的许可证下分发他们开发的应用程序(如果他们严格遵循 GPL,他们就必须在 GPL 下分发他们的应用程序)。GPL 是 GNU 项目采用的许可证,因此,它可能是最著名的开源许可证,因为一个完整的操作系统是在它下发布的——这个操作系统通常被称为它的内核名称,Linux,有些人称之为 GNU/Linux。GNU 项目创建的内核(*The Hurd*)从未真正取得成功。修改后的 Linux 内核是 Android 操作系统的基础。

另一个(主要是实验性的)操作系统是 ReactOS (https://reactos.org/),它看起来像 Windows,旨在像 Windows 一样工作,并使用相同的应用程序。Harbour 可以在 ReactOS 下平稳运行。

我们需要回答这些基本问题

→自由软件基金会:自由软件基金会 (FSF) 是一个由→理查德·斯托曼于 1985 年 10 月 4 日成立的 501(c)(3) 非营利组织,旨在支持自由软件运动,该运动提倡普遍享有学习、分发、创建和修改计算机软件的自由,[4] 该组织更倾向于在版权 ("分享类似") 条款下分发软件,[5] 例如其自身的 GNU 通用公共许可证。[6] FSF 在美国马萨诸塞州注册成立,并在那里设立了总部。[7]

如需了解更多信息,请访问 https://www.gnu.org/philosophy/floss-and-foss.htmlhttp://www.fsf.org/licensing/licenses/gpl.htmlhttp://www.linux.org/https://www.gnu.org/philosophy/open-source-misses-the-point.htmlhttps://www.toptal.com/open-source/developers-guide-to-open-source-licenses

除了 GPL,Clip 还可选地提供商业许可证。用户可以选择适用于其安装的许可证。

x2c 在 Apache 许可证下发布 (http://web.archive.org/web/20080819175600/http://x2c.dtop.com/LICENSE.txt)。在 Apache 许可证下发布的最重要的软件是 Apache,它是一个广泛使用的开源 Web 服务器 - https://w3techs.com/technologies/details/ws-apache/all/all

X# 拥有自己的许可证,https://www.xsharp.info/licensing/xsharp-compiler-source-code-license

除了软件源代码的免费分发外,还存在文档的免费分发问题。为了补充 GPL 许可证,GNU 项目引入了 GNU 自由文档许可证 (https://www.gnu.org/philosophy/using-gfdl.html)。Creative Commons (https://creativecommons.org/) 建立了六种不同的许可证,基于在https://creativecommons.org/share-your-work/licensing-types-examples/ 中描述的四个条件。此网站(维基教科书)使用 Creative Commons 署名-相同方式共享 (CC BY-SA 3.0) 许可证和 GFDL,如https://wikibooks.cn/wiki/Wikibooks:Copyrights () 中所述。

软件盗版和源代码共享

[编辑 | 编辑源代码]

比尔·盖茨在 1976 年写的一封信引起了轩然大波。他的公司 Micro-Soft(多年来改变了拼写)正在销售用于 MITS Altair 8800 的 BASIC 解释器,盖茨哀叹许多人复制了它却没有付费。您可以在此处阅读它:https://genius.com/Bill-gates-an-open-letter-to-hobbyists-annotated。然而,BASIC 取得了巨大的成功:所有家用电脑供应商都在开发自己的 BASIC 解释器,或者从微软获得许可将其存储在电脑的 ROM 中。因此,当时的*微型电脑*或*家用电脑*都是带有 ROM 中的 BASIC 解释器的简单机器,配备了 8 位 CPU。许多书籍、电脑杂志(以及一些电子杂志)都发表了程序的*列表*:在 80 年代,至少对于简单的程序来说,共享源代码是司空见惯的事情。

此外,由于存在许多不同的机器,因此存在许多 BASIC 方言,许多杂志都有关于此或那台电脑 BASIC 的专栏,甚至存在针对特定电脑的杂志:有 Sinclair 杂志、Commodore 杂志、Atari、Acorn 等等。

当然,您可能听说过这样的评论:“如果它是在杂志上发表的,它就不可能是有效的,否则他们就会在商店里出售它”,但研究这些列表是有教育意义的。一个很好的例子在以下 URL 中描述:http://www.alfonsomartone.itb.it/fztsmo.html(我认为这是一篇非常好的阅读——它也反映了不同电脑品牌粉丝之间存在的偏执),我特别指的是他们谈论从 Spectrum 杂志上复制和改编 Totocalcio 程序列表的部分。Totocalcio 是意大利对足球比赛下注的系统(这里的“足球”指的是美国称为“足球”的运动,请查看https://www.britannica.com/story/why-do-some-people-call-football-soccer)。我们稍后会回到体育博彩,因为它就是……dBASE 开发的……起点。

但是,在过渡到 16 位基于 DOS 的机器之后,BASIC 解释器变得越来越少(免费的微软 QBasic 解释器没有自动安装在 Windows 95 或 98 上——尽管它在 CD 上提供——并且不再与更高版本的 Windows 捆绑在一起;此外,从 Windows Vista 开始,它不再被支持,因为它是一个 16 位 DOS 应用程序),而初学者的编程变得更加困难和昂贵,因为长期以来,编译器一直非常昂贵,因此更难获得(尤其是在您希望为 Windows 编写图形用户界面时),而同时分发解释程序似乎越来越不“专业”,可以这么说。

同时,性能的提升使“小型”微型电脑(正在增长)能够用于其他应用程序:如果广泛使用音频磁带作为海量存储阻止了使用 Commodore 64 或 ZX Spectrum 来管理“数据库”(软盘在这些任务中也很有限),那么硬盘价格的下降和容量的增加使它们能够完成这些任务。

我们说“数据库”时指的是什么?

[编辑 | 编辑源代码]

术语*数据库*至少有三种含义

  1. 数据集合。在我们的语境中,这些数据记录在 DBF 文件中,在这种情况下,您可能会听到“两个*数据库*之间的关系”。
  2. 数据集合及其所有辅助组件。当我们谈论“Access 数据库”时,这是*数据库*的含义:一个 .MDB 或 .ACCDB 文件,其中包含表、关系、查询、索引等的信息。
  3. DBMS(数据库管理系统),即管理存储在数据库文件中的数据的软件。

一些趣闻、题外话和一点历史

[编辑 | 编辑源代码]

有一个名为 foxprohistory.org 的网站报道了对 Wayne Ratliff 的采访: http://www.foxprohistory.org/interview_wayne_ratliff.htm (另见 http://www.foxprohistory.org/people_began.htm).

dBase 的先驱是一个名为 RETRIEVE 的程序,后来是 JPLDIS (w:喷气推进实验室显示信息系统),在加州理工学院的喷气推进实验室 (https://www.jpl.nasa.gov/about/) 使用。Jeb Long 编写了 JPLDIS,Cecil Wayne Ratliff 在 1975 年开始构思一个数据库系统,目的是处理足球比赛统计数据以进行投注(据报道,他家地板上全是报纸上的体育版)。次年,他为自己买了一套 IMSAI 8080 计算机套件(对于 80 年代电影迷来说,这与电影《战争游戏》中出现的同一款计算机型号一样)。Ratliff 后来承认,为 IMSAI 8080 的 PTDOS 操作系统 (他称之为 Vulcan - 因为在《星际迷航》中,史波克拥有某种“完全记忆”的能力) 编写 DBMS 花费了太多时间,以至于他只看了两三场足球比赛。由于几次软盘驱动器故障 (相应的修复等待时间长达三个月),工作速度有所放缓,然而,在 Vulcan 转换为新的 CP/M 操作系统之后,销售工作于 1979 年开始。1980 年,他遇到了 George Tate,Tate 认为这很有利可图,便获得了授权,与 Hal Lashlee 共同创立了 Ashton-Tate 公司 (http://edesber.com/ashton-tate/) (Ashton 不是一个人,但后来这个名字被赋予了一只金刚鹦鹉,它成为了公司非官方的吉祥物),并将 Vulcan DBMS 更名为 dBASE II (出于营销目的 - 就像新的 695 美元的价格标签一样 - 与最初的 Vulcan 50 美元的价格相比上涨了 1290%)。

1983 年,Ratliff 在发现公司隐瞒了她应得的一些权利后,成为 Ashton-Tate 的副总裁。为 DOS 发布的 dBase III (1984 年出货) 证实了 dBase II 在 CP/M 市场上的主导地位,因此,一些公司开始出售其克隆版本 (1984 年 12 月,Fox Software 发布了 FoxBASE) 或其语言的编译器,如 Wordtech Arago Quicksilver,但我们将重点关注 Clipper Winter'84 (1985 年 5 月 25 日由 Nantucket 发布) 及其发展。

当时,鼠标已经存在,但除了研究中心以外,没有人使用它,要使用 dBase,必须从键盘输入命令。后来这种情况发生了改变,因为 dBase III Plus 引入了一个“助理”,提供了下拉菜单,而 dBase IV 则通过“控制中心”发展了这个概念。然而,许多命令可以保存在一个文件 (通常具有 .prg 扩展名) 中,然后由 dBase 自动运行。与所有解释型环境一样,存在性能问题,并且如果程序员开发了一个自定义应用程序,则需要在客户的计算机上安装解释器 (dBase 本身)。出于这些原因,能够让程序运行得更快并以较少负担进行分发的编译器成为许多 dBase 开发人员的愿望。

关于为什么编译器被命名为“Clipper”的传说是这样报道的: http://www.ghservices.com/gregh/clipper/story.htm。它说,这个名字之所以被选中,是因为 Barry ReBell 和 Brian Russell 在马里布的一家名为 Nantucket Lighthouse (因此公司名称为 Nantucket) 的餐厅吃午饭时,产生了 dBase 编译器的想法,餐厅的餐巾纸上印有快船的图片。将此与 https://vivaclipper.wordpress.com/tag/barry-rebell/ 进行比较。

南方十字星快船离开波士顿港,波士顿,1851 年,由 →菲茨·亨利·莱恩 绘制

那么什么是快船呢?从两本意大利百科全书中翻译和改编的定义是这样的:“三桅或五桅帆船,船头尖锐,大方形帆,总吨位 600-1200 吨”(参见 https://www.brighthubengineering.com/marine-history/65188-what-is-a-clipper-ship/)。(选择这个名字和其他一些名字,比如“Harbour”、“Flagship”和“Marinas-GUI”,表明 xBase 程序员可能具有独特的航海职业 - 或者 Nantucket 的人可能有一种独特的幽默感,因为 dBase 是一个航海型 DBMS)。Nantucket 是一个著名的港口,小说背景都设定在海上: 从那里,亚哈船长著名的捕鲸船 Pequod 在《白鲸记》中起航; 以及戈登·皮姆的 Grampus (不要忘记,在他之前的沉船事件中,他已经在 Penguin 号另一艘捕鲸船上获救了,那艘船距离 Nantucket 不远) 在《南塔基特的亚瑟·戈登·皮姆航海记》中。

有许多 (e) 书籍讨论这些船只 (例如,亚瑟·汉密尔顿·克拉克著的“快船时代”,简·D·莱昂著的“伟大的快船”,埃里克·肯特利著的“卡蒂萨克: 最后的一艘茶叶快船”,亨利·B·卡尔弗著的“古船之书 - 从埃及战舰到快船”)。

它们的历史大致如下。

第一艘名为快船的船是在 1746 年在巴尔的摩建造的 (→巴尔的摩快船)。在独立战争期间,巴尔的摩快船取得了巨大的发展。后来,其他船只也采用了“快船”的名称,尽管它们与最初的巴尔的摩快船几乎没有相似之处 (除了顶篷的宽度)。从 1840 年开始,快船因“淘金热”和“茶叶和羊毛竞赛”而闻名 (→快船航线)。虽然当时定期蒸汽船已经开始航行,但快船的平均速度略高于最快的蒸汽船。1854 年,由 →唐纳德·麦凯 建造的快船 →闪电 从波士顿到利物浦的航程用了 13 天 19 小时半 (创下了航船的纪录时间),飞云号 从纽约到旧金山的航程用了 89 天,另一艘著名的快船,墨尔本号,于 1875 年下水,用于运送乘客,从英国到澳大利亚的航程用了 81 天。快船的黄金时代在 1880 年左右结束,著名的 →卡蒂萨克,是有史以来速度最快的帆船之一,于 1869 年下水 (),24 小时可以行驶 363 英里,位于伦敦,可以参观: http://museums.eu/museum/details/16123/cutty-sark-clipper-ship-royal-museums-greenwich (还有一些关于它的视频,只需在 YouTube 上搜索即可)。博物馆出售关于它的书籍: https://shop.rmg.co.uk/products/the-cutty-sark-pocket-manual,甚至还有模型制作套件。详细的历史见: http://www.bruzelius.info/Nautica/Ships/Clippers/Cutty_Sark(1869).html.

关于这种快船的一些更多链接: http://www.titanic-nautical.com/Clipper-Ships-Wiki.html; 页面 http://www.ppreservationist.com/Clippership.htm 链接到许多关于历史的有趣页面 http://www.ppreservationist.com/Clippership_files/ClippershipHistory.htm 唐纳德·麦凯的传记 http://www.ppreservationist.com/Clippership_files/Donald%20McKay.htm 这些船只的清单可以在 http://www.ppreservationist.com/Clippership_files/TheLists.htmhttp://www.bruzelius.info/Nautica/Ships/Clippers/American_clipper_ships.html 中找到。

根据我的意大利词典,“clipper” 至少还有另外两个意思,一个是与旅行有关,另一个与不同类型的波浪有关:“(航空) 大型跨大西洋飞行飞机” - 参见 http://www.flyingclippers.com/transoceanic.html 和“(电子学) 用于降低波幅的电子器件” - 参见 http://www.daenotes.com/electronics/devices-circuits/clipper-clamperhttp://www.daenotes.com/electronics/digital-electronics/clipper-circuits,但过分关注这些意思会偏离主题太多。

Fox Software 的 dBASE IV 克隆版被称为 FoxPro。更多的软件公司和克隆版本加入了市场 (dBFast、OnCmd)。与此同时,为 Clipper 开发了大量的库。

Ratliff 离开了 Ashton-Tate,开始开发一个新的 DBMS,再次名为 Vulcan,由一家名为 Migent 的公司出售,但 Ashton-Tate 起诉了 Migent (http://corphist.computerhistory.org/corphist/documents/doc-4464b2d87d241.pdf?PHPSESSID=ccd241) ...),本着同样的精神,1988 年 11 月 18 日,起诉了 Fox Software,因为它的数据库程序使用的命令语法与 dBase 太相似。他们还发表了一封公开信,你可以在 https://archive.computerhistory.org/resources/access/text/2017/02/102770637-05-01-acc.pdf 上阅读。到 1990 年底,法官特伦斯·J·哈特认定 Ashton-Tate 对 dBase 界面拥有版权无效,因为它基于公共领域的 JPLDIS。如果你对法学感兴趣,可以在这里阅读判决: https://law.justia.com/cases/federal/district-courts/FSupp/760/831/1420900/.

在接下来的十年中,发生了很多变化

在 90 年代初期,成立了一个 ANSI 委员会 (ANSI/X3J19) 来确定通用语言特性并定义一个标准,该标准被称为 →xBase.

商业 xBase 的衰落

[编辑 | 编辑源代码]
  1. 1992 年,微软收购了 Fox Software。Computer Associates 收购了 Nantucket,Borland 收购了 Ashton-Tate,Oracle (与 WordTech 达成协议后) 推出了基于 SQL 的 dBXL 和 Quicksilver 版本。
  2. 上述所有公司的产品都更名为微软 Windows,因为微软 Windows 正变得越来越流行: FoxPro 成为 Visual FoxPro,Clipper 成为 CA-Clipper,并经历了一次演变,称为 Visual Objects,而 dBase 成为 Visual dBase

1998 年 5 月出版的意大利杂志 PC Professionale 刊登了对 Borland Visual dBase 7 的评论,文章以总结其“辉煌”历史开头

dBase III 是 80 年代程序员的“主力军”,后来让位于其他工具,特别是在从 MS-DOS 向 Windows 3.1 过渡的过程中,但它从未消失,甚至还进行了可视化开发。这款语言的第七个版本,比以往任何时候都更强大,是 32 位的,支持 ActiveX 控件、远程 SQL 数据库,并具有焕然一新、高效的工作环境。

对于一些在业界工作多年的程序员来说,从未听说过 dBase 是不寻常的。该产品的第一个版本是 80 年代的某种 Visual Basic:它使开发人员摆脱了访问数据库文件的复杂性,并且界面易于使用,因为这在 DOS 中也可能如此,这得益于自动指令完成和有效的在线帮助。从那时起,许多事情发生了变化,dBase 程序员可以使用第一个编译器、图形界面,甚至将它的语法迁移到面向对象的方法。

作者 Michele Costabile 还指出

“可编程数据库(Access、FoxPro)与传统开发工具(Visual Basic、Delphi)之间的区别,在很大程度上已经变得微不足道:前者诞生于围绕数据库构建的语言,而后者在结构上已经吸收了数据库支持。”

Borland 在其产品目录中拥有两个数据库产品:Visual dBase(正如我们刚才看到的)和 Paradox - 所以它没有专注于开发数据库管理软件和语言,而是拥有两种具有两种不同编程语言的竞争产品,这种营销策略并不令人意外地没有奏效。然而,收购 Ashton-Tate 带来的严重财务问题导致其元气大伤:如今 Paradox 是 Corel 的产品,而 dBASE™ PLUS 12(去掉了“visual”一词)由 dBase LLC (https://www.dbase.com/) 出售,该公司仍然出售以 dBASE CLASSIC™ 为名的 BORLAND dBASE 5.0 FOR DOS 软件,价格为 99 美元 (http://dbaseclassic.com/)。关于 dBase 的继任者,就是这样了。

此外,CA-Visual Objects 的编程体验与 CA-Clipper 截然不同,而且该产品从未取得过很大成功。Clipper 程序员尽可能地继续使用 Clipper,使用允许创建 Windows 可执行文件的库(其中最著名的库是 Clip4Win 和 FiveWin)。Visual Objects 的开发由 GrafX Software 继续进行,并于 2012 年停止,版本为 2.8 sp4,它有一个名为 Vulcan.NET 的 .NET 开发项目,该项目的 1.0 版本于 2007 年 11 月 30 日发布,并于 2015 年 8 月停止,版本为 4.0。Vulcan.NET 的大多数开发人员开始开发 X# 项目,该项目于 2017 年 7 月 3 日发布,参见 https://www.xsharp.info/articles/the-end-of-grafx.

微软继续开发 Visual FoxPro,直到 2007 年 10 月 16 日的 9 sp2 版本,但从未将其视为旗舰产品,这一点从微软 Office 套件中包含其竞争对手 Access 可以看出来。MS Windows、MS Office(以及随之而来的)MS Access 的成功以及 SQL 数据库的出现,使所有商业 xBase 产品都从市场上消失了。

与此同时,根据意大利程序员杂志《Dev》的说法,Harbour 项目由 FiveWin 的作者 Antonio Linares 于 1998 年左右启动,最初名为 Five,该项目是在名为 harbour.joca.es 的 CVS 服务器上启动的。在 https://harbour.github.io/forks 列出了它的几个分支。另外出现了两个 dBase 的文本型克隆版本(nanoBase - 在 http://www.lnf.infn.it/Calcolo/doc/AppuntiLinux/a2471.html 查看其用户手册;DollyBase http://dollybase.sourceforge.net/)。

更多链接:https://www.visualdbsee.ithttp://www.alaska-software.com/products/clipper-compatibility.cxphttps://www.recitalsoftware.com/http://www.fship.com/。WinDock (http://www.roessler-software.de/e195/e264/index_ger.html) 是适用于 Harbour 和 xHarbour 的 clip4win 兼容 Win-API。Class(y)、Fivewin (https://www.fivetechsoft.com/english/index.php)、Clip4Win、TopClass。http://www.ntkproject.com/index.php?language=1https://www.xailer.com/https://www.xharbour.com/xharbour-builder.html

我找到了以下与该主题相关的 Facebook 群组(这些群组非常活跃)

  • Harbour MiniGUI
  • Harbour Project
  • CA-Clipper - Harbour - XBase - Dbase Programmers
  • Alaska XBase++ Latinos

https://medium.com/harbour-magazine

其他要访问的网站和要下载的文件

[编辑 | 编辑源代码]

Freshmeat 上的文章,地址为 http://freshmeat.sourceforge.net/articles/non-sql-databases-for-linux,名为 Non-SQL Databases for Linux,是学习 xBase 的一个很好的起点。另外请查看 http://www.linas.org/linux/db-non-sql.htmlhttp://linuxfinances.info/info/xbase.html。如果您发现自己非常喜欢 xBase,请查看 http://www.oocities.org/tablizer/xbasefan.htm,这是一个 xBase 粉丝页面。

最新的 Harbour 安装了一个 Norton Guide 文件(位于 c:\hb32\examples\gfspell\spell.ng 路径下)。Norton Guide (NG) 是 Clipper 使用的在线帮助的格式。由 Dave Pearson 编写的适用于 Windows 的 NG Viewer 可以从他的网站 http://www.davep.org/norton-guides/ 下载,而 Clipper 5.3 的 Norton Guide 可以作为一组 HTML 页面在 https://harbour.github.io/ng/c53g01c/menu.html 浏览。

我将浏览一下 The Oasis (http://www.the-oasis.net/) 中的内容。他们包含了指向本指南的链接,并且似乎拥有大量 Clipper 资料档案。

  1. Harbour for beginners 由 Alexander Kresin 编写 (http://www.kresin.ru/en/hrbfaq.html),是一本宝贵的参考资料。
  2. Giovanni Di Maria 编写了一篇很棒的 Harbour How To - Tutorial (http://www.elektrosoft.it/tutorials/harbour-how-to/harbour-how-to.asp),据我所知,这是意大利人(除了我之外)为社区提供有关 Harbour 编程信息的唯一努力。Di Maria 的作品很棒,尽管或许更准确地称其为“菜谱”,而不是“教程”,因为它缺乏解释。
  3. 西班牙语版的 Manual de Clipper (On line) 由 Antonio Suárez Jiménez 编写,可以在 http://www.elguille.info/Clipper/manual.htm 获取。

Stuart Aitken 发布了指向另一个教程的链接,Harbour and HMG Guide: http://www.flamelily.net/index.html - http://www.harbour-guide.com/,但这些链接现在已失效,我不知道他是否会将他的作品重新上传到网络上。

Viva Clipper! - Notes of a Clipper Language Student http://vivaclipper.wordpress.com/(由 bpd2000 提供的链接)、http://harbourlanguage.blogspot.com/http://cch4clipper.blogspot.com/http://www.mozzarellaincarrozza.it/harbour/page/5/ 是有趣 的博客。

http://harbourlanguage.blogspot.it/2011/01/understanding-harbour-library.html

http://www.ghservices.com/gregh/clipper/

华夏公益教科书