跳至內容

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://wikibook.tw/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/

華夏公益教科書