什么是动态语言,为什么C#不符合条件?

egy*_*ado 32 c# ruby dynamic-languages static-libraries

听播客,我听说C#不是动态语言而Ruby是.

什么是"动态语言"?动态语言的存在是否意味着存在静态语言?

为什么C#是动态语言,其他语言是动态的?如果C#不是动态的,为什么微软将它强烈推向市场?

那么为什么大多数.NET程序员都对它疯狂并留下其他语言并转向C#?

为什么Ruby"是未来的语言"?

Jar*_*Par 72

什么是动态语言?

语言是否是动态的通常是指编译器执行的绑定类型:静态或后期绑定.

静态绑定仅意味着在编译时绑定方法(或虚方法的方法层次结构).运行时可能涉及虚拟调度,但方法令牌在编译时绑定.如果在编译时不存在合适的方法,则会收到错误.

动态语言正好相反.他们在运行时完成工作.它们在编译时很少或根本不检查方法的存在,而是在运行时完成所有操作.

为什么C#不是动态语言?

在4.0之前的C#是静态绑定语言,因此不是动态语言.

为什么Ruby是未来的语言?

这个问题是基于一个错误的前提,即确实存在一种语言是编程的未来.今天没有这样的语言,因为没有一种语言能够最好地完成所有需要完成的不同类型的编程.

例如,Ruby是许多不同应用程序的优秀语言:Web开发很受欢迎.但是,我不会在其中编写操作系统.

  • 人们总是宣称"未来的语言".它总是恰好是他们最喜欢的语言. (33认同)

Bri*_*sio 26

在动态语言中,您可以这样做:

var something = 1;
something = "Foo";
something = {"Something", 5.5};
Run Code Online (Sandbox Code Playgroud)

换句话说,类型不是静态的.在静态类型语言中,这将导致编译器错误.

C,C++,C#和Java等语言是静态类型的.

Ruby,Python和Javascript等语言是动态类型的.

此外,这与"强或弱"类型不同.这是不同的东西.


小智 6

我很惊讶c#它正在拥抱一套基本的编程范例.

我们可以说c#提供了丰富的面向对象编程,丰富的面向组件的编程,完善的集成功能编程,针对不同类型数据源(linq)的查询操作的完整集合,通过pLinq和并行编写的并行编程的优雅方法扩展,在下一个版本(c#4.0)中将具有强大的动态功能,并且几乎可以肯定在c#5.0中将具有一组可靠的元编程功能.

只需要说c#就可以很好地将所有这些强大的东西集成到一个工具箱中.在我看来,这是它必须的方式,因为从一种编程语言跳到另一种编程语言几乎总是非常痛苦.