关于纯OO的各种问题(设置没有ide;教程;相关书籍)

时间:2011-11-22 05:40:26

标签: oop ide smalltalk squeak eiffel

我一直想要进入一种纯OO语言一段时间,但是我觉得他们似乎都需要一个IDE而我找不到任何好的教程视频格式。

我很高兴使用IDE 以后,但我不想通过一个学习语言。我正在寻找的是一个简单的控制台解释器或命令行编译器,如gcc,ghc,ghci和python IDLE(是的,它是一个IDE,但它是如此极简主义,它可能只是一个命令行解释器)。我发现当我不想同时使用IDE时,我会更快,更好,更全面地学习语言。所以,请不要告诉我吱吱声是唯一的方法:P

我也在寻找以文本而非视觉方式呈现的教程。再一次,当我盯着一个页面并且一遍又一遍地阅读别人的咒语时,我会更快地学习,而不是暂停视频,将其取回10秒,按下播放,再次执行,再次,再一次。

我对各种不同程度的OO纯度的语言感兴趣,我计划在某些时候学习它们。任何一个smalltalk方言都让我感兴趣,Self(一个极端原型导向的smalltalk版本(非常有趣,越激进越好的imo)),strongtalk,vanilla smalltalk(或者一些实现,就像你能得到的那样)。

我也对Eiffel感兴趣,我见过的代码片段看起来非常优雅,我读到它实际上非常具有创新性(引入代码合同和其他类似的东西)。然而,我会优先考虑来自小型营地的一种语言而不是埃菲尔一侧的语言,因为面对价值的埃菲尔似乎是OO和命令式编程之间的混合体。同样,我宁愿避免Scala(混合OO和功能)和其他混合语言。所以没有C#,Java,C ++,D,python等等。我不是在考虑这些语言,因为我认为它们很糟糕,只是因为我开始学习纯OO而且那些语言是混合OO:不是我真正想要的是什么。

另外,有人能推荐官方书籍吗?对于smalltalk,有“蓝皮书”AKA“Smalltalk-80:语言及其实现”。对艾菲尔来说,有“艾菲尔:语言”。我问,因为根据我的经验,你可以通过阅读该语言作者所写的书籍(参见K& R C编程语言)以及阅读一般书籍来获得更多。

所以,是的,我的问题:开始使用纯OO语言会有什么好处?如何在不使用IDE的情况下学习它?是否有一本由语言作者撰写的相关书籍?

6 个答案:

答案 0 :(得分:22)

将Smalltalk作为另一种语言学习是没有帮助的。你会完全忽视这一点。

Smalltalk的图形环境不仅仅是一个IDE。系统的核心只是对象。界面提供了各种方法来创建对象并与它们进行交互。该语言只是一种向对象创建消息的便捷方式。它是次要的对象本身。

在其他OO语言中,您编写程序,然后运行它,在内存中创建对象。 Smalltalk不是这样。您在内存中创建对象(例如类对象),然后将消息发送到例如添加方法。但是只有一次创建一个类对象,而不是每次“运行程序”。

事实上,没有“你的程序”这样的东西。没有“主要”。它只是一个物体世界,一些是长寿的,一些是暂时的。实际上,在系统中有30年前创建的对象。从字面上看。这些对象只是作为内存转储(我们称之为“图像”的文件)冻结到磁盘,然后解冻(可能在另一台机器上)。

该图像,即对象世界,是Smalltalk中的主要工件。有一个源文件,是的,但这只是一个文本片段的数据库,不占用太多的RAM。您无法手动编辑此文件(图像中的对象使用绝对文件偏移到源文件中)。您无法从sources文件重新创建系统 - 系统很久以前就被引导过,从那时起仅进行了修改。

表面上看,Smalltalk GUI看起来就像另一个IDE。没有巧合 - Eclipse最初是由Smalltal的Smalltalkers编写的。但是,在常规IDE中,您只需操作文本文件,这是至关重要的区别。文本编辑器是一种有效的替代方案。在Smalltalk中,GUI操纵内存中的对象。文本编辑器不能这样做。

至于Smalltalk使用什么,我会推荐Squeak。非常友好的社区,非常好的环境,并订阅了原创的Smalltalk愿景,为每个人创造一个伟大的个人计算环境。

答案 1 :(得分:14)

