請問腳本語言(script)跟程式語言間的差異性?

我們都習慣稱javascript,php,perl....等為程式語言,但對他們比較精確的說法應該是腳本語言(script),並不是程式語言,只是我們把它口語化。

請問腳本語言跟程式語言間的差異性,這兩者間的關係互為什麼?有哪些差異或是相同的地方?我在wiki看了一下,腳本語言似乎是把程式語言在編程的過程給縮短,而是一種"解譯"而不是編譯,但目前兩者的界線似乎越來越模糊,所以,我想知道,這兩個的關係是什麼~注意我問的是關係喔(譬如父與子),而不是兩者各別的定義。

如果可以從比較大的方向去談,或是一個比較清楚的概念就可以,再麻煩大家了~

已更新項目:

謝謝科學龜跟zanhsieh2001這麼詳細的回答,看來你們都是這方面的專家,其實我並不是在鑽牛角尖,我在問題也有說到,腳本跟程式語言兩者的界線似乎越來越模糊,但對於一個初學者來說,如果對兩者的本質沒有清楚的認識的話,在學習方面總會感覺到有點摸不著頭腦,所以我才會有此一問,就如同科學龜已江跟河來做比喻,江跟河性質蠻像的,但什麼樣的條件可以稱作河,什麼樣的條件可以稱作江呢?我想這可能比較是我的問題所在,但可能礙於篇幅的關係,你們兩者都從不同的角度做闡述,小弟我受益良多,很謝謝你們這麼詳細的回答~

5 個解答

