2008年4月7日 星期一

網頁瀏覽器 - Web Browser

網頁瀏覽器 - Web Browser


Epiphany
Firefox
Galeon
Konqueror
Opera
Seamonkey

網頁瀏覽器

維基百科,自由的百科全書

網頁瀏覽器是個顯示網頁伺服器或檔案系統內的文件,並讓用戶與此些文件互動的一種軟體。它用來顯示在全球資訊網局部區域網路等內的文字、影像及其他資訊。這些文字或影像,可以是連接其他網址的超連結,用戶可迅速及輕易地瀏覽各種資訊。網頁一般是HTML的格式。有些網頁是需使用特定的瀏覽器才能正確顯示。個人電腦上常見的網頁瀏覽器包括微軟Internet ExplorerOperaMozillaFirefoxMaxthonSafari。瀏覽器是最經常使用到的客戶端程序全球資訊網是全球最大的連結文件網路文庫。

協定和標準

網頁瀏覽器主要通過HTTP協議連接網頁伺服器而取得網頁,HTTP容許網頁瀏覽器送交資料到網頁伺服器並且獲取網頁。目前最常用的HTTP是HTTP/1.1,這個協議在RFC2616中被完整定義。HTTP/1.1 有其一套Internet Explorer並不完全支援的標準,然而許多其他當代的網頁瀏覽器則完全支援這些標準。

網頁的位置以URL(統一資源定位符)指示,此乃網頁的地址;以http:開首的便是通過HTTP協議登陸。很多瀏覽器同時支援其他類型的URL及協議,例如ftp:FTP(檔案傳送協議)、gopher:Gopherhttps:HTTPS(以SSL加密的HTTP)。

網頁通常使用HTML(超文本連結標記語言)文件格式,並在HTTP協議內以MIME內容形式來定義。大部分瀏覽器均支援許多HTML以外的文件格式,例如JPEGPNGGIF圖像格式,還可以利用外掛程式來支援更多文件類型。在HTTP內容類型和URL協議結合下,網頁設計者便可以把圖像、動畫、視頻、聲音和流媒體包含在網頁中,或讓人們透過網頁而取得它們。

早期的網頁瀏覽器只支援簡易版本的HTML。專屬軟體的瀏覽器的迅速發展導致非標準的HTML代碼的產生。這導致了瀏覽器的相容性的問題。現代的瀏覽器(Mozilla、Opera和Safari)支援標準的HTML和XHTML(從HTML 4.01版本開始)。他們顯示出來的網頁效果都一樣。Internet Explorer仍未完全支援HTML 4.01及XHTML 1.x。現在許多網站都是使用所見即所得的HTML編輯軟體來建構的,這些軟體包括Macromedia DreamweaverMicrosoft Frontpage等。他們通常預設產生非標準HTML;這阻礙了W3C制定統一標準,尤其是XHTML和CSS(層疊樣式表,設計網頁時用)。

有一些瀏覽器還載入了一些附加組件Usenet新聞組、IRC(網際網路中繼聊天)和電子郵件。支援的協議包括NNTP(網路新聞傳輸協議)、SMTP(簡單郵件傳輸協議)、IMAP(交互郵件訪問協議)和POP(郵局協議)。

2007年12月2007年12月網頁瀏覽器的使用分佈 [1]
Internet Explorer - 76.07%
Firefox - 16.78%
Safari - 5.58%
Opera - 0.66%
網景Netscape - 0.64%
Mozilla - 0.08%
其他 - 0.19%
網頁瀏覽器的使用分佈.

-

簡史

蒂姆·伯納斯-李(Tim Berners-Lee)是第一個使用超文本來分享資訊的人。他於1990年發明了首個網頁瀏覽器WorldWideWeb。在1991年3月,他把這發明介紹給了給他在CERN工作的朋友。從那時起,瀏覽器的發展就和網路的發展聯繫在了一起。

