① excel vba常用代碼
Visual Basic for Applications(簡稱VBA)是新一代標准宏語言,是基於Visual Basic for Windows 發展而來的。它與傳統的宏語言不同,傳統的宏語言不具有高級語言的特徵,沒有面向對象的程序設計概念和方法。而VBA 提供了面向對象的程序設計方法,提供了相當完整的程序設計語言。VBA 易於學習掌握,可以使用宏記錄器記錄用戶的各種操作並將其轉換為VBA 程序代碼。這樣用戶可以容易地將日常工作轉換為VBA 程序代碼,使工作自動化。[1]
數據類型
基本數據類型
即Primary Type Data,下述列表的括弧內為位元組數:
Byte(1):無符號數類型,取值范圍0-255
Boolean(2)
Integer(2)
Long(4)
Single(4)
Double(8)
Currency(8)
Decimal(14)
Date(8)
String
Object(4)
Variant(根據分配確定)[2]
自定義的數據類型
相當於C語言的struct,例如:[2]
Type 自定義類型名 元素名 As 類型 … [元素名 As 類型] End Type
數組
Option Base 0 :數組索引值從0開始[2]
Option Base 1 :數組索引值從1開始
Dim MyArray(10) :聲明一個數組變數,10是最大的可用的數組索引值
MyArray(5) = 101 :給數組的元素賦值
Dim Data(10,5) :聲明一個二維數組變數
Data(1,1) = "A001" :給數組元素賦值
Dim cArr(-11 To 20, 1 To 3) As String :聲明一個數組,定義數組索引值的上下界
Dim dArr() As String :聲明動態數組
ReDim dArr(0 To 5, 1 To 2) :改變動態數組的尺寸默認把原數據清除。如果保留原來的數據,必須加上參數
Preserve:使用Preserve參數時只能改變最後一位的大小
If UBound(vTemp) = -1 Then:判斷數組變數vTemp是否為空數組
End If Erase MyArrar, Data Erase語句清除數組元素,釋放變數佔用的空間[2]
常量
編輯
系統定義常量
系統定義常量有3個:True、False和Null。[4]
固有常量
固有常量是編程時引用的對象庫定義的常量。所有固有常量都可以在宏或VBA代碼中使用。通常,固有常量通過前兩個字母來指明定義該常量。來自VB庫的常量則以「vb」開頭。來自Access的常量以「ac」開頭。可以使用對象瀏覽器來查看所有對象庫中的固有常量列表。[4]
在VBA中,常量的數據類型有整型、長整型、單精度型、雙精度型、位元組型、貨幣型、字元型、日期型和邏輯型。一個整型數據就是一個整型常量,一個長整型數據就是一個長整型常量。例如,12%、-1%是整型常量,32768&、10000000&是長整型常量,-2.5 1、3.14是單精度實型常量,3.1415926#是雙精度實型常量,China、Shanghai是字元型常量,#07/13/2001 11:45PM#是日期常量,由符號 「 # 」 將字元括起來。[4]
符號常量
可以自行定義的常量即符號常量,必須先定義,後使用。可見,需要聲明的常量都是符號常量。[4]
基本語法格式:
1如:Global Const符號常量名稱 = 常量值[4]
語句功能:
定義一個符號常量,並將指定表達式的值賦給符號常量。[4]
語句說明如下:[4]
1)「常量名」指定符號常量的名字。符號常量名可以由字母、數字和下畫線組成,但只能以字母開頭,不能含有空格。[4]
2)「表達式」指定符號常量的值。該表達式通常由數值型、字元型、邏輯型或日期型數據以及各種運算符組成,但在表達式中不能出現變數和函數。[4]
3) public用來表示這個常量的作用范圍是整個資料庫的所有模塊。[4]
4) private則表示這個常量只在使用該聲明常量語句的模塊中起作用。[4]
說明:
1)除用戶定義的符號常量外,VBA還提供了許多符號常量,我們可以直接使用。[4]
2)對數碼比較長,並且在程序中多次使用的常量,通常使用符號常量代替。運行程序時,系統自動把程序中的所有符號常量換為賦給它的值。[4]
變數
編輯
與常量一樣,變數也是一塊內存空間,用於保存程序運行過程中可能變化的數據。變數的名稱是用戶定義的一個標識符。[5]
在代碼中需要使用該變數時,只需引用相應的標識符即可,而不用管變數當前的值具體是什麼。[5]
聲明
與用戶自定義的常量相似,變數在使用之前都需要聲明,在VBA中聲明變數的語法格式有以下幾種:[5]
關鍵字變數名 AS數據類型
關鍵字變數1,變數2 ... 變數n AS數據類型
關鍵字變數1 AS數據類型,變數2 As數據類型, ... ,變數n AS數據類型
在第二種語法格式中, 「變數n」的數據類型為AS關鍵字後定義的數據類型,而「變數1」、「變數2」、…的數據類型為變體型。[5]
在VBA中,可用Dim、Private、Public和Static這4個關鍵字來聲明變數,使用不同關鍵字聲明的變數其含義也有所不同。[5]
◆ 利用Dim關鍵字聲明變數:Dim關鍵字主要用來在內存中分配一塊空間,並為該空間命名,是VBA中聲明變數最常用的關鍵字。使用Dim關鍵字聲明的變數只能在當前過程或模塊中使用。[5]
◆ 利用Private關鍵字聲明變數:Private關鍵字用於在類模塊中聲明一個私有變數,它只能在當前的類模塊中使用。當定義變數的位置同處於類模塊中時,其使用效果與使用Dim關鍵字定義的變數相同。[5]
◆ 利用Public關鍵字聲明變數:利用Public關鍵字聲明的變數可以在程序的任何地方調用,而與聲明變數的位置無關。[5]
◆ 利用Static關鍵字聲明變數:Static關鍵字用於聲明靜態變數,即變數的值在整個代碼運行期間都能被保留。[5]
賦值
變數在使用時還需要對其進行賦值。在VBA中對變數進行賦值可通過 「 = 」 符號或 「 Set 」 關鍵字進行。通過 「 = 」 符號對變數賦值的語法格式有以下幾種。[5]
變數名=數據
變數1=變數2 運算符 數據
變數1=變數2 運算符 變數3 … 運算符 變數n
如果在定義變數時指定了變數的數據類型,則為變數所賦的值也必須是該數據類型的值。如果變數定義為Integer類型,而在賦值時卻給了變數一個String類型的數據,則在編譯運行的過程中將彈出錯誤彈框。[5]
運算符
編輯
運算符是在程序中執行計算功能的某些特殊符號,它是程序代碼的重要組成部分。在程序代碼中,運算符不能單獨使用,必須與其操作數共同組成表達式後才具有運算意義。VBA中的運算符包含算術運算符、連接運算符、比較運算符和邏輯運算符等。[4]
算術運算符
算術運算符主要用於執行四則運算,僅用算術運算符連接起來的表達式稱為算術表達式。算術運算符及其作用與示例如表所示。[5]
例子
名稱
結果
-$a
取反
$a 的負值。
$a + $b
加法
$a 和 $b 的和。
$a - $b
減法
$a 和 $b 的差。
$a * $b
乘法
$a 和 $b 的積。
$a / $b
除法
$a 除以 $b 的商,允許小數。
$a $b 除法 $a 除以 $b 的商,結果取整。
$a Mod $b
取余
$a 除以 $b 的余數
注意:
在執行算術運算時,運算符兩側操作的數據類型必須相同,否則會出現「類型不匹配」的錯誤提示。當「+」運算符左右兩側都是字元串類型的操作數時,執行的是連接運算,如表達式「"Pass+"word"的計算結果為字元串「 PassWord 」。[5]
連接運算符
連接運算符的作用是將運算符兩側的操作數連接成一個數,其操作數的數據類型通常都為String類型。VBA中的連接運算符有「&」和「+」兩種,由於使用「+」執行連接運算時,容易與加法運算混淆,所以通常都採用「&」進行連接運算。[5]
比較運算符
比較運算符可以對運算符兩側的操作數執行比較運算,其返回結果為Boolean類型的True或False。比較運算符的操作數通常為具體的數值,當操作數為字元串或其他符號時,是根據該符號的ASCII碼進行比較的。VBA中的比較運算符及其作用與示例如表所示。[5]
例子
名稱
結果
$a = $b
等於
TRUE,如果 $a 等於 $b。
$a <> $b
不等
TRUE,如果 $a 不等於 $b。
$a < $b
小於
TRUE,如果 $a 嚴格小於 $b。
$a > $b
大於
TRUE,如果 $a 嚴格大於 $b。
$a <= $b
小於等於
TRUE,如果 $a 小於或者等於 $b。
$a >= $b
大於等於
TRUE,如果 $a 大於或者等於 $b。
邏輯運算符
邏輯運算符用於對運算符兩側的操作數執行邏輯運算,參與邏輯運算的操作數本身可以是邏輯表達式(表達式的最終結果為True或 False),也可以是算術表達式(表達式的最終返回值為0或非0)。[5]
在邏輯運算中,數值0與邏輯值 False相同,表示邏輯假;非0數值與True相同,表示邏輯真。邏輯運算符及其含義與示例如表所示。[5]
例子
名稱
結果
$a and $b
And(邏輯與)
TRUE,如果 $a 與 $b 都為TRUE。
$a or $b
Or(邏輯或)
TRUE,如果 $a 或 $b 任一為TRUE。
$a xor $b
Xor(邏輯異或)
TRUE,如果 $a 或 $b 同位相異。
Not(1>2)
Not(邏輯非)
TRUE。
(1>2) Eqv (1>2)
兩個操作數同為假,返回False;兩個操作數同為真,返回True;兩個操作數一真一假,返回False
TRUE。
2<>1 Imp 3<5
運算符左右同為真,返回True;左右同為假,返回True;左真右假,回返 False;左假右真,返回True
TRUE。
語法結構
編輯
if 語句
1Select Case 語句
1其中的表達式列表可以為:[5]
表達式例: "A"
用逗號分隔的一組枚舉表達式例:2,4,6,8
表達式1 To表達式2 例:60 To 100
Is關系運算符表達式 例:Is < 60
Do...Loop 語句
1For...Next語句
1For Each … Next語句
1跳出本次循環的continue語句
1With語句
1On Error語句
1或
1具有控製作用的函數
If(條件式,表達式1,表達式2)[5]
Switch(條件式1,表達式1,[條件式2,表達式2[,...,條件式n,表達式n]])
Choose(索引式,選項1[,選項2,...[,選項n]]) '這是基於1的索引
其他語句
編輯
注釋語句
使用REM或者單引號開始的行。[6]
語句的連寫與續行
如果一行包括多條語句,用冒號分割各個語句。跨多行的語句,在行末用「空格加下劃線」表示續行[6]。
過程與函數
編輯
12可以是Private、Public、Friend、Static等修飾。[6]
調用函數/過程時,可以加括弧或者不加括弧。如果調用表達式作為一行的一部分,那麼必須用參數,例如函數調用的返回值賦給變數。 調用過程時, 可以使用/不使用call關鍵字。使用call語句調用過程,如果無參數,則不加括弧;如果有參數,必須加括弧。如果調用時用括弧包住單個參數,則該參數強行按值傳遞。需要特別注意,不用call不加括弧的調用,形參與實參是傳值(passed by value)而不是傳引用(passed by reference),這會導致一些對象的方法調用失敗。例如:[6]
1常用內置函數
編輯
VBA的常用內置函數:[5]
MsgBox
InputBox
舍入函數:Fix 向0取整,Int向下取整, Round四捨五入
Rnd: 返回0-1內的單精度隨機數
字元串函數:[5]
Filter:對字元串的一維數組的過濾
InStr([Start, ]<Str1>,<Str2>[, Compare])與InStrRev: 查找子串
Len:字元串長度
Join:連接一維數組中的所有子字元串
Left,Right,Mid: 截取子字元串
Space(數值) :生成空格字元串
Ucase,Lcase:大小寫轉換函數
Ltrim, Rtrim,Trim :刪除首尾空格
Replace
Split:分割一個字元串成為一維數組
StrComp:字元串比較
StrConv:字元串轉換
String(number, character):制定字元重復若干次
StrReverse
日期/時間有關函數:[5]
Year, Month, Day, WeekDay,Hour,Minute,Second: 截取日期時間分量
DateAdd: 日期/時間增量函數
DateDiff(<間隔類型>,<日期1>,<日期2>[,W1][,W2])日期/時間的距離函數
DatePart(<分割類型>,<日期>[,w1][,w2])時間分割函數
DateSerial(<表達式1>,<表達式2>,<表達式3>) 合成日期;DateValue(「字元串表達式」)返回日期;
Date,Time,Now,Timer: 返回日期時間
DateValue
TimeSerial:由時間序列得到時間對象
TimeValue:由時間字元串得到時間對象
Weekday:獲得日期的周幾
WeekdayName
轉換函數:CBool、CByte、CCur、CDate、 CDbl、CDec、CInt、CLng、CLngLng、CLngPtr、[5]CSng、CStr、CVar、CVErr、Asc(<字元串表達式>)返回第一個字元的Ascii編碼值、Chr(ASCII碼)返回字元、Hex、Oct、Str(<數值表達式>)返回字元串、Val(string)、Format、FormatCurrency、FormatDateTime、FormatNumber、FormatPercent、MonthName。
Nz(表達式或欄位屬性值[,規定值])如果是空,則返回0或者""或者函數的第二個參數值[5]
驗證函數:isNumeric、isDate、isNull、isEmpty、IsArray、IsError、IsMissing、IsObject[5]
數學函數:Abs、Sqr、Tan、Atn(即atan)、Sin、Cos、Exp(e為基的指數)、Log自然對數[5]
Array:構造一個Array對象[5]
CallByName: get or set a property, or invoke a method at run time using a string name.[5]
控制流:Choose:類似於C語言的select語句、If相當於IF-ELSE語句、Switch[5]
Command:獲取命令行參數[5]
CreateObject:創建ActiveX對象
CurDir:返回指定驅動器的當前工作路徑[5]
由基本數學函數導出的函數:Sec、Cosec、Cotangent、Cotan、Arcsin、Arccos、Arcsec、Arccosec、Arccotan、HSin、HCos、HTan、HSec、HCosec、HCotan、HArcsin、HArccos、HArctan、HArcsec、HArccosec、HArccotan、LogN
DoEvents:暫時把CPU控制權交回給系統[5]
Environ:返回環境變數的值[5]
文件操作:[5]
Dir:返回滿足條件的所有文件、目錄的名字
EOF
FileAttr
FileDateTime
FileLen
FreeFile Function
GetAttr:返迴文件、目錄的屬性值
Input:讀取文件
Loc:文件指針位置
LOF:文件打開時的指針位置
Seek:文件指針定位
Spc:使用Print做position output
Tab:用於Print函數
Error:錯誤號對應的錯誤消息[5]
Windows Registry中的數據:GetAllSettings、SaveSetting、DeleteSetting、GetSetting[5]
GetObject:ActiveX組建的引用[5]
IMEStatus:返回當前Input Method Editor (IME)[5]
Macintosh平台:MacID、MacScript[5]
金融函數:[5]
DDB:使用double-declining balance計算貶值
FV:計算固定利率的年金
IPmt:計算利率
IRR:計算利率
MIRR:計算利率
NPer:計算周期數
NPV:計算net present value
Pmt:計算支付數
PPmt:計算本金支付數
PV:計算present value
Rate:利息率
SLN:straight-line depreciation
SYD:計算sum-of-years' digits depreciation
Partition:返回字元串,表示一個數值名字落在各個range內。常用於SQL select語句[5]
QBColor:顏色值[5]
RGB:顏色值[5]
TypeName:得到變數的類型名[5]
VarType:得到變數的類型數[5]
② php中有幾個截取字元創的函數
php字元串截取函數可分為英文截取和中文截取:
php截取英文字元串的函數事例substr()函數
<?php
//構造字元串
$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
echo"原字元串:".$str."";
//按各種方式進行截取
$str1=substr($str,5);
echo"從第5個字元開始取至最後:".$str1."";
$str2=substr($str,9,4);
echo"從第9個字元開始取4個字元:".$str2."";
$str3=substr($str,-5);
echo"取倒數5個字元:".$str3."";
$str4=substr($str,-8,4);
echo"從倒數第8個字元開始向後取4個字元:".$str4."";
$str5=substr($str,-8,-2);
echo"從倒數第8個字元開始取到倒數第2個字元為止:".$str5."";
?>
php截取中文字元串長度的mb_substr()、mb_strcut()函數
<?php
echomb_substr('這樣一來我的字元串就不會有亂碼^_^',0,7,'utf-8');
?>
輸出:這樣一來我的字
<?php
echomb_strcut('這樣一來我的字元串就不會有亂碼^_^',0,7,'utf-8');
?
③ 關於隨機數組
maze[9][9]=0;//起點和終點
越界了
int maze[9][9]; 這個是定義,訪問的時候最多訪問maze[8][8],越界就是訪問了一個數組外的非法地址
----------------
for (i=1;i<10;i++)
{
for(j=1;j<10;j++)
{
x=(((double)rand()/(double)RAND_MAX)*RANGE_MAX+RANGE_MIN);
if(x%2)
maze[i][j]=0;
else maze[i][j]=1;//隨機生成一個迷宮
}
}
當i=9,j=9的時候maze[i][j]越界,肯定崩潰了
另外隨機數本身沒有問題,其實沒有必要那麼復雜,你就x = rand()即可,然後看他是否能被2除盡,反正都是50%的概率。還有簡單的方法,你可以得到一個隨機數,然後擴大N倍之後把它的二進制形式(010100001101這樣的形式)直接作為結果,一次可以得到很多數,有些加密演算法隨機數就這么得到。
rand看似隨機,實際上也是根據數學公式來的,既然是公式就沒有絕對的隨機,,所以你如果想得到大量隨機數,必須經常用時間種子來初始化隨機數生成器,你可以做個試驗看看rand多少次就開始重復(不再隨機)
④ 高鐵和動車有什麼區別
1、運行速度不同。動車組列車運行速度有160級、200級和250級。高鐵時速一般不低於250級,時速有250級、350級、380級、400級等。
2、運行范圍不同。普通動車組通常跨省區域運行;高速動車組:運輸距離長短不一,省內有運行,跨省也有運行。
3、信號系統不同。動車可以在既有線行駛(普通動車組的信號系統與既有線兼容),高鐵則必須在新建的客專上行駛(高速動車組的信號系統不與既有線兼容)
4、動力方式不同。動車分動力集中式和動力分散式,我國常見的CRH系列動車都是動力分散的,且都是交流傳動,此外地鐵列車也可以算動車(一般都是直流傳動)。
(4)chr數字貨幣擴展閱讀:
火車其他列車類型:
1、城際動車組列車(C字頭)
2008年8月1日,京津城際鐵路正式對公眾運行,新啟用車次為C+4位數字,意為城際列車,目前最高時速是300公里,鐵路系統標准念法為「城**次」。京津城際的車次范圍是C2001~C2282次。例如:武漢城際列車的車次范圍是C5001~C5720。
2、直達特快旅客列車(Z字頭)
最高時速160公里,鐵路系統標准念法為「直**次」。大部分為全列軟席,少部分車加掛硬卧與硬座,全程只有部分車停靠起點站和/或終點站所在鐵路局管內的大站。此類列車為空調列車。
3、特快旅客列車(T字頭)
最高時速140公里,鐵路系統標准念法為「特**次」。跨局特快全程只停省會城市、副省級市和少量主要地級市等特大站或直達,管內特快全程一般只停地級市。此類列車為空調列車。
⑤ 元宇宙概念幣有哪些
1.MANA
Decentraland(數字貨幣代碼:MANA)包括一個去中心化的領地所有權賬本、一份描述每塊領地內容的協議以及用戶互動的點對點網路。Decentraland是一個分布式共享虛擬平台。在這個平台上,用戶可以瀏覽和發現內容,並與其他人和實體互動。用戶還可以通過基於區塊鏈的土地賬本宣稱對虛擬領地的所有權。領地由直角坐標(X,Y)來劃定,其所有者可以決定領地上發布的內容,包括從靜態3D場景到游戲等互動式系統。領地是存儲在以太坊智能合同中的不可替代的、可轉移的稀有數字資產,可用名為MANA的ERC20代幣購買。MANA代幣可以用來購買領地、商品和服務,還可以作為激勵措施來鼓勵內容創造和用戶採用度,進而實現一個去中心化的虛擬世界。
MANA最近被炒得火熱,不少朋友目前也被套在山頂了。巔峰時期價格為4.9美元附近接近5美元。風頭過去之後現在價格正在回落,能否再次被拉高目前也不確定。MANA(Decentraland)和ENJ(Enjin)算是NFT 中的兩大龍頭項目,其中MANA曾是區塊鏈游戲類第一大流通市值項目,被認為是VR版頭號玩家。Decentraland顯然是資格比較老舊的一個,特別是對於加密元宇宙,目前真的處於早期階段,所以永遠不要認為你進場晚了,畢竟新的韭菜會越來越多。如果你只是想玩游戲,或者如果你想通過 Axie 賺錢,那麼總是有很多時間以你想要的方式進入,在它們上面有很多潛力。
2.SAND
Sandbox聲稱是一個虛擬世界,玩家可以使用平台的實用程序令牌SAND在以太坊區塊鏈中構建,擁有自己的游戲並從中獲利。據稱玩家可以創建數字資產不可替代令牌也稱為NFT,將其上傳到市場,然後拖放它們以使用TheSandboxGameMaker創建游戲體驗。沙盒(Sandbox)旨在通過提供真實所有權和數字稀缺性以及貨幣化功能和互操作性的優勢,將區塊鏈帶入主流游戲吸引加密和非加密游戲愛好者。
3.AXS
Axie Infinity(AXS幣)是一個建立在以太坊區塊鏈上的,受神奇寶貝啟發的數字寵物世界。任何人都可以通過參與游戲和對游戲世界做出貢獻來獲得代幣獎勵,項目願景是將工作和娛樂成為一體。Axie Infinity成為一個集收集、訓練、飼養、戰斗、社交玩法於一體數字寵物社區,每個Axie都有獨特的遺傳數據存儲在以太坊鏈上,具備獨特的價值。
4.CHR
Chromia(CHR幣)是一個新的區塊鏈平台,主要用於去中心化應用程序。相比於以太坊,Chromia最大的優勢更快的速度和更靈活的收費策略。它是針對現有平台的缺點而設計的,旨在使新一代程序(dapps)能夠擴展到當前可能的范圍之外。Chromia既是一個區塊鏈,也是一個關系資料庫。這意味著分散式應用程序(dapps)可以以全世界開發人員都熟悉的方式編寫,無論是大型企業應用程序、游戲還是小型項目。
5.TLM
TLM是Alien Worlds項目代幣,Alien Worlds是NFT DeFi的元宇宙,可以模擬玩家之間的經濟競爭與合作。 通過激勵玩家獲取Trilium(TLM),用戶可以控制自治組織(Planet DAO)並獲得更多游戲玩法。
6.SLP
SLP(Small Love Potion)是一種可以在以太坊區塊鏈上使用的ERC-20代幣。Axie Infinity是一款在以太坊區塊鏈上運行的游戲(dapp),用戶可以在這里收集、飼養、繁殖和戰斗名為axies的虛擬生物。Axies和現實生活中的寵物非常相似,每一個都有自己獨特的特徵和外表。
⑥ 月兔元宇宙虛擬貨幣多少一枚
目前為720元一枚。
元宇宙數字貨幣主要有SLP、TLM、CHR、SAND、AXS、MANA六種貨幣,元宇宙數字貨幣龍頭主要代表有NFT、DeFi、Roblox,NFT使數字內容資產化,幣安NFT平台上線將幣安NFT交易市場NFT簡單化。月兔虛擬貨幣屬於TLM的一種。
⑦ 跪求!關於計算機的文章
注:文章分兩部分,計算機的現狀和未來
計算機發展及現狀
計算機網路是計算機技術和通信技術緊密結合的產物,它涉及到通信與計算機兩個領域。它的誕生使計算機體系結構發生了巨大變化,在當今社會經濟中起著非常重要的作用,它對人類社會的進步做出了巨大貢獻。從某種意義上講,計算機網路的發展水平不僅反映了一個國家的計算機科學和通信技術水平,而且已經成為衡量其國力及現代化程度的重要標志之一。
自50年代開始,人們及各種組織機構使用計算機來管理他們的信息的速度迅速增長。早期,限於技術條件使得當時的計算機都非常龐大和非常昂貴,任何機構都不可能為雇員個人提供使用整個計算機,主機一定是共享的,它被用來存儲和組織數據、集中控制和管理整個系統。所有用戶都有連接系統的終端設備,將資料庫錄入到主機中處理,或者是將主機中的處理結果,通過集中控制的輸出設備取出來。它最典型的特徵是:通過主機系統形成大部分的通信流程,構成系統的所有通信協議都是系統專有的,大型主機在系統中占據著絕對的支配作用,所有控制和管理功能都是由主機來完成。
隨著計算機技術的不斷發展,尤其是大量功能先進的個人計算機的問世,使得每一個人可以完全控制自己的計算機,進行他所希望的作業處理,以個人計算機(PC)方式呈現的計算能力發展成為獨立的平台,導致了一種新的計算結構---分布式計算模式的誕生。
一般來講,計算機網路的發展可分為四個階段:
第一階段:計算機技術與通信技術相結合,形成計算機網路的雛形;
第二階段:在計算機通信網路的基礎上,完成網路體系結構與協議的研究,形成了計算機網路;
第三階段:在解決計算機連網與網路互連標准化問題的背景下,提出開放系統互連參考模型與協議,促進了符合國際標準的計算機網路技術的發展;
第四階段:計算機網路向互連、高速、智能化方向發展,並獲得廣泛的應用。
任何一種新技術的出現都必須具備兩個條件:即強烈的社會需求與先期技術的成熟。計算機網路技術的形成與發展也證實了這條規律。1946年世界上第一台電子數字計算機ENIAC在美國誕生時,計算機技術與通信技術並沒有直接的聯系。50年代初,由於美國軍方的需要,美國半自動地面防空系統SAGE進行了計算機技術與通信技術相結合的嘗試。要實現這樣的目的,首先要完成數據通信技術的基礎研究。在這項研究的基礎上,人們完全可以將地理位置分散的多個終端通信線路連到一台中心計算機上。用戶可以在自己的辦公室內的終端鍵入程序,通過通信線路傳送到中心計算機,人們把這種以單個為中心的聯機系統稱做面向終端的遠程聯機系統。它是計算機通信網路的一種。60年代初美國航空公司建成的由一台計算機與分布在全美國的2000多個終端組成的航空訂票系統SABRE-1就是這種計算機通信網路。
隨著計算機應用的發展,出現了多台計算機互連的需求。這種需求主要來自軍事、科學研究、地區與國家經濟信息分析決策、大型企業經營管理。他們希望將分布在不同地點的計算機通過通信線路互連成為計算機-計算機網路。網路用戶可以通過計算機使用本地計算機的軟體、硬體與數據資源,也可以使用連網的其它地方計算機軟體、硬體與數據資源,以達到計算機資源共享的目的。這一階段研究的典型代表是美國國防部高級研究計劃局(ARPA,Advanced Research Projects Agency)的ARPAnet(通常稱為ARPA網)。1969年ARPA網只有4個結點,1973年發展到40個結點,1983年已經達到100多個結點。ARPA網通過有線、無線與衛星通信線路,使網路覆蓋了從美國本土到歐洲與夏威夷的廣闊地域。ARPR網是計算機網路技術發展的一個重要的里程碑,它對發展計算機網路技術的主要貢獻表現在以下幾個方面:
1、完成了對計算機網路的定義、分類與子課題研究內容的描述;
2、提出了資源子網、通信子網的兩級網路結構的概念;
3、研究了報文分組交換的數據交換方法;
4、採用了層次結構的網路體系結構模型與協議體系。
未來計算機與計算機技術
計算機的要害技術繼續發展
未來的計算機技術將向超高速、超小型、平行處理、智能化的方向發展。盡管受到物理極限的約束,採用硅晶元的計算機的核心部件CPU的性能還會持續增長。作為Moore定律驅動下成功企業的典範Inter預計2001年推出1億個晶體管的微處理器,並預計在2010年推出集成10億個晶體管的微處理器,其性能為10萬MIPS(1000億條指令/秒)。而每秒100萬億次的超級計算機將出現在本世紀初出現。超高速計算機將採用平行處理技術,使計算機系統同時執行多條指令或同時對多個數據進行處理,這是改進計算機結構、提高計算機運行速度的要害技術。
同時計算機將具備更多的智能成分,它將具有多種感知能力、一定的思考與判定能力及一定的自然語言能力。除了提供自然的輸入手段(如語音輸入、手寫輸入)外,讓人能產生身臨其境感覺的各種交互設備已經出現,虛擬現實技術是這一領域發展的集中體現。
傳統的磁存儲、光碟存儲容量繼續攀升,新的海量存儲技術趨於成熟,新型的存儲器每立方厘米存儲容量可達10TB(以一本書30萬字計,它可存儲約1500萬本書)。信息的永久存儲也將成為現實,千年存儲器正在研製中,這樣的存儲器可以抗干擾、抗高溫、防震、防水、防腐蝕。如是,今日的大量文獻可以原汁原味保存、並流芳百世。
新型計算機系統不斷涌現
硅晶元技術的高速發展同時也意味著硅技術越來越近其物理極限,為此,世界各國的研究人員正在加緊研究開發新型計算機,計算機從體系結構的變革到器件與技術革命都要產生一次量的乃至質的飛躍。新型的量子計算機、光子計算機、生物計算機、納米計算機等將會在21世紀走進我們的生活,遍布各個領域。
量子計算機
量子計算機是基於量子效應基礎上開發的,它利用一種鏈狀分子聚合物的特性來表示開與關的狀態,利用激光脈沖來改變分子的狀態,使信息沿著聚合物移動,從而進行運算。
量子計算機中數據用量子位存儲。由於量子疊加效應,一個量子位可以是0或1,也可以既存儲0又存儲1。因此一個量子位可以存儲2個數據,同樣數量的存儲位,量子計算機的存儲量比通常計算機大許多。同時量子計算機能夠實行量子並行計算,其運算速度可能比目前個人計算機的PentiumⅢ晶片快10億倍。目前正在開發中的量子計算機有3種類型:核磁共振(NMR)量子計算機、硅基半導體量子計算機、離子阱量子計算機。預計2030年將普及量子計算機。
光子計算機
光子計算機即全光數字計算機,以光子代替電子,光互連代替導線互連,光硬體代替計算機中的電子硬體,光運算代替電運算。
與電子計算機相比,光計算機的「無導線計算機」信息傳遞平行通道密度極大。一枚直徑5分硬幣大小的棱鏡,它的通過能力超過全世界現有電話電纜的許多倍。光的並行、高速,天然地決定了光計算機的並行處理能力很強,具有超高速運算速度。超高速電子計算機只能在低溫下工作,而光計算機在室溫下即可開展工作。光計算機還具有與人腦相似的容錯性。系統中某一元件損壞或出錯時,並不影響最終的計算結果。
目前,世界上第一台光計算機已由歐共體的英國、法國、比利時、德國、義大利的70多名科學家研製成功,其運算速度比電子計算機快1000倍。科學家們預計,光計算機的進一步研製將成為21世紀高科技課題之一。
生物計算機(分子計算機)
生物計算機的運算過程就是蛋白質分子與四周物理化學介質的相互作用過程。計算機的轉換開關由酶來充當,而程序則在酶合成系統本身和蛋白質的結構中極其明顯地表示出來。
20世紀70年代,人們發現脫氧核糖核酸(DNA)處於不同狀態時可以代表信息的有或無。DNA分子中的遺傳密碼相當於存儲的數據,DNA分子間通過生化反應,從一種基因代瑪轉變為另一種基因代碼。反應前的基因代碼相當於輸入數據,反應後的基因代碼相當於輸出數據。假如能控制這一反應過程,那麼就可以製作成功DNA計算機。
蛋白質分子比硅晶片上電子元件要小得多,彼此相距甚近,生物計算機完成一項運算,所需的時間僅為10微微秒,比人的思維速度快100萬倍。DNA分子計算機具有驚人的存貯容量,1立方米的DNA溶液,可存儲1萬億億的二進制數據。DNA計算機消耗的能量非常小,只有電子計算機的十億分之一。由於生物晶元的原材料是蛋白質分子,所以生物計算機既有自我修復的功能,又可直接與生物活體相聯。預計10~20年後,DNA計算機將進入實用階段。
納米計算機
「納米」是一個計量單位,一個納米等於10[-9]米,大約是氫原子直徑的10倍。納米技術是從80年代初迅速發展起來的新的前沿科研領域,最終目標是人類按照自己的意志直接操縱單個原子,製造出具有特定功能的產品。
現在納米技術正從MEMS(微電子機械繫統)起步,把感測器、電動機和各種處理器都放在一個硅晶元上而構成一個系統。應用納米技術研製的計算機內存晶元,其體積不過數百個原子大小,相當於人的頭發絲直徑的千分之一。納米計算機不僅幾乎不需要耗費任何能源,而且其性能要比今天的計算機強大許多倍。
目前,納米計算機的成功研製已有一些鼓舞人心的消息,惠普實驗室的科研人員已開始應用納米技術研製晶元,一旦他們的研究獲得成功,將為其他縮微計算機元件的研製和生產鋪平道路。 互聯網路繼續蔓延與提升
今天人們談到計算機必然地和網路聯系起來,一方面孤立的未加入網路的計算機越來越難以見到,另一方面計算機的概念也被網路所擴展。二十世紀九十年代興起的Internet在過去如火如荼地發展,其影響之廣、普及之快是前所未有的。從沒有一種技術能像Internet一樣,劇烈地改變著我們的學習、生活和習慣方式。全世界幾乎所有國家都有計算機網路直接或間接地與Internet相連,使之成為一個全球范圍的計算機互聯網路。人們可以通過Internet與世界各地的其它用戶自由地進行通信,可從Internet中獲得各種信息。
回顧一下我國互聯網路的發展,就可以感受到互聯網普及之快。近三年中國互聯網路信息中心(CNNIC)對我國互聯網路狀況的調查表明我國的Internet發展呈現爆炸式增長,2000年1月我國上網計算機數為350萬台,2001年的統計數為892萬台,翻一番多;2000年1月我國上網用戶人數890萬;2001年1月的統計數為2250萬人,接近於3倍;2000年1月CN下注冊的域名數為48575,2001年1月的統計數為122099個,接近於3倍;國際線路的總容量目前達2799M,8倍於2000年1月的351M。
人們已充分領略到網路的魅力,Internet大大縮小了時空界限,通過網路人們可以共享計算機硬體資源、軟體資源和信息資源。「網路就是計算機」的概念被事實一再證實,被世人逐步接受。
在未來10年內,建立透明的全光網路勢在必行,互聯網的傳輸速率將提高100倍。在Internet上進行醫療診斷、遠程教學、電子商務、視頻會議、視頻圖書館等將得以普及。同時,無線網路的構建將成為眾多公司競爭的主戰場,未來我們可以通過無線接入隨時隨地連接到Internet上,進行交流、獲取信息、觀看電視節目。
移動計算技術與系統
隨著網際網路的迅猛發展和廣泛應用、無線移動通信技術的成熟以及計算機處理能力的不斷提高,新的業務和應用不斷涌現。移動計算正是為提高工作效率和隨時能夠交換和處理信息所提出,業已成為產業發展的重要方向。
移動計算包括三個要素:通信、計算和移動。這三個方面既相互獨立又相互聯系。移動計算概念提出之前,人們對它們的研究已經很長時間了,移動計算是第一次把它們結合起來進行研究。它們可以相互轉化,例如,通信系統的容量可以通過計算處理(信源壓縮,信道編碼,緩存,預取)得到提高。
移動性可以給計算和通信帶來新的應用,但同時也帶來了許多問題。最大的問題就是如何面對無線移動環境帶來的挑戰。在無線移動環境中,信號要受到各種各樣的干擾和衰落的影響,會有多徑和移動,給信號帶來時域和頻域彌散、頻帶資源受限、較大的傳輸時延等等問題。這樣一個環境下,引出了很多在移動通信網路和計算機網路中未碰到的問題。第一,信道可靠性問題和系統配置問題。有限的無線帶寬、惡劣的通信環境使各種應用必須建立在一個不可靠的、可能斷開的物理連接上。在移動計算網路環境下,移動終端位置的移動要求系統能夠實時進行配置和更新。第二,為了真正實現在移動中進行各種計算,必須要對寬頻數據業務進行支持。第三,如何將現有的主要針對話音業務的移動治理技術拓展到寬頻數據業務。第四,如何把一些在固定計算網路中的成熟技術移植到移動計算網路中。
面向全球網路化應用的各類新型微機和信息終端產品將成為主要產品。便攜計算機、數字基因計算機、移動手機和終端產品,以及各種手持式個人信息終端產品,將把移動計算與數字通信融合為一體,手機將被嵌入高性能晶元和軟體,依據標準的無限通信協議(如藍牙)上網,觀看電視、收聽廣播。在Internet上成長起來的新一代自然不會把汽車僅作為代步工具,汽車將向用戶提供上網、辦公、家庭娛樂等功能,成為車輪上的信息平台。
跨入新世紀的門檻,暢想未來之時,我們不妨回顧本世紀人們對計算機的熟悉。1943年IBM總裁Thomas Wason說「我認為全世界市場的計算機需求量約為五台」。1957年美國PrenticeHall的編輯撰文「我走遍了這個國家並和許多最優秀的人們交談過,我可以確信數據處理熱不會熱過今年」。1968年IBM的高級計算機系統工程師的微晶片上註解「但是……它究竟有什麼用呢?」。1977年數字設備公司的創始人和總裁Ken Olson說「任何人都沒有理由在家裡放一台計算機」。願我們的所言也將被證實是膚淺的、保守的。