弱類型語言

靜態(tài)類型定義語言

一種在編譯時(shí),數(shù)據(jù)類型是固定的語言整陌。大多數(shù)靜態(tài)類型定義語言強(qiáng)制這一點(diǎn)锁荔,它要求你在使用所有變量之前要聲明它們的數(shù)據(jù)類型。Java和C是靜態(tài)類型定義語言黎做。

動(dòng)態(tài)類型定義語言

一種在執(zhí)行期間才去發(fā)現(xiàn)數(shù)據(jù)類型的語言叉跛,與靜態(tài)類型定義相反。VBScript和Python是動(dòng)態(tài)類型定義的蒸殿,因?yàn)樗鼈兪窃诘谝淮谓o一個(gè)變量賦值的時(shí)候找出它的類型的筷厘。

強(qiáng)類型定義語言

一種總是強(qiáng)制類型定義的語言。Java和Python是強(qiáng)制類型定義的宏所。如果你有一個(gè)整數(shù)敞掘,如果不顯示地進(jìn)行轉(zhuǎn)換,你不能將其視為一個(gè)字符串楣铁。

弱類型定義語言

一種類型可以被忽略的語言,與強(qiáng)類型定義相反更扁。VBScript是弱類型定義的盖腕。在VBScript中,可以將字符串'12'和整數(shù)3進(jìn)行連接得到字符串'123'浓镜,然后可以把它看成整數(shù)123溃列,而不需要顯示轉(zhuǎn)換。但其實(shí)它們的類型沒有改變,VB只是在判斷出一個(gè)表達(dá)式含有不同類型的變量之后,自動(dòng)在這些變量前加了一個(gè)clong()或(int)()這樣的轉(zhuǎn)換函數(shù)而已.能做到這一點(diǎn)其實(shí)是歸功于VB的編譯器的智能化而已,這并非是VB語言本身的長處或短處.

結(jié)論:

靜態(tài)是類型編譯時(shí)判斷膛薛;動(dòng)態(tài)是類型運(yùn)行時(shí)判斷听隐;強(qiáng)類型是類型獨(dú)立,不輕易轉(zhuǎn)化哄啄;弱類型是類型不嚴(yán)格區(qū)分雅任,一般是只要大小放得下风范,就可以轉(zhuǎn)化。這種是匯編級(jí)的觀點(diǎn)沪么。面向?qū)ο蟮挠^點(diǎn)并非這樣的硼婿,對(duì)象并不是大小差不多就是類型兼容,而是關(guān)鍵的接口要相同才叫類型兼容禽车。
動(dòng)態(tài)語言并非是弱類型寇漫,這是不等價(jià)的。恰好的殉摔,一般動(dòng)態(tài)語言都是強(qiáng)類型語言州胳,因?yàn)槎际亲裾彰嫦驅(qū)ο蟮挠^點(diǎn)來設(shè)計(jì)對(duì)象的。
動(dòng)態(tài)語言的劣勢很明顯逸月,就是缺少開發(fā)環(huán)境栓撞,運(yùn)行效率差,當(dāng)然語言設(shè)計(jì)上也不完美(靜態(tài)語言何止千萬彻采,但c++也就一個(gè))腐缤。
優(yōu)勢也很明顯,就是編寫容易肛响,層次高岭粤,接近自然語義。動(dòng)態(tài)類型語言效率低下的原因特笋,不在于變量的類型是動(dòng)態(tài)的剃浇,而在于對(duì)象的方法是動(dòng)態(tài)聯(lián)編的,在這一點(diǎn)上動(dòng)態(tài)類型語言和Java沒什么不同猎物。

靜態(tài)類型語言的優(yōu)勢究竟是什么虎囚?

觀點(diǎn)一:靜態(tài)類型語言因?yàn)轭愋蛷?qiáng)制聲明,所以IDE可以做到很好的代碼感知能力蔫磨,因?yàn)橛蠭DE的撐腰淘讥,所以開發(fā)大型系統(tǒng),復(fù)雜系統(tǒng)比較有保障堤如。

對(duì)于像Java來說蒲列,IDEA/Eclipse確實(shí)在代碼感知能力上面已經(jīng)非常強(qiáng)了,這無疑能夠增加對(duì)大型系統(tǒng)復(fù)雜系統(tǒng)的掌控能力搀罢。但是除了Java擁有這么強(qiáng)的IDE武器之外蝗岖,似乎其他語言從來沒有這么強(qiáng)的IDE。C#的Visual Studio在GUI開發(fā)方面和Wizard方面很強(qiáng)榔至,但是代碼感知能力上和Eclipse差的不是一點(diǎn)半點(diǎn)抵赢。至于Visual C++根本就是一個(gè)編譯器而已,羞于提及Visual這個(gè)字眼。更不要說那么多C/C++開發(fā)人員都是操起vi吭哧吭哧寫了幾十萬行代碼呢铅鲤。特別是像Linux Kernel這種幾百萬行代碼划提,也就是用vi寫出來的阿,夠復(fù)雜彩匕,夠大型腔剂,夠長生命周期的吧。