當時,網頁瀏覽器被視為能夠處理CERN龐大電話簿的實用工具。在與用戶互動的前提下,網頁瀏覽器根據gopher和telnet協議,允許所有用戶能輕易地瀏覽別人所編寫的網站。可是,其後加插圖像進瀏覽器的舉動使之成為了網際網路的「殺手級應用」。

NCSA Mosaic使網際網路得以迅速發展。它最初是一個只在Unix運行的圖像瀏覽器;很快便發展到在Apple MacintoshMicrosoft Windows亦能運行。1993年9月發表了1.0版本。NCSA中Mosaic項目的負責人Marc Andreesen辭職並建立了網景通訊公司

網景公司在1994年10月發佈了他們的旗艦產品網景導航者。但第二年Netscape的優勢就被削弱了。錯失了網際網路浪潮的微軟在這個時候匆促的購入了Spyglass公司的技術,改成Internet Explorer,掀起了軟體巨頭微軟和網景之間的瀏覽器大戰。這同時加快了全球資訊網發展。

這場戰爭把網路帶到了千百萬普羅電腦用戶面前,但同時顯露了網際網路商業化如何妨礙統一標準的制定。微軟和網景都在他們的產品中加入了許多互不相容的HTML擴展代碼,試圖以這些特點來取勝。1998年,網景公司承認其市場佔有率已無法挽回,這場戰爭便隨之而結束。微軟能取勝的其中一個因素是它把瀏覽器與其作業系統一併出售(OEM,原始設備製造);這亦使它面對反壟斷訴訟。

網景公司以開放源代碼迎戰,創造了Mozilla,但此舉未能挽回Netscape的市場佔有率。在1998年底美國線上收購了網景公司。在發展初期,Mozilla計劃為著吸引開發者而掙扎;但至2002年,它已發展成一個穩定而強大的網際網路套件。Mozilla 1.0的出現被視為其里程碑。同年,衍生出Phoenix(後改名Firebird,最後又改為Firefox)。Firefox 1.0於2004年發表。及至2005年,Mozilla及其衍生產品約佔10%網路交通量。

Opera是一個靈巧的瀏覽器。它發佈於1996年。目前它在手持電腦上十分流行。它在個人電腦網路瀏覽器市場上的佔有率則稍微較小。

Lynx瀏覽器仍然是Linux市場上十分流行的瀏覽器。它是全文字模式的瀏覽器,視覺上並不討好。還有一些有著進階功能的同類型瀏覽器,例如Links和它的分支ELinks

Konqueror是一個由KDE開發的瀏覽器,KDE開發人員在開發KDE2時意識到一個良好的桌面環境必須搭配一個良好的網路瀏覽器及檔案管理員,便投入不少力量開發了Konqueror,這個瀏覽器使用了自家開發的排版引擎KHTML,由於Konqueror是屬於KDE的一員,並只常見於Unix-like下的KDE桌面環境,所以Konqueror並未普及。

縱然Macintosh的瀏覽器市場現在亦同樣被Internet Explorer和Firefox佔據,但未來有可能會是蘋果電腦自行推出的Safari的世界。Safari是基於Konqueror這個開放源代碼瀏覽器的KHTML排版引擎而製成的。Safari是Mac OS X的預設瀏覽器。

2003年,微軟宣佈不會再推出的獨立的Internet Explorer,但會變成視窗平臺的一部分;同時也不會再推出任何Macintosh版本的Internet Explorer。不過,於2005年初,微軟卻改變了計劃,並宣佈將會為Windows XPWindows Server 2003和快將發表的Windows Vista作業系統推出Internet Explorer 7。

核心

全球資訊網和網頁瀏覽器的功能

不同的瀏覽器有不同的功能,現時瀏覽器和網頁會有很多功能和技術是以往沒有的。如之前提到的,因為瀏覽器戰的出現,瀏覽器和全球資訊網得以迅速但混亂地擴展。

