W程式語言

本文作者:admin       點擊: 2011-09-05 00:00
前言:
一、前言

當了二、三十年電腦工程師,一直有一個夢想,就是設計一個夠水準的微處理器。我幾乎研究過大部分你叫得出來的微處理器,不管是 MOTEL ( Motorola and Intel), ARM, MIPS, SPARC, TRANSPUTER, SH7000, LISP PROCESSOR, TI 和 Analog's(ADI’s) DSP ...等等微處理器。我費了十多年的時間,最後發現要設計微處理器並不難,癥結是在軟體並不是在硬體,因很多微處理器的功能,能用語言編譯器來簡化。於是我又開始研究資料結構、系統軟體、作業系統 (OS, Operation System), 組譯器 (Assembler)、翻譯器 (Interpreter)、編譯器 (Compiler)......等等,我還研究各種電腦語言如C/C++/C#, Java, Ruby, Python, PHP, Perl, Lua, Erlang, Forth... 等。於是我便由硬體電腦工程師跳入軟體工程師的行列。現在我結合了 Forth, C/C++/C# ...等語言和我自己的理想創造了w電腦語言。  
                                         
它是我所設計微處理器 (SRP, Smart Risc Processor) 的指令集 ( Instruction Set) 且用做W-CODE的標準。
                
二、W電腦語言的架構

我把W語言折成兩個介面:一個是軟體語言介面,另一個是硬體微處理器介面。把W編譯器分成字串編譯器、 後位法編譯器和及時編譯器如下面 ( 圖 1 )

1. 字串編譯器: 把中位法源程式轉變成像FORTH語言的後位法字串,假如我沒記錯的話,丁陳博士曾說FORTH語言是最好的中間程式語言。現在我用它當做 W語言的中間碼。
2. 後位法編譯器: 將把後位法字串轉換成W碼。
3. 及時編譯器: 把W碼編成標的微處理器機器碼 ( machine code)。


這種結構有很多好處:

1.以軟體來講,W語言能很容易的結合其他語言。相反的,為了提高軟體的效率,甚至不用修改程式源碼語法,只要修改後位法的中間碼即可。

2.以硬體來講,只要變換及時編譯器( JIT, Just-In-Time compiler ) 即可,因此很容易地把程式放在不同的平台上執行,也就是說,設計標的編譯器 ( Target Compiler ) 非常容易。

3.我現在提供現場 ( ISD, In-Site Development ) 交叉編譯器( XTC, Cross Target Compiler) 跟 SDK( System Development Kit ).

尤其用在我設計的微處理器(SRP, Smart Risc Processor ),它裡面包含一個簡單的硬體起動器 ( SRB, Simple Resident Boot ),所以不用寫任何程式便可透過串列裝置,像RS-232、USB.....等等,主機便可跟微處理器溝通。一般的微處理器需要4k到8K的程式才可以跟它溝通。

圖 1: Woody Language 架構方塊圖 

SRP 
  
註: 
    1. EDIF -- Electronic Design Interchange Format
    2. JIT -- Just In-time Compiler 
    3. SRP -- Smart Risc Processor 
    4. w-code -- Woody code that is SRP machine code

    
4. 比較Woody system 與 .NET system
 
    1. Woody
 (Target compiler)
    C/C++/C#   string compiler Postfix compiler  JIT compiler
    Java     ----------------------> Postfix --------------> W-code -----------> Object code          
    Basic   Language Interface <---|   |---> Hardware interface
  
    2. .NET system  
    Basic   
    C/C++/C#      compiler JIT compiler  
    Java      -----------------------> MSIL -----------------------> X86 Object code          
    Python Language Interface <---|---> Hardware interface  
  
註: 
1. MSIL -- Microsoft Intermediate Language byte code  
2. Woody system 提供一語言介面,所以設計string compiler 非常容易 ,因為只要轉譯infix (中序式)string成 postfix (後序式)string即可.

3. Target compiler非常簡單,因為只要將w-code 轉成它們的 object Code即可.

三、W語言的特殊功能

1.通用翻譯器/編譯器

    現在的語言主要分為翻譯器 (Interpreter ) 跟編譯器 (Compiler ) 兩種,翻譯器可互動式地寫程式,但速度較慢;編譯器速度較快,但不能提供互動式功能。

