导航:网站首页 >
弱类型语言比强类型语言的优势、劣势、分别是什么?能用两种语言如 PHP 和 C# 举例论证吗?
时间:2016-7-26
相关问题:
热心网友:
PHP的优势在于
PHP 是最好的语言好吧,我再说一遍等于我也有责任。
PHP是弱类型语言,容易出现什么问题呢?举个栗子。
/*
strpos(string, find)
返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
*/
$string = 'zhihu';
$find = 'h';
if (strpos($string, $find) == false)
echo 'not found';
if (!strpos($string, $find))
echo 'not found';
$find = 'z';
if (strpos($string, $find) == false)
echo 'not found';
if (!strpos($string, $find))
echo 'not found';
?>
热心网友:
弱类型比较重要的好处主要在于给另一些语言特性的实现带来的便利性。比如闭包和回调函数。PHP我不懂,不过javascript大量依赖的回调函数和衍生出来的error first callback pattern等东西,在强类型语言里会不好实现。当然也有别的非弱类型实现,比如Ruby会用argument as hash之类的手段来回避函数签名不一致之类的问题。
之前很多人提到理想中的语言应该有optional static typing。其实放到strong/weak typing上或者也是一样,最理想的是optional weak typing。只是我认为除非必要,否则不在编译期检查类型,所以应该是dynamic typing为缺省,显式的声明static typing。而强弱这边则应该是缺省强类型,显式声明弱类型(即明确表示内容convertible)。
不过目前看来还没有人整这样一门语言,XD,现有的凑合着用吧。
热心网友:
比如fastCSharp,无论是开发效率还是运行效率,随时欢迎各位PHPer挑战。
弱类型语言有两个优势:一是eval,其实我真的不知道这算不算优势;二是有弱类型需求的情况下,代码相对于强类型语言更优雅(一行少敲几下键盘)。
弱类型语言的劣势太多太多,可以说满身都是,只是很多人不愿意承认而已。
热心网友:
在“严谨”的语言中,通常是预先定义好一个值的类型,自始至终,变量的类型是固定的。
对比起强类型,弱类型的缺点大概如下:
(1)弱类型不符合“所见即所得”,定义的变量类型是不可预见并且可以改变的。
(2)为了兼容弱类型,语言执行引擎要做了大量的兼容工作,包括类型识别,内存管理,类型转换等,增加了语言内部处理的复杂度,会导致执行效率的降低。
(3)变量的类型是不可控的,因此执行过程中拥有大量的变量类型“隐形转换”,在开发同学不清楚隐性转换规则的情况下,容易产生不可预知的结果。这个特性也完全不符合所见即所得的简单性。
但是,它们之所以可以发展起来,脱颖而出,也是有原因的,存在就有它的道理。
弱类型等语言特性,降低了程序员编写语言的门槛。编程言语是人类和机器沟通的桥梁,终极追求其实是“降低人和机器的沟通成本”,追求“人人皆可编程”的境界。
例如,从机器语言的0和1开始,后来变成汇编语言,汇编语言发展出来C,后来再有现在的脚本语言。编程学习的门槛不断降低,程序员的数量也随着指数增长。
而且,我相信未来还会继续发展出更低学习门槛的语言,促进程序员数量的再一次指数增长。
弱类型的语言也有优点:
(1)屏蔽了语言的复杂性和容易导致错误的地方,例如:内存管理、指针、变量的类型等。虽然,它屏蔽了比较复杂的特性,但是,并不代表它们不存在,这样的做法是对人友好(编程更简单,考虑的东西更少),但是对机器不友好。
(2)项目开发效率高。
(3)学习门槛低。
它虽然带有不少的问题,但是,也包含了很明显的优点。
PHP比较大范围地用于Web开发,Javascript统治浏览器端的开发,这些都不是偶然现象,而是人用脚投票选择出来的。
当然,术业有专攻,不同的语言解决不同场景的问题,不能一概而论。
热心网友:
我猜题主其实想问的是动态类型语言和静态类型语言
大家还关注:
问题推荐