本文目錄一覽:
- 1、什麼是服務器端語言,什麼是腳本語言,這兩者有什麼聯繫
- 2、C#編程語言的特點與優勢
- 3、什麼是c#語言?
- 4、關於C語言的一道題目 各位達人一定要進來看看 幫助一下 謝謝大家
- 5、關於C和C語言 C++的區別
- 6、C#語言到底是什麼,它與C語言有什麼區別?
什麼是服務器端語言,什麼是腳本語言,這兩者有什麼聯繫
服務器端語言是在服務器上運行的程序所用的編程語言,比如你現在在百度知道里打字,這些操作包括更改輸入法,打字都是在自己的電腦上運行的,但一旦你把他提交,就必須存到百度數據庫中,之後所有人開這個網頁都能看到你的提問,這個行為必須由服務器來操作,在服務器上運行,寫這個服務器程序的語言就是服務器端語言,如PHP,JSP等。。。。
腳本語言是一種直接可由txt上寫程序,不需要編譯,純文本的語言,只需要軟件解釋就可以直接運行的程序,這和C++等常規語言的不同點,你現在在網頁空白處點擊右鍵選擇查看網頁源代碼,看到的文本就是腳本語言,可直接由瀏覽器解釋並運行,腳本語言也就是可與某軟件文字溝通的語言,這樣的好處就是,形成了一個官方通用語,可以再網絡上隨便傳來傳去而且可以運行,比如剛才提到的網頁源代碼,就是百度服務器發過來的,但在你的瀏覽器上運行的客戶端腳本,只要你裝了瀏覽器,這個代碼就能直接運行,你可以把看到的源代碼複製到txt文件中,然後後綴改成,html,雙擊就能打開一個網頁,不需要編譯的,而非腳本語言就必須要編譯,比如C語言,C++。。。。。
服務器語言和腳本語言沒關係,是兩個不同的屬性描述,腳本語言可以使服務器語言,也可以不是,服務器語言也可以是腳本也可以不是。。。。
C#編程語言的特點與優勢
C#比其它語言的優勢
C#(讀做 “C sharp”)是微軟公司在去年六月發布的一種新的編程語言,並定於在微軟職業開發者論壇(PDC)上登台亮相.C#是微軟公司研究員Anders Hejlsberg的最新成果.C#看起來與Java有着驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程.但是C#與Java有着明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網絡框架的主角.
在本文中,我將考察創建一種新計算機語言的一般動機,並將特別指明是什麼原因導致了C#的出現.然後我將介紹C#和它與Java,c,c++的相似之處.其次我將討論一些存在於Java和C#之間的高層次的,和基礎的差別.我將以衡量在用多種語言開發大型應用程序的時候所需的知識(或者對這種知識的缺乏程度)來結束本文,而這正是.NET和C#的一個主要戰略.目前,C#和.NET還只能以C#語言規則,以及Windows 2000的一個”d預覽版本”,還有MSDN上迅速增多的文檔集子的形式獲得(還沒有最終定型).
微軟c#語言定義主要是從C和C++繼承而來的,而且語言中的許多元素也反映了這一點.C#在設計者從C++繼承的可選選項方面比Java要廣泛一些(比如說structs),它還增加了自己新的特點(比方說源代碼版本定義).但它還太不成熟,不可能擠垮Java.C#還需要進化成一種開發者能夠接受和採用的語言.而微軟當前為它的這種新語言大造聲勢也是值得注意的.目前大家的反應是:”這是對Java的反擊.”
C#更象Java一些,雖然微軟在這個問題上保持沉默.這也是意料中的事情,我覺得,因為Java近來很成功而使用Java的公司都報告說它們在生產效率上比C++獲得了提高.
Java所帶來的巨大影響和大家對它的廣泛接受已經由工作於這種語言和平台之上的程序員數量明顯的說明了(估計世界範圍內共有兩百五十萬程序員使用Java).由這種語言寫成的應用程序的數量是令人驚訝的並已經滲透了每一個級別的計算,包括無線計算和移動電話(比如日本發明的Java電話).C#能夠在用戶領域獲得這樣的禮遇嗎?我們必須等待並觀望,就象已經由SSI公司的CEO和主席Kalpathi S. Suresh指出來的那樣,”我發現所有這些都是漸進的.如果C#不存在,我們總能回到Java或C和C++.這些都不完全是新技術;它們在更大的意義上來說只是大公司製造的市場噱頭.我們必須給他們時間安頓下來看看這些是不是真的對IT工業有什麼影響.”
C#從Java繼承而來的特點
類:在C#中類的申明與Java很相似.這是合理的因為經驗告訴我們Java模型工作得很好.Java的關鍵字import已經被替換成using,它起到了同樣的作用.一個類開始執行的起點是靜態方法Main().下面的Hello World程序展示了基本的形式:
using System;
class Hello {
static void Main() {
Console.WriteLine(“Hello, world”);
}
}
在這個例子中,System這個名字指向一個包括了基本C#實用類集合的命名空間(namespace).這個命名空間包括了Console類,它在這個例子中被用來輸出一個字符串.類可以是抽象的和不可繼承的:一個被申明成abstract的類不能被實例化;它只能被用做一個基類.C#關鍵字lock就象Java關鍵字final,它申明一個類不是抽象的,但是它也不能被用做另一個類的基類.界面:就象在Java中一樣,一個界面是一組方法集合的抽象定義.當一個類或結構體實現一個界面的時候,它必須實現這個界面中定義的所有方法.一個單一的類可以實現幾個界面.也許以後會出現一些微妙的差別,但是這個特點看起來與Java相比沒有變化.布爾運算:條件表達式的結果是布爾數據類型,布爾數據類型是這種語言中獨立的一種數據類型.從布爾類型到其他類型沒有直接的轉換過程.布爾常量true和false是C#中的關鍵字.錯誤處理:如Java中那樣,通過拋出和捕捉異常對象來管理錯誤處理過程.內存管理:由底層.NET框架進行自動內存垃圾回收.
C#從C和C++繼承的特點
編譯:程序直接編譯成標準的二進制可執行形式.如果前面的Hello World程序被保存成一個文本文件並被命名為Hello.cs,它將被編譯成命名Hello.exe的可執行程序.
結構體:一個C#的結構體與C++的結構體是相似的,因為它能夠包含數據申明和方法.但是,不象C++,C#結構體與類是不同的而且不支持繼承.但是,與Java相同的是,一個結構體可以實現界面.
預編譯:C#中存在預編譯指令支持條件編譯,警告,錯誤報告和編譯行控制.可用的預編譯指令有:
#define
#undef
#if
#elif
#else
#endif
#warning
#error
#line []
沒有了#include 偽指令.你無法再用#define 語句對符號賦值,所以就不存在源代碼替換的概念–這些符號只能用在#if和#elif偽指令里.在#line偽指令里的數字(和可選的名字)能夠修改行號還有#warning和#error輸出結果的文件名.
操作符重載:一些操作符能夠被重載,而另一些則不能.特別的是,沒有一個賦值運算符能夠被重載.能夠被被重載的單目操作符是:
+ – ! ~ ++ — true false
能夠被重載的二元運算符是:
+ – * / % | ^ == != = =
C#獨有的特點
C#最引人入勝的地方是它和Java的不同,而不是相似的地方.這一節(和這個系列第二部分的大部分地方)講述了C#實現的和Java不同的地方或者Java根本沒有的特點.
中間代碼:微軟在用戶選擇何時MSIL應該編譯成機器碼的時候是留了很大的餘地.微軟公司很小心的聲稱MSIL不是解釋性的,而是被編譯成了機器碼.它也明白許多–如果不是大多數的話–程序員認為Java程序要不可避免的比C編寫的任何東西都要慢.而這種實現方式決定了基於MSIL的程序(指的是用C#,Visual Basic,”Managed C++”–C++的一個符合CLS的版本–等語言編寫的程序)將在性能上超過”解釋性的”Java代碼.當然,這一點還需要得到事實證明,因為C#和其他生成MSIL的編譯器還沒有發布.但是Java JIT編譯器的普遍存在使得Java和C#在性能上相對相同.象”C#是編譯語言而Java是解釋性的,”之類的聲明只是商業技巧.Java的中間代碼和MSIL都是中間的彙編形式的語言,它們在運行時或其它的時候被編譯成機器代碼.
命名空間中的申明:當你創建一個程序的時候,你在一個命名空間里創建了一個或多個類.同在這個命名空間里(在類的外面)你還有可能聲明界面,枚舉類型和結構體.必須使用using關鍵字來引用其他命名空間的內容.
基本的數據類型:C#擁有比C,C++或者Java更廣泛的數據類型.這些類型是bool, byte, ubyte, short, ushort, int, uint, long, ulong, float, double,和decimal.象Java一樣,所有這些類型都有一個固定的大小.又象C和C++一樣,每個數據類型都有有符號和無符號兩種類型.與Java相同的是,一個字符變量包含的是一個16位的Unicode字符.C#新的數據類型是decimal數據類型,對於貨幣數據,它能存放28位10進制數字.
兩個基本類:一個名叫object的類是所有其他類的基類.而一個名叫string的類也象object一樣是這個語言的一部分.作為語言的一部分存在意味着編譯器有可能使用它–無論何時你在程序中寫入一句帶引號的字符串,編譯器會創建一個string對象來保存它.
參數傳遞:方法可以被聲明接受可變數目的參數.缺省的參數傳遞方法是對基本數據類型進行值傳遞.ref關鍵字可以用來強迫一個變量通過引用傳遞,這使得一個變量可以接受一個返回值.out關鍵字也能聲明引用傳遞過程,與ref不同的地方是,它指明這個參數並不需要初始值.
與COM的集成:C#對Windows程序最大的賣點可能就是它與COM的無縫集成了,COM就是微軟的Win32組件技術.實際上,最終有可能在任何.NET語言里編寫COM客戶和服務器端.C#編寫的類可以子類化一個以存在的COM組件;生成的類也能被作為一個COM組件使用,然後又能使用,比方說,JScript語言子類化它從而得到第三個COM組件.這種現象的結果是導致了一個運行環境的產生,在這個環境里的組件是網絡服務,可用用任何.NET語言子類化.
索引下標:一個索引與屬性除了不使用屬性名來引用類成員而是用一個方括號中的數字來匿名引用(就象用數組下標一樣)以外是相似的.
public class ListBox: Control {
private string[] items;
public string this[int index] {
get {
return items[index];
}
set {
items[index] = value;
Repaint();
}
}
}
可以用一個循環器來匿名引用字符串內部數組成員,就象下面這樣:
ListBox listBox = …;
listBox[0] = “hello”;
Console.WriteLine(listBox[0]);
代理和反饋:一個代理對象包括了訪問一個特定對象的特定方法所需的信息.只要把它當成一個聰明的方法指針就行了.代理對象可以被移動到另一個地方,然後可以通過訪問它來對已存在的方法進行類型安全的調用.一個反饋方法是代理的特例.event關鍵字用在將在事件發生的時候被當成代理調用的方法聲明中.
什麼是c#語言?
C sharp(音標 [∫a:p] )(又被簡稱為”C#”)是微軟公司在二OOO年六月發布的一種新的編程語言,並定於在微軟職業開發者論壇(PDC)上登台亮相。C#是微軟公司研究員Anders Hejlsberg的最新成果。C#看起來與Java有着驚人的相似;它包括了諸如單一繼承、界面、與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程。但是C#與Java有着明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網絡框架的主角。 在本文中,我將考察創建一種新計算機語言的一般動機,並將特別指明是什麼原因導致了C#的出現,然後我將介紹C#和它與Java、C、C++的相似之處。其次我將討論一些存在於Java和C#之間的高層次的、和基礎的差別。我將以衡量在用多種語言開發大型應用程序的時候所需的知識(或者對這種知識的缺乏程度)來結束本文,而這正是.NET和C#的一個主要戰略。目前,C#和.NET還只能以C#語言規則,以及Windows 2000的一個”d預覽版本”,還有MSDN上迅速增多的文檔集子的形式獲得(還沒有最終定型)。
編輯本段定義
微軟C#語言定義主要是從C和C++繼承而來的,而且語言中的許多元素也反映了這一點。C#在設計者從C++繼承的可選選項方面比JAVA要廣泛一些(比如說struts),它還增加了自己新的特點(比方說源代碼版本定義).但它還太不成熟,不可能擠垮JAVA。C#還需要進化成一種開發者能夠接受和採用的語言。而微軟當前為它的這種新語言大造聲勢也是值得注意的。目前大家的反應是:“這是對JAVA的反擊” 。 C#更像JAVA一些,雖然微軟在這個問題上保持沉默。這也是意料中的事情,我覺得,因為JAVA近來很成功而使用JAVA的公司都報告說它們在生產效率上比C++獲得了提高。 JAVA所帶來的巨大影響和大家對它的廣泛接受已經由工作於這種語言和平台之上的程序員數量明顯的說明了(估計世界範圍內共有兩百五十萬程序員使用JAVA)。由這種語言寫成的應用程序的數量是令人驚訝的並已經滲透了每一個級別的計算,包括無線計算和移動電話(比如日本發明的JAVA電話)。C#能夠在用戶領域獲得這樣的禮遇嗎?我們必須等待並觀望,就象已經由SSI公司的CEO和主席KALPATHI S. SURESH指出來的那樣:”我發現所有這些都是漸進的。如果C#不存在,我們總能回到JAVA或C和C++。這些都不完全是新技術,它們在更大的意義上來說只是大公司製造的市場噱頭。我們必須給他們時間安頓下來看看這些是不是真的對IT工業有什麼影響。” C# (C SHARP)是微軟對這一問題的解決方案。C#是一種最新的、面向對象的編程語言。它使得程序員可以快速地編寫各種基於MICROSOFT .NET平台的應用程序,MICROSOFT .NET提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域。 正是由於C#面向對象的卓越設計,使它成為構建各類組件的理想之選——無論是高級的商業對象還是系統級的應用程序。使用簡單的C#語言結構,這些組件可以方便的轉化為XML網絡服務,從而使它們可以由任何語言在任何操作系統上通過INTERNET進行調用。 最重要的是,C#使得C++程序員可以高效的開發程序,而絕不損失C/C++原有的強大的功能。因為這種繼承關係,C#與C/C++具有極大的相似性,熟悉類似語言的開發者可以很快的轉向C#。
關於C語言的一道題目 各位達人一定要進來看看 幫助一下 謝謝大家
;
可以這樣寫:
#include stdio.h
#include math.h
#include stdlib.h
#include string.h
/****** General utils. ***/
/* Returns the number of digits in i. */
int getNumberOfDigits( unsigned i ) {
return i ? ( int ) ceil( log10( ++i ) ) : 1;
}
/* Returns the integer represented by the first n digits in s. */
int natoi( char *s, unsigned n ) {
char buf[ 22 ];
strncpy( buf, s, n );
return atoi( buf );
}
/****** End of General utils. ***/
/*
* Using standard labelling convention for sticks (segments) in all 7-segment digits:
*
*
* Here, each digit is represented by an array of 7 chars, so that
* they can be easily strung together *tightly* for convenient manipulation.
*
* char 0 represents segment a, char 1 segment b, …
*/
char sevenSegmentDigits[ 10 ][ 7 ] = {
/* a, b, c, d, e, f, g */
{ 1, 1, 1, 1, 1, 1, 0 }, /* 0 */
{ 0, 1, 1, 0, 0, 0, 0 }, /* 1 */
{ 1, 1, 0, 1, 1, 0, 1 }, /* 2 */
{ 1, 1, 1, 1, 0, 0, 1 }, /* 3 */
{ 0, 1, 1, 0, 0, 1, 1 }, /* 4 */
{ 1, 0, 1, 1, 0, 1, 1 }, /* 5 */
{ 1, 0, 1, 1, 1, 1, 1 }, /* 6 */
{ 1, 1, 1, 0, 0, 0, 0 }, /* 7 */
{ 1, 1, 1, 1, 1, 1, 1 }, /* 8 */
{ 1, 1, 1, 1, 0, 1, 1 }, /* 9 */
};
/* Writes 7-segment pattern of digit into sevenSegment. Assumes digit 10. */
void digitToSevenSegment( unsigned digit, char sevenSegment[ 7 ] ) {
memcpy( sevenSegment, sevenSegmentDigits[ digit ], 7 );
}
/* Returns the digit represented by 7-segment pattern in sevenSegment,
or -1 if the pattern is invalid i.e. not found in sevenSegmentDigits. */
int sevenSegmentToDigit( char sevenSegment[ 7 ] ) {
int i = 0;
for ( ; i 10; i++ )
if ( memcmp( sevenSegment, sevenSegmentDigits[ i ], 7 ) == 0 )
return i;
return -1;
}
/* Returns the result of applying additiveOperator on a and b. */
int operate( int a, char additiveOperator, int b ) {
return additiveOperator == ‘+’ ? a + b : a – b;
}
void main( ) {
/* we handle at most 4 integers, and each integer’s at most 5 digits long */
char sevenSegmentInputBuf[ 20 * 7 ], /* represents strung-together input integers */
sevenSegmentOutputBuf[ 20 * 7 ]; /* for trying stick movements */
int ssibIdx = 0,
from, /* index of stick to be moved */
to; /* counterpart of from */
/*
* input pattern:
* term1 additiveOperator1 term2 = term3 [ additiveOperator2 term4 ]
*/
int terms[ 4 ] = { 0 },
numberOfTerms = 3,
numberOfDigitsInTerm[ 4 ],
numberOfDigitsInEquation = 0,
leftHandValue, /* value on the left hand side of equation */
rightHandValue,
i,
j;
char additiveOperator1 = ‘+’,
additiveOperator2 = ‘+’,
c;
/* read compulsory parts of equation */
scanf( “%u %c %u = %u”,
terms[ 0 ], additiveOperator1, terms[ 1 ], terms[ 2 ] );
/* any optional part? */
while ( ( c = getchar( ) ) != ‘\n’ ) /* accept only 1 line … */
if ( c == ‘+’ || c == ‘-‘ ) {
additiveOperator2 = c;
scanf( “%u”, terms[ 3 ] );
++numberOfTerms;
break; /* …and read at most 4 terms */
}
for ( i = 0; i numberOfTerms; i++ )
numberOfDigitsInEquation +=
numberOfDigitsInTerm[ i ] = getNumberOfDigits( terms[ i ] );
/* convert terms into 7-segment forms and store into sevenSegmentInputBuf */
for ( i = 0; i numberOfTerms; i++ ) {
/* convert each term into string, then iterate over the string */
char termAsString[ 6 ] = “”,
*tas = termAsString;
sprintf( termAsString, “%u”, terms[ i ] );
for ( ; *tas; tas++, ssibIdx += 7 )
digitToSevenSegment( *tas – ‘0’, sevenSegmentInputBuf + ssibIdx );
}
/* try all possible moves */
for ( from = 0; from numberOfDigitsInEquation * 7; from++ )
if ( sevenSegmentInputBuf[ from ] == 1 )
for ( to = 0; to numberOfDigitsInEquation * 7; to++ )
if ( sevenSegmentInputBuf[ to ] == 0 to != from ) {
char chainedDigits[ 21 ] = “”;
/* to mess only with the duplicate of sevenSegmentInputBuf */
memcpy( sevenSegmentOutputBuf, sevenSegmentInputBuf,
numberOfDigitsInEquation * 7 );
/* make the move */
sevenSegmentOutputBuf[ from ] = 0;
sevenSegmentOutputBuf[ to ] = 1;
/*
* evaluate the resulting equation by first converting 7-segment into
* string, then back to integral terms
*/
for ( i = j = 0; i numberOfDigitsInEquation * 7; i += 7, j++ ) {
int digit = sevenSegmentToDigit( sevenSegmentOutputBuf + i );
if ( digit == -1 )
goto skipThisInvalidMove;
chainedDigits[ j ] = digit + ‘0’;
}
for ( i = j = 0; i numberOfTerms; i++ ) {
terms[ i ] = natoi( chainedDigits + j, numberOfDigitsInTerm[ i ] );
j += numberOfDigitsInTerm[ i ];
}
/* evaluate left-hand and right-hand values */
leftHandValue = operate( terms[ 0 ], additiveOperator1, terms[ 1 ] );
rightHandValue = operate( terms[ 2 ], additiveOperator2, terms[ 3 ] );
/* do we have a winner? */
if ( leftHandValue == rightHandValue ) {
printf( “%u %c %u = %u “,
terms[ 0 ], additiveOperator1, terms[ 1 ], terms[ 2 ] );
if ( numberOfTerms 3 )
printf( “%c %u”, additiveOperator2, terms[ 3 ] );
return;
}
skipThisInvalidMove:;
}
puts( “No” );
}
關於C和C語言 C++的區別
對於大部分編程的人來說學c語言應該都從vc的(當然也有用tc的),但我覺得這裡面有很大一部分朋友並不知道其實你一直用c++的編譯器去編c和運行c語言的代碼。當然c++是支持絕大部分的c的,但它們是不同的,之所以你能用那些編寫和運行c語言代碼沒有發現有什麼不對之處(其實你偶爾也會發現有時你的c代碼運行時會怪怪的。)
1) 在C語言中,初始化一個字符數組的方式很容易產生錯誤,就是數組很可能沒有足
夠的空間存放結尾的NULL字符.C++於對此此了一些改進、像char b[3] =”Bob”這樣的表達式
被認為是一個錯誤,但它在C語言中卻是合法的。
2) 類型轉換既可以寫成像float(i)這樣看上去更順眼的形式,也可以寫成(float)i這樣
稍顯怪異的C語言風格的形式.
C++允許一個常量整數來定義數組的人小
connst int size=128;
char a[size];
這在C++中是允許的但在C語言中卻是錯誤的.
3)c++ 聲明可以穿插於語句之間.在C語言中,一個語句塊中所有的聲明都必須放在所有
語句的前面.C++去掉了達個專橫的限制,做得非常好當然這種做法也會引起與C語言的
不兼容,那為什麼不進行得徹底一些,為恐怖的C語言聲明語法提供一種更簡單的替代方案?
4)在C++中,用戶代碼不能調用mian()函數,但在C語言中卻是允許的(不過這種情
況極為罕見)
5)完整的函教原型聲明在C++中是必須的,但在C語言中卻沒這麼嚴格.
6)在C++中由typedef定義的名字不能與已有的結構標籤衝突,但在C語言中卻是充
許的(它們分屬不同的名命空間).
7)當void*指針賦值給另一個類型的指針時,C++規定必須進行強制類型轉換,但在C
語言中卻無必要。
8)在C++中,聲明可以出現在語句可以出現的任何地方.在C語言中的代碼塊中,所
有的聲明必須出現在所有語句的前面.
9)在C++,字符常量的類型是char,但在C語言中,它們的類型是inL也就是說,
在C++中,sizeof(‘a’)的結果是1.而在c語言中,它的值要大一些。
#(讀做 “C sharp”)是微軟公司在去年六月發布的一種新的編程語言,並定於在微軟職業開發者論壇(PDC)上登台亮相.C#是微軟公司研究員Anders Hejlsberg的最新成果.C#看起來與Java有着驚人的相似;它包括了諸如單一繼承,界面,與Java幾乎同樣的語法,和編譯成中間代碼再運行的過程.但是C#與Java有着明顯的不同,它借鑒了Delphi的一個特點,與COM(組件對象模型)是直接集成的,而且它是微軟公司.NET windows網絡框架的主角.
微軟c#語言定義主要是從C和C++繼承而來的,而且語言中的許多元素也反映了這一點.C#在設計者從C++繼承的可選選項方面比Java要廣泛一些(比如說structs),它還增加了自己新的特點(比方說源代碼版本定義).但它還太不成熟,不可能擠垮Java.C#還需要進化成一種開發者能夠接受和採用的語言.而微軟當前為它的這種新語言大造聲勢也是值得注意的.目前大家的反應是:”這是對Java的反擊.”
C#更象Java一些,雖然微軟在這個問題上保持沉默.這也是意料中的事情,我覺得,因為Java近來很成功而使用Java的公司都報告說它們在生產效率上比C++獲得了提高.
Java所帶來的巨大影響和大家對它的廣泛接受已經由工作於這種語言和平台之上的程序員數量明顯的說明了(估計世界範圍內共有兩百五十萬程序員使用Java).由這種語言寫成的應用程序的數量是令人驚訝的並已經滲透了每一個級別的計算,包括無線計算和移動電話(比如日本發明的Java電話).C#能夠在用戶領域獲得這樣的禮遇嗎?我們必須等待並觀望,就象已經由SSI公司的CEO和主席Kalpathi S. Suresh指出來的那樣,”我發現所有這些都是漸進的.如果C#不存在,我們總能回到Java或C和C++.這些都不完全是新技術;它們在更大的意義上來說只是大公司製造的市場噱頭.我們必須給他們時間安頓下來看看這些是不是真的對IT工業有什麼影響.”
C++,這個詞在中國大陸的程序員圈子中通常被讀做“C加加”,而西方的程序員通常讀做“C plus plus”,它是一種使用非常廣泛的計算機編程語言。C++是一種靜態數據類型檢查的,支持多重編程範式的通用程序設計語言。它支持過程序程序設計、數據抽象、面向對象程序設計、泛型程序設計等多種程序設計風格。
貝爾實驗室的本賈尼·斯特勞斯特盧普(w:en:Bjarne Stroustrup)博士在20世紀80年代發明並實現了C++(最初這種語言被稱作“C with Classes”)。一開始C++是作為C語言的增強版出現的,從給C語言增加類開始,不斷的增加新特性。虛函數(virtual function)、運算符重載(operator overloading)、多重繼承(multiple inheritance)、模板(template)、異常(exception)、RTTI、名字空間(name space)逐漸被加入標準。1998年國際標準組織(ISO)頒布了C++程序設計語言的國際標準ISO/IEC 14882-1998。遺憾的是,由於C++語言過於複雜,以及他經歷了長年的演變,直到現在(2004年)只有少數幾個編譯器完全符合這個標準。
另外,就目前學習C++而言,可以認為他是一門獨立的語言;他並不依賴C語言,我們可以完全不學C語言,而直接學習C++。根據《C++編程思想》(Thinking in C++)一書所評述的,C++與C的效率往往相差在正負5%之間。所以有人認為在大多數場合C++ 完全可以取代C語言。
C++語言發展大概可以分為三個階段:第一階段從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向對象語言,並且憑藉著接近C語言的效率,在工業界使用的開發語言中佔據了相當大份額;第二階段從1995年到2000年,這一階段由於標準模板庫(STL)和後來的Boost等程序庫的出現,泛型程序設計在C++中佔據了越來越多的比重性。當然,同時由於Java、C#等語言的出現和硬件價格的大規模下降,C++受到了一定的衝擊;第三階段從2000年至今,由於以Loki、MPL等程序庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最複雜的一員。
至於計算機2級為什麼不包括C#,因為各種語言的思想都是相同的,掌握了C,其他的就都很容易了,我們學的主要是這個思想
C#語言到底是什麼,它與C語言有什麼區別?
C#是微軟公司在2000年6月發布的一種面向對象的編程語言。它使得程序員可以快速地編寫各種基於Microsoft .NET平台的應用程序,Microsoft .NET提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域。
C#語言與C語言區別為:編譯不同、內存管理不同、應用不同。
一、編譯不同
1、C#語言:C#語言的代碼首先會被編譯為CLR(公共語言運行庫),然後由.NET框架解析。
2、C語言:C語言的代碼將會直接被編譯為機器代碼。
二、內存管理不同
1、C#語言:C#語言是在虛擬機上執行,會自動進行內存管理。
2、C語言:C語言需要手動組織管理內存。
三、應用不同
1、C#語言:C#語言的的應用涉及基於Web的桌面和移動應用程序。
2、C語言:C語言的的唯一目的就是創建獨立的控制台應用程序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/302942.html