於是有人便想到何不把這兩種功能集於一身呢?像FORTH語言,其本身便有這兩種功能,即有翻譯模式跟編譯模式。因此每一個功能 (Function) 需寫考慮兩種模式-編譯器跟翻譯器語法。這種語言雖可提供互動式且速度快的功能,但對程式員還是不夠好,於是我設計了W語言。

  它不僅有翻譯器互動的好處,又有編譯器快速的功能,且不像FORTH語言需考慮兩種模式。任何程序(Routines),不管編譯模式或是翻譯模式,都只要一種語法。它的原理其實很簡單,寫程式時不管翻譯模式或是編譯模式,先把程式源碼編譯成機器碼(Machine Code),如果在編譯模式那便結束。如果在翻譯模式便執行方才編譯過的機器碼。然後再把這些機器碼丟掉即可,非常簡單。

    請不要因為它的簡單就輕視它。這項創舉,可能在資訊業界是一項很大的突破,它可能更甚於物件導向程式(OOP, Object-Oriented Programming)的發明,因它使寫程式變得容易且效率高,且再也不用分翻譯器與編譯器了,因翻譯器就是編譯器,編譯器就是翻譯器。這項技術我已使用多年且沒有什麼不良副作用(So far so good)。它不但有互助式的好處,且你寫的程式本身便是一種編譯器,可再編譯你的程式,因此寫出來的程式碼(Object Code)很小。  
 
2. 一致性的功能和變數 

a. 因為W語言對函數 (Functions ) 跟變數 (Variables ) 用相同的語法,只要用它們的名字即可,即呼叫功能跟存取變數一樣,所以一個變數可能變成一個函數(Function )。

b.在C/C++/C#,我們不可能把變數變成一個函數,因它們用不同的語法呼叫。  
    (函數需要加一對左右小括號)

c.對於函數,可用 &function來取此函數的地址,亦可用 *function來取此函數返回地址的內容,其使用方法跟變數一模一樣,更重要的是此一致性的功能,可整合物件導向的動態多型 (Dynamic Polymorphism ) 與委派( Delegate ) 功能,那是Jana 語言未提供的。

3.真正的模組化IC

W語言可說是模組化的軟體IC,請參考下面的例子,它不但可跨各種平台,且提供位置無關程式碼 (PIC, Position Independent Code ) 跟位置無關資料( PID, Position Independent Data )。

其函數的輸出入參數猶如硬體IC的輸出/輸入腳,所以一旦我完成Windows Forms設計,以後寫程式可像硬體一樣,只要用mouse點一點,拉一拉,便可藉由Woody發展系統 (SDK ) 內部聰明的反編譯器 (Smart Decompiler ) 自動產生程式碼。
未來W語言亦可提供VHDL/verlog  語言的功能,這項技術並不太難,因為我只是把函數的輸出入參數看成IC的輸出/輸入腳位,且把機械碼( Machine Code )換成EDIF (Electronic Design Interchange Format串列( Net List ) 即可。請參考上面方塊圖 1。

4.好的結構控制


      W語言的結構控制幾乎像C/C++/C#和TAVA一樣,但功能更強,它提供4層跳出 ( break ) 迴圈,它可用在所有的結構控制,沒有例外,像 (continue ) 功能,除了像C/C++/C#使用外,亦可用在 (switch .. case) 等控制,為了節省硬體成本,我設計的微處理器只提供4層的跳出迴圈控制。

範例

    
控制結構





註:
1.when, continue, break .. break4, 4 levels nest can use in all structure control.  

2.The SRP microprocessor will provide the zero-overhead loop for the structure control. 

四、結論

SRP、W語言跟Woody's SDK,這三個元件形成強壯且堅固的三角金字塔。Woody系統是分散式的嵌入式發展系統,它可說是藝術化的產品,尤其對嵌入式系統。有些功能在主機上執行,有些功能在目標微處理器上執行,它強大而互助式的交叉編譯器功能,讓你能享受到寫程式的樂趣,而樂在其中。祝你好運!
 
      

電子郵件:look@compotechasia.com

聯繫電話:886-2-27201789       分機請撥:11