我遇到过一些链接,说Python是一种强类型语言.
但是,我认为在强类型语言中你不能这样做:
bob = 1
bob = "bob"
Run Code Online (Sandbox Code Playgroud)
我认为强类型语言在运行时不接受类型更改.也许我对强/弱类型的定义错误(或过于简单).
那么,Python是一种强类型还是弱类型的语言?
似乎每个人最近都在跳跃着充满活力,没有编辑的潮流.我大多只使用编译的静态类型语言(C,Java,.Net).我对动态语言的体验是ASP(Vb Script),JavaScript和PHP.在考虑动态语言时,使用这些技术在我的嘴里留下了不好的味道.通常会被编译器捕获的事情(例如拼写错误的变量名称以及将错误类型的值分配给变量)直到运行时才会发生.即便如此,您可能也不会注意到错误,因为它只是创建一个新变量,并分配一些默认值.我也从未见过intellisense在动态语言中运行良好,因为变量没有任何明确的类型.
我想知道的是,人们对动态语言有何吸引力?动态语言允许您执行的操作无法完成或在编译语言中难以完成的主要优点是什么.在我看来,我们很久以前就决定,像未编译的asp页面抛出运行时异常这样的事情是个坏主意.为什么这类代码会重新出现?为什么至少在我看来,Ruby on Rails看起来并不像10年前你用ASP做过的任何东西?
来自Scala(和Akka),我最近开始研究其他用分布式计算设计的语言,即Erlang(以及一点点的Oz和Bloom).Erlang和Oz都是动态类型的,如果我没记错(将尝试查找链接),人们已经尝试向Erlang添加类型并设法键入其中的一部分,但无法成功强制系统使其适合最后一点?
Oz,虽然是一种研究语言,对我来说当然很有趣,但它也是动态类型的.
Bloom目前的实现是在Ruby中,因此是动态类型的.
据我所知,Scala(我认为Haskell虽然我认为最初是作为对纯懒惰函数语言而不是分布式系统的探索而构建的)是唯一静态类型并提供语言级抽象的语言(因为缺乏在分布式计算中更好的术语.
我只是想知道动态类型与静态类型相比是否有固有的优势,特别是在为分布式系统编程提供语言级抽象的上下文中.
他在1998年的Bruce Eckel的Thinking In Java简介中说:
编程是关于管理复杂性:您要解决的问题的复杂性,以及解决它的机器的复杂性.由于这种复杂性,我们的大多数编程项目都失败了.然而,在我所知道的所有编程语言中,他们都没有全力以赴,并决定他们的主要设计目标是克服开发和维护程序的复杂性.
在第二版和后一版中,他添加了这个脚注(大约2003年):
我在第二版中回过头来看:我相信Python语言最接近完全正是如此.见www.Python.org.
我是java的dabbler,有Delphi(Pascal),C,C++和Python的背景.这是我想知道的:
当埃克尔在征服复杂性时称Python为"更好"时,他究竟考虑了什么?他和其他人一起使用这两者的想法是什么?
您如何看待征服复杂性?Python的更短和更简洁的语法是一种克服复杂性的关键方法(因此,例如,Jython可能是Java优秀库的一个很好的桥梁,以及Python的简洁语法),或者是Java的强类型思维,从C++继承了这个想法,从Simula继承了这个想法,我认为它是征服复杂性的关键?或者它是Rapid Application Designer(想想Delphi,还是Java,优秀的免费NetBeans窗口/表单设计器工具)或组件,bean或J2EE?什么征服了所有人,对你而言?
这已经被标记为主观的.[编辑]
注意:更多关于布鲁斯的想法,关于他喜欢Python的原因可以在这里找到.文章的一个关键引用:
Bruce Eckel:他们说你可以在脑海中持有七个加减两个信息.我不记得如何用Java打开文件.我写过章节.我已经完成了很多次,但步骤太多了.当我真正分析它时,我意识到这些只是他们所做的愚蠢的设计决定.即使他们坚持在java.io中使用Decorator模式,他们也应该有一个方便的构造函数来简单地打开文件.因为我们一直打开文件,但没有人能记得如何.抱在脑海里的信息太多了.
所以,块理论.通过块理论度量,Python杀死了其他所有人.我会批他的.但您使用的指标是什么?我想特别邀请人们支持Java,如果你愿意的话,反对布鲁斯.
[请不要投票重新开放,这个主题本质上是煽动性的,而且我的失言已经让它更加如此.我同意主持人的意见.]
可能重复:
动态语言的热爱是什么
我来自ac#/ java背景,即强类型,OOP语言.
我对Python非常感兴趣,但我需要更多地了解动态语言的优点.
它真正给我的力量是什么?(在Web应用程序中).
有人可以勾勒出我可以做的一些优点和酷炫的技巧吗?
我将开始学习如何Smalltalk提高我的面向对象技能.哪种Smalltalk实现最能满足我的目的.如果可能,我在哪里可以找到材料来学习推荐的实施.
PS 1:不,请不要建议跳过学习Smalltalk和使用C#或Java的想法.
PS 2:如果你认为还有其他更好的方法来提高我的OOP技能.这些是什么?
我是Macintosh上的Ruby开发人员.
谢谢
我有一个PDF"窗口贴纸"模板类,我可以用于所有汽车经销商,但这个经销商想要按照自己的方式定制,而不是所有经销商的方式.
因此,我为该特定经销商创建了第二个PDF"Window Sticker"模板类.
然后我发现由于范围问题我无法在任何特定经销商的switch语句中实例化它.它的解决方法或其他方法是什么?
public class Foo1
{
public Foo1() { }
public string GeneratePdf() { return "Red"; }
}
public class Foo2
{
public Foo2() { }
public string GeneratePdf() { return "Blue"; }
}
Object pdfTemplate;
long dealerAccountId = 121; //247
switch(dealerAccountId)
{
case 247:
pdfTemplate = new Foo2();
break;
default:
pdfTemplate = new Foo1();
break;
}
string color = pdfTemplate.GeneratePdf();
Run Code Online (Sandbox Code Playgroud) python作为翻译的唯一目的是什么?
它不提供可执行文件(商业软件开发人员如何使用它?)
如果代码的任何部分有bug,除非python在运行时转到该行,否则它不会显示.在大型项目中,每次都不会解释代码的所有部分,因此,项目中会有很多隐藏的错误
每个系统都应该安装一个python来运行这些软件......
我正在使用py2exe,我发现自己很困惑,只看一下可执行文件的大小(太大).