作業系統設計/語言作為作業系統演變
在 VLSI 出現之前,基本上只有兩種型別的計算機:通用字元型計算機和大型字長數值計算器。但是,當 VLSI 使得計算的單位成本降到足夠低時,人們開始考慮專門的計算機,這些計算機專為做好一件事而設計和製造。一群人決定設計一臺個人電腦,一臺能夠被新手使用,並且與更復雜的計算機一樣好用的機器。另一群人希望將人工智慧程式轉移到更緊湊的機器人上,而不是將機器人連線到大型機。他們不想在這些機器上安裝包含數千行程式碼的程式,而是希望降低系統的複雜性和成本。當然,現在我們看到計算機被整合到我們的手機中,但設計師仍然希望降低成本。
降低成本的一種方法是將一些基本的作業系統命令整合到解釋型語言中。成功完成此操作的語言包括:BASIC、Lisp、Smalltalk 和 Java。
第一個已知的例子是 Altair 套件計算機,它由微軟用一個名為“獨立 BASIC”的程式程式設計。本質上,獨立 BASIC 是一個 BASIC 直譯器,將作業系統命令整合到語言中,因此不需要單獨的作業系統。雖然我沒有見過這個版本,但我確實在 Commodore 64 上看到過類似的程式,它集成了許多命令,例如 Load、Run、Continue、Stop 和 Reset,以及 Peek 和 Poke。本質上,BASIC 假設載入到其中的任何內容都是 BASIC 程式,除非它是使用 load absolute 變數載入的。它會自動進行詞法分析,將每個命令轉換為一個標記,並在無法轉換特定命令時警告操作員。當程式成功以標記形式載入後,它會等待執行命令開始。當它執行時,它從標記化程式的開頭開始,依次解釋每個標記。透過將一些命令提升到鍵盤上的按鍵,就可以將程式載入到計算機中並執行它。
在微軟成功製作獨立 BASIC 程式後不久,一些人工智慧研究人員決定用 LISP 做類似的事情。透過建立一個定製晶片,它有利於 Lisp 解釋中的某些階段,他們能夠顯著減小基於 Lisp 的機器人的尺寸。迄今為止,Lisp 仍被用於人工智慧程式設計,因為作為一種列表處理語言,它可以加速列表型裝置(例如規則庫和專家系統)的處理速度。
Smalltalk 以其極小的直譯器而聞名。基於面向物件程式設計的概念,它是一種非常有效的語言,可以作為專用計算機的基礎。然而,面向物件程式設計在概念上很難學習,因此 Smalltalk 計算機從未擁有龐大的市場份額。
也許作為作業系統的最成功的解釋型語言是 Java。這門語言旨在將 C 和 Smalltalk 的優點結合在一起。它基於虛擬機器,虛擬機器可以像用 C 語言編寫一樣輕鬆地用機器語言編寫。透過將 Java 語言直接安裝到矽片上,它使得在非常緊湊的單元上實現複雜的處理和網路服務成為可能。實際上,Java 已被用於智慧手機,為相對便宜的蜂窩電話電路提供網際網路介面。
以下內容是由原始作者留在該檔案中的。可能是作為整理他對 Java 的想法的一種方式。我正在考慮將其刪除,因為它對 Java 的描述過於詳細,而對作業系統的描述不足。
使用 Java 程式設計入門,第三版目錄
這是使用 Java 作為教學語言的線上入門程式設計教材的完整目錄。有關該教材的更多資訊,請參見其首頁。該教材可線上獲取:http://math.hws.edu/javanotes/.
前言
第二版前言
第 1 章:概述:心理景觀
第 1 節:取指令和執行迴圈:機器語言第 2 節:非同步事件:輪詢迴圈和中斷第 3 節:Java 虛擬機器第 4 節:程式的基本構建塊第 5 節:物件和麵向物件程式設計第 6 節:現代使用者介面第 7 節:網際網路和全球資訊網關於本章的測驗第 2 章:小型程式設計 I:名稱和事物
第 1 節:基本 Java 應用程式第 2 節:變數和基本型別第 3 節:字串、物件和子例程第 4 節:文字輸入和輸出第 5 節:表示式的細節程式設計練習關於本章的測驗第 3 章:小型程式設計 II:控制
第 1 節:塊、迴圈和分支第 2 節:演算法開發第 3 節:while 和 do..while 語句第 4 節:for 語句第 5 節:if 語句第 6 節:switch 語句第 7 節:介紹小程式和圖形程式設計練習關於本章的測驗第 4 章:大型程式設計 I:子例程
第 1 節:黑盒第 2 節:靜態子例程和靜態變數第 3 節:引數第 4 節:返回值第 5 節:工具箱、API 和包第 6 節:關於程式設計的更多內容第 7 節:關於宣告的真相程式設計練習關於本章的測驗第 5 章:大型程式設計 II:物件和類
第 1 節:物件、例項變數和例項方法第 2 節:建構函式和物件初始化第 3 節:使用物件程式設計第 4 節:繼承、多型和抽象類第 5 節:關於類的更多細節程式設計練習關於本章的測驗第 6 章:小程式、HTML 和 GUI
第 1 節:基本 Java 小程式第 2 節:HTML 基礎知識和 Web 第 3 節:圖形和 paint 方法第 4 節:滑鼠事件第 5 節:鍵盤事件第 6 節:介紹佈局和元件第 7 節:回顧:Java 1.0 事件模型程式設計練習關於本章的測驗第 7 章:高階 GUI 程式設計
第 1 節:關於圖形的更多內容第 2 節:關於佈局和元件的更多內容第 3 節:標準組件及其事件第 4 節:使用元件程式設計第 5 節:執行緒、同步和動畫第 6 節:巢狀類和介面卡類第 7 節:框架和對話方塊第 8 節:展望:Swing 和 Java 2.0 程式設計練習關於本章的測驗第 8 章:陣列
第 1 節:建立和使用陣列第 2 節:使用陣列程式設計第 3 節:向量和動態陣列第 4 節:搜尋和排序第 5 節:多維陣列程式設計練習關於本章的測驗第 9 章:正確性和健壯性
第 1 節:介紹正確性和健壯性第 2 節:編寫正確的程式第 3 節:異常和 try...catch 語句第 4 節:使用異常程式設計練習關於本章的測驗第 10 章:高階輸入/輸出
第 1 節:流、讀取器和寫入器第 2 節:檔案第 3 節:使用檔案程式設計第 4 節:網路第 5 節:網路應用程式程式設計練習關於本章的測驗第 11 章:連結資料結構和遞迴
第 1 節:遞迴第 2 節:連結物件第 3 節:堆疊和佇列第 4 節:二叉樹第 5 節:一個簡單的遞迴下降解析器程式設計練習關於本章的測驗附錄 1:從 Java 到 C++
第 1 節:C++ 程式設計基礎第 2 節:C++ 中的指標和陣列第 3 節:C++ 中的類和物件附錄 2:關於 Java 程式設計環境的一些說明
附錄 3:文字中所有示例的原始碼
新聞和勘誤
David J. Eck (eck@hws.edu), 2000 年 5 月