创业,你选择静态还是动态语言?

开发 后端 项目管理
每个人都在想为什么在这个世界大家都在选择静态语言,当你准备选择一门动态语言的时候,却又冒出了如此多的兄弟。我们通常考虑的是哪种语言是我熟练的那就拿它来做这项工作。总之这做不失为一种着手开干得好方法。现在还有别的什么影响你的选择吗?测试?开发速度?还是程序的健壮性?

每个人都在想为什么在这个世界大家都在选择静态语言,当你准备选择一门动态语言的时候,却又冒出了如此多的兄弟。我们通常考虑的是哪种语言是我熟练的那就拿它来做这项工作。总之这做不失为一种着手开干得好方法。现在还有别的什么影响你的选择吗?测试?开发速度?还是程序的健壮性?

动态型  VS  静态型

动态语言是一种变量使用前不需要声明的语言,如 Python、Ruby 和PHP,在动态语言中像下面这样做是允许的。

  1. num = 10 

某种意义上来说,这却是一把双刃剑,因为动态语言的类型检查是在程序运行期间,代码运行前没有任何办法找出 bug。我知道你可以写测试,但是你并不能测试任何事情。这里有一个虽然不重要的例子。

  1. def get_first_problem(problems):  
  2.     for problem in problems:  
  3.         problam = problem + 1 
  4.         return problam 

现在如果你被一些严重的电子乐干扰着,一个缩进的错误很轻易的就忽略了,代码弄完了然后部署到生产环境中,于是bug就接踵而来了。

记住,在生产环境中你是***能消灭bug的人。

静态语言 :使用前变量需要声明,编译的时候需要类型检查,包括Java、C、C++在内的语言都是静态语言。

  1. static int awesomeNumber;  
  2. awesomeNumber = 10

关于健壮性的增加和运行时错误机会的减少有很多的争论,编译器能捕获一些在你编码的时候产生的令人讨厌的错误,方法的契约是严格的,不好的地方就是沉重的样板代码。

弱类型 VS 强类型

弱类型和强类型经常与动态语言和静态语言混淆起来。弱类型语言会引起一些哲学性问题如数字2和字符”two“的相加,在弱类型语言中像这样做是没问题的。

  1. a = 2 
  2. b = "2" 
  3.    
  4. concatenate(a, b) // Returns "22"  
  5. add(a, b) // Returns 4 

传统的语言将严格限制各种事务的出现,如强类型语言中字符与整型相加将导致错误,如下:

  1. >>> a = 10 
  2. >>> b = 'ten' 
  3. >>> a + b  
  4. Traceback (most recent call last):  
  5.   File "<stdin>", line 1, in <module>  
  6. TypeError: unsupported operand type(s) for +: 'int' and 'str' 
  7. >>> 

总结:

无论你在哪抨击这篇讨论,声明总比前者好,因为前者会导致一场语言的战争。

动态语言适合快速周期开发和原型设计。静态语言更适合长期的开发周期,零碎的bug非常会付出非常高的代价(电话通信系统,航空交通系统)例如,如果一巨头公司叫Moo Corp,花了几百万美元在做QA和测试,一bug以某种方式陷入在这个领域中,为了修复意味着另一个轮的测试。当你做在板凳上你要做的就是选择一种简洁的静态语言,这项工作的难度就是得有人做”挤奶”的事。

测试、测试、还是测试

仅仅就一点点资料为了用来思考、启动下一个项目,你从来就不知道哪些限制你可能放在你自己和你的团队身上。

当你为你的项目选择一门编程语言时,你考虑的因素有哪些呢?

英文原文:Sachin FromDev

本文转自:http://blog.jobbole.com/21559/

责任编辑:林师授 来源: 伯乐在线
相关推荐

2011-01-06 09:00:01

静态语言动态语言

2010-03-31 15:26:11

大学生创业

2019-07-05 15:45:39

UbuntuFedoraLinux

2015-09-16 10:37:48

创业者业余创业者

2016-12-29 11:01:54

ReactVue

2019-07-05 10:53:55

ReactVue前端

2021-11-02 08:40:42

VS CodeAtom开源

2021-04-09 15:15:15

iPhoneAndroid手机

2019-11-01 10:27:48

GoJava语言

2019-10-31 17:06:59

开发技能代码

2012-09-19 14:44:14

创业创业者黑天鹅

2018-08-21 13:50:05

编程语言JavaPython

2016-01-20 11:22:17

增量部署全量部署运维

2023-08-22 08:00:00

编译器开发RustOCaml

2020-10-12 17:40:34

.NET Core开发技术

2013-01-15 10:50:42

2013-01-05 13:21:44

ASP.NETHttpHandlerHttpModule

2019-11-20 11:47:49

LG

2010-03-23 09:16:43

Python源码剖析

2013-10-21 17:32:29

点赞
收藏

51CTO技术栈公众号