Richard Gabriel最近就90年代早期编程语言社区中发生的范式转变发表了演讲。他声称今天的大多数专家都无法理解80年代的许多论文。他有证据支持这一点。这是他第一次发表演讲,他希望能多次发表演讲,所以我想这个演讲的很多部分都会改变。起初,他将这种范式转变为工程 - >科学,但后来他把它描述为系统 - >语言。我认为将其描述为从系统思维到语言思维的转变是一种更好的描述。

Richard Gabriel是一个Lisp家伙。 (我是Smalltalk的家伙)。 Lisp就像Smalltalk一样,它使用的语言和库之间没有明确的界限。算术和控制流程在库中,而不是语言中。 (好吧,Lisp在语言中有一些,在库中有一些,而Smalltalk在库中都有它,除了编译器欺骗和硬编码其中一些,所以最终没有太大的区别。)在Lisp,一个程序是一个S表达式,编辑程序正在编辑S表达式。在Smalltalk中,程序是对象的集合,编辑程序是编辑对象。在编程时,您正在构建系统,并使用系统进行编程。

系统思考与语言思维不同。语言思考者需要精确描述语言。他们想要一本描述整个事物的书,或者(如果他们是学者)他们想要语言的正式语义。但系统思考者知道,一旦他们开始使用该系统,它就会发生变化。他们想要了解系统的工作原理,但是他们准备好了解系统本身以找出细节。

这是两种思维方式,各有利弊。 Smalltalk是系统思考的一个很好的例子。我认为所有软件开发人员都应该至少知道一个系统思考的系统。 Lisp很好。 Forth是另一个老例子。当然,我认为Smalltalk很棒,很乐意帮助人们学习它,但我认为学习系统思考的重要性比你学到的特定系统更重要。

不幸的是,学习系统比学习语言更难。你必须做的不仅仅是学习语法,你必须学习库,命名和编码的模式,通常是工具。 (如果这是一个系统,那么它是可扩展的。)这是语言思维的优势之一。但系统思考具有长期优势,因为一旦你根据自己的需求系统,那么你就可以变得非常高效。

答案 2 :(得分:13)

作为一个经历过Smalltalk学习(至少达到相当程度)的人,我可以说你正在采取更加艰难和风险更大的道路,从某种意义上说,某些事情可能需要更长的时间来清理,或者永远不会实际上。

但是,如果你坚持,你可以下载GNU Smalltalk,因为没有GUI是常态。它还包含以小块格式用Smalltalk编写的系统的所有源代码,您可以在它们上打开文本编辑器,并在慢慢阅读系统内容的同时享受它。

你也可以启动任何其他Smalltalk,比如Pharo,只需坚持工作区窗口 - 这相当于命令行解释器。

Pharo还包括关于Smalltalk的ProfStef快速交互式教程,该教程结合了文本指令和评估Smalltalk表达式。

至于阅读,有Pharo By Example - 免费书籍,您可以浏览,下载或购买硬拷贝。

如果你对语言的内部和细节感兴趣,还有一个collection of free books,我会推荐“Smalltalk-80:语言及其实现”作者:Adele Goldberg和David Robson。

已故的David N. Smith Smalltalk常见问题解答也是一种非凡的资源。

所以,你去吧。并提出建议,尽快给Smalltalk IDE,因为它可以更快,更快地理解Smalltalk。

答案 3 :(得分:11)

要精简smalltalk语法,您需要阅读一页文本(请参阅wiki http://en.wikipedia.org/wiki/Smalltalk上的语法部分)。 现在,要学习一个smalltalk库以及如何使用它们,你需要使用浏览器而不是文本编辑器,否则你只会浪费很多时间。

我认为这是10个时间差异的因素,在尝试通过阅读文本格式来理解某些代码并使用浏览器导航它之间!调试器。

在smalltalk系统中,生物对象可以讲述自己的很多东西,并帮助你学习如何使用它们比将它看作静态文本块更快,因为你根本不会理解这个想法。 / p>

答案 4 :(得分:5)

我已经和Squeak Smalltalk(及其近亲,Pharo和Cuis)玩了一段时间了。学习Smalltalk没有比使用已经提供的系统更好的方法了。

我设计了一系列短流媒体教程,长度从50秒到15分钟,展示了如何在首次启动系统的几分钟内利用Squeak的超酷功能。

事实上,第一行代码演示了Squeak的OOP-ness。 Squeak from the very start

答案 5 :(得分:2)

好吧,如果你决定学习埃菲尔,一本好书将是Betrand Meyer的“面向对象的软件构建”(他创建了Eiffel编程语言)。

本书提供了使用Eiffel的面向对象设计的深刻见解。在我看来,这是最好的OO书籍之一。