基礎程式設計(1)-基本概念

最近幾年科技變化的速度非常快,程式語言也不斷推層出新。一個好的程式設計師,通常會特別專精某一種程式語言,但是無論公司要他寫什麼樣的語言,他都應該要有辦法在短時間掌握,並且完成公司指定的專案。能夠做到這一點,是因為大部份的程式設計邏輯是一樣的,不同的語言通常只是寫法不同,概念仍然是相同的。當然,每一種程式都有它的優缺點,不過這通常是指程式的效能,或是內建的「函數」等等。程式語言基本上就是一個工具;無論給你彩色筆或是蠟筆,都是可以畫出圖案來的。

我發現有些人學會了一種語言,卻沒有辦法應用到第二種語言上,所以每次學新的語言都變成從頭來過,實在很辛苦。所以我決定寫這個奇怪的系列文章,希望有助於大家認識不同程式語言的異同。不過話先說在前頭,程式語言的種類非常多,我沒有辦法全部寫上來,若有不足之處請多多包涵。初學者最好先選定一種程式語言學習,本文把不同的語言寫在一起只是希望能加強讀者對不同程式語言的連結。

高階語言程式設計

程式設計的種類非常多,一般常見的 C++、Java、ASP.NET…等等都是屬於「高階語言程式設計」,也就是會出現 if/else 的程式語言。這個系列討論的程式都是屬於高階語言,而機器碼、「低階語言」(組合語言)或是「標籤語言」(如:HTML、XML)則不在此系列文章的討論範圍內。

在傳統的高階語言中主要有二大分支,一個是 BASIC,另一個是 C。大部份的程式語言都是從這兩者變化而來。VB(Visual Basic)、VBScript(Visual Basic Script, VBS)就是由 BASIC 語言轉變來的,而 C++、Java、Perl、PHP 等等則是比較接近 C 的語法。

開發工具

不同的程式語言會有屬於自己的開發工具,例如 Visual Studio、Eclipse…等等,這些開發工具可以讓我們用更簡便的方式寫程式,也會幫忙檢查程式上的錯誤。不過,最萬能的開發工具非記事本莫屬了,如果我們夠厲害,記事本可以完成一切。就好比寫HTML時,可以用 FrontPage,也可以用 Dreamweaver 一樣,這些開發工具只是輔助我們寫程式而已,重點還是程式本身。

在開始撰寫所有的程式語言之前,第一步一定是架設開發環境。不過這個系列的文章並不是針對單一程式語言做教學,而是著重程式設計的基礎概念,與比較不同語言在語法上的異同。所以這個部份全部的資料都會予以省略。相信在網路上都可以查詢到相關資料。

程式語言的長相

每一種程式語言都有它的長相,也就是所謂的「寫作風格」。在新接觸一種程式語言時,確認它的長相是很重要的。前面提到的 BASIC 與 C 就是兩種不同的長相,程式設計師在看到新的語言時,就會觀察它比較接近那一種語言,通常用法是類似的。不過近年來 BASIC 語言已經有點勢微了,在此一提只是讓大家對程式語言的長相有點概念。在看過後面的說明與範例之候,相信讀者會越來越了解。

在檢查程式語言的長相時,以下幾點是需要注意的:

  • 程式框架:大部份的程式都會有基本的 Form,就像表單一樣讓你填寫。所以不要問為什麼這樣寫,這就是該語法的”規定”。有些語言的 Form 可以修改,有些不行。Form 裡面每一個項目代表的意義都要很清楚才行。
  • 英文大小寫:有些語言的大小寫視為同一個字(如:Test = test),有些語言則不是(如:Test≠test)。
  • 空格與換行:有些程式語言是不能亂打空白的,但是有一些可以;現在大部份常見的程式語言都可以在程式的前面加空白或Tab。
    程式的大小是以「行」來計算的,有些程式不能隨便換行,要知道程式在什麼地方是可以斷行的。
  • 結束符號:有些語言在每一行程式的結尾都會加上「;」表示結束,如果沒有加分號則無論跨幾行都視為同一行程式。
  • 註解:不同語言標示註解的方法也會不同,在接觸新語言時最好能夠掌握。

C寫作風格

C語言在程式設計的歷史上是具有很重份量的程式語言,雖然它並不是最早的程式語言,但卻是被應用最廣泛的語言。比較一下 Visual Basic 語法,你會發現很多語言都長得很像 C。

C語言使用{}作為程式的區塊;main 是程式執行的入口,也就是說無論你寫在文件的那一個位置,它都會第一個被執行。每一行程式的結尾要加分號「;」,字母大小寫會視為不同的字元。

#include <stdio.h>

int main(void) {
    printf("Hello, world!\n");
    return 0;
}

C++寫作風格

C++很明顯的可以被視為 C 的進階版,所以風格當然也很接近 C 語言。不過在實際使用時,雙方的差距仍然是很大的。

#include <iostream>

int main() { 
    cout << "Hello! World!\n";
    return 0;
}

Java寫作風格

Java 雖然是學習 C 的風格,不過它提倡的是物件導向程式設計,所以程式的語法加入許多物件導向的參數,讓人一看就很”物件”(雖然初學者應該沒啥感覺)。可以看下面 Visual Basic.NET,會發現它們有一點點相似。

Java 的寫作風格基本上是和 C 一樣的,使用{}作為程式的區塊、main 作為程式執行的入口,程式結尾要加分號「;」,字母大小寫視為不同。

import java.io.*;

public class myProject {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

Visual Basic寫作風格

VB 是早期的 BASIC 語言,現在已經逐漸被淘汰了,取而代之的是.NET語言。在這裡列出來只是讓大家可以和其他語言互相比較一下。它的程式區塊是使用 End 作結尾,例如 IF/End IF、Function/End Function。程式入口是 Form_Load(),結尾不加分號,而且大小寫視為相同字元。

private Sub Form_Load()
    Me.Show
    Label1.Caption = "Hello World!"
End Sub

Visual Basic.NET寫作風格

VB 之所以要加上 .NET,是為了將它改成物件導向程式設計,所以看看下面的語法結構就會發現和 Java 類似:public class 物件名稱,然後裡面有一個作為程式入口的 main/Form1_Load 函數。從 VB 到 VB.NET 改版差異非常大,已經可以說是不同的程式語言了。唯一相同的大概只有寫作風格吧。

Public Class Form1
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Label1.Text = "Hello World!"
    End Sub
End Class

上面這些例子只是希望能讓大家對程式語言的風格有點概念,至於內部語法的詳細說明將會在後面的單元陸續介紹。