評分
  • 1 0 年前
    最佳解答

    我不是念IT的

    所以無法用精確的方式來説明

    僅就個人的了解作説明

    script也是程式語言,有語法,有結構,有執行的順序

    只是執行時與編譯過的程式略有不同

    script是執行時才取源碼來執行

    而所謂的編譯程式,在以前幾乎都以機器碼(native code)的方式存在

    好處是速度快,機器編碼佔的容量較小(以前的電腦容量可以說就是黃金)

    但也有其先天的缺點,那就是對於電腦平臺太死忠了

    不能同時用在不同的平臺,如PC,Mac或大型主機等

    但現在編譯程式也在走跨平臺,像VB,C#等,容後在述

    很多桌面軟体如繪圖,多媒體等應用都需要高速運行的編譯程式

    到此樓主應該了解爲何解譯類的程式可以活的好好的

    是的,就是跨平臺

    雖然執行速度較慢,但現今機器的速度已大大的提升

    所以解譯類的程式保有其特定的應用市場

    編譯程式如何跨平臺呢?

    借助編譯成中間語言(IL)或虛擬碼(pseudo code)

    而不直接編成機器碼

    由於中間語言仍需再轉譯成runtime平臺的機器碼,所以仍較直接編譯成機器碼的方式慢不少

    script 還有一個好處, 可以隨時視情況改變程式碼(因為都是文字明碼),這給programmer帶來很多的彈性,但也製造了黑客(hacker)下毒的機會

    總之,各有其優略點,其決定還是要看應用

    以上是從用途上作比較説明,請樓主參考~~~

    • 登入以對解答發表意見
  • 1 0 年前

    zanhsieh2001 回答得太好了,自嘆弗如,我把我的答案刪除啦!!

    不要太鑽牛角尖 ^__^

    • 登入以對解答發表意見
  • mh
    Lv 7
    1 0 年前

    我絕得要談腳本語言與程式語言間的關係與分別,你必須要從軟體工程角度,以及軟體發展史下去看。希望不是唸資工的看得懂。

    腳本語言一開始開發的角度就是以快速開發 (Rapid Development)為主,這裡的重點顧名思義就是著重開發時間短,不佔太多資源,或者利用計算機本身已經提供的服務與資源。舉例來說, Javascript 一直到 1.1 - 1.2 才有顯式物件宣告,VBScript / VB 一直到 VB.NET 該專職的程式設計師才把物件 / 設計模式 (Design Pattern) / 物件可重用性 (Object Reusable) 從天高皇帝遠拉到生活的一部分。你不難想像那幾年為什麼他們還活得好好的──還有很多不懂物件的現在還活得很好,主因就是發展商業原型 (Business Prototype) 快速,快速達到結果。

    好啦,那開始講為什麼腳本語言跟程式語言為什麼會開始模糊化。腳本語言好處是發展快速,可是只要唸資工,很多教授都會諄諄告誡學生:"It's not a good thing to produce something wrong very quick." 這些學生進入程式設計業界,每天為解決問題而奮鬥,那就頭痛醫頭,腳痛醫腳吧,反正可以交差就好,速度 / 效能反正會換新硬體,管他去死。上述阿Q概念變成日後的致命傷,快速發展的程式,重複的程式碼一大堆,彼此的程式相依性不清,程式師要偵錯搞不清楚物件到底是字串還是整數,不曉得某個特定時間內物件型別,多用戶訪問造成效能負荷不堪,版本升級困難,這些種種的原因造成純腳本語言的沒落與程式語言的興起。

    程式語言發展的開始,就是跟著物件導向而來的。科班的都知道物件的好處:遺傳、介面、函式館、例外、中等到嚴謹的物件型別、偵錯容易、模組化。這些讓 90 年代一堆人享受一段黃金歲月。一直到接近千禧年,好日子才消失。

    純程式語言的衰退是因為網路的興起,將近十年間成長了百倍的使用者,這些使用者包含大量的「當時」年輕工程師。好啦,年輕人通常喜歡新事物、勇於嘗試新夢想,大多的缺點:嘻嘻,沒有耐性。想像一下你要寫個網頁,還得一行一行叫 C 去 printf ,弄完還得 compile,要是你做何感想?不要笑,當年 ebay 還在用 ISAPI 時就是這樣搞的。程式設計師沒耐性的,企業主脾氣可能更不好。那腳本語言就鹹魚翻身了:易學、快速發展、不用知道太多型別、寫小函式剪貼編程,對網頁還不複雜時代,夠用了。其實到現在,個人 blog 盛行,「剪貼編程」情況也沒什麼大改變,各位看奇摩知識+,去網頁設計看一堆人在「乞討」 CSS Javascript 就知道了。

    那隨商業全球化,腦筋動得快的商人就想再網路上做生意。這裡講做生意就包含離散物件 (Distributed Object)、多層主從端 (Multi-Tier Client-Server Structure)、數位交易 (Digital Transaction)、電腦輔助物流 (Computer Aided Logistics)甚至到後來的移動式商務 (Mobile Business)、網路安全 (Internet Security),這幾個概念都需要扎實的、強型別的程式語言作為程式主幹,卻又無法避免前述的許多的包袱,所以搞程式語言科班的想做的就是快速開發,搞腳本語言的就是嚴謹物件導向標準化,導致你現在看到的語言越來越模糊。一如當年 CISC 與 RISC CPU 戰爭一樣,只不過這個是「無聲的戰爭」。

    結語跟科學龜一樣,老闆是請你來寫代碼的,不是來寫歷史的,不用太鑽牛角尖...

    • 登入以對解答發表意見
  • 1 0 年前

    最主要的差異在於,兩者與「電腦系統架構的相依性」。 這裡的電腦系統架構,包括了軟硬體兩個層面。硬體,就是指中央處理器(CPU);而軟體係指作業系統。以下列舉幾種常見的程式語言,來說明什麼叫相依性:

    1. Assembly(組合語言):這一定是跟著中央處理器走的,寫給 x86 CPU 用的程式碼,拿去 PowerPC 一定無法組譯,因為最根本的架構不同。

    2007-04-06 19:26:54 補充:

    2. C/C++:它不需要跟著 CPU 走。原則上,你在 Windows 開發的程式碼,也可以拿到 Unix 上重新編譯執行。只不過,這兩種作業平台還是有些許差異,所以程式碼也必須做一些修改。

    3. PHP:它既不需要跟著 CPU 走,也不需要跟著作業系統走,唯一能決定它能不能產生作用的因素,就是 Web Server 有無支援它的語法分析引擎。無論你在 Windows 環境,還是 Unix 環境,只要你用的 Web Server 有支援它,就能執行。

    • 登入以對解答發表意見
  • 您覺得這個回答如何?您可以登入為回答投票。
  • 匿名使用者
    6 年前

    ●運動 - NBA、MLB、日本職棒、中華職棒、冰球、足球、網球、彩球、拳擊、賽馬

    ●現場 - 百家樂、龍虎、21點、輪盤、手臂、番攤、牛牛、骰寶、牌九

    ●對戰 - 麻將、暗棋、軍棋、吹牛、十三支、德州撲克、大老二、鬥地主、妞妞、接龍

    ●電子 - 水果盤、中國美人、極限飆速、趙雲救主、西遊記、金瓶梅、英雄、7PK、5PK

    ●彩球 - 大樂透、今彩、BingoBingo、Keno、北京賽車、六合彩

    ●免費服務 - 電影區、討論區、KTV歡唱、運動轉播、即時比分、24H客服

    ●●● 精彩無限、 免費體驗 官網 AA8888點NET ●●●

    • 登入以對解答發表意見
還有問題?馬上發問,尋求解答。