編譯速度排名
你說的靜態庫和動態庫吧?編譯速度沒有太大的區別,在實際運行時,靜態庫運行較快,而動態庫內地函數由於在實際使用到時才載入到內存,所以運行較慢。動態庫的好處是只要保持介面不變,就可以在程序運行時進行動態庫的切換。
❷ 大家都用什麼C/C++編譯環境
了解的C/C++編譯器如下: x0dx0aGCC家族有 x0dx0aCygwin x0dx0aMingw32 x0dx0aDJGPP x0dx0aDev-C++(Mingw32) x0dx0a還有正宗的GNU GCC 2.95.5~3.0.0.4版本 x0dx0aMS家族有 x0dx0aMSC 5.0、6.0、7.0 x0dx0aMSQC 1.0、2.5 x0dx0aMSVC 1.0、4.2、6.0、7.0 x0dx0aBorland家族有 x0dx0aTC 1.0、2.0 x0dx0aTC++ 1.01、3.0 x0dx0aBC 3.0、3.1、4.0、4.5、5.0、5.02 x0dx0aBCB 3.0、5.0、6.0 x0dx0a其它有 x0dx0aIntel C/C++ 5.0 x0dx0aWatcom C/C++ 11.0、11.0c x0dx0aVectorC 1.3.3 x0dx0aIBM VisualAge for C++ x0dx0aDigitalMars C/C++ x0dx0aKAI C/C++ 4.03f for RedHat 7.2 x0dx0aLcc4.1 x0dx0aLCC-WIN32 2001-09-25~2002-04-28日版 x0dx0aSmall C x0dx0aCC386 x0dx0aPacific C x0dx0a另外還有C的解釋器 x0dx0aQuincy x0dx0aEic x0dx0aCINT x0dx0ax0dx0a上面提到的編譯器/解釋器,大部分我都使用過。現在固定使用VC7.0 Cygwin Mingw32 VectorC和LCC-WIN32這五種編譯器。 x0dx0ax0dx0a在GCC家族中GNU GCC是根本,其它的編譯器版本都是從它導出的。其中,Cygwin和Mingw32都是WIN32平台下的編譯器,DJGPP是DOS下的32位編譯器。大家所熟知的DEV-C++充其量只是GCC的一個外殼,它所自帶的編譯器就是Mingw32的一個版本。這些GCC的版本中,Cygwin是最大的,它與其說是一個編譯器,倒不如說是一套編程工具。它不僅有編譯器,還有其它很多的工具。其實,它就是一個UNIX系統在WIN32平台上的實現。實現了大多常用的UNIX工具,最近的版本中連Apache這樣的「工具」都集成進來的。不過,Cygwin雖然功能強大,但它卻不是很易用(和UNIX相似,熟悉UNIX的人用它可以很快上手),因為太多其它的工具分散了人們的注意力。相比之下Mingw32就要好用得多,它只有最基本的幾個編程工具(只可惜它不自帶GDB)。GCC中並不只是C/C++編譯器,其中還有很多其它的編譯器如JAVA,Fortran,ADA等。它是一個編譯器集合,不過有些編譯器只能在UNIX系統上用。MS家族的編譯器就不用說了,大家對它們都很熟悉。VC 7.0(VC.NET)是它的最新產品。Borland家族也不用說,大家也是耳熟能詳。最近它才推出了BCB 6.0。 x0dx0ax0dx0a其它的編譯器如:Intel C/C++大家一看名稱就知道是Intel的東西,它和VC6完全兼容,不過要掛在VC6下才能用。Watcom C/C++是早先編譯器四國大戰中的一員,原本是很不錯的東西,可惜戰略不對,現在已不見聲息了。倒是以它為基礎的一個OpenWatcom現在還在奮戰。VectorC是我近日才發現的一個好東東,它是個純C的編譯器。IBM的VisualAge for C++原本是IBM想用來淌C++編譯器這片渾水的東西,不過IBM的戰略改了,它就被放棄了。DigitalMars C/C++的前身的Symantec C++(它也是編譯器四國大戰中的一員),不過現在Symantec不做了,於是它的作者就把它改成了DigitalMars C/C++開放給大家使用。以上這些都是WIN32平台上的東西。KAI C/C++是個很強大的C/C++編譯器,它是個多平台的編譯器。不過現在被INTEL收購了,已經停止開發了。Lcc4.1是個純C的編譯器它是開放源代碼的。不過不怎麼好用。LCC-WIN32是一個在LCC基礎上開發的c語言的集成開發環境,很好用,而且有很詳細的資料,FREE!Pacific C是一個純DOS的C的集成開發環境,就不多說了。Small C CC386都是開放源代碼的編譯器,它們都很簡單,應用來給大家學習編譯器的。Quincy Eic CINT都是C的解釋器,是用來讓大家學習C語言的其中CINT的功能很強大,還支持一些C++的特性。 x0dx0a當然還有很多其它的編譯器,這里我給出的編譯器都是可以在WIN32或DOS平台上用的(除KAI外)。UNIX平台上的編譯器還是以GNU的為主,其它的我就不是很清楚了。 x0dx0ax0dx0a在以上的編譯器中,最特別的就是VectorC這個東西只支持純C。但它卻號稱是最快的編譯器,不過經過我的試驗,它的確在有些情況下強過其它編譯器很多!而且它還有個互動式的優化器,可以讓你直接看到C代碼對映的匯編代碼。Cygwin和Mingw32為一母所生,其運行效果相差不大。它們生成的代碼效率都很不錯,編譯的速度也很快,最值得一提的是它們對C++的特性的支持算是所有編譯器中最完全的,而且它們還支持C99的大部分特性。這一點很是不錯!大家對MS的VC已經很熟悉了,本不用我多說。不過在它的最新的產品VC7.0中,有很大的改進。它對C++的特性的支持比6.0有了很大的提高,是我所用的編譯器中是僅次於GCC的。而且它編譯出的程序,運行速度很快!僅有少數時候次於VectorC與GCC,其它情況都是最快的!其平均運行速度是最快的。對Borland的產品我也無需多說。它的TC2.0與BC3.1都是我最喜歡的東西。可是現在的BCB卻大不如前了,編譯的速度和VC6一樣慢!IDE還有較多的BUG。最令人想不通的是它生成的代碼的運行速度很慢,比LCC-WIN32還慢!它唯一值得一提的就是它的RAD做的比MS的好。Intel的編譯器大家可能不熟,它太貴了!還要有VC的支持,很不劃算,而且編譯速度比VC6還慢。不過它的代碼質量很不錯。DigitalMars C/C++沒有什麼亮點,編譯速度較快,代碼執行速度適中,對C++特性支持還算不錯。LCC-WIN32是個很不錯的集成開發環境,它只支持純C。它的編譯速度極快!代碼執行速度較慢。不過它的最大亮點在於它的IDE,在所有的FREE編程工具中,它的IDE是最專業的,有很強大的代碼分析,管理功能。而且它提供了大量的編程資料。 x0dx0a我曾對一些編譯器的代碼執行效率做過一些測試,以下是概況: x0dx0a1. VectorC、VC 7.0 (極快) x0dx0a2. Intel C/C++、VC 6.0、GCC (很快) x0dx0a3. DigitalMars C/C++ (一般) x0dx0a4. LCC-WIN32、BCB、BC5.02 (較慢) x0dx0a當然,我所做的測試比較片面。不過在很大程度上已能反映其大概狀況。
❸ 中國最快的巨型計算機是什麼運算速度多少
深騰6800超級計算機以每秒4.183萬億次的Linpack實際運算速度位居世界超級計算機TOP500排名的第14位(2003年11月16日公布排名輪穗手),效率達到78.5%,同時在中國軟體行業協會數學軟體分會2003年公開發布的中國高性能計算機TOP100排行榜中高居榜首(2003年11月8日公布臘嫌排名)。深騰6800整體為5萬億次面向網格的超級計算機系統,包括265個四路結點機,1060個主頻為1.3Ghz的安騰2處理晶元(其中1024個處理機用於計算),內存總容量為2.6TB,磁碟存儲總容量為80TB(其中,光纖盤陣容量61TB)。高速連接網路為QsNet (Quadrics公司產品),點對點通信帶寬大於每秒300MB,延遲時間小於7微秒。
深騰6800用於超級計算的4萬族源億次部分:
197個計算結點,4個IO結點,4個登錄結點,1個前端機;
每個結點配置為:4顆Intel Itanium 1.3GHz CPU,256KB二級緩存,3MB三級緩存,8/16GB內存,73GB SCSI硬碟;
實際性能值:世界第四名;
網格工具和環境:Globus, MPI-G;Oracle 10g;網格系統中間件等;
結點系統軟體:結點OS (RedHat AD 2.1 64位版本), 編譯器,調試器,數學庫等;
應用支撐環境和工具:MPI,PVM,OpenMP,並行調試器,性能優化工具,並行化工具等;
❹ 編程語言有幾種,分別都是編什麼程序的
計算機語言孫培的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。
計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:
解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。
編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須則笑唯先修改源代碼,再重新編譯生成新的目標文件(*.OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如VisualC++、VisualFoxpro、Delphi等。
[NextPage]
學習編程,從何入手
如果您想學習編程,卻又不知從何入手,那麼您不妨看看下面的幾種學習方案,可能會給您一些啟示吧!
==============================================
方案一Basic語言&VisualBasic
優點
(1)Basic簡單易學,很容易上手。
(2)VisualBasic提供了強大的可視化編程能力,可以讓你輕松地做出漂亮的程序。
(3)眾多的控制項讓編程變得象壘積木一樣簡單。
(4)VisualBasic的全部漢化讓我們這些見了English就頭大的人喜不自禁。
缺點
(1)VisualBasic不是真正的面向對象的開發文具。
(2)VisualBasic的數據類型太少,而且不支持指針,這使得它的表達能力很有限。
(3)VisualBasic不是真正的編譯型語言,它產生的最終代碼不是可執行的,是一種偽代碼。它需要一個動態鏈接庫去解釋執行,這使得VisualBasic的編譯速度大大變慢。
綜述:方案一適合初涉編程的朋升團友,它對學習者的要求不高,幾乎每個人都可以在一個比較短的時間里學會vB編程,並用VB做出自己的作品。對於那些把編程當做游戲的朋友來說,VB是您最佳的選擇。
Basic/VisualBasic簡介
==============================================
方案二Pascal語言&Delphi
優點
(1)Pascal語言結構嚴謹,可以很好地培養一個人的編程思想。
(2)Delphi是一門真正的面向對象的開發工具,並且是完全的可視化。
(3)Delphi使用了真編譯,可以讓你的代碼編譯成為可執行的文件,而且編譯速度非常快。
(4)Delphi具有強大的資料庫開發能力,可以讓你輕松地開發資料庫。
缺點
Delphi幾乎可以說是完美的,只是Pascal語言的過於嚴謹讓人感覺有點煩。
綜述:方案二比較適合那些具有一定編程基礎並且學過Pascal語言的朋友。
Pascal語言簡介
Delphi簡介
==============================================
方案三C語言&VisualC++
優點
(1)C語言靈活性好,效率高,可以接觸到軟體開發比較底層的東西。
(2)微軟的MFC庫博大精深,學會它可以讓隨心所欲地進行編程。
(3)VC是微軟製作的產品,與操作系統的結合更加緊密。
缺點
對使用者的要求比較高,既要具備豐富的C語言編程經驗,又要具有一定的WINDOWS編程基礎,它的過於專業使得一般的編程愛好者學習起來會有不小的困難。
綜述:VC是程序員用的東西。如果你是一個永不滿足的人,而且可以在編程上投入很大的精力和時間,那麼學習VC你一定不會後悔的。
C語言簡介
==============================================
方案四C++語言&C++Builder
優點
(1)C++語言的優點全部得以繼承。
(2)完全的可是化。
(3)極強的兼容性,支持OWL、VCL和MFC三大類庫。
(4)編譯速度非常快。
缺點
由於推出的時間太短,關於它的各種資料還不太多。
綜述:我認為C++Builder是最好的編程工具。它既保持了C++語言編程的優點,又做到了完全的可視化。
C語言簡介
==============================================
方案五SQL語言&PowerBuilder
對於一些傳統的數據開發人員來說,Foxpro系列也許讓他們感到更加熟悉。但是對於初學者來說,PowerBuilder也許是最好的資料庫開發工具。各種各樣的控制項,功能強大的PowerBuilder語言都會幫助你開發出自己的資料庫應用程序。
[NextPage]
JSP簡介
在Sun正式發布JSP(JavaServerPages)之後,這種新的Web應用開發技術很快引起了人們的關注。JSP為創建高度動態的Web應用提供了一個獨特的開發環境。按照Sun的說法,JSP能夠適應市場上包括ApacheWebServer、IIS4.0在內的85%的伺服器產品。
JSP與ASP的簡單比較
JSP與Microsoft的ASP技術非常相似。兩者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。在ASP或JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁面只依賴於Web伺服器,而ASP和JSP頁面需要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被重新嵌入到HTML代碼中,然後一起發送給瀏覽器。ASP和JSP都是面向Web伺服器的技術,客戶端瀏覽器不需要任何附加的軟體支持。
ASP的編程語言是VBScript之類的腳本語言,JSP使用的是Java,這是兩者最明顯的區別。
此外,ASP與JSP還有一個更為本質的區別:兩種語言引擎用完全不同的方式處理頁面中嵌入的程序代碼。在ASP下,VBScript代碼被ASP引擎解釋執行;在JSP下,代碼被編譯成Servlet並由Java虛擬機執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。
運行環境
執行JSP代碼需要在伺服器上安裝JSP引擎。此處我們使用的是Sun的JavaServerWebDevelopmentKit(JSWDK)。為便於學習,這個軟體包提供了大量可供修改的示例。安裝JSWDK之後,只需執行startserver命令即可啟動伺服器。在默認配置下伺服器在埠8080監聽,使用p>
在運行JSP示例頁面之前,請注意一下安裝JSWDK的目錄,特別是"work"子目錄下的內容。執行示例頁面時,可以在這里看到JSP頁面如何被轉換成Java源文件,然後又被編譯成class文件(即Servlet)。JSWDK軟體包中的示例頁面分為兩類,它們或者是JSP文件,或者是包含一個表單的HTML文件,這些表單均由JSP代碼處理。與ASP一樣,JSP中的Java代碼均在伺服器端執行。因此,在瀏覽器中使用"查看源文件"菜單是無法看到JSP源代碼的,只能看到結果HTML代碼。所有示例的源代碼均通過一個單獨的"examples"頁面提供。
JavaServlet是一種開發Web應用的理想構架。JSP以Servlet技術為基礎,又在許多方面作了改進。JSP頁面看起來象普通HTML頁面,但它允許嵌入執行代碼,在這一點上,它和ASP技術非常相似。利用跨平台運行的JavaBean組件,JSP為分離處理邏輯與顯示樣式提供了卓越的解決方案。JSP必將成為ASP技術的有力競爭者。
[NextPage]
SQL語言簡介
SQL全稱是「結構化查詢語言(StructuredQueryLanguage)」,最早的是IBM的聖約瑟研究實驗室為其關系資料庫管理系統SYSTEMR開發的一種查詢語言,它的前身是SQUARE語言。SQL語言結構簡潔,功能強大,簡單易學,所以自從IBM公司1981年推出以來,SQL語言,得到了廣泛的應用。如今無論是像Oracle,Sybase,Informix,SQLserver這些大型的資料庫管理系統,還是像VisualFoxporo,PowerBuilder這些微機上常用的資料庫開發系統,都支持SQL語言作為查詢語言。
StructuredQueryLanguage包含4個部分:
數據查詢語言DQL-DataQueryLanguageSELECT
數據操縱語言DQL-,UPDATE,DELETE
數據定義語言DQL-DataDefinitionLanguageCREATE,ALTER,DROP
數據控制語言DQL-DataControlLanguageCOMMITWORK,ROLLBACKWORK
SQL的歷史
在70年代初,
E.E.Codd
首先提出了關系模型。70年代中期,IBM公司在研製SYSTEMR關系資料庫管理系統中研製了SQL語言,最早的SQL語言(叫SEQUEL2)是在1976年11月的IBMJournalofR&D上公布的。1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS資料庫系統中也實現了SQL。
1986年10月,美國ANSI採用SQL作為關系資料庫管理系統的標准語言(ANSIX3.135-1986),後為國際標准化組織(ISO)採納為國際標准。
1989年,美國ANSI採納在ANSIX3.135-1989報告中定義的關系資料庫管理系統的SQL標准語言,稱為ANSISQL89,該標准替代ANSIX3.135-1986版本。該標准為下列組織所採納:
●國際標准化組織(ISO),為ISO9075-1989報告「」
●美國聯邦政府,發布在(FIPSPUB)127
目前,所有主要的關系資料庫管理系統支持某些形式的SQL語言,大部分資料庫打算遵守ANSISQL89標准。
SQL的優點
SQL廣泛地被採用正說明了它的優點。它使全部用戶,包括應用程序員、DBA管理員和終端用戶受益非淺。
(1)非過程化語言
SQL是一個非過程化的語言,因為它一次處理一個記錄,對數據提供自動導航。SQL允許用戶在高層的數據結構上工作,而不對單個記錄進行操作,可操作記錄集。所有SQL語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結果作為另一條SQL語句的輸入。SQL不要求用戶指定對數據的存放方法。這種特性使用戶更易集中精力於要得到的結果。所有SQL語句使用查詢優化器,它是RDBMS的一部分,由它決定對指定數據存取的最快速度的手段。查詢優化器知道存在什麼索引,哪兒使用合適,而用戶從不需要知道表是否有索引,表有什麼類型的索引。
(2)統一的語言
SQL可用於所有用戶的DB活動模型,包括系統管理員、資料庫管理員、應用程序員、決策支持系統人員及許多其它類型的終端用戶。基本的SQL命令只需很少時間就能學會,最高級的命令在幾天內便可掌握。SQL為許多任務提供了命令,包括:
●查詢數據
●在表中插入、修改和刪除記錄
●建立、修改和刪除數據對象
●控制對數據和數據對象的存取
●保證資料庫一致性和完整性
以前的資料庫管理系統為上述各類操作提供單獨的語言,而SQL將全部任務統一在一種語言中。
(3)是所有關系資料庫的公共語言
由於所有主要的關系資料庫管理系統都支持SQL語言,用戶可將使用SQL的技能從一個RDBMS轉到另一個。所有用SQL編寫的程序都是可以移植的。
[NextPage]
Java語言簡介
一.Java的由來
當1995年SUN推出Java語言之後,全世界的目光都被這個神奇的語言所吸引。那麼Java到底有何神奇之處呢?
Java語言其實最是誕生於1991年,起初被稱為OAK語言,是SUN公司為一些消費性電子產品而設計的一個通用環境。他們最初的目的只是為了開發一種獨立於平台的軟體技術,而且在網路出現之前,OAK可以說是默默無聞,甚至差點夭折。但是,網路的出現改變了OAK的命運。
在Java出現以前。Internet上的信息內容都是一些乏味死板的HTML文檔。這對於那些迷戀於WEB瀏覽的人們來說簡直不可容忍。他們迫切希望能在WEN中看到一些互動式的內容,開發人員也極希望能夠在WEB上創建一類無需考慮軟硬體平台就可以執行的應用程序,當然這些程序還要有極大的安全保障。對於用戶的這種要求,傳統的編程語言顯得無能為力,面SUN的工程師敏銳地察覺到了這一點,從1994年起,他們開始將OAK技術應用於WEB上,並且開發出了HotJava的第一個版本。當SUN公司1995年正式以Java這個名字推出的時候,幾乎所有的WEB開發人員都想到:噢,這正是我想要的。於是Java成了一顆耀眼的明星,丑小鴨一下了變成了白天鵝。
二.Java的定義
Java是一種簡單的,面象對象的,分布式的,解釋的,鍵壯的安全的,結構的中立的,可移植的,性能很優異的多線程的,動態的語言。
Java的開發環境有不同的版本,如sun公司的JavaDevelopersKit,簡稱JDK。後來微軟公司推出了支持Java規范的MicrosoftVisualJ++Java開發環境,簡稱VJ++。
三.Java的特點
1.平台無關性
平台無關性是指Java能運行於不同的平台。Java引進虛擬機原理,並運行於虛擬機,實現不同平台的Java介面之間。使用Java編寫的程序能在世界范圍內共享。Java的數據類型與機器無關,Java虛擬機(JavaVirtualMachine)是建立在硬體和操作系統之上,實現Java二進制代碼的解釋執行功能,提供於不同平台的介面的。
2.安全性
Java的編程類似C++,學習過C++的讀者將很快掌握Java的精髓。Java舍棄了C++的指針對存儲器地址的直接操作,程序運行時,內存由操作系統分配,這樣可以避免病毒通過指針侵入系統。Java對程序提供了安全管理器,防止程序的非法訪問。
3.面向對象
Java吸取了C++面向對象的概念,將數據封裝於類中,利用類的優點,實現了程序的簡潔性和便於維護性。類的封裝性、繼承性等有關對象的特性,使程序代碼只需一次編譯,然後通過上述特性反復利用。程序員只需把主要精力用在類和介面的設計和應用上。Java提供了眾多的一般對象的類,通過繼承即可使用父類的方法。在Java中,類的繼承關系是單一的非多重的,一個子類只有一個父類,子類的父類又有一個父類。Java提供的Object類及其子類的繼承關系如同一棵倒立的樹形,根類為Object類,Object類功能強大,經常會使用到它及其它派生的子類。
4.分布式
Java建立在擴展TCP/IP網路平台上。庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。這使得程序員使用網路上的文件和使用本機文件一樣容易。
5.鍵壯性
Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自已操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能。這些功能特徵大大提高了開發Java應用程序的周期。Java提供:Null指針檢測、數組邊界檢測、異常出口、Bytecode校驗。
四.Java與C/C++語言
Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++被大家接受,所以Java設計成C++形式,讓大家很容易學習。
Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,並增加了一些很有用的功能,如自動收集碎片。
Java去掉了以下幾個C和C++功能:
指針運算
結構
typedefs
#define
需要釋放內存
這將減少了平常出錯的50%。而且,Java很小,整個解釋器只需215K的RAM。
面象對象:Java實現了C++的基本面象對象技術並有一些增強,(為了語言簡單,刪除了一些功能)。Java處理數據方式和用對象介面處理對象數據方式一樣。
五.Java與Internet
我們知道,早先的www僅可以傳送文本和圖片,Java的出現實現了互動的頁面,是一次偉大的革命。
Java並不是為Internet,WWW而設計的,它也可以用來編寫獨立的應用程序。Java是一種面向對象語言。Java語言類似於C++語言,所以已熟練掌握C++語言的編程人員,再學習Java語言就容易得多!Java程序需要編譯。實際上有兩種Java程序:一種Java應用程序是一個完整的程序,如Web瀏覽器。一種Java小應用程序是運行於Web瀏覽器中的一個程序.
Java程序和它的瀏覽器HotJava,提供了可讓你的瀏覽器運行程序的方法。你能從你的瀏覽器里直接播放聲音。你還能播放頁面里的動畫。Java還能告訴你的瀏覽器怎樣處理新的類型文件。當我們能在2400baud線上傳輸視頻圖象時,HotJava將能顯示這些視頻。
當今Internet的一大發展趨勢是電子商務,而Internet的安全問題是必須解決的問題,通常大的部門應設置防火牆,阻止非法侵入。
電子商務是當今的熱門話題,然而傳統的編程語言難以勝任電子商務系統,電子商務要求程序代碼具有基本的要求:安全、可靠、同時要求能與運行於不同平台的機器的全世界客戶開展業務。Java以其強安全性、平台無關性、硬體結構無關性、語言簡潔同時面向對象,在網路編程語言中占據無可比擬的優勢,成為實現電子商務系統的
❺ vue和angular 編譯速度誰更快
框架之間的對比雖然是老生常談,但也確實是繞不過去的話題,Vue本身的文檔里也直接就有和其他框架的對比。同為開源的技術方案,比較本身其實沒有任何問題,但在寫Vue與其他框架的比較的時候,我們盡力做到兩點:
1. 確保事實的准確性。有的就是有,沒有就是沒有,不確定的就不說,弄錯了一定改。
2. 確保語氣的中立性。別人的缺點指出但不嘲諷,優點大方承認。
之前 @汪志成 對Vue跟 Angular 的比較文案提出了意見,我們也對應地進行了修訂。也歡迎社區繼續進行監督和反饋 —— 比較的目的不是扭曲大家的認知,而是為了幫助大家做出自己的判斷。
現在說回來大漠(後面都用大漠指代,注意跟 w3cplus@大漠老師不是一個人,對不住了哈哈)的這篇文章,很遺憾,以上兩點都不及格。
先說事實。
CLI/工具鏈
首先兩個框架 CLI 的定位不一致。vue-cli 不是一個打包工具,它只是一個 scaffold,也就是初始化工具。真正負責打包的是初始化之後項目內的 webpack 配置和 npm 腳本。從一開始vue-cli 就是這樣的設計意圖,項目真正的工具鏈在項目模板裡面而不是 CLI 裡面。
相比之下廳仔 @angular/cli 是一個全包式的命令行工具,一切都是通過 `ng` 來執行,但這不代表 `ng` 有的命令Vue就沒有對應的功能 —— 比如在vue-cli 生成的項目裡面:
npm run dev 對應 ng serve
npm run build 對應 ng build
npm run lint 對應 ng lint
npm run unit 對應 ng test
npm run e2e 對應 ng e2e
文檔中關於非同步組件的部分
路由文檔關於路由懶載入的部分
- import Foo from './Foo.vue'
- const Foo = () => import('./Foo.vue')
當這樣分割的時候,該組件所依賴的其他組件或其他模塊都會自動被分割進對應的 chunk 里,不存在大漠所暗示的『手動改 500 個組件』這樣的情況。況且兩邊代碼分割的功能都是 webpack 提供的,我真不知道大漠是真的不懂還是故意誤導。
所謂的路由級別的分割,只需要把這個組件作為路由組件就可以了,甚至連路由配置表都不用改。
更重要的是這樣的非同步組件並不一定只能用在路由層面 —— 任何你要用到一個組件的地方,都可以用非同步組件無縫替換之,這種靈活性是 Angular 的 loadChildren 根本無法比擬的。比如一個動態的長表單頁面,你甚至可以根據用戶目前的輸入來動態抓取表單接下來的部分(這個用例還是 wepback 的維護者 Sean Larkin 發現並用在生產中的)。
- Vue的單元測試需要你自己去安裝配置 Karma + Jasmine
- 在集成測試方面,Vue就只能是0分了,因為壓根什麼都沒做。
- 從對集成測試的支持大家應該可以看出來,在那些技術含量不太高的地方,Vue確實可以抄襲得有模有樣,但是一旦技術門檻提高,Vue就沒法抄了,或者說抄得沒那麼快了。
除了 i18n 之外,@angular/cli 有的Vue都有。『很多日常開發必備的功能都需要開發者自己去下載配置第三方的Node模塊』這句話是一個事森伏姿實上的錯誤。看起來大漠連vue-cli 生成的項目都沒跑過就急著寫文章了此絕呢。
其次,CLI 命令/參數多 =更優秀?並沒有這樣的道理,create-React-app 估計要哭暈在廁所了。如果我們仔細看看文中的截圖,ng build 的多個參數,其實就是對應不同的底層 webpack 配置。說實話,我相信不僅僅是我,對於很多其他開發者而言,更寧可直接閱讀 webpack 的文檔來調整真正的 webpack 配置(並且可以 commit 進項目),而不是去額外學習一套由 Angular 封裝的抽象,因為實際生產中需求千變萬化,完全被 CLI 封裝的配置不利於二次開發。
實事求是地說,@angular/cli 確實有一些值得學習的地方,比如 ng serve 對 SSL 的支持。我們也會在新版本的vue-cli 中持續吸收改進,但連vue-cli 能做什麼都沒弄清楚就拿玩具來打比方,只能貽笑大方了。
非同步載入模塊
我不知道為什麼大漠又截了個不知哪裡的舊中文文檔的圖,還沒截全 —— 最新的關於非同步載入的文檔是下面這兩個鏈接:
Vue將一個組件(以及其所有依賴)改為非同步載入,所需要的只是把:
改成
就這么簡單。這里注意三點:
單元測試和集成測試
—— 事實錯誤。vue-cli 的 webpack 模板內置了開箱即用的 Karma + Jasmine 配置,自帶了一個初始測試用例,npm run unit 即可。這又雙一次證明大漠根本沒有跑過vue-cli 生成的項目。
Vue的單測不僅僅支持 Karam + Jasmine - 事實上社區有廣泛的單測反饋,對於 Jest, Ava 都有實踐,我們正在開發中的官方的單測工具庫vue-test-utils (由社區最流行的單測庫 avoriaz 的開發者開發)會進一步簡化常見的組件單測斷言需求,並且還會有和所有主流 test runner 的整合指南。
—— again,事實錯誤。vue-cli 的 webpack 模板內置了開箱即用的 Nightwatch + Selenium E2E 測試配置,自帶了一個初始測試用例,npm run e2e 即可。這又雙叒一次證明大漠根本沒有跑過vue-cli 生成的項目。
—— 集成測試這種東西,有什麼技術門檻可言,還需要抄么?順便說一句,vue-cli 初始化的項目可是早比 @angular/cli 正式發布前就已經自帶集成測試了...
❻ GCC/G++,ICC,Clang,MSVC,BCC等C/C++編譯器有什麼特長和不足
clang編譯速度快,但是貌似編譯結果運行相對會慢。功能更新一般也比較快。
g++編譯速度比clang慢,編譯結果運行貌似比clang快。功能更新稍慢。
vc這幾年沒編譯過大工程,感覺上編譯速度在clang和g++之間。以過去的經驗g++和vc編譯結果運行速度差不多。功能更新上就是一坨屎。但是在Windows上寫點正經東西你可能不得不用它,相對的你也只能在Windows上用它。
icc很久沒用過,過去印象編譯速度很慢,運行速度最快但是感覺有點得不償失。最大的問題是這東西要錢,前三個都是免費的。
bcc直接無視就好了。
❼ 哪種計算機語言的執行速度最快、哪種最慢為什麼
針對性調優過的匯編速度是最快的。所有的語言最終都到匯磨旅編 匯編再到機器語言。 語言編譯的時候都有優化,所以好的匯編是最快的。但是差的匯編也不少MSP430上的程序都有一個判斷執行15秒的。
程序設計語言中匯編語言速度最快,c語言效率最高,執行效率高。程序設計語言(ProgrammingLanguage):是一組用來定義計算機程序的語法規則。它是一種被標准化的交流技巧,用來向計算機發出指令。
一種計算機語言讓程序員能夠准確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當採取的行動。程序設計語言特點不同,適用領域也不同。
(7)編譯速度排名擴展閱讀:
如今通用的編程語言有兩種形式:匯編語言和高級語言。匯編語言和機器語言實質是相同的,都是直接對硬巧游告件操作,只不過指令採用了英文縮寫的標識符,容易識別和記憶。源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
參孝明考資料來源:網路-計算機語言
❽ uniappvue3vue2性能
新版 uni-app 框架主要做了三大改進:
重寫框架內核:基於vue3 + ts重寫內置組件和API,實現更徹底、更高效的tree-shaking;
新增支持 Vite 構建工具,在H5平台實現秒開預覽;
新增支持 Vue3.x,實現更靈活的開發方式,及更高的運行性能;
基於這三大改進,uni-app項目獲得了多快好省四大收益:
更多的語法支持,支持組合式API,業務聚焦,開發效率更高;
更快的編譯速度,H5平台十倍加速,小程序、App加速30%以上;
更好的運行性能,用戶端響應更快,體驗更好;
更小的代碼體滲指積,瘦身30%以上,更省體積、更省流量
更多的語法支持
新版uni-app支持Vue 3.x框架,支持組合式API,可實現更聚焦的業務開發。
Vue 3.x的一些新增特性,uni-app也已經完全支持,如:
支持<script setup>
支持<style scoped>、<style mole>、State-Driven Dynamic CSS(v-bind)
支持jsx、tsx(h5,app 平台支持,小程序不支持)
另外,在小程序平台,新版uni-app也擴展了更多的語法,如:
更完善的模板語法支持(如 class、style 支持函數、變數等,不再局限數組、對象類型)
更完整的 props 支持(如傳遞函數)
更完善的 slot 支持(如作用域插槽)
更快的編譯速度
開發者日常工作中,最無聊的就是等待編譯構建。
某乎上還有一個叢銷配」程序員在等待編譯的時候都做什麼?「的討論帖,可見編譯時間對開發者而言,是一個多麼尷尬無聊的碎片時間。
uni-app本次升級vue3 & Vite後,在編譯時間上有多少改進?帶給開發者多少福利?我們安排真實測試,以數據說話。
測試環境說明:
硬體:RedmiBook 14 二代
處理器:Intel(R) Core(TM) i7-1065G7 CPU @ 1.30GHz
內存:16.0 GB
操作系統:Windows 11 專業版 64 位操作系統
關於編譯速度,我們做了兩個維度的對比:
縱向對比:挑選uni-app常用項目模板,在H5、小程序、App平台,分別測試vue 2.6和vue 3.x的編譯時間
橫向對比:使用斗握業內優秀的其它跨端框架,創建默認項目模板,記錄其編譯時間,和uni-app的vue 3.x版本進行對比
uni-app 歷史版本縱向對比
我們選擇uni-app默認模板、uni-starter、hello-uniapp三個項目模板,分別測試vue 2.6和vue 3.x的編譯時間。
uni-app項目編譯時間的採集方式:
vue 2.6版本編譯時間 = webpack 的 stats.endTime - stats.startTime
vue 3.x版本編譯時間 = 構建工具入口處記錄 global.vite_start_time = performance.now(),構建工具編譯完成時:performance.now() - global.vite_start_time
H5平台
對uni-app的三個項目模板分別運行到H5平台,進行多次編譯測試,並求其均值後,獲得如下數據:
由此,我們可以觀察到:
在vue 2.6環境下,隨著項目復雜度的提升,H5首頁預覽所需編譯時間會直線增加;這是因為在vue 2.6版本下,雖然僅預覽首頁,但依然會使用 webpack 編譯整個項目資源;故項目越復雜,編譯時間越長;
在vue 3.x環境下,H5首頁預覽的編譯時間跟項目復雜度也有關系,但增幅不大;這是因為在vue 3.x版本下,使用 Vite 進行構建,預覽首頁時僅編譯首頁及首頁所依賴資源,不會編譯其它頁面資源。
通過圖表對比,我們可以直觀得出結論:vue 3.x環境下的首頁編譯時間,平均不到vue 2.6環境下的十分之一。
換言之,vue 3.x版本下的首頁編譯速度,相比vue 2.6版本,有十倍效率提升。
這個十倍效率提升,主要得益於新版採用Vite作為構建工具,由此帶來了兩大好處:
使用原生 ESM 文件,無需打包,實現極速的服務啟動;
預覽(運行)使用esbuild作為打包工具,相比vue 2.6環境下的webpack,構建速度快 10-100 倍(這不是我們誇大,詳見esbuild)
本著這個十倍效率提升,小夥伴們還不趕緊上手試試?
小程序平台
對uni-app的三個模板項目運行到小程序平台,多次編譯測試,並求其均值後,獲得如下數據:
從上圖對比數據來看,我們可以得出結論:小程序平台,vue 3.x版本下的運行編譯,相比vue 2.6版本,編譯性能至少提升30%;且項目越復雜,編譯性能提升越明顯,可以達到40% ~ 50%。
App平台
對uni-app的三個項目模板繼續運行到App平台,多次編譯測試,並求其均值後,獲得如下數據:
從上圖對比數據來看,我們可以得出結論:App平台,vue 3.x版本下的運行編譯,相比vue 2.6版本,編譯性能提升將近50%。
雖沒有H5平台的十倍效率提升那麼刺激,但將近50%的速度提升,經常開發小程序/App的小夥伴,還不心動?
業內優秀框架橫向對比
除了採用不同版本的uni-app進行縱向對比外,我們還使用業內優秀的跨端框架Taro,創建空的項目模板,進行橫向對比測試。
具體測試方案:
安裝Taro的最新cli,本文測試時使用的版本為"@Tarojs/Taro": "3.3.16"
使用Taro init命令,分別選擇react、vue、vue3框架,創建三個默認項目模板,三個項目名稱分別為taro3-react、taro3-vue、taro3-vue3,如下圖:
使用npm run dev:h5,運行到H5平台進行預覽,記錄每次預覽編譯時間,重復執行,求其均值
關於Taro編譯時間的計算方案:
開發一個Taro擴展插件,插件規范參考Taro官網 - 插件功能
在ctx.onBuildStart中記錄開始編譯時間
在ctx.onBuildFinish中記錄編譯結束時間
兩者的時間差,即為編譯過程消耗時間
然後使用uni-app的cli命令行,創建基於vue3.x的空項目模板,項目命名為uni-app-vue3。
我們使用各自框架的命令行,將如上創建的5個項目分別編譯到H5平台和小程序平台,多次測試,並求其均值。
同框架版本在H5平台上的編譯時間,結果如下:
從圖中可以看出,uni-app的vue3版本,在H5平台上的首頁編譯預覽性能是遙遙領先的。這個遙遙有多遠呢?這么講吧,你都編譯20次了,友商第一次還沒完呢。
繼續編譯到小程序平台,多次測試,求其均值,結果如下:
從圖中可以看出,uni-app的vue3版本,在小程序平台上的編譯性能也是遙遙領先的,這個遙遙也不近。
更好的運行速度
開發環節編譯快了,那面向最終用戶的軟體,運行性能怎麼樣?
我們進入性能測試章節。
測試方案:
開發內容:開發一個仿微博小程序首頁的復雜長列表,支持下拉刷新、上拉翻頁、點贊。
界面如下:
測試機型:小米 Mi 10 pro、MIUI 12.5 (21.11.3 開發版) 、微信版本 8.0.16
准備工作:每次開始測試前,殺掉各App進程、清空內存,保證測試機環境基本一致;每次從本地讀取靜態數據,屏蔽網路差異。
評測點:長列表中的某個組件,比如點贊組件,點擊時是否能及時的修改未贊和已贊狀態?
測試計時方式:
選中某微博,點擊「點贊」按鈕,實現點贊狀態狀態切換(已贊高亮、未贊灰色),
點贊按鈕 onclick函數開頭開始計時,setData回調函數開頭結束計時;
在小米手機上進行多次測試,求其平均值,結果如下:
記錄條數 200 400 600 800 1000
vue2 30ms 43ms 56ms 72ms 90ms
vue3 8ms 9ms 9ms 8ms 9ms
從表格中可以看出:
隨著頁面記錄的增加,vue 2.6版本的uni-app項目,點贊組件響應時間快速增加,響應越來越慢;
基於vue 3.x的uni-app項目,點贊組件的響應時間跟頁面條數無關,一直保持極高的響應靈敏度,性能體驗遠高於vue 2.6版本。
從這個常見的長列表組件響應實驗來看,vue 3.x的性能體驗要遠高於vue 2.6版本。
更小的代碼體積
項目發行後的代碼體積,是一個很重要的考量指標:
H5平台:更小的代碼體積,可以幫助開發者節省服務端帶寬及CDN流量,可實現更快的資源載入及頁面渲染;
小程序平台:更小的代碼體積,可加速小程序包的下載(甚至可能免了分包載入的繁瑣),幫助用戶更快進入小程序業務界面;
App平台:更小的代碼體積,可實現更快的App啟動,幫助用戶更快進入App首頁
為了測試vue 3.x新版升級後,代碼體積的變化,我們同樣做了兩個維度的測試:
縱向對比:選擇uni-app常用項目模板,在H5、小程序、App平台,分別測試vue 2.6和vue 3.x的編譯包大小
橫向對比:使用業內優秀的其它跨端框架,創建默認項目模板,記錄其編譯後的包體積大小,和uni-app版本進行對比
Tips:
開發階段重在編譯速度,對應npm run dev操作
發行階段重在編譯包大小,對應npm run build操作
uni-app 不同版本縱向對比
我們復用之前創建的uni-app默認模板、uni-starter、hello-uniapp三個項目模板,分別測試vue 2.6和vue 3.x的編譯包體積。
uni-app項目編譯包體積的採集方式:編譯到對應平台後,記錄編譯後文件夾的大小。
H5平台
H5平台編譯後代碼體積記錄如下:
從統計結果來看,uni-app的vue3.x版本,在H5平台上的編譯包體積至少瘦身30%以上。
H5平台的瘦身優化,主要得益於uni-app框架的底層全面重構,實現了更徹底的搖樹優化。
小程序平台
小程序平台編譯後代碼體積記錄如下:
從統計結果來看,uni-app的vue3.x版本,在小程序平台上也有大幅瘦身。
❾ 編程語言排行榜是怎樣的
2019年排行:Java,C,python,C++,C#,PHP。
1、Java
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。
Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。
4、C++
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
C++擅長面向對象程序設計的同時,還可以進行基於過程的程序設計,因而C++就適應的問題規模而論,大小由之。
C++不僅擁有計算機高效運行的實用性特徵,同時還致力於提高大規模程序的編程質量與程序設計語言的問題描述能力。
5、C#
C#是微軟公司發布的一種面向對象的、運行於.NET Framework和.NET Core(完全開源,跨平台)之上的高級程序設計語言。並定於在微軟職業開發者論壇(PDC)上登台亮相。
C#是面向對象的編程語言。它使得程序員可以快速地編寫各種基於MICROSOFT .NET平台的應用程序,MICROSOFT .NET提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域。
❿ 有人研究過ICU的編譯沒
官網13年起就沒有新的版本了.
Tiny C Compiler(TCC) 是一個輕量級高速的C語言編敗棗譯器。與其他C語言編譯器不同,察輪拆它是一個自我依賴的系統,不需要其他外部的匯編器和連桐遲接器。TCC的編譯速度十分快,以至於編譯一些大型項目都不需要Makefile文件。