1、shell和c語言的區別:javascript
shell是個腳本語言,也是應用程序與內核進行交互的橋樑(一個讓開發者與內核交互的軟件)。
好比咱們計算機的運行狀態等咱們是沒法肉眼來查看的,可是經過shell咱們就能看到他的數據,其餘一些應用程序,好比瀏覽器、音樂播放器等得到內核所掌管的音頻、顯卡等驅動的幫助。
shell也是個腳本語言,咱們能夠將一系列的操做放入一個文件中,並給予這個文件可執行的權限,咱們就能夠一下運行文件中的全部的指令,好比咱們有一系列的操做常用,可是一個一個的打是在太麻煩了,咱們能夠將他寫到一個腳本中,只需一次運行全部的操做就完成了。
而C語言是另外一種高級的計算機語言,他能夠開發不少軟件,其實shell也是用c寫的。
2、什麼是腳本語言
腳本語言(Script languages,scripting programming languages,scripting languages)是爲了縮短傳統的編寫-編譯-連接-運行(edit-compile-link-run)過程而建立的計算機編程語言。此命名起源於一個腳本「screenplay」,每次運行都會使對話框逐字重複。早期的腳本語言常常被稱爲批處理語言或工做控制語言。一個腳本一般是解釋運行而非編譯。雖然許多腳本語言都超越了計算機簡單任務自動化的領域,成熟到能夠編寫精巧的程序,但仍然仍是被稱爲腳本。幾乎全部計算機系統的各個層次都有一種腳本語言。包括操做系統層,如計算機遊戲,網絡應用程序,文字處理文檔,網絡軟件等。在許多方面,高級編程語言和腳本語言之間互相交叉,兩者之間沒有明確的界限。一個腳本可使得原本要用鍵盤進行的相互式操做自動化。一個Shell腳本主要由本來須要在命令行輸入的命令組成,或在一個文本編輯器中,用戶可使用腳原本把一些經常使用的操做組合成一組序列。主要用來書寫這種腳本的語言叫作腳本語言。不少腳本語言實際上已經超過簡單的用戶命令序列的指令,還能夠編寫更復雜的程序。
簡介
腳本語言是爲了縮短傳統的
編寫-
編譯-
連接-
運行(edit-compile-link-run)過程而建立的計算機
編程語言。
[1]
它的命名起源於一個腳本「screenplay」,每次運行都會使
對話框逐字重複。早期的腳本語言常常被稱爲批量處理語言或工做控制語言。
[2]
一個腳本一般是解釋運行而非編譯。腳本語言一般都有簡單、易學、易用的特性,目的就是但願能讓
程序員快速完成
程序的編寫工做。而宏語言則可視爲腳本語言的
分支,二者也有實質上的相同之處。
[3]
特色
一、腳本語言(JavaScript,
VBscript等)介於
HTML和C,C++,Java,C#等編程語言之間。 HTML一般用於格式化和連接文本。而編程語言一般用於向機器發出一系列複雜的指令。
二、腳本語言與
編程語言也有不少類似地方,其
函數與編程語言比較相像一些,其也涉及到變量。與編程語言之間最大的區別是編程語言的語法和規則更爲嚴格和複雜一些.
三、與程序代碼的關係:腳本也是一種語言,其一樣由程序代碼組成。
注:腳本語言通常都有相應的
腳本引擎來解釋執行。 他們通常須要
解釋器才能運行。
Python、JAVASCRIPT,ASP,PHP,PERL,
Nuva都是腳本語言。C/C++編譯、連接後,可造成獨立執行的exe文件。
四、腳本語言是一種解釋性的語言,例如
Python、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等能夠編譯成二進制代碼,以
可執行文件的形式存在,腳本語言不須要編譯,能夠直接用,由解釋器來負責解釋。
五、腳本語言通常都是以
文本形式存在,相似於一種
命令。
舉個例子說:若是創建了一個程序,叫aaa.exe,能夠打開.aa爲擴展名的文件,爲.aa文件的編寫指定了一套規則(語法),當別人編寫了.aa文件後,本身的程序用這種規則來理解編寫人的意圖,並做出迴應,那麼,這一套規則就是腳本語言。
[5]
六、相對於編譯型計算機編程語言:用腳本語言開發的程序在執行時,由其所對應的解釋器(或稱虛擬機)解釋執行。系統程序設計語言是被預先編譯成機器語言而執行的。腳本語言的主要特徵是:程序代碼便是腳本程序,亦是最終
可執行文件。腳本語言可分爲
獨立型和
嵌入型,獨立型腳本語言在其執行時徹底依賴於解釋器,而嵌入型腳本語言一般在編程語言中(如
C,
C++,
VB,
Java等)被
嵌入使用。
[1]
[6]
七、和系統程序設計語言相比:不一樣是腳本語言是被解釋而系統程序設計語言是被編譯。被解釋的語言因爲沒有編譯時間而提供快速的轉換,經過容許用戶運行時編寫應用程序,而不須要耗時的編譯/打包過程。解釋器使應用程序更加靈活,腳本語言的代碼可以被實時生成和執行。腳本語言一般都有簡單、易學、易用的特性,目的就是但願能讓程序設計師快速完成程序的編寫工做。
[1]
優勢
容易部署:大多數腳本語言都可以隨時部署,而不須要耗時的編譯/打包過程。
同已有技術的集成:腳本語言被Java或者
COM這樣的組件技術所包圍,所以可以有效地利用代碼。
易學易用:不少腳本語言的技術要求一般要低一些,所以可以更容易地找到大量合適的技術人員。
動態代碼:腳本語言的代碼可以被實時生成和執行,這是一項高級特性,在某些應用程序裏(例如JavaScript裏的動態類型)是頗有用也是必需的。
[7]
缺點
腳本語言不夠全面:它們會要求一門「真正的」編程語言的存在,必須找一個數據庫驅動程序將其內置進腳本語言裏。
腳本語言並非軟件工程和構建代碼結構的最佳選擇,例如面向對象和基於
組件的開發。
編輯本段腳本語言的應用和發展
1、應運
(2):做爲通用的編程語言存在,如
Perl、
Python、
Ruby等。因爲「解釋執行,
內存管理,動態」等特性,它們仍被稱爲腳本語言。但它們已經用於應用程序編寫,用戶也不把它們看做腳本語言;
(3):許多大型的應用
程序都包括根據
用戶需求而定製的慣用腳本語言。一樣地,許多電腦
遊戲系統使用一種自定義腳本語言來表現
NPC(Non-Player Character,Non-Playable Character,Non-Player Class)和遊戲環境的預編程動做。此類語言一般是爲一個單獨的應用程序所設計,雖然它們貌似一些通用語言(如Quake C,Modeled After C),但它們有自定義的功能;
(4):網頁中的嵌入式腳本語言。熟知的
HTML(Hyper Text Mark-up Language)即
超文本標記語言,就是一種腳本語言,它的解釋器就是
瀏覽器。
JavaScript直到如今仍然是網頁
瀏覽器內的主要編程語言,它的ECMAScript標準化保證了它成爲流行的通用嵌入式腳本語言。另外,隨着
動態網頁技術發展,
ASP、
JSP、PHP等嵌入網頁的腳本語言正被普遍使用,不過這些腳本要經過Web Server解釋,而Html則被瀏覽器執行;
(5):腳本語言在系統應用程序中嵌入使用,做爲用戶與系統的接口方式。在工業控制領域,PLC編程、組態軟件的腳本語言是擴充組態
系統功能的重要手段;在通訊平臺領域,
IVR(自動語音應答)流程編程;Office辦公軟件,提供的宏和VBA;其餘應用軟件如ER Studio提供的Basic MacroEditor,用戶能夠編寫Sax Basic腳本操做ER圖,生成Access庫、導出Word文檔等擴展功能。
[8]
2、發展狀況
腳本技術得益於計算機
硬件的加速發展。某些狀況下甚至系統程序設計語言也不夠有效,所以不得不用匯編編寫應用程序。而今的機器比1980年的快100~500倍,且仍在以每18個月翻一番的速度增加。計算機性能快速提升,使計算機程序愈來愈複雜。所以,開發時間已遠比運行時間緊迫。這時,腳本語言做爲系統程序設計語言的補充,開始被主要的
計算機平臺所同時提供。
編程語言已經由性能低下的硬件與執行效率之間的矛盾,轉變爲快速變化的市場須要與低效的開發工具之間的矛盾,因此腳本語言的發展在軟件開發中有着必然的趨勢。
[1]
這類的常見的有JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua。
腳本語言的特色是語法簡單,通常以文本形式保存,而且不須要編譯成目標程序,在調用的時候直接解釋。這能夠當作是腳本語言的判斷標準,好比說JavaScript,你只須要用記事本新建一個Html文件,在裏面加上一段腳本就能夠了,在瀏覽器打開Html文件時天然會調用JS腳本。
[9]
1、工做控制語言和shell
Shell 腳本
此類腳本用於自動化工做控制,即啓動和控制系統程序的行爲。大多的腳本語言解釋器也同時是命令行界面,如
Unix shell和MS-DOS command。其餘如AppleScript,能夠爲系統增長腳本環境,但沒有命令行界面。
具體分類有:
1.4NT
3.ARexx(Amiga Rexx)
14.Winbatch
16.Windows Script Host
2、GUI 腳本
GUI出現帶來一種專業的控制計算機的腳本語言。它在用戶和圖形界面,
菜單,按鈕等之間互動。它常常用來自動化重複性動做,或設置一個標準狀態。理論上它能夠用來控制運行於基於GUI的計算機上的全部
應用程序,但實際上這些語言是否被支持還要看應用程序和操做系統自己。當經過鍵盤進行互動時,這些語言也被稱爲宏語言。
具體分類有:
3、應用程序定製的腳本語言
許多大型的應用程序都包括根據用戶需求而定製的慣用腳本語言。一樣地,許多電腦遊戲系統使用一種自定義腳本語言來表現NPC(non-player character,non-playable character,non-player class)和遊戲環境的預編程動做。
此類語言一般是爲一個單獨的應用程序所設計,雖然它們貌似一些通用語言(如QuakeC, modeled after C),但它們有自定義的功能。
具體分類:
1.Action Code Script
4.BlobbieScript
5.Emacs Lisp
6.Game Maker Language
8.IPTSCRAE
9.IRC script
11.Matlab Embedded Language
12.Maya Embedded Language
13.mIRC script
14.NWscript
15.QuakeC
16.UnrealScript
17.Visual Basic for Applications
19.ZZT-oop
4、WEB編程腳本
應用程序定製的腳本語言中有一種重要的類別,用於提供WEB頁面的自定義功能。它專業處理互聯網通訊,使用
網頁瀏覽器做爲用戶界面。固然,大多現代WEB編程語言都比較強大能夠作一些通用編程。
具體分類:
2.Lasso
5.IPTSCRAE-
一些網絡開發團隊用於建立論壇的工具
5、文本處理語言
處理基於文本的記錄是腳本語言最先的用處之一。如Unix's awk最先是設計來幫助系統管理員處理調用
UNIX基於文本的配置和LOG文件。Perl最先是用來產生報告的,如今它已經成了全面成熟的語言。
具體分類:
6、通用動態語言
一些語言,好比Perl,從一門腳本語言發展成了更通用的編程語言。因爲「解釋執行,內存管理,動態」等特性,它們仍被稱爲腳本語言。但它們已經用於應用程序編寫,用戶也不把它們看做腳本語言。
15.SuperCard
16.
Tcl(Tool command language)
7、擴展/可嵌入語言
少數的語言被設計經過嵌入應用程序來取代應用程序定製的腳本語言。開發者(如使用C等其它系統語言)包入使腳本語言能夠控制應用程序的hook。這些語言和應用程序定製的腳本語言是同種用途,但優勢在於能夠在應用程序之間傳遞一些技能。
具體分類:
4.GameMonkeyScript
8.RBScript(REALbasic Script)
11.Z-Script
JavaScript直到如今仍然是網頁瀏覽器內的主要編程語言,它的ECMAScript標準化保證了它成爲流行的通用嵌入性語言。
Tcl做爲一種擴展性語言而建立,但更多地被用做通用性語言,就如同Python, Perl, Ruby同樣。
8、其它
2.CobolScript
3.Escapade (server side scripting)
5.F-Script
6.Ferite
8.Gui4Cli
10.KiXtart
12.Object REXX
14.Pliant
16.ScriptBasic
17.Shorthand Language
18.Simkin
20.StepTalk
21.Visual DialogScript