我对此感到相当顽皮,所以请不要认为我会认真尝试这一点,因为我从痛苦的经验中了解到静态类型检查系统的优势.
但是,至于一个概念,是否有可能以完全动态的方式基本上做C#,将静态类型检查器抛到一边并说"呃,你这么老式!".
我最近有过IronPython和F#的丰富经验,但我觉得在家里使用的是基于C语言的.
在动力学的道路上,C#能走多远?我最近写了一个XML到ExpandoObject解析器,这很棒,感觉就像是javascript原型.
动态的东西是如何优化的,它是否像NodeJs和CPython这样的一些真正的动态编程语言环境一样快?
Eri*_*ert 14
是否有可能以完全动态的方式基本上做C#?
当然,为什么不呢?只需将所有内容键入"动态"即可.
我最近有过IronPython和F#的丰富经验
我注意到F#不是动态类型语言; 它是一种隐式类型的静态类型语言.仅仅因为你没有看到类型检查并不意味着它不存在.
动态的东西有多优化?
它的速度非常优化,但内存使用和代码大小都很大.我们在每个呼叫站点上构建一个缓存.第二次你打一个呼叫网站它应该非常快,但你支付了内存成本.
它是否像NodeJs和CPython这样的一些真正的动态编程语言环境一样快?
尝试两者,测量它们,然后你就会知道.
差不多.当然,在您与需要特定类型的其他代码(包括FCL)进行交互的任何时候,您都必须转换为期望的类型.但如果你真的看好这个,你可以创建一些方法,如:
public static object IntegerAdd(object x, object y)
{
return Convert.ToInt32(x) + Convert.ToInt32(y);
}
Run Code Online (Sandbox Code Playgroud)
现在从你的代码的其余部分开始,有一些静态类型的事实需要永远不会让你心烦意乱!
我最近有过IronPython和F#的丰富经验,
F#有点像真正大量使用var和真正大量使用类型推断,而不是像使用dynamic和后期绑定一样.一些C#代码(特别是大量使用linq)在没有单一显式声明类型的情况下做了很多事情并不是很少见,但要通过和通过静态类型,这是一个更接近的比较.
在动力学的道路上,C#能走多远?我最近写了一个XML到ExpandoObject解析器,这很棒,感觉就像是javascript原型.
如果你写这篇文章是因为你喜欢尝试这种方法,那就太棒了.
如果你写它是因为你需要它给的东西,那么也很棒.
如果你写它是因为你需要它给出的东西,而你喜欢尝试这种方法,那么血腥辉煌!你还能在工作中要求什么?
如果你用它来回避C#对javascript优势的优势,那么我建议谨慎.从静态打字到"老式",我们现在还有很长的路要走.这两种方法都有其优势.我不是说要外交,我真的认为他们这样做.C#提供两者的混合意味着它可以从动态类型的一些优势中受益,尽管通常是强类型语言.这是一种富有表现力和高效率的组合,并且不需要单腿射击,因为你更喜欢另一条腿.
| 归档时间: |
|
| 查看次数: |
481 次 |
| 最近记录: |