python .net web开发对比_Python与C#/.NET——在使用Python开发大型web应用程序时,需要考虑哪些关键区别?...

“.NET”不是一种语言。也许是Python vs.C#,或者Python/Django vs.C#/ASP.NET(或者选择任何你想要的“网络作品”;Python和“.NET”都有很多不同的解决方案,选择Django或MVC2可能会严重限制更好的可行方案)。作为Python对“.NET”的计数器:有IronPython(Python“in.NET”)

我会考虑:使用一种语言开发人员的舒适度,如果它们在Python和“.NET”中是相等的,那么我会考虑开发的周转时间,并选择将此最小化的语言/“webwork”(同样,它不必是以前的约束)。

虽然单元/集成测试是任何[规模]项目都必须进行的,但我发现,静态类型语言(C/F)可以大大减少与类型相关的“愚蠢错误”的数量。

开放比赛场地:-)

编辑评论:

那你只是在比较语言。

在这种情况下,C#是一种非常枯燥的命令式静态类型语言,只有一个基于继承/接口类的OO(但比Java更简洁的技巧,Java正处于石器时代)。这是与Python的基本OO类型相同的并且除去静态/动态位,两种语言都是强类型的(机制不同,但最终的结果在语言谱中非常相似)。实际上,python有MI,但在python中,这似乎不太被接受为使用'lambda'关键字,而且由于python是动态类型的,因此没有编译时支持来确定接口/类型契约(但是,有些模块试图提供这种支持)。

如果你能学习/了解Python,那么你就能学习/了解C#。这不是一种范式转换。这里有些关键字,那里有大括号,需要说明你在那里指的是什么类型,一个不同的基本库。。。不同的环境(您必须与某些环境抗争才能获得REPL,但在VS中是可行的)开发人员如何喜欢/学习/使用它是另一回事。虽然我以前确实调用过C#命令式,但很高兴看到添加了一些“类似函数”的特性,如LINQ/IEnumerable扩展和不带委托的闭包,即使基本C#语法非常程序化——再一次,非常像python(对于表达式、嵌套函数、语句/表达式除法)。

虽然新的“动态”确实模糊了界限(很少有好的用途——在几乎所有相同的地方,人们可能不得不回到以前的C#版本中的反射——这不是真的,但关键是它通常是“错误的方式”,除了在少数情况下恰好是“最好/唯一的方式”),“var”没有。也就是说,“var”变量的类型在编译时已知,与动态类型无关;它都是类型推断。一些语言,如F#/SML和Haskell,在保留静态类型的同时,具有更强大的类型推断,消除了“所有那些丑陋的类型声明”(尽管显式地注释允许的类型或类型集可以使意图更清晰)的需要。

就我个人而言,除了之外的所有东西,我都会使用静态类型语言。我不是说C(我也绝对不是说Java!),但静态类型语言可以将类型错误推到最上面,并需要预先显式的约定(这对我来说是一个巨大的胜利)。虽然你确实错过了一些简洁的动态技巧,但在目标语言中,几乎总是有更好的方法来执行相同的动作——你只需要用这种语言思考,用螺丝刀拧螺丝,用锤子钉钉子。E、 g.不要期望将依赖于(ab)使用local()或global()的Python代码按原样引入C。

在“底层”,大多数静态类型的语言(这里是C)首先需要显式编译(但这并不是很糟糕,因为它生成了漂亮的程序集),而像“REPL”这样的工具并不是一等公民(it是F#/VS2010的一等公民。另外,如果您有一个Python/C#的基本库(它在其他语言中不可用),这可能是为什么选择一种语言而不是另一种语言的决定因素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值