Xin*_*nus 0 strong-typing moores-law weakly-typed
我不知道有多少人面临这个问题.如果我用python,php,javascript之类的弱/动态类型语言进行编程几天,我会失去与c ++,Java,.net等强类型语言的联系.我最近听过人们喜欢编程的python和ruby等语言.
在弱/动态类型语言中编程非常简单,但存在与c ++,Java等语言失去联系的危险.处理器现在变得非常强大,根据摩尔定律,它将随着时间呈指数增长速度.因此,当我们从嵌入式语言转换为高级语言(如c ++,java)时,效率可能不会出现问题.
首先,摩尔定律只是一种经验观察.迟早,物理定律意味着不再可能继续增加单处理器速度.摩尔定律并不是中长期未来的有用预测指标,甚至可能在短期内也是如此.
其次,弱和弱类型的语言受到摩尔定律的正当影响.
第三,摩尔定律是关于单处理器的.我们已经进入了一个通过多处理来提高原始计算能力的世界,但是还没有软件工具(例如语言)可以帮助普通的Joe程序员编写利用多处理的程序.然而,功能语言在这一领域提供了比程序语言更多的承诺.
第四,我认为你真的在比较静态类型语言和动态类型语言.(术语"强类型"和"弱类型"由于定义相互矛盾而变得如此混乱,以至于它们不再有意义.)
我想你的论点是,摩尔定律意味着效率更低,所以我们可以使用效率较低的计算范式"逃脱"; 例如动态类型语言.(如果我们谈论的是交互式任务,那么计算机只需要跟上用户提出要求和精神处理答案的速度.)
这个论点的另一面是人们想要他们的计算机做更多计算密集的事情; 例如,每一代计算机游戏都需要更多的电力来制作图形.在线业务希望使用运行成本更低的硬件更快地完成更多工作(例如,提供更多Web请求).简而言之,在很多情况下效率确实很重要,而且情况总是如此.
因此,您发现在速度很重要的地方,我们倾向于使用高效的计算技术,而在不重要的地方,我们使用的技术可以最大限度地降低软件开发和维护成本.
UPDATE
在重读我的答案时,我错过了一些东西.如果我们认为摩尔定律正在破裂,并且计算"能力"的未来增长将以更多核心等形式出现,那么功能语言将会有越来越大的作用.
任何试图在命令式或OO语言中利用并行性的人都会认识到这是一个棘手的问题,充满了陷阱.相比之下,在纯函数式语言中,并行性要简单得多.由于数据结构的状态不会发生变化,因此您无需担心线程在使用数据结构时进行同步.此外,语言的编译器或运行时系统更容易发现程序的特定部分可以并行完成......而且只是这样做.或者在更高级别,FP语言IDE(或其他)可以找到/建议大规模转换的机会以帮助并行执行.
IMO,这正是功能语言普及(缓慢)增长背后的原因......
摩尔定律存在危险,因为处理器速度目前无法加速,因此他们只需在每个芯片上放置更多内核(更多处理器/处理器芯片).
这就是函数式编程再次流行的原因.
如果您在关键环境中工作,例如核电站或飞机上的航空电子设备,则不会使用弱类型语言,因为它无法满足这些区域的要求.
世界继续朝着最能解决问题的语言或框架迈进.有些人可能会试图强制使用特定语言,但是,随着时间的推移,如果看到有更好的语言来解决该问题,那么迁移将转向更好的语言.
我相信,重要的是要了解两者,因为有些领域的弱类型语言效果最好,例如,使用javascript应用程序,您可以将代码作为数据发送,然后执行它.这可能非常强大.
强类型语言仍将是企业应用程序的主要语言,因为编译器可以帮助确定是否由于在弱类型语言中难以排除故障的数据类型不匹配而导致错误.