簡潔腳本語言
㈠ php是什麼意思
php通常指超文本預處理器,用於面向對象、命令式編程,是一種通用開源腳本語言。
主要特點:
為開源性和免費性、快捷性、資料庫連接的廣泛性、面向過程和面向對象並用。優點是利於學習,使用廣泛。此外,php還可以指菲律賓比索的標准貨幣代碼符號,MPLS網路中的倒數第二跳彈出功能。是英文超級文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種HTML 內嵌式的語言,是一種在伺服器端執行嵌入HTML文檔的腳本語言,語言風格有些類似於c語言,被廣泛的運用。
簡介:
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
特性包括:
1、PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法
2、PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;PHP具有非常強大的功能,所有的CGI的功能PHP都能實現
3、 PHP支持幾乎所有流行的資料庫以及操作系統。
4、最重要的是PHP可以用C、C++進行程序的擴展!
語言特點:
開源免費
PHP是一個受眾大並且擁有眾多開發者的開源軟體項目,linux + Nginx + Mysql + PHP是它的經典安裝部署方式,相關的軟體全部都是開源免費的,所以使用PHP可以節約大量的正版授權費用。不過PHP作為一個開源軟體,它缺乏大型科技公司的支持背景,網路上對它的唱衰也是經久不衰,不過它的持續迭代和性能持續增強的現實卻是鼓舞人心的,PHP社區用實際行動給予各種質疑強有力的回擊。
快捷高效
PHP的內核是C語言編寫的基礎好效率高,可以用C語言開發高性能的擴展組件;PHP的核心包含了數量超過1000的內置函數,功能應有盡有很全面,開箱即用程序代碼簡潔; PHP數組支持動態擴容,支持以數字、字元串或者混合鍵名的關聯數組,能大幅提高開發效率; PHP是一門弱類型語言,程序編譯通過率高,相對其他強類型語言開發效率快;PHP天然熱部署,在php-fpm運行模式下代碼文件覆蓋即完成熱部署;PHP經過20多年的發展,在互聯網上可以搜到海量的參考資料供參考學習。
性能提升
PHP版本越高它的整體性能越高,根據官方介紹,PHP7.0.0 對比PHP5.6性能就提升了2倍,PHP7.4已經比PHP7.0快了約30%,PHP8.0在性能上又相對PHP7.4大約改進了10%。PHP 8.0 引入了 JIT編譯器特性,同時加入多種新的語言功能,例如命名參數、聯合類型、註解、Constructor Property Promotion、match 表達式、nullsafe 運算符以及對類型系統、錯誤處理和一致性的改進。PHP擁有自己的核心開發團隊,保持5年發布一個大版本、1個月發布2個小版本的頻率,最新的版本是PHP8.08 。
跨平台
每個平台都有對應的php解釋器版本,指針對不同平台均編譯出目標平台的二進制碼(PHP解釋器),php開發的程序可以不經修改運行在windows、linux、unix等多個操作系統上。
常駐內存
php-cli模式下可以實現程序常駐內存,各種變數和資料庫連接都能長久保存在內存實現資源復用,比較常用的做法是結合swoole 組件編寫cli框架。
頁面生命周期
在php-fpm模式下,所有的變數都是頁面級的,無論是全局變數還是類的靜態成員,都會在頁面執行完畢後被清空,對程序員水平要求低,佔用內存非常少,特別適合中小型系統的開發。
運行機制:
PHP常見的運行模式有2種,分別是php-fpm 和php-cli 。當PHP 選擇運行在php-fpm模式下,所有的變數都是頁面級的,無論是全局變數還是類的靜態成員,都會在頁面執行完畢後被清空。運行在php-cli模式下可以實現程序常駐內存,各種變數和資料庫連接都能長久保存在內存 實現資源復用,性能可以得到很大的提升,php-cli開發比較復雜能但是能夠獲取更高的性能,對開發者的要求比較高需要比較高的開發水平,比較常用的模式是結合swoole 組件編寫cli框架,各種變數能保存在跨進程的高性能共享內存 Table ,可以開發出支持熱啟動的php-cli可靠各類應用系統。
php-fpm在PHP 5.3.3 版本成為了官方正式組件(2010-07-22),它提供了穩定可靠的進程管理服務,進程不足時候可以智能擴充數量,閑置時候可以自動回收銷毀多餘的進程,同時它對程序的容錯能力很強大運行非常穩定,可以應付企業級的開發需求。php-fpm友好的完成了使用HTTP/HTTPS等TCP/IP互聯網協議下進行的用戶的輸入輸出,頁面級生命周期各種資源用完即釋放,不存在內存泄漏的問題。php-fpm也提供有一些常駐內存的技術支持,例如PHP 7.4引入的opcache.preload也能實現局部的PHP類和函數的常駐內存,不過這個方法不夠靈活,和伺服器配置捆綁的太死了。
php-cli因為能實現各類資源的常駐內存,所以可以資源復用,更高效完成多進程編程和非同步編程,可以開發出負載能力更高的應用系統。但是相對php-fpm的簡單編程開發,開發者要注意很多的事項和需要做很多附加的控制器開發,否則就無法實現期待中的高性能。
首先開發者需要去實現可靠的進程管理服務,保證系統進程遇到各類錯誤退出運行後能夠自動創建新的進程,只有這樣才能保證後續的服務請求有足夠空閑進程可分配。每個業務代碼段都要做異常處理,讓進程遇到非致命錯誤時候不會退出,因為進程重啟意味程序和各類資源需要再次載入,這個過程性能消耗不小,所以只有進程穩定運行了常駐內存才有意義。
其次因為常駐內存,編寫的新的程序必須重啟服務才能生效,這一點習慣了fpm模式的開發者會感到比較陌生。另外開發者需要手工釋放內存,否則系統長時間運行後會出現內存泄露。同時在cli模式下,我們不能像fpm里直接用 $_SERVER、$_POST、$_GET、$_COOKI和$_FILES 進行編程工作,需要自己去解析各種互聯網通訊協議完成用戶的輸入輸出。要實現多進程編程利用多核CPU計算,還有學習使用pcntl和posix編程,這里涉及到了非同步編程邏輯,這塊難度還是比較大的。比較常用的模式是結合swoole 組件編寫cli框架。
PHP是一個活躍的社區開發語言,有專業的核心開發團隊在持續不斷的迭代,最近一個版本就是PHP 8.0.8 引入了很多的新特性。
語言參考:
內置函數
PHP 有很多標準的函數和結構。還有一些函數需要和特定的擴展模塊一起編譯,否則在使用它們的時候就會得到一個致命的「未定義函數」錯誤。例如,要使用 image 函數中的 imagecreatetrue,需要在編譯 PHP 的時候加上 GD 的支持。或者要使用 mysqli_connect函數,就需要在編譯 PHP 的時候加上 MySQLi 支持。有很多核心函數已包含在每個版本的 PHP 中如字元串和變數函數。調用 phpinfo或者 get_loaded_extensions可以得知 PHP 載入了那些擴展庫。同時還應該注意,很多擴展庫默認就是有效的。
靜態網站與動態網站的區別
靜態網站:web1.0 時代
動態網站:web2.0 時代
靜態網站特點:
1、網頁內容一經發布到網站伺服器,無論是否有用戶訪問,每個靜態頁面的內容都是保存在網站伺服器上的。也就是說,靜態網頁是實實在在保存在伺服器上的文件,每個網頁都是一個獨立的文件。
2、靜態網頁的內容相對穩定,因此容易被搜索引擎檢索。
3、 靜態網頁沒有資料庫的支持,在網站製作和維護方面工作量較大,因此當網站信息量很大時完全依靠靜態網頁製作方式比較困難。
4、靜態網頁的交互性較差,在功能方面有較大的限制。
㈡ 游戲開發中常用哪種腳本語言
隨著《魔獸世界》(以下簡稱wow)在世界范圍內流行,腳本漸漸被人們所熟知。由於wow強大的自定義界面系統,Lua這一腳本語言一舉成名。
其實早在Lua腳本語言被大眾所熟知以前,游戲業內人士就已經開始使用腳本來開發游戲了。我們熟悉的很多國內的網路游戲大都運用了腳本開發,比如網游的長青樹「夢幻西遊和《大話西遊2就大量應用了腳本技術。特別是《大話西遊2》,其實現基於Lua腳本游戲開發的時間要遠早於《魔獸世界》。在腳本技術上,國內與國外其實是站在同一起跑線上的,並不存在什麼差距,這也為國內游戲產業趕超國外游戲產業提供了強有力的技術保證。
在單機游戲時代,腳本這個詞幾乎很少出現,那麼,為什麼在網路游戲時代它卻成了業界的寵兒呢?原因是多方面的。
單機游戲時代,無論游戲主機還是PC機,它們的性能都非常低下,從而需要具有較高執行效率的編譯型語言對機器的性能進行「壓榨」。隨著科技發展和硬體性能的不斷提升,腳本逐漸被開發者所接受並利用,但這並不是腳本流行起來的決定性因素,真正的原因還在於游戲市場有這方面的需求。
網路游戲時代的市場競爭激烈、變化莫測,如果延用單機時代一年半載才出一個新版本的開發方式,必然會被游戲行業激烈的市場競爭所淘汰。正是這種游戲市場需求旺盛和開發工具效率底下之間的矛盾,促使腳本語言迅速地發展起來。腳本的興起使得傳統編譯型語言(asngC/C )的性能優勢在硬體功效大幅攀升的今天已經不復存在。
除了市場和硬體這兩個因素之外,還有一點我們不能忽略。那就是用C/C 進行游戲開發的高成本和高項目風險。隨著java/.net逐漸流行,學習C/C 編程語言的人越來越少,而網路游戲市場的需求卻越來越龐大,在程序人才大量匱乏的情況下,造成了c,C 人才的高成本。即便是有能力僱傭大量C/C 程序員的公司,在開發游戲的過程中,也不能無視C/C 的高級特性和高度靈活性帶來的高項目風險。C/C 是易學難精的編程語言,在開發大型項目的時候由於程序員的水平參差不齊,所以極易造成溝通不暢。不僅如此,c,C 濫用的高級特性也容易引入大量bug。正是由於這些原因,游戲公司開始在游戲中使用腳本,希望通過腳本來解決這些高成本、高風險的問題。
二.腳本的現狀
腳本不僅解決了c/C 無法解決的開發效率難題,還降低了開發的成本和風險。因此腳本技術在游戲業內蓬勃發展起來,並且已經成為游戲業中不可或缺的一環。縱觀當前腳本技術現狀,形勢一片大好,不僅語言百家爭鳴,而且書籍種類也越來越多;不僅在游戲業界開花結果,在web等其它應用領域也大放異彩。
首先,我們來看看目前比較流行的腳本:python、Lua、ruby和Erlang。Python和Lua是網路游戲開發的中堅力量;ruby憑借 rubyonrails的web開發框架的強勁力量,其在游戲業的發展前途亦不可小視;Erlang在高並發性上的原生優勢吸引了無數追求高性能網游伺服器的開發人員的目光。
其次,我們來看看書籍方面。大家都知道,文字對語言的普及起到了催化劑的作用,甚至可以看作是語言的有機組成部分。Python經過基金會的多年經營而得到NASA、Google重用的原因,就是由於其相關書籍種類比較豐富;Ruby隨著RoR的流行,這兩年行情看好,書籍也出版得越來越多了;Erlang是典型的少眾語言,但隨著多核時代的來臨和高並發網路應用的需求,Erlang有著光明的發展前景,現在<<ProgrammingErlang>>等書也已經在策劃出版了;反觀Lua,雖然目前越來越流行,但由於它晦澀的介面設計和缺乏大型應用的支持,使得相關書籍寥寥無幾。
最後,我們把焦點重新聚集到游戲開發行業中,其實不難發現,除了前文提到的《魔獸世界》和網易經典「西遊系列」使用了腳本外,現在大多數比較流行的程序也都使用了腳本,如騰訊的QQgame))和搜狐的《天龍八部》等。不僅如此,現今的游戲引擎也都提供了腳本介面,無論是商業的unreal引擎還是開源的 OGRE,無一例外。
三.腳本的優勢
腳本之所以能夠在游戲業中找到自己的一席之地,是因為網路游戲市場需要一個快速開發方案來避免C/C 開發帶來的項目高成本和高風險。那麼,腳本相對於C/C 這類編譯型語言到底有什麼優勢呢?
I易於學習,代碼可維護性強
腳本的語法通常都非常簡單,也沒有太多高階的特性,學習的門檻較C/C 低得多,比如Python可能只需要花一個下午即可學會。這使得游戲開發公司可以招聘完全沒有腳本、編程經驗的新手,通過低成本的培訓,他們便能迅速地走上工作崗位。除易於學習外,腳本代碼也有較強的可維護陛(盡管寫出沒有人看得懂的Lua代碼也非難事)。因為腳本沒有很多高階特性(如c 里的模板元編程就是高階特性),所以腳本程序員就有更多的精力去架構、模式、重用和測試等工作,從而提高了代碼的可維護性。相應地,正因為沒有那麼多讓人困惑的高階特性,也使得腳本代碼「簡潔」不少。
2.降低開發成本
如上所言,由於腳本易於學習,游戲開發公司可以大量起用新手,這正是降低成本的有效手段。那麼如何來確保新手所寫代碼的質量呢?眾所周知,新手無論用什麼語言寫程序肯定會出現bug,但用C/C 和Python做比較,可以看出,一個新手用C/c 編寫出的程序所出現的bug肯定會比用Python編寫出現的bug要多。由於c程序需要編譯,而腳本程序(大部分)都可以直接解釋執行,所以在排除 bug方面腳本也佔有一定的優勢,這也使腳本在降低成本的同時能夠更好地保證代碼質量。
3.形成人才壁壘
軟體開發行業是一個頗為動盪的行業,無數的程序員都在跳槽和謀劃跳槽的狀態中生活,使用腳本開發形成人才壁壘是游戲業減少人才流動的有效手段。因為現在腳本除了在游戲業中非常流行外,並沒有在其它行業形成廣泛應用(雖然在web開發方面也有燎原之勢,但終究不如在游戲業中的地位高)。這就使得游戲程序員很少會考慮非游戲行業的職位,但其它行業的程序員卻可能會因為腳本的易學習性而轉投游戲業。腳本除了能有效形成行業間的人才壁壘外,也能有效地形成企業間的人才壁壘。由於現有的腳本種類繁多,不同公司往往有不同的選擇,甚至有些公司使用自己開發的腳本語言,所以程序員從公司A跳槽到公司B可能要學習使用另一種腳本,這就提高了跳槽的成本,從而減少了人才的流動。
四.腳本的發展趨勢
依照目前趨勢來看,腳本語言一定會更加的普及,而且會逐漸滲透到其它行業中。隨著網路游戲從業人員數量的增長,腳本程序員也一直增加,而且Web2、0熱潮引起的網路需求,也促成了一批批新腳本程序員的誕生。網路游戲市場就像一個正在滾動的雪球,推動著腳本的普及。
隨著腳本在游戲業中越來越流行,市場對生產效率的需要也會相應提高。腳本雖然在一定程度上緩解了生產效率與生產工具之間的矛盾,但仍然不夠完善。由於市場競爭日趨激烈,而網路游戲在很多功能上的實現又都相差無幾,如網路、資料庫、圖形甚至部分邏輯,這必然會引起網路游戲生產的組裝化一一大量中間件相互組合形成新的網路游戲。從目前來看,Bigwofld、PhysX和Unreal等都是比較流行的網路游戲中間件。腳本語言則是粘合各個中間件的良好膠水語言,所以隨著網路游戲的生產組裝化,腳本將有更大的發展空間。
那麼,當腳本發展到如日中天的時候,可能取代C/C 這些編譯型語言嗎?筆者認為不會。腳本語言和編譯型語言在生產效率和執行效率上各擅勝場,網路游戲既需要能快速應變的腳本,也需要能快速執行以提供更絢麗游戲效果的編譯型語言。未來,它們之間一定會保持長久的和諧互補關系,相輔相成。
五.結語
綜上所述,網路游戲時代是上帝賜予腳本語言發展的絕好時機,腳本語言很快將迎來光芒四射的時代。腳本語言擁有編譯型語言無可比擬的生產效率優勢,所以它們將互補互助並肩奮戰在游戲的最前線。
㈢ 如何用python腳本語言寫帶窗口程序
當你想學習一門新的語言時,特別是像Python這樣的腳本語言,在你准備充分開始寫應用程序的圖形化界面之前,有時候你可能被迫使用應用程序的控制台。從第一版商業圖形界面發行以來(感興趣的話,可以查看Xerox之星),至今經過了25年的時間,在應用程序上繼續使用控制台看上去似乎有點古老。非常感謝Python腳本語言強調簡潔的語法,這意味著你不需要成為Python編程高手就能在程序中使用圖形用戶界面。為了證明這個說法,我將使用Python標準的GUI(圖形用戶界面)工具:Tk來建立一個簡單的記錄會話程序。我不會詳細介紹Python的簡單語法,如果你有不明白的地方,請你閱讀我先前關於這個主題的文章(點擊這里和這里就可以查看);讓我們從基本的開始講起,首先你需要輸入Tk界面到你的程序命名空間中。因為我們將會不斷地引用到Tk窗口小部件,我們不希望一直用一個包來限定它們,所以最好的方法就是這樣做:from Tkinter import *這個導入語句與傳統的導入語句的區別在於,它在模塊中將所有的東西導入程序默認的命名空間,而不是在你需要引用一個像Tkinter.Textbox文本框的時候,你就只能寫文本框。現在我們來建立根窗口並設置它的標題來解釋一些東西:root = Tk()root.title("Note Taker")創建根窗口就像創建一個Tk類的實例一樣簡單,它會裝載圖形工具包並提供給我們一個可以裝載窗口小部件的空白窗口。這是啟動一個Tk程序基本過程的第一部分。root.mainloop()第二部分(上面所顯示的)是調用Tk主循環(mainloop),這個主循環是用來處理事件的,比如鍵盤事件或者滑鼠輸入,允許用戶與對話框交換信息。事實上,這時候你才真正地用到了GUI程序。用那四種方式運行一個python腳本,將彈出一個窗口,但是這個窗口僅僅是放置在那裡,它不會做任何操作。
㈣ Python會取代PHP嗎 都是腳本語言,但是Python更簡潔。
PHP不會被python取代。
都是腳本語言沒錯,但是:
首先,語法邏輯不一樣,語法邏輯會使得一個語言的風格和走向不一樣。PHP比較簡單,可以嵌入html,等等這些東西都決定了PHP是簡單路線。python語法格式比較嚴格,連標點符號和空格都嚴格要求,這導致了python用來做深入和復雜的東西。
其次,兩者的定位也不一樣。現在被使用的地方,PHP主要被用來做網站;python主要做爬蟲和深度學習演算法等。雖然兩者的用處可以互換,可是一般來說,擅長的東西不做而去做不擅長的東西這是性能方面和擴展都不能得到充足的發展。
另外,兩者的版本兼容問題,PHP是基本繼承和沿襲版本,對舊版本和新版本兼容比較融洽,不會有5版本是7版本這樣一個版本級別差別不兼容的問題,向下兼容好。而python2和python3就有很大區別,3不能向下兼容2,這是因為改了引擎的問題,這也是一個致命的問題。
最後,現在也有PHP深度學習的框架、爬蟲等的出現;python現在也有做網站的。雖然是這樣,但是PHP累積的網站系統和框架不可能拋棄不用而去使用python開發;python累積的各種復雜操作的框架不可能拋棄不用而去使用PHP新出的框架。他們恰巧不是為了打壓對方,而是讓使用自己語言的開發人員,希望走該方向的能夠有個更容易上手的一個選擇。
在後面很長的時間內,PHP和python都不會被互相取代。
㈤ shell語言是什麼啊
SHELL語言是指UNIX操作系統的命令語言,同時又是該命令語言的解釋程序的簡稱。
Shell本身是一個用C語言編寫的程序,它是用戶使用Unix/Linux的橋梁,用戶的大部分工作都是通過Shell完成的。Shell既是一種命令語言,又是一種程序設計語言。作為命令語言,它互動式地解釋和執行用戶輸入的命令;作為程序設計語言,它定義了各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括循環和分支。
它雖然不是Unix/Linux系統內核的一部分,但它調用了系統核心的大部分功能來執行程序、建立文件並以並行的方式協調各個程序的運行。因此,對於用戶來說,shell是最重要的實用程序,深入了解和熟練掌握shell的特性極其使用方法,是用好Unix/Linux系統的關鍵。
(5)簡潔腳本語言擴展閱讀:
shell的語言的運行場景:
Shell是各個UNIX系統之間通用的功能,並且經過了POSIX的標准化。因此,Shell腳本只要「用心寫」一次,即可應用到很多系統上。同時,它運行於高於系統內核的環境,能夠簡單地執行一些文件系統級的高級操作。因此,之所以要使用Shell腳本是基於:
1、簡單性:Shell是一個高級語言,處於內核外層環境;通過它,你可以簡潔地表達復雜的操作。
2、可移植性:使用POSIX所定義的功能,可以做到腳本無須修改就可在不同的系統上執行。
3、開發容易:可以在短時間內完成一個功能強大又適用的腳本。
㈥ 最簡單的計算機語言有哪些
網頁上的html是最簡單的語言,但是功能實在少得可憐,除了描述網頁就沒有別的用途了(不過話說回來,直接描述網頁也只有它才能做到,其他語言做不到)
Script(腳本)系列 也很簡單
這里有很多種,常見的有Javascript(引進了Java的一些思想,不過實際內容簡單得多了),VBScript (Visual Basic的一部分), C#Script(C#的一部分), 這三種主要用於網頁網站設計,輔助html間接描述網頁,讓網頁變得豐富多彩絢麗,而單機上也可以運行以執行一些可自動化的操作,實現一些簡單的小程序和一些手動操作非常麻煩甚至是不可能的操作,但還是難以編完整的獨立的程序,還有批處理bat,這也是一種腳本,也很簡單,專門單機使用,擅長代替大量的手工操作和系統維護,但要做出我們常用的這種漂亮的程序,是不可能的。
想要做我們常用的程序要用以下幾種語言,不過相比之上面的語言都復雜許多:
Basic系列是最簡單的,不過因為版本多樣不統一還有一些效率的問題,所以用的人不是非常多
不過其中有一個例外:Visual Basic 有微軟的支持,可視化的,可以很快有成就感編出像樣的程序,而且很多文檔中的宏 VBA(Visual Basic for Application)還有以上說的VBScript都是它的一部分,所以還是很受歡迎的。
C語言,入門還比較簡單,但挺枯燥,初學沒什麼成就感,要想編大程序要學得挺深,有點難,編出來的程序在高級語言中效率最高,所以是第二廣泛使用的語言僅次於Java。
C++,C#,會更難一點,但是程序要編大的會相比之下簡單點,這些都是C語言的擴展,其中C++擅長本機大程序,C#適合網路編程(剛才說的C#Script是它的一部分)
Java,語法上類似C++,在跨平台的時候會省你很多麻煩,所以由於手機的普及近一兩年它才超過C/C++成了應用最廣泛的語言。不過開發出來的程序效率比較不怎麼樣,但有些人挺喜歡它的思想,所以不跨平台的話,見仁見智
其餘的還有Delphi,Pascal,等等不過那些都不怎麼常用而且比較復雜,要圖簡單,強烈推薦Visual Basic,要深究程序內部的東西那還是從C開始比較好
㈦ 你平時會用腳本語言完成哪些常用的工作或生活問題
在現在社會發的比較快,腳本語言是一種比較方便的程序,因為我之前是做it的,他能夠讓我的工作效率更高,在生活中我喜歡打游戲,能夠讓我的游戲玩的更好。
總而言之,腳本語言已經是我的生活中不可缺失的一部分,不管是工作還是生活,都能夠給我帶來更大的樂趣,提高工作效率,但是我們應該把腳本用在對的地方,不要偷奸耍滑,做一些違反法律的事情。
㈧ 關於mel腳本語言的編寫與使用
ge(Maya內置語言)的縮寫,是一種強大的命令和腳本語言,讓你直接控制Maya的特徵、進程和工作流程。mel能做什麼,不能做什麼?能做的mel有一個很重要的功能是編寫界面,Maya的整個界面是用mel編寫的,Maya中的所有界面元素都可以編寫到你自己的mel程序界面中,你可以用mel跟據自己的習慣定製自己的操作界面。Maya中的所有的按鈕命令都是通過mel來調用的,你可以記錄並把其中一些命令組合起來,通過一鍵或按鈕來自動執行這一組命令,就像PhotoShop里的Actions一樣。Maya中的每一步操作都是在執行mel,因此Maya的任何一個功能,能做的任何一項操作,都可以加到你自己的mel程序中。mel有著和c語言類似的語法,有強大的字元串處理功能,還包含一些較為低層的命令(比如說獲取選擇物體的名稱和獲取點在空間中的坐標值等命令),可以編寫一些Maya中沒有的,較為復雜的功能。不能做的mel是一種腳本語言,受腳本解釋器(Command Engine)和Maya內置命令的影響,還是有很多局限的。mel不能使用ActiveX插件。mel只能根據Maya中已有的命令(dll或mll中注冊過的命令)進行擴展,無法直接調用dll模塊中的函數。我們平常使用的dll或exe程序文件是經過編譯器優化的二進制文件,命令的執行速度非常快。mel腳本語言是文本,有一個腳本解釋器分析的過程,命令的執行速度較慢,大約要慢20倍。mel不支持指針,不能對內存進行直接操作。這就導致了很多方面的效率超級低下,對內存的間接操作可能會使運行速度降低100倍甚至1000倍以上。不過這樣也有一個不容爭辯的好處,就是不會產生內存泄漏,保障了Maya的穩定性。mel不能讀寫二進制文件。既然mel不支持指針,不支持數據結構,就算能夠讀寫二進制文件意義也不大。mel不能編寫程序渲染器、播放器;不能編寫Maya中不存在的界面元素,如TreeView、RichEdit、透明窗口等;不能編寫讀取二進制文件的程序,如3dmax(*.max)、LightWave(*.lwo,*.lw)等。有人問過mel能不能編寫病毒問題。答案是肯定的。編寫mel病毒不需要什麼高超的技能,只要通過mel調用dos命令或 JavaScript/VBScript命令就行了。編寫病毒是一件損人不利己的事,mel病毒決對不能代表編寫者的技術高深,只能說明他的素質低劣。 mel病毒極其罕見,只聽說國內有人編過,並害了自己人。如果萬一你被mel病毒格式了硬碟或刪除了文件,可以用EasyRecover之類的程序來恢復,但有一點一定要記住,就是在恢復文件之前千萬不要對受損的硬碟進行寫操作!包括不能把恢復的數據存到受損的硬碟上!否則再厲害的高手也救不了你。學Maya一定要學mel嗎?不一定非要學mel。但由於Maya與mel的關系太密切了,Maya的用戶界面就是用mel編寫的,你在Maya中的每一步操作都是在執行mel,你也經常會在表達式里用到mel,或使用別人編寫的外部mel程序,這一切都要求你至少要對mel有一個初步的了解。可以先學mel再學Maya嗎?不可以。只有先熟悉的Maya的操作後才可以學mel。一般至少學兩個月以上的Maya,才可以學mel。學mel是否要有編程基礎?是否應該先學C語言再學mel?有編程基礎的確會對學mel有很大幫助,但這並不是說學mel一定要有編程基礎。C語言和Java語言雖然在語法上與mel很相似,但在編程的思路方面有很大差距,mel更注重代碼的簡潔而非代碼運行的高效率。由於mel是不需要編譯的腳本語言,對一些編程的規范要求不是很嚴格,學習起來會比C或Java更簡單一些。學mel是否要學好數學?是否要學好圖形學?如果你是學理科的,而且以後打算在3D圖形編程這方面發展,那麼學好數學和圖形學是必須的。如果你是搞藝術的,學mel只是為了輔助Maya作圖,那麼你就少在數學和圖形學上浪費時間。mel是比較高層的腳本語言,一般都是直接調用Maya中已經編好的演算法,你只要熟練掌握Maya的操作就行了。如果你有比較好的圖形學基礎,可能反而會不喜歡使用mel,因為很多優秀的演算法無法用mel實現 - mel的速度太慢了。如何編寫mel?mel是腳本語言,這就意味著你可以用任何文本編輯器來編寫,比如寫字板、記事本等。Maya自帶的編輯器不好用,所以我們一般使用外部編輯器來編寫mel。比較專業的編輯器有:TextPad、 UltraEditor、EditPlus等,有了這些編輯器後還要在網上(比如Highend3d)下載一個mel語法加亮文件,配置好後,才好用。如何使用mel?mel編輯器單行的mel命令,可以直接在命令行(Command Line)執行,也可以在Window > General Editors > Command Shell執行。多行的mel代碼,可以在Script Editor中按Ctrl+Enter執行。shelf在Shelf中執行mel。把要執行的代碼選中,用滑鼠拖放到Shelf上,Shelf上多了一個mel圖標,點這個圖標,就可以執行你的mel代碼了。使用textToShelf命令。比如:textToShelf "cube" "polyCube";可以在當前Shelf上建一個polyCube命令的圖標。使用Shelf Editor,添加、編輯你的mel代碼,或更改圖標。mel文件mel文件的名字必須取與文件中的主函數相同的名字。要把mel文件復制到我的文檔/Maya/5.0/scripts目錄中,然後在命令行輸入主函數名就可以執行這個函數命令。源化腳本(Source Script)Source Script可以使mel文件中的代碼或命令立即生效。有幾種方法可以Source Script,比如說可以在命令行執行source yourScript.mel,或用Script Editor的File > Source Script...,或直接把你的mel文件拖放到Maya的視窗中。啟動文件userSetup.mel要想在Maya每次啟動時都執行某一段代碼,需要把這段代碼加到Maya的啟動文件userSetup.mel中。具體方法是在我的文檔/Maya/5.0/scripts目錄中新建一個文本文件並重命名為userSetup.mel,然後把你的代碼加到這個文件中。如果scripts目錄中已經存在了userSetup.mel,就把你的代碼加到這個文件的結尾。其它也可以通過快捷鍵、菜單、Marking Menu、mll插件、外部程序文件、JavaScript等方法來調用mel。如何學習mel?學mel最好的參考手冊就是Maya的幫助文檔,遇到問題時,應首先從這些文檔中找答案。我把文檔中的Mel Command Reference部分做成了chm文件便於查詢,可以點此處下載。要想提高自已的水平,需要多看別人編寫的mel代碼。<disk>:\\Alias\\Maya6.0\\scripts目錄中存放著所有 Maya自帶的mel,這些mel可以隨意抄寫,修改並發布,無版許可權制,是我們學習的範本。另外在Maya官方網站和Highend3d也可以下載到大量有用的mel供我們學習。什麼是表達式?mel與表達式有什麼關系?mel與表達式的關系,Maya幫助文檔中講得很清楚:Expressions have a different purpose from MEL commands and MEL scripts. You enter a MEL command to do a single action, for example, to create a sphere.A MEL script is a list of commands you create to do a sequence of actions, for instance, create a wall-shaped object and apply a brick texture to it.Because you store a MEL script in a file on disk, you can run a script in different scenes and different work sessions, whether today or next year.An expression animates one or more attributes over time in a single scene. By default, an expression executes each frame as an animation plays. After you create an expression, it executes whenever you play the animation-including when you play the animation after saving, closing, and reopening the scene.A MEL command or script is not part of a scene after you execute it. You must execute it again to repeat the action.做幾點補充說明:mel是用戶與Maya內部機制交流的通道。mel不能直接編寫節點和屬性,因此往往要使用表達式才能對物體進行實時控制。表達式是與動畫不可分割的,表達式與動畫的時間(time或frame)有密切的關系,表達式對動畫的每一幀都要進行計算。在表達式中可以使用mel,但很多mel用在表達式中是沒有意義的,比如說一般不會把編寫界面的mel用在表達式中。mel腳本可以用於任何場景。表達式只能用於一個場景,另一個場景即使用到相同的表達式,也要重新創建。表達式主要是對物體的屬性進行控制,可以用等號對物體的屬性直接取值或賦值,例如:cone.translateX = 3;而mel就必須用getAttr或setAttr來做同樣的事情了,例如:setAttr cone.translateX 3;什麼是MayaAPI?與mel有什麼關系?API - Application Programmer Interface(應用程序界面)。也有人稱作SDK,是一種專門給程序員使用的界面或介面。MayaAPI提供了Maya的5個dll文件。這些dll中包含控制Maya的大量類和函數,我們通過這些類和函數用vc++編寫自己的dll(mll)文件,這些函數通過Maya的方式(比如用mel命令的形式)來調用。我們常用到的*.mll插件都是通過MayaAPI編寫的。MayaAPI比mel更強大,更復雜,效率更高,能做到許多mel做不到的事情,運行速度在mel的十倍以上。MayaAPI的功能主要體現在以下幾點:編寫mel命令。 執行mel命令。 進行創建物體,選擇、縮放、刪除等基本操作。 編寫manipulator。 編寫contexts(tool)。 編寫屬性節點。 編寫材質節點。 文件輸入輸出。 編寫獨立的exe控制台程序。MayaAPI程序因為使用vc++,可以使用MayaAPI,MFC,還有很多SDK,幾乎是無所限制。不過不能改動Maya底層的東西,不能更改Maya的運作方式。使用MayaAPI,需要有vc++的編程經驗,並具有圖形學基礎
㈨ 計算機語言的種類
機器語言(二進制代碼)
匯編語言(面向機器的程序設計語言)
高級語言(按轉換方式可分兩類:
1、編譯型語言; 2、解釋型語言)
||按照客觀系統的描述可分兩類:
1、面向過程語言;
2、面向對象語言 ||
按照編程范型可分四類:
1、命令式語言;2、函數式語言;3、邏輯式語言;4、面向對象語言)
三種語言的優缺點
機器語言:可讀性、可移植性差,編程繁雜。直接執行,速度快,資源佔用少。匯編語言:不同的處理器有不同的匯編語言語法和編譯器,編譯的程序無法在不同的處理器上執行,缺乏可移植性,難於從匯編語言代碼上理解程序設計意圖,可維護性差,即使是完成簡單的工作也需要大量的匯編語言代碼,很容易產生bug,難於調試,使用匯編語言必須對某種處理器非常了解,而且只能針對特定的體系結構和處理器進行優化,開發效率很低,周期長且單調。能夠保持機器語言的一致性,直接、簡捷,並能像機器指令一樣訪問、控制計算機的各種硬體設備,如磁碟、存儲器、CPU、I/O埠等。使用匯編語言,可以訪問所有能夠被訪問的軟、硬體資源,目標代碼簡短,佔用內存少,執行速度快。高級語言:運行速度基本上比直接用匯編寫的慢,速度和程序大小與編譯軟體有關。高級語言接近演算法語言,易學、易掌握,級語言為程序員提供了結構化程序設計的環境和工具,使得設計出來的程序可讀性好,可維護性強,可靠性高;高級語言遠離機器語言,與具體的計算機硬體關系不大,可移植性好,重用率高;由於把繁雜瑣碎的事務交給了編譯程序去做,所以自動化程度高,開發周期短,且程序員得到解脫,可以集中時間和精力去從事對於他們來說更為重要的創造性勞動,以提高程序的質量。
高級語言的分類
按轉換方式可分為兩類:1、編譯型語言;2、解釋型語言
編譯型語言:編譯性語言寫的程序在被執行之前,需要一個專門的編譯過程,把程序編譯成為機器語言的文件,比如exe文件,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件),因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程序執行效率高。解釋型語言:解釋性語言的程序不需要編譯,在運行程序的時候才翻譯,每個語句都是執行的時候才翻譯。這樣解釋性語言每執行一次就需要逐行翻譯一次,效率比較低。 現代解釋性語言通常把源程序編譯成中間代碼,然後用解釋器把中間代碼一條條翻譯成目標機器代碼,一條條執行。 關於腳本語言: 腳本語言是一種解釋性的語言,腳本語言是為了縮短傳統的編寫-編譯-鏈接-運行(edit-compile-link-run)過程而創建的計算機編程語言。腳本語言一般都 有相應的腳本引擎來解釋執行。 他們一般需要解釋器才能運行。一個腳本通常是解釋運行而非編譯。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程序員快速完成程序的編寫工作。而宏語言則可視為腳本語言的分支,兩者也有實質上的相同之處。腳本語言一般都是以文本形式存在,類似於一種命令。
解釋性語言:Java、Java、Perl、Python、Ruby、MATLAB 等。 編譯性語言: C/C++、Pascal/Object Pascal(Delphi) 腳本語言:Python、Java,ASP,PHP,Perl等
解釋性語言:Java、Java、Perl、Python、Ruby、MATLAB 等。 編譯性語言: C/C++、Pascal/Object Pascal(Delphi) 腳本語言:Python、Java,ASP,PHP,Perl等
按照客觀系統的描述可分為兩類:1.面向過程語言; 2.面向對象語言
面向過程語言:面向過程語言是以過程或函數為基礎的,這種語言對底層硬體,內存等操作比較方便,但是寫代碼和調試維護等會很麻煩。例如:c語言面向對象語言:面向對象語言(Object-Oriented Language)是一類以對象作為基本程序結構單位的程序設計語言,指用於描述的設計是以對象為核心,而對象是程序運行時刻的基本成分。語言中提供了類、繼承等成分。 面向對象語言的發展有兩個方向:一種是純面向對象語言,如Smalltalk、EIFFEL等;另一種是混合型面向對象語言,即在過程式語言及其它語言中加入類、繼承等成分,如C++、Objective-C等
按照編程范型可分為:1.命令式語言; 2.函數式語言; 3.邏輯式語言; 4.面向對象語言
命令式語言: 命令式程序設計語言是基於動作的語言,以馮諾依曼計算機體系結構為背景。機器語言及匯編語言是最早的命令式語言。在這種語言中,計算機被看做是動作的序列,程序就是用語言提供的操作命令書寫的一個操作序列。用命令式程序設計語言編寫程序,就是描述解題過程中每一步的過程,程序的運行過程就是問題的求解過程,因此也稱為過程式語言。Fortran、ALGOL、COBOL、C、Ada、Pascal等都是命令式程序設計語言。函數式語言: 函數式編程是種編程典範,它將電腦運算視為函數的計算。函數編程語言最重要的基礎是 λ 演算(lambda calculus)。而且λ演算的函數可以接受函數當作輸入(參數)和輸出(返回值)。和指令式編程相比,函數式編程強調函數的計算比指令的執行重要。和過程化編程相比,函數式編程里,函數的計算可隨時調用。這種語言的語義基礎是基於數學函數概念的值映射的λ運算元可計算模型。這種語言非常適合於進行人工智慧等工作的計算。典型的函數式語言如 Lisp、Haskell、ML、Scheme 、F#等。邏輯式語言: 這種語言的語義基礎是基於一組已知規則的形式邏輯系統。這種語言主要用在專家系統的實現中。最著名的邏輯式語言是 Prolog。面向對象語言: 現代語言中的大多數都提供面向對象的支持,但有些語言是直接建立在面向對象基本模型上的,語言的語法形式的語義就是基本對象操作。主要的純面向對象語言是 Smalltalk。
㈩ python特點和優點
python作為一門高級編程語言,它的誕生雖然很偶然,但是它得到程序員的喜愛卻是必然之路,Python入門簡單,相比於其他語言,初學者很容易入門。除此之外,Python還具有以下優點:
1. 簡單:Python奉行簡潔主義,易於讀寫,它使你能夠專注於解決問題而不是去搞明白語言本身。
2. 免費:Python是開源軟體。這意味著你不用花一分錢便能復制、閱讀、改動它,這也是Python越來越優秀的原因——它是由一群希望看到一個更加優秀的Python的人創造並經常改進著的。
3. 兼容性:Python兼容眾多平台,所以開發者不會遇到使用其他語言時常會遇到的困擾。
4. 面向對象:Python既支持面向過程,也支持面向對象編程。在面向過程編程中,程序員復用代碼,在面向對象編程中,使用基於數據和函數的對象。
5. 豐富的庫:Python標准庫確實很龐大。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。
6. 規范的代碼:Python採用強制縮進的方式使得代碼具有極佳的可讀性。
7. 可擴展性和可嵌入性。如果你需要你的一段關鍵代碼運行得更快或者希望某些演算法不公開,你可以把你的部分程序用C或C++編寫,然後在你的Python程序中使用它們。你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。