当前位置:  开发笔记 > 编程语言 > 正文

为什么C#和Java要求一切都在课堂上?

如何解决《为什么C#和Java要求一切都在课堂上?》经验,为你挑选了3个好方法。

似乎这个问题之前应该问过,但搜索一无所获.

我一直想知道让我们把所有代码放在类或接口中的重点是什么.我似乎记得要求main()像C这样的函数有一些优点,但对于类没什么.从某种程度上说,像Python这样的语言比Java更具面向对象,因为它们没有原语,但你可以将代码放在任何你想要的地方.

这是对OOP的某种"误解"吗?毕竟,您可以像在C中一样编写过程代码并将其放在类中,但它不会面向对象.



1> Tomas Petric..:

我认为要求所有内容都包含在类中的目标是尽量减少您需要在语言中处理的概念的数量.在C#或Java中,您只需要了解对象模型(尽管这很复杂).但是,您只有包含成员和类(对象)实例的类.

我认为这是一个非常重要的目标,大多数语言试图以这种或那种方式遵循.如果C#有一些全局代码(例如,允许交互式评估和没有Main方法的启动代码规范),那么你需要学习一个额外的概念(顶级代码).C#/ Java做出的选择当然只是获得简单性的一种方式.

当然,这是一个问题,这是否是正确的选择.例如:

在函数式语言中,程序使用类型(类型声明)和表达式进行结构化.程序的主体只是一个被评估的表达式,它比带有Main方法的类简单得多,它还支持交互式脚本(如Python).

在Erlang(和类似语言)中,程序被构造为同时执行的进程,其中一个主进程启动其他进程.这是一种截然不同的方法,但它对某些类型的应用程序很有意义.

一般来说,每种语言都有某种方式来观察世界并对其进行建模,并在查看所有内容时使用这种观点.这在某些情况下效果很好,但我认为这些模型都不是完全通用的.这可能是混合多种范式的语言今天非常流行的原因.

作为旁注,我认为使用Main方法有点争论(可能继承自C/C++语言).我认为更明确的面向对象的解决方案是通过创建某个Main类的实例来启动程序.



2> Eric Lippert..:

C#不是为"小编程"而设计的.相反,它是为面向组件的编程而设计的.也就是说,对于编程场景,人们正在开发相互依赖的软件组件,这些组件将随着时间的推移以多个版本发布.

强调大规模编程并远离小编程意味着有时围绕小程序会有很多"仪式".使用这个,主要是等等等等等等,所有人都写"你好世界".

属性"一行程序是一行长"在C#中会很好.我们正在考虑允许在小型程序中的类之外的代码作为假设的未来版本的C#中的可能特征; 如果您对此类功能有建设性意见,请随时通过我博客上的联系链接发送给我.


@Javier:你想要大型项目的仪式,因为它(1)强制执行纪律,(2)鼓励自我记录代码,(3)消除歧义.仪式的成本是通过减少错误来支付的.

3> mipadi..:

我认为Java的想法是顶级类代表一个单独的代码单元,它将被编译成一个单独的.class文件.这个想法是,这些独立的,独立的代码单元可以很容易地共享并组合成许多项目(就像木匠可以组合基本部件,如螺母,螺栓,木块等,以制作各种物品).这个类被认为是最小的,最基本的原子单元,因此一切都应该是一个类的一部分,以便更容易从这些部分组装更大的程序.

可以说,面向对象编程对易于组合的代码的承诺并没有很好地解决,但是在设计Java时,OOP的目标是创建可以轻松组合以制作独特程序的小单元(类) .

我想C#有一些相同的目标.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有