以下是較為人熟悉的功能列表:

支援標準

基本功能

附加功能

手機瀏覽器

參考

外部連結


教學方案 - eLearning Applications

教學方案 - eLearning Applications


人力資源管理 - HRM

人力資源管理 - HRM


縱向業務應用 - Vertical Business Applications

縱向業務應用 - Vertical Business Applications


工程/生產用軟體 - Engineering/Manufacturing

工程/生產用軟體 - Engineering/Manufacturing


多媒體應用 - Multimedia

多媒體應用 - Multimedia


群組軟體 - Groupware

群組軟體 - Groupware


客戶關係管理 - CRM

客戶關係管理 - CRM


企業資源管理 - ERP

企業資源管理 - ERP


虛擬主機 - Virtual Machines

虛擬主機 - Virtual Machines


QEMU
OpenVZ
TN5250j
VirtualBox
VMWare Player
VMWare Server
Xen

虛擬機器

維基百科,自由的百科全書

虛擬機virtual machine),在電腦科學中的體系結構裡,是指一種特殊的軟體,他可以在電腦平臺終端用戶之間建立一種環境,而終端用戶則是基於這個環境來操作軟體。在電腦科學中,虛擬機是指可以像真實機器一樣運行程序的電腦的軟體實現。

定義

虛擬機最初由Popek and Goldberg定義為有效的、孤立的真實機器的副本。當前包括跟任何真實機器無關的虛擬機。[1]

例子: 用Java編寫的程序可以通過對Java運行環境(JRE)軟體發命令獲得服務,取得期望的結果。能過提供這種服務,Java軟體起到了虛擬機的作用。程序不必為特定的作業系統或硬體編寫。

虛擬機根據它們的運用和與直接機器的相關性分為兩大類。系統虛擬機提供一個可以運行完整作業系統的完整的系統平臺。相反,進程虛擬機為運行單個電腦程序設計,這意味它支持單個進程。虛擬機的一個本質特點是運行在虛擬機上的軟體被侷限在虛擬機提供的資源裡--它不能超出虛擬世界。

硬體的模擬

基於這種虛擬機,用戶可以運行任何作業系統,比如可以在他們「個人的」虛擬電腦上運行兩個不同的作業系統(也被稱為「訪客(guests)」)。這樣的話,新版的實驗性作業系統就可以與舊版的較穩定版本一同在單獨的虛擬機上運行。這個過程甚至可以重複(recursive);IBM就在運行於舊版的虛擬機上的虛擬機上調試它新版的虛擬機作業系統,VM

這個概念的一個早期使用者就是IBM的VM/CMS time-sharing產品,該產品使用的互動式計算單用戶作業系統,CMS,相對來說比較簡單,運行於VM上。通過這種方式,CMS編寫起來就比較簡單,就好像只有它一個在運行一樣,VM作業系統就在幕後提供多任務以及資源管理服務。

當然,不是每個VM用戶都必須運行CMS;有些用戶選擇在一個或者多個虛擬機上運行某種OS/360(或者MVS),來提供傳統上的批處理服務。今天,IBM大型機還在使用VM,許多虛擬機上運行的是Linux作業系統。

VMwaretwoOStwo以及SVISTA軟體包在現代PC上都在處理類似截獲硬體訪問,模擬除了處理器以外的任何主板上的器件的事情。

plex86屬於另外一種情況,它使用特定的打過補丁的核心,只能運行於Linux下,而且只能在其之上運行Linux。因此,它不是模擬處理器,它利用bochs來模擬主板設備。

現代PC使用的x86處理器架構其實並不能滿足Popek和Goldberg虛擬化要求。很明顯,這種架構缺少所有特權機器指令都會產生異常的模式,而這種模式可以做到單指令的虛擬化。這導致VMware或類似的x86虛擬軟體必須動態地重新編譯特權模式代碼。這種虛擬技術和運行於如IBM System/370、Motorola MC68020的原生態可虛擬架構上的VM相比,就會多出一些性能上的開銷。IntelAMD都聲稱計劃給未來的x86處理器加入x86虛擬化能力

