学习埃菲尔铁塔的经历
有人有学习埃菲尔语言的经验吗?
Eiffel Studio 与 Visual Studio 类似吗?
这是学习 OOP 的好途径吗?
ETC。
Does anyone have any experiences in learning the language Eiffel.
Is the Eiffel Studio like Visual Studio?
Is it a good route to take to learn OOP?
etc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我大约 15 年前学习了这门语言,从不后悔。
Eiffel 与主流语言有点不同,它具有一些在其他环境中不可用的机制。从某种意义上说,它比主流更具学术性。
EiffelStudio 环境也采用了一些普通 IDE 中不存在的方法。 (例如,它支持类似于拖放的拾取和放置功能,但在拖动所选项目时不需要按住鼠标按钮。)它提供了非常先进的浏览功能,因此从这个意义上说,它非常接近视觉工作室。它还具有几个内置功能,例如图表和指标工具,最近添加的自动测试等。您可以查看 EiffelStudio 文档以了解其功能。
由于该语言缺乏引入基本类型的技巧,支持多重继承和泛型类型,并且从一开始就集成了契约设计,因此即使您不打算每天使用它,它也是非常好的 OOP 学习工具以天为基础。为此,我推荐“面向对象的软件构建”,第二版。作者:伯特兰·迈耶。它不包括该语言的最新添加内容,但它确实提供了通向整个 OOP 的良好途径。
I learned this language about 15 years ago and never regret it.
Eiffel is a bit different from mainstream languages and features some mechanisms not readily available in other environments. In some sense it's a bit more academic than mainstream.
EiffelStudio environment takes some approaches that are not present in average IDEs as well. (For example, it supports Pick&Drop facility which is similar to Drag&Drop, but does not require to keep mouse button pressed as you drag the selected item.) It provides pretty advanced browsing facilities, so in this sense it's quite close to Visual Studio. It also has several built-ins like Diagram and Metrics tools, recently added AutoTest, etc. You can have a look at EiffelStudio documentation to get an idea about its features.
Since the language lacks hacks to introduce basic types, supports multiple inheritance and generic types and integrates Design by Contract right from the beginning, it is extremely good as a learning tool for OOP even if you do not plan to use it on a day-by-day basis. For that purpose I'd recommend "Object-Oriented Software Construction", 2nd Ed. by Bertrand Meyer. It does not include the most recent additions to the language, but it does provide a good route to OOP as a whole.
我认为这是 OOP 的最佳途径,因为它在面向对象方面做得很好。
我还没有见过一种在面向对象方面如此干净和一致的 oop 语言。因此,对于学生来说,了解如何正确地完成它是有益的。
作为一种语言,如果将它与 python、rebol 等脚本语言进行对比,它会更重量级。最适合您想要保持质量的大型项目。它完全专注于正确的面向对象。 (所以你不会看到编程的所有概念,但面向对象是一个主要范例)
它的速度非常快,因为它编译成 C,所以我只指重量级的结构。
它促进迭代开发和深思熟虑的设计,因此这也是一项很好的技术。
您可以阅读Eiffel 教程以获得全面的概述,但请小心,因为这是一百页的“教程”。
I think it's the best route to take for OOP, since it does object orientation very well.
I haven't seen an oop language that is as clean and consistent with regard to object orientation. therefore it's beneficial for a student to see how it should be done right.
As a language, if you contrast it with the scripting languages such as python, rebol etc. it's more heavy-weight. Best for large projects where you want to maintain quality. It focuses entirely on proper object orientation. (so you will not see all concepts of programming, but OO is a major paradigm)
Its speed is very good, as it compiles down to C, so I only meant heavy-weight about the structure.
It promotes iterative development, and thought-out design, so that's also a good technique to have.
You can read the Eiffel Tutorial to get a thorough overview, but take it gently, as it's a hundred pages "tutorial".
实际上,我认为接受面向对象编程的学生应该学习尽可能简单的语言,这样他们在概念上的挣扎比在语言上的困难还要多。我学习了 Java 和 C++。前者还好,但后者却是一场噩梦。我的建议是 Python
关于 Eiffel,我尝试在 Eiffel 做我的博士项目,但遇到了严重的问题。我绝对不建议使用 GUI,因为几乎没有相关文档。编译器也有很多错误。我一直就完全奇怪的行为与他们保持联系。例如,放置打印语句可以解决编译时错误!
Eiffel 提供了一些最好的多重继承选项,但即使这样有时也会变成一场噩梦。我记得从多个类继承,而这些类都从一个主类继承,然后必须从其中
SELECT
一个重新定义的函数,或者必须RENAME
一个函数。合同设计是一个很好的补充,并且该变体有助于避免无限循环,但在其他时候,当您进行这样的检查时,您看起来就像个白痴(我的埃菲尔铁塔有点生锈)
还有其他小问题。通常,埃菲尔工作室会被损坏,您必须删除某些备份文件才能使其正常工作。
I actually think students who are being taught OOP should learn on the easiest language possible so they struggle with the concepts more so than the language. I learned on both Java and C++. The former was OK, but the latter was a nightmare. Python would be my suggestion
With regards to Eiffel, I tried doing my PhD project in Eiffel and I ran into serious problems. I would definitely not recommend using the GUI as there is little to no documentation on it. Also the compiler is very buggy. I was constantly in touch with their support regarding completely bizarre behavior. For example putting a print statement would solve a compile time error!
Eiffel provides some of the best multiple inheritance options, but even that can turn into a nightmare sometimes. I remember inheriting from multiple classes which all inherited from one main class, then having to
SELECT
one redefined function out of them, or to have toRENAME
a function.The design by contract was a good addition, and the variant helped avoid infinite loops, but at other times you just looked like an idiot when you had checks like these (my Eiffel is a little rusty)
There are other minor problems too. Often times the Eiffel studio would get corrupted and you had to erase certain back up files to get it to work.