2015年12月3日 星期四

弱類型 強類型語言的區別?

看一些文章時 常出現弱類型 強類型 這些字眼
但這些到你是什麼呢? 因此作為紀錄一下
(出處:知乎http://www.zhihu.com/question/19918532/answer/58538334)


1.基礎概念

Program Errors

  • trapped errors :導致程式終止,如除以0
  • untrapped errors:出錯然繼續執行,但可能跟預期的行為不同,如jump跳錯地址

Forbidden Behaviours


     語言設計時,可以定義一組forbidden behaviors,這些必須包含所有的untrapped errors且也可能包含trapped errors


Well behaved、ill behaved

  • well behaved:如果成是執行沒有出現forbidden behaviors稱之
  • ill behaved:否則稱為ill behaved

2.弱類型、強類型區別

  • 強類型(strongly typed) :如果該語言的有成都是well behaved( 也就是沒有出現forbidden behaviors)則稱之
                     例如:
                                 >>> "1"+2 
                                 Traceback (most recent call last): 
                                       File "<stdin>", line 1, in <module> 
                                 TypeError: cannot concatenate 'str' and 'int' objects

  • 弱類型(weakly typed):若不是強類型則就為弱類型
                    例如:
                  > "1"+2
                  '12'

   例子:

            弱类型: C/C++ 、Perl/PHP   
            强类型:Java/C#、Python、Scheme

沒有留言:

張貼留言