⑴ 各種程序設計語言的區別
幾種程序語言的區別:java語言、python語言、C語言、PHP語言。
1、java語言:
PHP巨大的生態系統使得在未來幾年裡全世界需要大量的開發人員對其提供支持。排名前三的內容管理系統-WordPress、Drupal和Joomla都是使用PHP構建的,而且迄今大概有80%的網站運行在PHP之上。
⑵ 為什麼開發出了這么多的編程語言
C#與JAVA的相同之處:由於C#與JAVA都是基於C++發展起來的,因此二者之間具有很多相似之處,具體如下:
1、C#和JAVA語言的編譯結果是獨立於計算機和編程語言的,可執行文件可以在受管理的執行
環境中執行;
2、C#和JAVA語言都是採用了自動的垃圾回收機制;
3、C#和JAVA語言都取消了指針操作;
4、C#和JAVA語言都沒有頭文件;
5、C#和JAVA語言都只支持單重繼承,要實現與多重繼承類似的功能,必須通過介面來實現;
6、類都是從Object類派生而來,類的對象通過關鍵字new生成;
7、C#和JAVA語言都支持線程;
8、C#和JAVA語言都沒有全局變數和全局函數,所有的變數和函數都屬於某個類所有;
9、C#和JAVA語言都支持對數組和字元串邊界的嚴格檢查,不會出現邊界溢出的情況;
10、C#和JAVA語言都使用「.」操作符,不再使用「->」和「::」操作符;
11、C#和JAVA語言都將null和bool作為關鍵字;
12、C#和JAVA語言中所有的值都必須先初始化後才能使用;
13、C#和JAVA語言中的if語句都不允許採用整數作為判斷條件;
14、C#和JAVA語言中的try語句塊都可以後接finally語句塊。
C#與JAVA的不同之處:
盡管C#和JAVA有很多相同之處,但是由於二者是兩家不同公司開發的高級程序設計語言,它們又相互獨立,
自成體系,各自具有一些自己特有的特點,下面將C#與JAVA之間的不同之處如下:
1、屬性
對於那些經常使用快速開發工具,如Delphi或者Visual Basic的開發人員來說,屬性是一個非常熟悉的概念。
一般來說,通過getXXX可以讀取屬性的值,而通過setXXX可以設置屬性的值。
JAVA中比較常見的屬性操作語句: foo.setSize(foo.getSize()+1); label.getFont().setBold(true);
c#中比較常見的屬性操作語句: foo.size++; label.font.bold=true;
很明顯,上述的屬性設置方式較JAVA來說更為簡潔,可主讀性也更強。這充分體現了C#簡單的特點。
JAVA對於屬性的定義:public int getSize(){ return size; } public void setSize(int value){ size=value; }
c#對於屬性的定義進行了簡化:public int Size{ get{ return size; } set{size=value; }}
2、index
C#提供index來給對象加上索引的功能,從而用與處理數組類似的方式來處理對象,JAVA語言則不支持index
C#中定義index的典型方式如下:
public Story this[int index]
{
get{return stories[index]; }
set{
if(value!=null){
stories[index]=value
}
}
3、delegate :可以認為是一種類型安全、面向對象的函數指針。
C#使有delegate可以通過一個名字訪問不同的函數,它實現和JAVA中的interface類似的功能,但是它比interface更為好用。
4、event
C#提供對event的直接支持,它通過delegate和event關鍵字實現對事件的處理。event關鍵字隱藏所有delegate方法,運算符「+=」和「-+」允許程序員自由加入或者刪除時間處理程序。
5、enum:枚舉用於指定一系列的對象。
C#通過如下語句來定義和使用枚舉:
定義:public enum Direction{North,East,West,South};
使用:Direction wall=Direction.North;
JAVA不直接支持枚舉,如果要實現和C#相類似的功能,必須先定義一個類
public class Direction{
public final static int NORTH=1;
public final static int EAST=2;
public final static int WEST=3;
public final static int SOUTH=4; }
在定義了Direction類後,JAVA可以通過引用類中的值來使用枚舉:
int wall= Direction.NOTRH;
6、foreach語句
C#提供了標準的for循環,同時還提供了foreach語句(從VB中引入)來循環處理集合中的元素。
JAVA遍歷集合中的所有元素的典型處理方式如下:
while(!collection.isEmpty())
{
Object o=collection.get();
connection.next();
…
}
C#遍歷集合中的所有元素:foreach(object o in collection){…}
7、統一數據類型:
大多數的高級程序設計語言都有基本數據類型,如整型、浮點類型等。同時,為了更好地滿足實際的需要,對不同的數據類型有不同的處理方式,顯然,如果能夠對簡單數據類型的處理和對復雜數據類型的處理結合在一起,並用一致的方式加以處理的話,無疑會大大提升應用程序設計的效率,增強程序設計的靈活性。
JAVA語言在處理基本數據類型的時候也採取分別處理的策略,但是在基本數據類型的基礎上提供了一系列封裝這些基本數據類型的類,例如:整型(int)被類Integer所封裝,雙精度浮點(double)被類Double封裝。
C#提供了一種和JAVA不同的方式來實現數據類型的統一。事實上,在c#中,即使是int這樣的簡單數據類型在C#內部也是通過一個結構體Int32來實現的,在C#中,可以這樣認為,int只是結構體Int32的一個別名。由於C#中的結構體也繼承自類Object,這樣,Object類中定義的方法,各個結構體也擁有,於是,在C#中可以通過如下的方式來操作整數:int I=5; System.Console.WriteLine(i.ToString());
8、操作符重載
通過操作符重載可以用一種比較自然的方式來操縱各種數據類型,從而大大提升程序的可讀性和靈活性。C#中的「==」操作符在Object類中進行了定義,在Object中定義的==操作符通過比較兩個值的引用來獲得最後的結果。如果使有和集合相關的類,則必須在這樣的類中實現ICompar介面,這個介面中定義了一個方法CompareTo,該方法返回兩個對象的比較結果,在此基礎上,可以進一步定義各個實現比較的操作符,如
「>」、「<」、「>=」、「<=」等。事實上,數字類型(int、long等)可以直接使用這些比較操作符,它們的內部都實現了ICompare介面。
9、多態性
虛似方法提供了多態性的技持。多態意味著派生類可以定義一個和基類中同名的方法。盡管JAVA和C#都支持多態性,但是它們的具體實現方式還是有一定的差別。
在JAVA語言中,默認情況下,基類的對象可以直接調用派生類中的虛似方法,在C#語言中,基類要調用派生類中的虛似方法必須通過virtual關鍵字來實現。同時,在C#語言中,一個方法要重載基類中的同名方法,還必須通過關鍵字override來實現。在C#中實現多態的典型程序如下:
Class B{ public virtual void foo{}}
Class D:B{ public overried void foo(){}}
以上只是簡單地比較了C#和JAVA之間的異同,事實上,這二者之間的比較遠不止上面所介紹的內容,要學好這兩種語言,需要經過大量的實踐工作,在實踐中區分開兩種語言
⑶ 為什麼電腦會分不同的編程語言
首先你理解的「編程語言」只是一種抽象化的描述語言,用來將人類的思維轉化為邏輯的一種表述方式。也就是我們所稱的「高級語言」。
計算機只認識0和1,由0和1組成的語言叫做「機器語言」,是一種用來控制計算機各個部件工作的邏輯控制代碼。也叫做「低級語言」。
而你所認為的「編程語言」實際上就是將一種人類思維能夠描述出來的邏輯,通過對應的方式轉換為「機器語言」的過程。
其次,你問到「電腦系統里自帶的程序」這個問題還是要分幾步來解釋:
首先,你認為的「電腦系統」實際上是「操作系統」,這是一種用來管理計算機硬體資源和磁碟數據的一種「程序」,簡單的可以理解為操作系統是一個綜合商場,而運行在操作系統裡面的程序就是商場裡面一個一個的店鋪和櫃台,商場負責對店鋪和櫃台進行管理,同時維護水、電、中央空調之類的服務設施,給每個店鋪提供服務保障,而來來往往的顧客就是計算機中的數據。
操作系統的最底層是直接採用機器碼生成的,當然,現在的操作系統都是通過在以前的簡單的操作系統上生成的編譯環境,來生成更新的、功能更強的新版本的操作系統。這個並不存在「雞和蛋」的悖論的問題。
其次,「電腦系統里自帶的程序」中的「自帶程序」同操作系統一樣,也是由相應的「高級語言」編譯成「機器語言」後,通過「操作系統」的協調,對計算機資源進行利用的一個過程。
所以,這個過程就是 「機器語言」生成操作系統核心代碼 => 「高級語言」編譯器生成對應的應用軟體
⑷ 為什麼現在會有這么多種編程語言
http://blog.jobbole.com/72508/
建議樓主看看這個,裡面講解了:
為什麼需要更多的編程語言
編程語言是由一些人為另外一些人創造的。因此,它們承載著創造者的文化印記,有些文化印記不為其他群體的工程師們喜愛,因此他們轉而創造出了自己的版本。這在計算機科學歷史中無數次上演,導致產生了許多流行語言的方言。最明顯例子就是首個阿拉伯語編程語言。去年有篇關於Ramsey Nasser的文章,他創造了第一個表情文字編程語言:
Nasser評論到:「我們使用的工具承載著它們創造者的文化設想。」當Nasser創造قلب的時候,他在將true和false翻譯成阿拉伯語時遇到了困難。最終他使用了correct和incorrect這兩個詞,雖然兩者的概念並不完全吻合,但是他說這最終演變成了一場他不得不和他父母以及朋友進行的奇妙對話。Nasser旨在創造編碼的通用性:「Emojinal意在甩掉文化包袱。」
這是一個古老格言的另一種版本:你說的語言改變了你思考的方式。有些語言有助於某些類型的思考;而有些有助於其他類型的。正如我們在四月份寫下的文字所說:
「語言不僅是針對不同工作的不同工具,它們還是可以描繪你思考編程的技術。」Richard Pattis說。他是加州大學的信息學高級講師,他於1981年發明了Karel教育編程語言。Pattis建議多才多藝的程序員要擴展思維的話,最好學習不同編程範式的語言,從面向對象語言(譬如C++/JAVA),到函數式語言(譬如ML和Haskell),到腳本語言(譬如Lisp和Python),到邏輯基礎語言(譬如Prolog),到低級語言(譬如C,Java虛擬機或者機器語言)。目標不是為了熟練運用這些語言,而是能從不同的角度來思考解決問題。好的程序員不僅僅學習如何編程,還要學習核心概念,用其武裝自己的大腦,從而寫出高效的代碼來解決問題。
⑸ 為什麼有那麼多種程序語言,只有一種的話學起來不是很方便嗎
呵呵,這個問題怎麼說呢,這么說,世界上為什麼有那麼多種語言和文字,為什麼有方言呢,就是為了方便在某一地區使用,程序語言也是一樣的,每種程序語言都是有自己的特長之處的,用在自己的特長之處是非常方便的,就好比到了美國你說美國英語一樣,如果你說澳大利亞英語,可能他們理解起來要很費勁,你也得半天解釋~
⑹ 為什麼搞那麼多種編程語言出來一種不就行了么太復雜了.
因為不是一個人搞的呀,計算機不是一個人的天下,你搞一種語言,我搞一語言,一般不會你的什麼都不如我的,往往是各有千秋,因此也就蘿卜白菜,沒有哪種語言被遺棄。
當然,另外一方面就是在於各有千秋上,盡管現在的語言都力求大而全,但是不同語言適用的場合還是不一樣的。比如C、PASCAL以及他們的衍生語言,適合替代匯編進行底層開發,做什麼加密/解密、硬體驅動、網路處理、圖像運算的就很合適,而用來寫動態網頁、資料庫管理就有些力不從心。而ASP、PHP、JSP這樣的工具開發動態網頁太方便了,天生就是做這個的,用這些語言的數組、哈希等結構,以及正在表達式處理文本,良好的資料庫鏈接操作,在動態網頁處理上讓你真正明白什麼叫做得心應手。資料庫應用軟體的開發,除了用PHP等開發WEB形式應用以外,FOXPRO、ACCESS等開發小型應用,INFORMIX 4GL、ORCAL C等編寫程序,比C++、VB順手得多。