非原生系統的模擬

Some of this class of virtual machines are emulators; these allow software written for one machine to run on another. Emulation for computer systems can include emulation for both different machine architectures, and operating systems.

Others produce behaviors and capabilities of a machine that doesn't necessarily exist as an actual piece of hardware but may only be a detailed specification. For example, the p-Code machine specification (one of the first, used for support of Pascal) was a description of a specific set of capabilities and behaviors that programmers could use to write programs that would run on any computer running virtual machine software that correctly implemented the specification.

More modern examples include the specification of the Java virtual machine and the Common Language Infrastructure virtual machine at the heart of the Microsoft .NET initiative.

These allow diverse computers all to run software written to that specification; the virtual machine software itself must be written separately for each type of computer on which it runs.

虛擬機器列表

Process (Application) virtual machine software
System (Hardware) virtual machine softwareTemplate:Huh
OS-level virtualization software

虛擬軟體的更多描述

下列的軟體產品可以用來虛擬硬體,故可用於各種作業系統之上。

  • Adeos 是一種硬體抽象層Hardware Abstraction Layer) 可被當成 Kernel Module 載入至 Linux. It allows the loading of a real-time kernel as a module, at the same time as Linux but with higher priority.
  • Denali 作業系統使用準假想化paravirtualisation) 技術來提升虛擬機器在x86平臺上的高效能. Denali's virtual machines support specialised minimal OSs for Internet services. The system can scale to thousands of virtual machines. Denali does not preserve the application binary interface (ABI), and so applications must be recompiled to run within a library operating system; in this sense it is similar to the Exokernel.
  • OKL4 uses the open-source L4 microkernel as a hypervisor to provide a high-performance virtualization solution for embedded systems.
  • OpenVZ - Operating System-level server virtualization solution, built on Linux.
  • Parallels provides virtualization of x86 for running unmodified PC operating systems. It also uses a lightweight hypervisor technology in order to improve security and to increase the efficiency. Parallels has become popular for its ability to run Windows as a guest under Mac OS X on the Apple-Intel architecture.
  • QEMU is a simulator based on a virtual machine, which gives it the ability to emulate a variety of guest CPU architectures on many different host platforms.
  • Virtual Iron 提供x86 平臺的虛擬機器that run unmodified operating systems, such as Windows, Red Hat and SUSE. Virtual Iron open source virtualization technology implements native virtualization, which delivers near-native performance for x86 operating systems.
  • Virtuozzo replaces the hardware abstraction layer with a modified version enabling it to run with better performance of the OS, but forces all the VMs on a hardware box to all run the same OS, with some flexibility to support various Linux distributions on the same server. Currently they have a version for Windows 2003 and for Linux. OpenVZ is a related open-source project providing similar functionality for Linux.
  • VMware provides virtual machines for x86 that can run unmodified PC operating systems. The technology involved in doing this is complex and also incurs (sometimes significant) performance overheads with hosted VMware products (VM Server and Workstation). ESX server provides near-native performance and a fully virtualized option (along with para-virtualization of some hardware components). Xen trades running of existing operating systems for running modified (paravirtualized) operating systems with improved performance. Virtual Iron provides full OS compatibility for existing or new OSes with near-native performance without the performance trade-offs between paravirualization and binary translation.
  • Xen Virtualization system whose motivation differs from that of Denali in that it is intended to run a moderate number of full-featured operating systems, rather than a large number of specialised, lightweight ones.
  • KVM 是一種 Linux kernel模組,可以修正 QEMU program 使之可使用硬體虛擬實境 (hardware virtualization).

參看

  1. ^ Smith, Daniel E.,Nair, Ravi. 「The Architecture of Virtual Machines」.Computer.38(5):32–38.DOI:10.1109/MC.2005.173

