偽代碼php
⑴ php,java,Python,C,C++ 這幾種編程語言都各有什麼特點或優點
來自:http://blog.csdn.net/singit/article/details/54919132
以下是其中提及的各種語言的優點,文章中還列舉了缺點分析。
(1)PHP的優點:
1. 跨平台,性能優越,跟linux/Unix結合別跟Windows結合性能強45%,開發成本低,
PHP最經典的組合就是:Linux + Apache + Mysql + PHP。非常適合開發中小型的web應用,因為上手容易,所以開發的速度比較快。而且所有的軟體都是開源免費的,可以減少投入。
比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)結合,或者數據應用夠大可以考慮換 PostgreSQL或者Oracle,支持N種資料庫。(N >= 10)
2. 語法簡單,入門快,如果有其它語言基礎的程序員二周左右的時間基本可以入門,並且跟ASP有部分類似。有成熟的開發工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。
3. 目前主流技術都支持,比如WebService、Ajax、XML等等,足夠應用。
4. 有比較完整的支持,比如使用ADODB或者PEAR::DB做資料庫抽象層,用Smarty或者smart template做模板層,如果是PHP 5.1的話,還能夠使用PDO(PHP Data Object)來訪問資料庫。
5. 有很多成熟的框架,比如支持MVC的框架:phpMVC,支持類似ASP.NET的事件驅動的框架:Prado,支持類似Ruby On Rails的快速開發的框架:Cake等等,足夠滿足你的應用需求。
6. PHP 5已經有成熟的面向對象體系,能夠適應基本的面向對象要求。適合開發大型項目。
7. 有成熟的社區來支持PHP的開發。
8. 目前已經很多大型應用都是使用PHP,比如淘寶網、Yahoo、163、Sina等等大型門戶,很多選用PHP來作為他們的開發語言,所以大型門戶都能夠選用它,我想足夠能夠你的使用了。(據了解現在內部都在逐漸轉向JAVA)
9. 有很多開源的框架或開源的系統可以使用,比如比較知名的開源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,開源論壇有Discuz!、Phpwind等,開源博客 WordPress,開源網店系統如Ecshop、ShopEx等,開源的SNS系統如UCHome、ThinkSNS等。
PHP是解釋性的腳本語言,寫完代碼以後即可以執行,不像c,java,c++等語言還需要去編譯執行,相對來說比較節省時間。
10.相對來說,PHP程序員的薪水的平均工資要比c,c++,java程序員的平均工資要低一些,特別是對於中小型企業來說可以節約一些成本。
11.配置及部署相對簡單一些,對比JAVA開發來說,JAVA開發的配置就復雜多了,什麼Structs、Spring、Hibernate、Tomcat等等很多地方都需要配置,甚至你在程序中每寫一個SQL語句都需要先在Hibernate中配置一下,有時重新部署一個class文件或jar文件還可能需要重啟Web伺服器(Tomcat或Resin或其它的Web伺服器)使新部署的庫文件生效。PHP開發中主要是PHP自身的配置文件及Web伺服器的配置(如Apache或Nginx或Lighttpd等),相對於JAVA來說還是簡單一些,而且新修改了文件以後不需要重新啟動Web即可以立即生效。
12.有很多開源的框架或開源的系統可以使用,比如比較知名的開源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,開源論壇有Discuz!、Phpwind等,開源博客WordPress,開源網店系統如Ecshop、ShopEx等,開源的SNS系統如UCHome、ThinkSNS等。
(2)JAVA的優點:
1.簡單性
2.面向對象性(面向對象的程度可以達到95%)
3.健壯性
4.跨平台性
5.高性能(自動垃圾回收機制)
6.多線程
7.動態性
8.安全性
(3)Python的優點:
1.簡單————Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格!Python的這種偽代碼本質是它最大的優點之一。它使你能夠專注於解決問題而不是去搞明白語言本身。
2.易學————就如同你即將看到的一樣,Python極其容易上手。前面已經提到了,Python有極其簡單的語法。
3.免費、開源————Python是FLOSS(自由/開放源碼軟體)之一。簡單地說,你可以自由地發布這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS是基於一個團體分享知識的概念。這是為什麼Python如此優秀的原因之一——它是由一群希望看到一個更加優秀的Python的人創造並經常改進著的。
4.高層語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節。
5.可移植性————由於它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。如果你小心地避免使用依賴於系統的特性,那麼你的所有Python程序無需修改就可以在下述任何平台上面運行。這些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至還有PocketPC、Symbian以及Google基於linux開發的Android平台!
6.解釋性————這一點需要一些解釋。一個用編譯性語言比如C或C++寫的程序可以從源文件(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。當你運行你的程序的時候,連接/轉載器軟體把你的程序從硬碟復制到內存中並且運行。而Python語言寫的程序不需要編譯成二進制代碼。你可以直接從源代碼 運行 程序。在計算機內部,Python解釋器把源代碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。事實上,由於你不再需要擔心如何編譯程序,如何確保連接轉載正確的庫等等,所有這一切使得使用Python更加簡單。由於你只需要把你的Python程序拷貝到另外一台計算機上,它就可以工作了,這也使得你的Python程序更加易於移植。
7.面向對象————Python既支持面向過程的編程也支持面向對象的編程。在「面向過程」的語言中,程序是由過程或僅僅是可重用代碼的函數構建起來的。在「面向對象」的語言中,程序是由數據和功能組合而成的對象構建起來的。與其他主要的語言如C++和Java相比,Python以一種非常強大又簡單的方式實現面向對象編程。
8.可擴展性————如果你需要你的一段關鍵代碼運行得更快或者希望某些演算法不公開,你可以把你的部分程序用C或C++編寫,然後在你的Python程序中使用它們。
9.可嵌入性————你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
10.豐富的庫————Python標准庫確實很龐大。它可以幫助你處理各種工作,包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。記住,只要安裝了Python,所有這些功能都是可用的。這被稱作Python的「功能齊全」理念。除了標准庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。
概括————Python確實是一種十分精彩又強大的語言。它合理地結合了高性能與使得編寫程序簡單有趣的特色。
規范的代碼————Python採用強制縮進的方式使得代碼具有極佳的可讀性。
(4)C語言的優點:
1.簡潔緊湊、靈活方便
2.運算符豐富
3.數據結構豐富
4. C是結構式語言
5. C語法限制不太嚴格,程序設計自由度大
6. C語言允許直接訪問物理地址,可以直接對硬體進行操作
7. C語言程序生成代碼質量高,程序執行效率高
8. C語言適用范圍大,可移植性好
9. C語言有一個突出的優點就是適合於多種操作系統,如DOS、UNIX,也適用於多種機型
10.有效地將一個較復雜的程序系統設計任務分解成許多易於控制和處理的子任務,便於開發和維護
(5)C++的優點:
1.可擴展性強
2.高效 簡潔 快速
3.可移植性
4.面向對象的特性
5.強大而靈活的表達能力和不輸於C的效率
6.支持硬體開發
7.程序模塊間的關系更為簡單,程序模塊的獨立性、數據的安全性就有了良好的保障
8.通過繼承與多態性,可以大大提高程序的可重用性,使得軟體的開發和維護都更為方便
⑵ php oop的作用
oop是面向對象編程(設計) 面向對象程序設計(英語:Object Oriented Programming,縮寫:OOP),指一種程序設計范型,同時也是一種程序開發的方法論。它將對象作為程序的基本單元,將程序和數據封裝其中,以提高軟體的重用性、靈活性和擴展性。基本理論
一項由 Deborah J. Armstrong 進行的長達40年之久的計算機著作調查顯示出了一系列面向對象程序設計的基本理論。它們是:
類
類(Class)定義了一件事物的抽象特點。通常來說,類定義了事物的屬性和它可以做到的(它的行為)。舉例來說,"狗"這個類會包含狗的一切基礎特徵,例如它的孕育、毛皮顏色和吠叫的能力。類可以為程序提供模版和結構。一個類的方法和屬性被稱為"成員"。 我們來看一段偽代碼:
類狗 開始 私有成員: 孕育 毛皮顏色 公有成員: 吠叫() 結束
在這串代碼中,我們聲明了一個類,這個類具有一些狗的基本特徵。關於公有成員和私有成員,請參見下面的繼承性一節。
對象
對象(Object)是類的實例。例如,"狗"這個類列舉狗的特點,從而使這個類定義了世界上所有的狗。而萊絲這個對象則是一條具體的狗,它的屬性也是具體的。狗有皮毛顏色,而萊絲的皮毛顏色是棕白色的。因此,萊絲就是狗這個類的一個實例。一個具體對象屬性的值被稱作它的"狀態"。
假設我們已經在上面定義了狗這個類,我們就可以用這個類來定義對象:
定義萊絲是狗 萊絲.毛皮顏色:=棕白色 萊絲.吠叫()
我們無法讓狗這個類去吠叫,但是我們可以讓對象"萊絲"去吠叫,正如狗可以吠叫,但沒有具體的狗就無法吠叫。
方法
方法(Method)是一個類能做的事情,但方法並沒有去做這件事。作為一條狗,萊絲是會吠叫的,因此"吠叫()"就是它的一個方法。與此同時,它可能還會有其它方法,例如"坐下()",或者"吃()"。 對一個具體對象的方法進行調用並不影響其它對象,正如所有的狗都會叫,但是你讓一條狗叫不代表所有的狗都叫。 如下例:
定義萊絲是狗 定義泰爾是狗 萊絲.吠叫()
則泰爾是不會吠叫的,因為這里的吠叫只是對對象"萊絲"進行的。
消息傳遞機制
一個對象通過接受消息、處理消息、傳出消息或使用其他類的方法來實現一定功能,這叫做消息傳遞機制(Message Passing)。
繼承性
繼承性(Inheritance)是指,在某種情況下,一個類會有"子類"。子類比原本的類(稱為父類)要更加具體化,例如,"狗"這個類可能會有它的子類"牧羊犬"和"奇瓦瓦犬"。在這種情況下,"萊絲"可能就是牧羊犬的一個實例。子類會繼承父類的屬性和行為,並且也可包含它們自己的。我們假設"狗"這個類有一個方法叫做"吠叫()"和一個屬性叫做"毛皮顏色"。它的子類(前例中的牧羊犬和奇瓦瓦犬)會繼承這些成員。這意味著程序員只需要將相同的代碼寫一次。 在偽代碼中我們可以這樣寫:
類牧羊犬:繼承狗 定義萊絲是牧羊犬 萊絲.吠叫() /* 注意這里調用的是狗這個類的吠叫屬性。 */
回到前面的例子,"牧羊犬"這個類可以繼承"毛皮顏色"這個屬性,並指定其為棕白色。而"奇瓦瓦犬"則可以繼承"吠叫()"這個方法,並指定它的音調高於平常。子類也可以加入新的成員,例如,"奇瓦瓦犬"這個類可以加入一個方法叫做"顫抖()"。設若用"牧羊犬"這個類定義了一個實例"萊絲",那麼萊絲就不會顫抖,因為這個方法是屬於奇瓦瓦犬的,而非牧羊犬。事實上,我們可以把繼承理解為"是"。例如,萊絲"是"牧羊犬,牧羊犬"是"狗。因此,萊絲既繼承了牧羊犬的屬性,又繼承了狗的屬性。 我們來看偽代碼:
類奇瓦瓦犬:繼承狗 開始 公有成員: 顫抖() 結束 類牧羊犬:繼承狗 定義萊絲是牧羊犬 萊絲.顫抖() /* 錯誤:顫抖是奇瓦瓦犬的成員方法。 */
當一個類從多個父類繼承時,我們稱之為"多重繼承"。多重繼承並不總是被支持的,因為它很難理解,又很難被好好使用。
封裝性
具備封裝性(Encapsulation)的面向對象程序設計隱藏了某一方法的具體執行步驟,取而代之的是通過消息傳遞機制傳送消息給它。因此,舉例來說,"狗"這個類有"吠叫()"的方法,這一方法定義了狗具體該通過什麼方法吠叫。但是,萊絲的朋友蒂米並不需要知道它到底如何吠叫。 從實例來看:
/* 一個面向過程的程序會這樣寫: */
定義萊絲 萊絲.設置音調(5) 萊絲.吸氣() 萊絲.吐氣() /* 而當狗的吠叫被封裝到類中,任何人都可以簡單地使用: */ 定義萊絲是狗 萊絲.吠叫()
封裝是通過限制只有特定類的實例可以訪問這一特定類的成員,而它們通常利用介面實現消息的傳入傳出。舉個例子,介面能確保幼犬這一特徵只能被賦予狗這一類。通常來說,成員會依它們的訪問許可權被分為3種:公有成員、私有成員以及保護成員。有些語言更進一步:Java可以限制同一包內不同類的訪問;C#和VB.NET保留了為類的成員聚集准備的關鍵字:internal(C#)和Friend(VB.NET);Eiffel語言則可以讓用戶指定哪個類可以訪問所有成員。
多態性
多態性(Polymorphism)指方法在不同的類中調用可以實現的不同結果。因此,2個甚至更多的類可以對同一消息作出不同的反應。舉例來說,狗和雞都有"叫()"這一方法,但是調用狗的"叫()",狗會吠叫;調用雞的"叫()",雞則會啼叫。 我們將它體現在偽代碼上:
類狗 開始 公有成員: 叫() 開始 吠叫() 結束 結束 類雞 開始 公有成員: 叫() 開始 啼叫() 結束 結束 定義萊絲是狗 定義魯斯特是雞 萊絲.叫() 魯斯特.叫()
這樣,同樣是叫,萊絲和魯斯特做出的反應將大不相同。多態性的概念可以用在運算符重載上,本文不再贅述。
抽象性
抽象(Abstraction)是簡化復雜的現實問題的途徑,它可以為具體問題找到最恰當的類定義,並且可以在最恰當的繼承級別解釋問題。舉例說明,萊絲在大多數時候都被當作一條狗,但是如果想要讓它做牧羊犬做的事,你完全可以調用牧羊犬的方法。如果狗這個類還有動物的父類,那麼你完全可以視萊絲為一個動物。
OOP名詞釋意
編程范型 對於OOP的准確定義及其本意存在著不少爭論。
通常,OOP被理解為一種將程序分解為封裝數據及相關操作的模塊而進行的編程方式。有別於其它編程方式,OOP中的與某數據類型相關的一系列操作都被有機地封裝到該數據類型當中,而非散放於其外,因而OOP中的數據類型不僅有著狀態,還有著相關的行為。OOP理論,及與之同名的OOP實踐相結合創造出了新的一個編程架構;OOP思想被廣泛認為是非常有用的,以致一套新的編程范型被創造了出來。(其它的編程范型例如函數式編程或過程序編程專注於程序運行的過程,而邏輯編程專注於引發程序代碼執行的斷言)
對面向模擬系統的語言(如:SIMULA 67)的研究及對高可靠性系統架構(如:高性能操作系統和CPU的架構)的研究最終導致了OOP的誕生。
一些專家認為Object-Orientation中的Object的本意來自於其在語法領域的意義,即應將其理解為"賓語"或"操作對象",而非一般的"對象"或"對象"。我們所見到的軟體的運行請求通常都是Subject-Oriented的,即"面向主語的"或"面向操作者的",然而這樣將使得對操作者對象的設計變得困難而復雜。有鑒於此,部分研究人員開始了對"面向操作對象"的思考。這又一次產生了新的編程范型,這是前邊提到的"面向操作者"的思考模式的一項革新。
依照"面向操作對象"的原則,在程序語句中的動詞應該被劃分到操作對象的類型之中,而與該動詞請求相關的邏輯關系也就因此將在操作對象中處理。以下是採用"面向操作對象"的方式翻譯"面向操作者"的一些例子:
面向操作者:銷售系統保存交易記錄。
面向操作對象:交易記錄在接受到銷售系統的一條請求消息後將自身保存。
面向操作者:銷售系統列印收據。
面向操作對象:收據在接收到銷售系統的一條請求消息後將自身列印。
面向對象的語言
支持部分或絕大部分面向對象特性的語言即可稱為基於對象的或面向對象的語言。早期,完全面向對象的語言主要包括Smalltalk等語言,目前較為流行的語言中有Java、C#、Eiffel等。隨著軟體工業的發展,比較早的面向過程的語言在近些年的發展中也紛紛吸收了許多面向對象的概念,比如C->C++,BASIC->Visual Basic->Visual Basic .NET,Pascal->Object Pascal,Ada->Ada95。
歷史
對象和實例的最早概念出自麻省理工大學的PDP-1系統。這一系統大概是capability based architecture的最早示例。另一個早期的事例是1963年Ivan Sutherland開發的Sketchpad;但是,這並非是一種編程思想,而只是一個程序。
對象最早在20世紀60年代的Simula 67中被引入程序設計中。Simula這一語言是Ole-Johan Dahl和Kristen Nygaard在奧斯陸計算機中心為模擬環境而設計的。(據說,他們是為了模擬船隻而設計的這種語言,並且對不同船隻間屬性的相互影響感興趣。他們將不同的船隻歸納為不同的類,而每一個對象,基於它的類,可以定義它自己的屬性和行為。)這種辦法是分析式程序的最早概念體現。在分析式程序中,我們將真實世界的對象映射到抽象的對象,這叫做"模擬"。Simula不僅引入了"類"的概念,還應用了實例這一思想--這可能是這些概念的最早應用。20世紀70年代施樂PARC研究所發明的Smalltalk語言將面向對象程序設計的概念定義為,在基礎運算中,對對象和消息的廣泛應用。Smalltalk的創建者深受Simula 67的主要思想影響,但Smalltalk中的對象是完全動態的--它們可以被創建、修改並銷毀,這與Simula中的靜態對象有所區別。此外,Smalltalk還引入了繼承性的思想,它因此一舉超越了不可創建實例的程序設計模型和不具備繼承性的Simula。
此外,Simula 67的思想亦被應用在許多不同的語言,如Lisp、Pascal。
面向對象程序設計在80年代成為了一種主導思想,這主要應歸功於C++--C語言的擴充版。在圖形用戶界面(GUI)日漸崛起的情況下,面向對象程序設計很好地適應了潮流。GUI和面向對象程序設計的緊密關聯在Mac OS X中可見一斑。Mac OS X是由面向對象C語言寫成的,這一語言是一個仿Smalltalk的C語言擴充版。面向對象程序設計的思想也使事件處理式的程序設計更加廣泛被應用(雖然這一概念並非僅存在於面向對象程序設計)。一種說法是,GUI的引入極大地推動了面向對象程序設計的發展。
在ETH Zürich(英文),Niklaus Wirth 和他的同事們對抽象數據和模塊化程序設計進行了調查。Mula-2將這些都包括了進去,而Oberon則包括了一種特殊的面向對象方法--不同於Smalltalk與C++。
面向對象的特性也被加入了當時較為流行的語言:Ada、BASIC、Lisp、Fortran、Pascal以及種種。由於這些語言最初並沒有面向對象的設計,故而這種糅合常常會導致兼容性和維護性的問題。與之相反的是,"純正的"面向對象語言卻缺乏一些程序員們賴以生存的特性。在這一大環境下,開發新的語言成為了當務之急。作為先行者,Eiffel成功地解決了這些問題,並成為了當時較受歡迎的語言。在過去的幾年中,Java語言成為了廣為應用的語言,除了它與C和C++語法上的近似性。Java的可移植性是它的成功中不可磨滅的一步,因為這一特性,已吸引了龐大的程序員群的投入。
近日,一些既支持面向對象程序設計,又支持面向過程程序設計的語言悄然浮出水面。它們中的佼佼者有Python、Ruby等等.
正如面向過程程序設計使得結構化程序設計的技術得以提升,現代的面向對象程序設計方法使得對設計模式的用途、契約式設計和建模語言(如UML)技術也得到了一定提升。
腳本中的OOP
近年來,面向過程程序設計越發流行於腳本語言。Python和Ruby是建立在OOP原理的腳本語言,Perl和PHP亦分別在Perl 5和PHP 4時加入面向過程特性。
⑶ php如何實現按鈕事件過後保存變數值
可以把function處理過的值存入session,頁面刷新後從session中讀入處理過的值,就可以了.
從session讀入值前先判斷一下session里有沒有值,如果沒有,用變數最初的值,如果有,就用session中的值.
偽代碼示例如下
請將 變數名 替換為你的真實變數名, 變數最初的值 替換為你的真實的變數最初的值, 你的變數 替換為你的真實變數
⑷ php程序 可寫出實現方案,偽代碼
先找出最大的, 然後刪掉這個元素, 再找剩下的最大的。
⑸ PHP中當使用switch case的時候,如果有幾個等價的case該怎麼寫
您好,可參考如下偽代碼:
switch($variate)
{
case value1:
case value2:
case value3:
//如果值是 value1-value3均執行這里的代碼
//todo...
break;
case other:
//todo
break;
}
⑹ app後端開發學PHP還是Python
app後端開發學Python。
Python的優點:
1、簡單易學
Python 編程語言最大的優點之一,是其具有偽代碼的特質,它可以讓我們在開發 Python 程序時,專注於解決問題,而不是搞明白語言本身。
2、開源
Python 是 FLOSS(自由/開源源碼軟體)之一,簡單地理解就是,用戶使用 Python 進行開發和發布自己編寫的程序,不需要支付任何費用,也不用擔心版權問題,即使作為商業用途,Python 也是免費的。
開源正在成為軟體行業的一種發展趨勢,現在有很多商業軟體公司都開始將自己的產品變成開源的(例如 Java)。也許,Python 的開源正是它如此優秀的原因之一,因為會有這么一群人,他們希望看到一個更加優秀的 Python,從而為了這個目標,不斷地對 Python 進行創造,不斷地改進。
3、高級語言
Python 是高級語言,因此當使用 Python 語言編寫程序時,我們無需再考慮一些底層細節方面的問題。例如,如何管理程序使用的內存等等。
4、解釋型語言
一個用編譯型語言(如 C 或 C++)寫的程序,可以從源文件轉換到一個計算機使用的語言。這個過程主要通過編譯器完成。當運行程序的時候,我們可以把程序從硬碟復制到內存中並且運行。
而 Python 語言寫的程序,則不需要編譯成二進制代碼,可以直接從源代碼運行程序。在計算機內部,由 Python 解釋器把源代碼轉換成位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言並運行。
事實上,由於不再擔心如何編譯程序,使得使用 Python 變得更加簡單,我們只需要將 Python 程序復制到另外一台計算機上,它就可以工作了。因此,Python 程序更加易於移植。
5、可移植性
由於 Python 是開源的,它已經被移植到許多平台上。如果能夠避免使用依賴系統的特性,那就意味著,所有 Python 程序都無需修改就可以在好多平台上運行,包括 Linux 、Windows、FreeBSD、Solaris 等等,甚至還有 PocketPC、Symbian 以及 Google 基於 Linux 開發的 Android 平台。
解釋型語言幾乎天生就是跨平台的。Python 作為一門解釋型的語言,它天生具有跨平台的特徵,只要為平台提供了相應的 Python 解釋器,Python 就可以在該平台上運行。
因此後端開發選擇Python較好。
更多Python知識,請關注Python視頻教程!!