觀點(diǎn)二:靜態(tài)語言相對(duì)比較封閉的特點(diǎn)驼仪,使得第三方開發(fā)包對(duì)代碼的侵害性可以降到很低掸犬。動(dòng)態(tài)語言在這點(diǎn)上表現(xiàn)的就比較差,我想大家都有過從網(wǎng)上下載某個(gè)JS包绪爸,然后放到項(xiàng)目代碼里發(fā)生沖突的經(jīng)歷

也就是說靜態(tài)類型語言可以保障package的命名空間分割湾碎,從而避免命名沖突,代碼的良好隔離性奠货。但是這個(gè)觀點(diǎn)也缺乏說服力介褥。
靜態(tài)類型語言中C,VB都缺乏良好的命名空間分割,容易產(chǎn)生沖突递惋,但是并沒有影響他們做出來的系統(tǒng)就不夠大柔滔,不夠復(fù)雜。
而Visual C++開發(fā)的DLL版本沖突也是臭名昭著的萍虽,似乎C++的命名空間沒有給它帶來很大的幫助睛廊。
而動(dòng)態(tài)類型語言中Ruby/Python/Perl都有比較好的命名空間,特別是Python和Perl杉编,例如CPAN上面的第三方庫成噸成噸的超全,也從來沒有聽說什么沖突的問題。
誠然像PHP邓馒,JavaScript這樣缺乏命名空間的動(dòng)態(tài)語言很容易出現(xiàn)問題嘶朱,但是這似乎是因?yàn)樗麄內(nèi)狈O機(jī)制導(dǎo)致的,而不是因?yàn)樗麄儎?dòng)態(tài)類型導(dǎo)致的吧光酣?
說到大型系統(tǒng)疏遏,復(fù)雜業(yè)務(wù)邏輯系統(tǒng),Google公司很多東西都是用python開發(fā)的救军,這也證明了動(dòng)態(tài)類型語言并非不能做大型的復(fù)雜的系統(tǒng)改览。其實(shí)我個(gè)人認(rèn)為:
動(dòng)態(tài)類型語言,特別是高級(jí)動(dòng)態(tài)類型語言缤言,反而能夠讓人們不需要分心去考慮程序編程問題,而集中精力思考業(yè)務(wù)邏輯實(shí)現(xiàn)视事,即思考過程即實(shí)現(xiàn)過程胆萧,用DSL描述問題的過程就是編程的過程,這方面像Unix Shell,ruby跌穗,SQL订晌,甚至PHP都是相應(yīng)領(lǐng)域當(dāng)之無愧的DSL語言。而顯然靜態(tài)類型語言基本都不滿足這個(gè)要求蚌吸。
那靜態(tài)類型語言的優(yōu)勢究竟是什么呢锈拨?我認(rèn)為就是執(zhí)行效率非常高。所以但凡需要關(guān)注執(zhí)行性能的地方就得用靜態(tài)類型語言羹唠。其他方面似乎沒有什么特別的優(yōu)勢奕枢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市佩微,隨后出現(xiàn)的幾起案子缝彬,更是在濱河造成了極大的恐慌,老刑警劉巖哺眯,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谷浅,死亡現(xiàn)場離奇詭異,居然都是意外死亡奶卓,警方通過查閱死者的電腦和手機(jī)一疯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夺姑,“玉大人墩邀,你說我怎么就攤上這事∩唬” “怎么了磕蒲?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長只盹。 經(jīng)常有香客問我辣往,道長,這世上最難降的妖魔是什么殖卑? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任站削,我火速辦了婚禮,結(jié)果婚禮上孵稽,老公的妹妹穿的比我還像新娘许起。我一直安慰自己,他們只是感情好菩鲜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布园细。 她就那樣靜靜地躺著,像睡著了一般接校。 火紅的嫁衣襯著肌膚如雪猛频。 梳的紋絲不亂的頭發(fā)上狮崩,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音鹿寻,去河邊找鬼睦柴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛毡熏,可吹牛的內(nèi)容都是我干的坦敌。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼痢法,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼狱窘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起疯暑,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤训柴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后妇拯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幻馁,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年越锈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了仗嗦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甘凭,死狀恐怖稀拐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丹弱,我是刑警寧澤德撬,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站躲胳,受9級(jí)特大地震影響蜓洪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坯苹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一隆檀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粹湃,春花似錦恐仑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至孤钦,卻和暖如春鉴逞,著一層夾襖步出監(jiān)牢的瞬間记某,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來泰國打工构捡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人壳猜。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓勾徽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親统扳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子喘帚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容