外部連結

遠端管理 - Remote Access

遠端管理 - Remote Access


網路保安 - Network Security

網路保安 - Network Security


文件管理系統 - DMS

文件管理系統 - DMS


萬維網應用 Web Applications

萬維網應用 Web Applications


IP電話/會議/即時通訊 - VoIP/Conferencing/Messaging/

IP電話/會議/即時通訊 - VoIP/Conferencing/Messaging/



IP電話

維基百科,自由的百科全書

IP電話(簡稱VoIP,源自英語Voice over Internet Protocol;又名寬頻電話網路電話)是一種透過網際網路或其他使用IP技術的網路,來實現新型的電話通訊。過去IP電話主要應用在大型公司的內聯網內,技術人員可以復用同一個網路提供數據及語音服務,除了簡化管理,更可提高生產力。隨著網際網路日漸普及,以及跨境通訊數量大幅飈升,IP電話亦被應用在長途電話業務上。由於世界各主要大城市的通信公司競爭日劇,以及各國電信相關法令鬆綁,IP電話也開始應用於固網通信,其低通話成本、低建設成本、易擴充性及日漸優良化的通話質量等主要特點,被目前國際電信企業看成是傳統電信業務的有力競爭者。

IP電話的技術

IP電話通過把語音信號經過數碼處理、壓縮編碼打包、透過網路傳輸、然後解壓、把數碼信號還原成聲音,讓通話對方聽到。

話音從源端到達目的端的基本過程是:

  1. 聲電轉換:通過壓電陶瓷等類似裝置將聲波變換為電信號
  2. 量化採樣:將模擬電信號按照某種採樣方法(比如脈衝編碼調製,即PCM)轉換成數字信號
  3. 封包:將一定時長的數字化之後的語音信號組合為一幀,隨後,按照國際電聯ITU-T)的標準,這些話音幀被封裝到一個RTP(即實時傳輸協議,Realtime Transport Protocol)報文中,並被進一步封裝到UDP報文和IP報文中。
  4. 傳輸:IP報文在IP網路由源端傳遞到目的端
  5. 去抖動:去除因封包在網路中傳輸速度不均勻所造成的抖動音
  6. 拆包
  7. 電聲轉換

一個完整的、可以大規模商用運營的IP電話系統包括如下一些技術(暫不完全):

  1. 定址
  2. 話音編解碼
  3. 回聲消除回聲抑制
  4. 傳輸
    1. IP報文時延控制功能
  5. 去抖動
    1. IP報文的去抖動(de-jitter)功能

話音編碼方案

目前世界多個標準組織和工業實體提出了很多話音編碼方案。 其中包括國際電信聯盟G.711(速率64kbps),G.723.1(速率5.3kbps或者6.3kbps),G.729A(速率8kbps)編碼方案。 微軟Intel等業界巨頭也有自己的編碼方案。

VoIP 通訊協定

目前常用的協定如 H.323SIPMEGACOMGCP

H.323是常見的VoIP標準,由ITU-T於1996年提出,原本是用於區域網路(LAN) 上的視訊會議,後來被應用於VoIP網路電話上。H.323定義了一個綜合性的規範,使網路上的終端設備遵循這些規範,得以順利進行溝通,包括語音壓縮格 式(G.711、G.729、G.723.1)、影像壓縮格式( H.261、H.263 )、呼叫信令(H.225)、控制信令(H.245)、註冊與認證等(RAS:Registeration Admission Status)。H.323 架構由4個元件所組成,包括終端設備(Terminal)、閘道器(Gateway)、閘道管理員(Gatekeeper)、多點控制單元(MCU: Multipoint Control Unit),可進行單點對單點或單點對多點的通訊。

對於VoIP的應用而言,H.323的子協定多且複雜性高,在許多技術上的問題受限,不容易針對新的應用作擴展。因此,IETF(Internet Engineering Task Force)分別在1999年8月提出MGCP(Media Gateway Control Protocol)協定與1999年3月的SIP(Session Initiation Protocol)新架構,試圖簡化H.323的複雜性,且在語音傳遞功能提供較高的延展性。

