跳至內容

BASIC

出自Taiwan Tongues 台語維基
於 2025年8月22日 (五) 12:39 由 TaiwanTonguesApiRobot留言 | 貢獻 所做的修訂 (從 JSON 檔案批量匯入)

(差異) ←上個修訂 | 已批准修訂 (差異) | 最新修訂 (差異) | 下個修訂→ (差異)

BASIC(來自英語:Beginner'sAll-purposeSymbolicInstructionCode 的縮寫)閣譯培基,是一種直譯式程式設計語言。名稱的字面意思為「初學者的全方位符式指令代碼」,設計予初學者使用的程式語言,佇完成編寫了後毋免經由編譯佮連結等手續,經過直譯器即可執行,毋過若需要單獨執行的時猶原需要共建立做執行檔。

BASIC 的歷史

一九六四年,兩位美國數學家兼電腦科學家約翰 ・ 克米尼佮 Thomas E . Kurtz 佇咧 FORTRAN 語言的基礎創造一種新的語言—— BASIC,BASIC 是一種適用佇初學者的人機互動式語言。

Basic 的名—— Beginner's All-purpose Symbolic Instruction Code(初學者通用的符號指令代碼), 原來去予作者寫做 BASIC,只是尾仔予小可軟廣泛的叫做 Basic 了。

BASIC 語言本底是為著特茅斯學院的本科生創造的高階語言,目的是使大學生容易使用電腦。就算講初期的 BASIC 干焦幾十條語句,毋過因為 BASIC 佇咧彼陣較𠢕學,伊足緊對校園行向社會,成做初學者學習電腦程式設計的首選語言。

隨著電腦科學技術的快速發展,特別是微型電腦的廣泛使用,電腦廠商不斷佇原由的 BASIC 基礎上進行功能擴充,出現著偌種 BASIC 版本,比如講 TRS 鋪八十 BASIC、Apple BASIC、GWBASIC、IBM BASICA(即 BASICA)、 True BASIC。現此時 BASIC 已經由初期的小型、簡單的學習語言發展成做功能豐富的使用語言。伊的誠濟功能已經會當佮其他優秀的電腦高階語言相輸並,而且有的功能(如繪圖)甚至佇彼當陣超過其他的語言。

佇咧單片機頂頭也會當使用 BASIC 編程(一般是行號類型的 BASIC), 毋過多數的情形下愛安裝 BASIC 的 ROM。

古早的 BASIC 語言:佇大型電腦佮小型機時代

上原始的 BASIC 語言是佇一九六四年由約翰 ・ 克米尼佮 Thomas E . Kurtz 設計的,並且佇𪜶的指導之下 Dartmouth 的學生實現的。當時設計 BASIC 語言的目的是予學生會當佇 Dartmouth 的分時作業系統頂面寫程式。這種語言是為著欲解決較早語言的複雜的問題,設計的一種新的語言。伊特別針對彼新的欲用著分時系統,但是咧煞無往過的學生仔按呢有真深的數學功底,閣對學習遮的數學智識無感興趣的遐的學生仔。會當使用一台電腦來幫助教學佮研究佇彼个時陣是非常的新穎的一件代誌。佇咧彼段時間內底,隨著其他形式的 BASIC 語言的出現乎,人就共 Kemeny 和 Kurtz 的上原始的 BASIC 語言形式予人號做是 Dartmouth BASIC。

BASIC 語言的八个設計原則是:

一 . 予初學者較好使用。 二 . 成做通用程式的語言。 三 . 允准為熟手者添加入階的功能(佮這个同齊對初學者保持簡單)。 四 . 成做互動式的語言。 五 . 提供清楚的佮朋友好的錯誤資訊。 六 . 對小型的程式反應快速。 七 . 無需要對硬體的了解。 八 . 將使用者和作業系統隔離。

這種語言一部份基於 FORTRAN II,一部份因為 ALGOL 六十,並且佇遮之上有增加一寡物件予伊適合分時功能。(另外擁有這種功能的分時系統有 JOSS 和 CORC,LISP 嘛佇咧較細膩程度上的支援這種功能)佇伊進前,Dartmouth 研究開發矣 DARSIMCO(一千九百五十六)和 DOPE(一千九百六十二,實現矣 SAP 和 DART(一千九百六十三)一个精簡版的 FORTRAN II)。 上代先,BASIC 語言真拍拚佇簡單的數學運算,佇咧伊上頭仔的作為批次處理語言的實現中就有對矩陣運算的支援,佇咧一九六五年完整的字串處理功能去予人加入其中。BASIC 語言寢頭仔咧支援多個終端的 GE 鋪兩百六十五大型電腦上實現。伊上早予人引入的彼段時間內底,伊是一種編譯型的語言,並且效率十分懸,佇咧 GE 學兩百六十五大型的電腦的一寡具有一定的計算上密集的(至少彼當陣是按呢)的程式,譬如講用辛普森法則進行數值積分的計算效率上擊敗矣 FORTRAN II 和 ALGOL 六十。

BASIC 語言的設計者為著使這種語言真闊為傳播,決定欲予人免錢得著編譯器。𪜶同時嘛向漢諾瓦地區的高校提供了這款的語言並且佇咧促進 BASIC 語言方面開足大的工夫。結果是有關於著 BASIC 語言的智識傳播的遮闊,而且予人足濟的製造商實現,慢慢仔佇較新的小型機像 DEC PDP 系列佮 Data General Nova 中盛行起來。BASIC 語言的同時嘛佇二十世紀六空年代末七空年代初成做了惠普分時 BASIC 系統的核心,另外嘛是 Pick 作業系統的核心。佇咧以上遮的例中,BASIC 語言趨勢以直譯器的方式實現,毋是編譯器。

佇伊的發行的若干年以後,一寡非常有聲望的電腦專家,特別是艾茲赫爾 ・ 戴克斯特拉,表達著𪜶對使用 GOTO 語句的看法。𪜶認為講,佇咧包括 BASIC 語言內底的足濟語言內底的 GOTO 語句,攏會使編寫程式變甲足害的。有的同時嘛笑詼 BASIC 語言速度傷慢(大多數的語言的解說型版本愛比仝款的編譯型的乎愛沓沓仔)抑是講 BASIC 語言傷簡單矣(足濟版本的,特別是為小電腦設計的版本,捨去一寡重要的功能以及效能)

快速增加:家用電腦的時期

就算講 BASIC 這个語言佇一寡小型的機頂頭使用矣,但是伊真正進入大學是佇一九七五年的 MITS Altair 八千八百 " kit " 微型機的引入。大多數的程式語言需要一个適用的文字編輯器,大量的記憶體佮吸碟空間。但是彼陣的狀況是,彼个時陣的微型機無原生的編輯器,干焦有限的記持體以及一般將錄音磁帶做為吸碟儲存資料。所有遮的問題,予伊像 BASIC 彼款以解說形式執行以及擁有內建的代碼編輯器的語言會當佇遮的限制下執行。

BASIC 啊語言的同齊閣有的優勢就是講伊佇遐對微型機感興趣的少年的設計師佮電腦愛好者中相當出名,猶閣佇彼个時陣的電子工業內底 BASIC 予普遍的使用。另外咧 Kemeny 和 Kurtz 較早佇咧傳播 BASIC 語言這一方面所開的努力嘛功不可無,佇彼个時陣一寡愛好者的雜誌當中差不多攏予一段一段的提及 BASIC 語言的文章填滿,或者是差不多全部攏咧關注一个版本佮其他的版本的較。

上先佇像 Altair 彼種八千空八十機器內底出現的 BASIC 語言之一是 Tiny BASIC,一个簡單的 BASIC 語言的彼个實現,上原初由 Li-Chen Wang 博士編寫,隨後被 Dennis Allison 應 Bob Albrecht(伊隨後建立著雜誌 Dr . Dobb's Journal)的要求徙栽到 Altair 中。Tiny BASIC 的設計佮全部的原始碼攏佇咧一九七六年就 DDJ 雜誌內底予人公佈出來。

一九七五年,MITS 發佈矣 Altair BASIC,由 Bill Gates 和 Paul Allen 作為一个叫做 Micro-Soft 的公司開發,後來 Micro-Soft 是發展做今仔日的企業巨頭—— 微軟(Microsoft)。 上代先的 Altair 版本由 Gates、Allen 和 Monte Davidoff 共同來編寫。Microsoft BASIC(隨後大部份攏予人號做 M BASIC 抑是講 MBASIC)的一寡版本就予人縛牢咧上早的是基於軟碟的 CP / M 電腦當中,這種電腦佇小的商業環境內底予人廣為使用。隨著佇 CP / M 中的 BASIC 語言知名度的這个擴張,新的電腦設計內底仝款嘛引入著𪜶家己的 BASIC 語言的版本,抑是規氣叫 Micro-Soft 共 BASIC 版本徙栽去到𪜶的平台中。

做三種新的個人電腦佇一九七七年咧問世的時,也就是講 Byte Magazine 後來彼號做 " 一千九百七十七 Trinity " 的彼段時間,所有的這三種的電腦攏用 BASIC 語言作為𪜶的程式語言佮操作環境。Commodore Business Machines 公司一改性的付費共買一个徙栽到𪜶 PET 電腦的六千五百空二晶片內底 Micro-Soft BASIC 的一个無限授權版本,佇遮同時 Apple II 和 TRS 鋪八十攏引入一个新的,佮這款的語言足大的相𫝛的語言。這種相𫝛性是非常明顯的因為𪜶上開始的五十个記號(token)攏是仝款的。隨著新的電腦進入到這个領域內底,其他的 BASIC 語言版本的加入,微妙的改變矣 BASIC 語言的家族。Atari 的八位元機系列有𪜶家己的,專為燒入八 kB 的 ROM 晶片抑若修改過 Atari BASIC。BBC 發佈矣 BBC BASIC,由 Acorn Computers 共𪜶編寫,加入足濟額外的結構體的關鍵字。大多數的二十世紀八十年代的家用電腦攏有一个駐留佇咧 ROM 中的 BASIC 直譯器,才會當予電腦直接引導著 BASIC 環境。就是因為遮的原因咧,BASIC 語言有比其他的任何語言攏愛加的方言(dialects)版本。

因為佇這个時期 BASIC 的知名度的頂懸,一寡雜誌(就比如講美國的 Creative Computing Magazine)刊登矣用 BASIC 語言寫的遊戲、工具佮一寡其他程式的完整的代碼。BASIC 具有的一個天生的優勢,就是將雜誌上公佈的代碼輸入電腦然後執行是一件真簡單的代誌。無仝的雜誌針對無仝的電腦刊登 BASIC 程式,但是有的 BASIC 程式是會當佇無仝的電腦的無仝的 BASIC 執行環境中執行(一寡時陣只有需要一寡小小的修改)。 佇彼个時陣,檢查糾正常會佇雜誌的代碼內底出現的印刷錯誤嘛是雜誌本身的一个作業。

BASIC 程式嘛仝款佇成熟的冊內底被發布:頭仔伊的例是 David Ahl 的 BASIC Computer Games 系列。後來的冊,就譬如講 Learn to Program BASIC 嘛仝款共遊戲的程式成做書本導引部份的重點。

成熟的語言:個人電腦的時期

早佇咧一九七九年微軟公司就開始佮 IBM 協商予 IBM 的 PC 機共提供一燒佇咧 BIOS 內底的 IBM Cassette BASIC(BASIC C)。 微軟公司尾仔賣一寡佇咧 MS-DOS 和 PC-DOS 上的 BASIC 語言版本,包括講 IBM Disk BASIC(BASIC D)、 IBM BASICA(BASIC A)、 GW-BASIC(一个無需要 IBM 機器 ROM 以及佮 BASICA 相容的版本)和 QuickBASIC。發佈矣 Turbo Pascal 的 Borland 公司佇一九八五年發佈矣 Turbo BASIC 一垺零(即後來的 PowerBASIC)。 微軟公司仝款猶閣編寫一个基於窗口的 AmigaBASIC,支援一个佇當時非常先進的濟工圖形介面的電腦 Amiga computers 的一孵一版本(一九八五年尾,一九八六年初)。

遮的語言引入真濟對原始的家用電腦當中 BASIC 的擴充,比如講提供了閣較好的字串操作功能佮對圖的支援,另外閣有對檔案系統的存取猶閣有一寡額外的資料類型。其中閣較重要的是添加結構化編程的功能,包括一寡原始版本內底不存在的流程控制語句佮支援本地變數的子程式。這个圖形功能仝款為個人電腦中的電子遊戲拍落來的基礎,類似 DONKEY . BAS 的一寡 BASIC 程式展示一个人電腦所有的功能。

但是佇二十世紀八十年代的後半段,新的電腦是比起往過的電腦有閣較強大的資源控制能力。佇遮同時,電腦漸漸對一个業者誠愛好者感興趣的物件過渡到一个人日常使用的工具(主要用的是別人寫的代碼), 所以編寫程式對使用者的重要性漸漸仔減弱。當然喔 BASIC 的重要性也沓沓仔減弱起來,就算講猶原猶閣有真濟的 BASIC 語言版本。編譯型 BASIC 語言佮 CBASIC猶是使用佇真濟的 IBM 四千九百六十系統上。

隨著微軟公司 Visual Basic 的發布 BASIC 語言的好運若親像閣一擺轉去矣過來。真歹確切的講 Visual Basic 到底是毋是 BASIC 語言,因為伊進前的版本足大的改變—— 用較有物件佮事件驅動做的設計目標的語言。伊唯一顯出來的佮 BASIC 語言相關的所在就是相仝的語法,但是語法本身嘛袂使完全定義這種語言,因為大多數 Visual Basic 的開發攏是使用「拖動-囥」的方法,開發者無需要為一寡捷用的物件比如講揤鈕佮捲軸去寫所有的代碼。這个會當看做是 BASIC 語言的一種進化,一寡較早的人 Dartmouth BASIC 的特有的功能去予保留落來,比如行號佮 INPUT 關鍵字等(Visual Basic 猶原咧使用 INPUT 語句來對檔案讀取資料;行號嘛仝款允准用佇所有的 VB 版本內底,甚至講 VB . NET,干焦管伊袂當用佇一寡特定的所在,比如講佇 SUB 語句頭前)。

趣味的是,BASIC 語言上起先的時陣是作為一種初學者的語言,微軟上原初是共 Visual Basic 定位佇向愛好者提供的一種語言,猶毋過佇咧 VB 三-c零(嘛是予人認為第一个相對穩定的版本)發布了無偌久就佇咧小型商業程式的使用中猛醒的傳播開來。就算講有足濟進階的程式設計師始終咧共笑,猶毋過 VB 正是有效的符合了小型商用程式的要求,即重點是簡單的開發,執行的速度是次要的因素。佇彼个時陣,Windows 三孵一已經是有夠緊矣,真濟商業有關的程式只要毋是牽涉著大量的資料,差不多是會當佇目一𥍉仔內底完成的,就算使用的是一種非常慢的語言。真濟公司的頭家發現講𪜶通過真少的一寡步數就會當建立出一个小型的毋過有路用的程式來滿足𪜶的特定的需求。終其尾,佇咧 VB 三的趁長的性命周期內底,對於 Visual Basic 智識的掌握成為著一種非常有用的職業技能。這種語言,就親像伊的前輩 QBASIC 仝款,同時嘛成做外遊戲開發者佮意的語言之一。

BASIC 語言的種類

以下是仝款的執行結果,毋過用無仝時期的 BASIC 的方式所寫的範例。

行號類型(非結構化)

這是第一代的 BASIC,像講早期 BASICA、GW-BASIC…… 等,BASIC 直譯器。這類的 BASIC 程式的特徵,就是每一逝的程式碼頭前攏有一个數字作為「行號」。 因為這種類型的 BASIC 程式的寫法,蓋𠢕濫用 GOTO 的一个跳動指令,佮程式碼無法度使用到縮排去區分割區段,所以誠容易致使麵條式代碼。

無行號類型(結構化)

第二代 BASIC,比如講 QuickBASIC、PowerBASIC。這个時陣,同時有功能相倚的直譯器佮編譯器的版本出現。這類的 BASIC 程式的特徵,是無使用行號,改使用標籤做一个跳躍點(原仔有 GOTO 指令,但已經可使用其他寫法會當完全避開使用 GOTO), 佮使用函式抑是副程式的方式,猶閣有會使用縮排,共程式結構。

物件導向化

第三代 BASIC,比如講 Visual Basic、REALbasic、StarOffice Basic。這類的 BASIC 程式的特徵,是匯入類別(Class)的應用,用物件導向的繼承佮程式碼封裝寫法。通常嘛使用「事件驅動」的寫法,雖然下跤這个 Visual Basic . NET 的範例並毋是用著事件驅動。

指令

While 指令

Do 指令

For 指令

Goto 指令

Goto 是一種程式執行無條件暴跳的指令,咧有行號的 BASIC 內底後壁是欲跳動目的行號。佇無行號的 BASIC 內底後壁是接欲跳躍目的標記名稱。

END 指令

用於終止一个BASIC程式的執行。

伊的效果有的類似 C 語言里的 exit 函式。所無仝款的是 END 無帶有任何的參數,干焦是一條指令。需要注意的是,佇咧 Visual Basic 中 end(雖然無分大細寫但偌慣勢用小寫)指令用佇強制登出規个程式,但並無法度保證完整的釋放程式所使用的資源。因此佇咧登出進前上好先手動釋放資源。


參考文獻

參照

標準

  • ANSI / ISO / IEC Standard for Minimal BASIC :
  • ANSI X 三鋪六空七一千九百七十八 " FOR MINIMAL BASIC "
  • ISO / IEC 六千三百七十三 : 一千九百八十四 " DATA PROCESSING-PROGRAMMING LANGUAGES-MINIMAL BASIC "
  • ANSI / ISO / IEC Standard for Full BASIC :
  • ANSI X 三石一一三石一千九百八十七 " PROGRAMMING LANGUAGES FULL BASIC "
  • INCITS / ISO / IEC 一石頭空二百七十九石一千九百九十一 ( R 兩千空五 ) " Information Technology-Programming Languages-Full BASIC "
  • ANSI / ISO / IEC Addendum Defining Modules :
  • ANSI X 三-c一一三 INTERPRETATIONS 被一千九百九十二 " BASIC TECHNICAL INFORMATION BULLETIN # 一 INTERPRETATIONS OF ANSI 三石一一三石一千九百八十七 "
  • ISO / IEC 一孵空二百七十九 : 一千九百九十一 / Amd 一 : 一千九百九十四 " MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT "
  • ECMA 學一百十六 BASIC _ ( withdrawn , similar to ANSI X 三石一一三石一千九百八十七 ) _

外部連結

  • 開放式 kha-tá-lok-guh 計畫中和 BASIC 相關的內容

參見

  • BASIC 語言列表