以下為原始說明,未盡部分待編輯

會話發起協議(SIP)是 IETF 創建 VoIP 通話連接的協議標準。 SIP 是一種應用層控制協議,用於和一個或多個參與者創建、修改和終止會話。 SIP 的結構與 HTTP (客戶-服務器協議)相似。客戶機發出請求,並發送給服務器,服務器處理這些請求後給客戶機回送一個響應。請求與響應形成一次交換 (transaction)。

媒體網關控制協議(MGCP)是由 思科 和 Telcordia 提議的 VoIP 協議,它定義了呼叫控制單元(呼叫代理或媒體網關)與電話網關之間的通信服務。 MGCP 屬於控制協議,允許中心控制台監測 IP 電話和網關事件,並通知它們發送內容至指定地址。在 MGCP 結構中,智能呼叫控制置於網關外部並由呼叫控制單元(呼叫代理)來處理。同時呼叫控制單元互相保持同步,發送一致的命令給網關。

媒體網關控制協議(Megaco)是 IETFITU-T (ITU-T H.248 建議)共同努力的結果。 Megaco/H.248 是一種用於控制物理上分開的多媒體網關的協議單元的協議,從而可以從媒體轉化中分離呼叫控制。 Megaco/H.248 說明了用於轉換電路交換語音到基於包的通信流量的媒體網關(MG)和用於規定這種流量的服務邏輯的媒介網關控制器之間的聯繫。 Megaco/H.248 通知媒體網關將來自於數據包或單元數據網路之外的數據流連接到數據包或單元數據流上,如實時傳輸協議(RTP)。從 VoIP 結構和網關控制的關係來看, Megaco/H.248 與 MGCP 在本質上相當相似,但是 Megaco/H.248 支持更廣泛的網路,如 ATM

...

IP電話在大中華的發展

目前大中華地區當中,以香港的應用層面較大。早在1990年代中期,不少大型公司(如軒尼詩LVMH帝亞吉歐) 就透過IP電話技術,為海外分公司提供直線電話接往公司的總部。其後,在長途電話割喉戰中,IP電話亦開始應用,以保證當衛星訊號受到干擾時,仍然可以提 供可靠的通訊。早期的IP電話由於頻寬問題,會使通訊出現很嚴重的機械聲音,但現在已經不再出現。而當通訊割喉戰蔓延至固網通訊時,IP電話亦使擁有寬頻 網路的供應商取得優勢。現時在香港提供IP電話服務的,長途電話方面,以香港寬頻網路有限公司最早,期後有提供IDD009服務的新世界電訊。而本地固網通訊方面,最先推出這種服務的香港寬頻、透過視像電話提供服務的和記環球電訊、租借同屬九龍倉集團i-CABLE有線寬頻網路提供服務的九倉電訊,以及利用軟體技術提供服務的新世界電訊,至此全香港只剩下市場佔有率最大、歷史最悠久的電訊盈科一間固網商未有提供這項服務。

2005年,隨著Skype開始在大中華地區發展,它亦與當地的固網商合作,希望開拓更大的市場。當中,在香港它與和記集團合作,並為Skype的用戶提供固網電話號碼;而在中國大陸則與和記集團旗下的Tom online合作,在台灣則與PChome Online(網路家庭國際資訊股份有限公司)合作。

目前,台灣的檢警人員仍然對IP電話存有高度疑慮,理由是:第一,IP電話難以監聽的特性,很可能使IP電話成為犯罪集團(尤其是詐騙集團)的犯罪工具,而增加檢警人員偵辦犯罪的難度;雖然可以追查發話者的IP位址,但是很多代理伺服器設置在境外,因此很難防範IP電話犯罪。第二,國外某些電信業者直接提供改變發話號碼的服務,其用途是提供發話者必須保密電話號碼時使用,但也可能成為犯罪集團的工具;某些非法的IP電話軟體或國際電話節費器,也能改變發話號碼。

在中國大陸地區,主要的固網商對IP語音實施很大程度的封鎖,其中包括中國電信中國網通中國鐵通。實施封鎖原因,是客戶使用IP語音,將損失其公司主要長途電話收入,另外政府亦擔心不能對IP語音監聽。所以在中國大陸地區,IP語音市場是尚未開發的。但在市場上亦有很多海外公司及本土公司對這市場有興趣,使用其他技術使固網商不能對其干擾,其中包括深圳市的眾方科技、香港的易通電訊及香港的TeleHK

參見

維基文庫中相關的原始文獻:

外部連結

VoIP 講解 全面描述如何使用VoIP電話,包括技術、要求、設定VoIP、使用公用電話交換網線和頻寬問題。(英語)

系統管理 - System Administration

系統管理 - System Administration


編程軟件 - Programming

編程軟件 - Programming


編程語言

Jruby
PHP
Perl
Python
Ruby
Sun Java Development Kit

編程工具

Apache Ant
Apache Portable Runtime

程式語言

維基百科,自由的百科全書

程式語言programming language),又稱程式語言program design language,簡稱PDL),是一組用來定義電腦程式的語法規則。它是一種被標準化的交流技巧,用來向電腦發出指令。一種電腦語言讓程式設計師能夠準確地定義電腦所需要使用的資料,並精確地定義在不同情況下所應當採取的行動。

概論

程式語言原本是被設計成專門使用在電腦上的,但它們也可以用來定義演算法或者資料結構。正是因為如此,程式設計師才會試圖使程式程式碼更容易閱讀。

程式語言往往使程式設計師能夠比使用機器語言更準確地表達他們所想表達的目的。對那些從事電腦科學的人來說,懂得程式語言是十分重要的,因為在當今所有的計算都需要程式語言才能完成。

在過去的幾十年間,大量的程式語言被發明、被取代、被修改或組合在一起。儘管人們多次試圖創造一種通用的程式語言,卻沒有一次嘗試是成功的。之所以 有那麼多種不同的程式語言存在的原因是,編寫程式的初衷其實也各不相同;新手與老手之間技術的差距非常大,而有許多語言並對新手來說太難學;還有,不同程 式之間的運行成本(runtime cost)各不相同。

有許多用於特殊用途的語言,只在特殊情況下使用。例如,PHP專門用來顯示網頁Perl更適合文字處理;C語言被廣泛用於作業系統編譯器的開發(所謂的系統編程)。

進階語言的出現使得電腦程式語言不再過度地倚賴某種特定的機器或環境。這是因為進階語言在不同的平臺上會被編譯成不同的機器語言,而不是直接被機器執行。最早出現的程式語言之一FORTRAN的一個主要標的,就是實現平臺獨立。

雖然大多數的語言可以既可被編譯compiled)又可被解譯interpreted),但大多數隻在一種情況下能夠良好運行。在一些編程系統中,程式要經過幾個階段的編譯,一般而言,後階段的編譯往往更接近機器語言。這種常用的使用技巧最早在1960年代末用於BCPL,編譯程式先編譯一個叫做「0程式碼」的轉換程式(representation),然後再使用虛擬器轉換到可以運行於機器上的真實程式碼。這種成功的技巧之後又用於Pascal和P-code,以及Smalltalk和二進位碼,雖然在很多時候,中間過渡的程式碼往往是解譯,而不是編譯的。

如果所使用的翻譯的機制是將所要翻譯的程式程式碼作為一個整體翻譯,並之後運行內部格式,那麼這個翻譯過程就被成為編譯。因此,一個編譯器是一個將人可閱讀的程式文字(叫做原始碼)作為輸入的資料,然後輸出可執行檔案(object code)。所輸出的可執行檔案可以是機器語言,由電腦的中央處理機直接運行,或者是某種模擬器的二進位程式碼。

如果程式程式碼是在運行時才即時翻譯,那麼這種翻譯機制就被稱作解譯。經解譯的程式運行速度往往比編譯的程式慢,但往往更具靈活性,因為它們能夠與執行環境互相作用。參見解譯語言

特點

每一種程式語言可以被看作是一套包含語法詞彙含義的正式規範。

這些規範通常包括:

  • 資料和資料結構
  • 指令及流程式控制制
  • 取用機制和重用
  • 設計哲學

大多數被廣泛使用或經久不衰的語言,擁有負責標準化的組織,經常會晤來創造及發佈該語言的正式定義,並討論擴展或貫徹現有的定義。

資料和資料結構

現代電腦內部的資料都只以二元方式儲存,即開-關樣式(on-off)。現實世界中代表資訊的各種資料,例如名字、銀行賬號、度量以及同樣低端的二元資料,都經由程式語言整理,成為進階的概念。

一個程式中專門處理資料的那個系統被稱為程式語言的型態系統(type system);對型態系統的研究和設計被稱為型態理論(type theory)。語言可以被分為靜態型態系統(statically typed systems),例如C++Java,和動態型態系統(dynamically typed systems),例如LispJavaScriptTclProlog。前者可被進一步分為包含宣告型態(manifest type)的語言,即每一個變數和函式的型態都清楚地宣告,或type-inferred語言(例如MUMPS,ML)。

大多數語言還能夠在內建的型態基礎上組合出複雜的資料結構型態(使用陣列,列表,堆疊,檔案等等)。物件導向語言Object Oriented Language,又譯作「物件導向語言」)允許程式設計師定義新的資料型態,即「物件」或「物件」(objects),以及運行於該物件的函式(functions)和方法(methods)。

除了何時以及如何確定運算式和型態的聯繫,另外一個重要的問題就是語言到底定義了哪些型態,以及允許哪些型態作為運算式的值。諸如C程式語言之類的低端語言允許程式命名記憶體位置、記憶體區域以及編譯時的常數;ANSI C甚至允許運算式返回結構值(struct values)。功能性的語言一般允許變數直接使用運行時計算出的值,而不是指出該值可能儲存的記憶體位址。

指令及流程控制

一旦資料被確定,機器必須被告知如何對這些資料進行處理。較簡單的指令可以使用關鍵字或定義好的語法結構來完成。不同的語言利用序列系統來取得或組合這些語句。除此之外,一個語言中的其他指令也可以用來控制處理的過程(例如分支、迴圈等)。

取用機制和重用

取用的中心思想是必須有一種間接設計儲存空間的方法。最常見的方法是透過命名變數。根據不同的語言,進一步的取用可以包括指向其他儲存空間的指標。 還有一種類似的方法就是命名一組指令。大多數程式語言使用宏喚起、過程喚起或函式喚起。使用這些代替的名字能讓程式更靈活,並更具重用性。

程式語言的歷史

二十世紀四十年代當電腦剛剛問世的時候,程式設計師必須手動控制電腦。當時的電腦十分昂貴,唯一想到利用程式語言來解決問題的人是德國專案師楚澤Konrad Zuse)。

幾十年後,電腦的價格大幅度下跌,而電腦程式也越來越複雜。也就是說,開發時間已經遠比運行時間來得寶貴。

於是,新的整合、可視的開發環境越來越流行。它們減少了所付出的時間、金錢(以及腦細胞)。只要輕敲幾個鍵,一整段程式碼就可以使用了。這也得益於可以重用的程式程式碼庫。

常見的程式語言

參見

外部連結

您可以在維基教科書中搜尋此百科條目的相關電子教程:


Firefox 網路瀏覽器好用!Ctrl + (瀏覽字體就可無限放大) Ctrl - (字體縮小)