The*_*kle 2 ide oop smalltalk eiffel squeak
我一直想要进入一种纯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的情况下学习它?是否有一本由语言作者撰写的相关书籍?
Ber*_*erg 22
将Smalltalk作为另一种语言学习是没有帮助的.你会完全忽视这一点.
Smalltalk的图形环境不仅仅是一个IDE.系统的核心只是对象.界面提供了各种方法来创建对象并与它们进行交互.该语言只是一种向对象创建消息的便捷方式.它是次要的对象本身.
在其他OO语言中,您编写程序,然后运行它,在内存中创建对象.Smalltalk不是这样.您可以在内存中创建对象(例如,类对象),然后将消息发送到例如添加方法.但是类对象只创建一次,而不是每次"运行程序".
事实上,没有"你的程序"这样的东西.没有"主要".它只是一个物体世界,一些是长寿的,一些是暂时的.实际上,在系统中有30年前创建的对象.从字面上看.这些对象只是作为内存转储(我们称之为"图像"的文件)冻结到磁盘,然后解冻(可能在另一台机器上).
该图像是对象的世界,是Smalltalk中的主要工件.有一个源文件,是的,但这只是一个文本片段的数据库,不占用太多的RAM.您无法手动编辑此文件(图像中的对象使用绝对文件偏移到源文件中).您无法从sources文件重新创建系统 - 系统很久以前就被引导过,从那时起仅进行了修改.
显而易见,Smalltalk GUI看起来就像另一个IDE.没有巧合 - Eclipse最初是由Smalltal的Smalltalkers编写的.但是在常规IDE中你只需要操作文本文件就有了至关重要的区别.文本编辑器是一种有效的替代方案.在Smalltalk中,GUI操纵内存中的对象.文本编辑器不能这样做.
至于Smalltalk要使用什么,我会推荐Squeak.非常友好的社区,非常好的环境,并订阅了原始的Smalltalk愿景,为每个人创造一个伟大的个人计算环境.
小智 14
最近,理查德·加布里尔(Richard Gabriel)发表了一篇关于90年代早期编程语言社区发生的范式转变的演讲.他声称今天的大多数专家都无法理解80年代的许多论文.他有证据支持这一点.这是他第一次发表演讲,他希望能多次发表演讲,所以我想这个演讲的很多部分都会改变.起初,他将这种范式转变为工程 - >科学,但后来他将其描述为系统 - >语言.我认为将其描述为从系统思维到语言思维的转变是一种更好的描述.
理查德加布里埃尔是一个Lisp家伙.(我是Smalltalk的家伙).Lisp就像Smalltalk一样,它使用的语言和库之间没有明确的界限.算术和控制流程在库中,而不是语言中.(好吧,Lisp在语言中有一些,在库中有一些,而Smalltalk在库中都有它,除了编译器欺骗和硬编码其中一些,所以最终没有太大的区别.)在Lisp,一个程序是一个S表达式,编辑程序正在编辑S表达式.在Smalltalk中,程序是对象的集合,编辑程序是编辑对象.在编程时,您正在构建系统,并使用系统进行编程.
系统思考不同于语言思维.语言思考者需要精确描述语言.他们想要一本描述整个事物的书,或者(如果他们是学者)他们想要语言的正式语义.但系统思考者知道,一旦他们开始使用该系统,它就会发生变化.他们想要了解系统的工作原理,但是他们准备好了解系统本身以找出细节.
这是两种思维方式,各有利弊.Smalltalk是系统思考的一个很好的例子.我认为所有软件开发人员都应该至少知道一个系统思考的系统.Lisp很好.Forth是另一个老例子.当然,我认为Smalltalk很棒,很乐意帮助人们学习它,但我认为学习系统思考的重要性比你学到的特定系统更重要.
不幸的是,学习系统比学习语言更难.你必须做的不仅仅是学习语法,你必须学习库,命名和编码的模式,通常是工具.(如果这是一个系统,那么它是可扩展的.)这是语言思维的优势之一.但是系统思考具有长期优势,因为一旦你根据自己的需求系统,那么你就可以变得非常高效.
Dav*_*jan 13
作为一个经历过Smalltalk学习(至少达到相当程度)的人,我可以说你正在采取更加艰难和冒险的道路,从某种意义上说,某些事情可能需要更长的时间才能完成,或者从未真正做到.
但是,如果你坚持,你可以下载GNU Smalltalk,因为没有GUI是常态.它还包含以块形式编写的Smalltalk系统的所有源代码,您可以在它们上打开文本编辑器,并在慢慢阅读系统内容的同时享受它.
您也可以启动任何其他Smalltalk,如Pharo,只需坚持工作区窗口 - 这相当于命令行解释器.
Pharo还包括关于Smalltalk的ProfStef快速交互式教程,该教程结合了文本指令和评估Smalltalk表达式.
至于阅读,有Pharo By Example - 免费书籍,您可以浏览,下载或购买硬拷贝.
还有一系列免费书籍,如果您对语言的内部和细节感兴趣,我会推荐"Smalltalk-80:语言及其实现"作者:Adele Goldberg和David Robson.
已故的David N. Smith Smalltalk常见问题也是一种非凡的资源.
所以,你去吧.并提出建议,尽快给Smalltalk IDE,因为它可以更快,更快地理解Smalltalk.
Igo*_*nko 11
要精简smalltalk语法,您需要阅读一页文本(请参阅wiki http://en.wikipedia.org/wiki/Smalltalk上的语法部分).现在,要学习一个smalltalk库以及如何使用它们,你需要使用浏览器而不是文本编辑器,否则你只会浪费很多时间.
我认为这是10个时间差异的因素,在尝试通过阅读文本格式来理解一些代码并使用浏览器导航它之间!调试器.
在smalltalk系统中,生物对象可以告诉自己很多东西,并帮助你学习如何使用它们比将它看作静态文本块更快,因为你根本不会理解它.
Python 是一个纯 OOP 。其实这是新手接触python时容易犯的一个错误。
Python like smalltalk 遵循“一切都是对象”的口头禅。所以python里面的一切都是一个对象,包括内置类型。不同之处在于 python 与 smalltalk 和 Java 不同,它不强制 OOP,因为它允许过程编程。这就是陷阱,很容易假设 python 减少了 OOP,但是作为一条蛇,它是如此的邪恶以至于不会告诉你即使是函数也是对象;)
http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch10s04.html
回到 smalltalk 它的 IDE 在这里是一件大事,这与其他 smalltalker 可能相信的相反。如果您像我一样对不灵活的 IDE 感到非常失望,那么您会喜欢 Squeak 的 IDE。IDE 做了很多工作,可以轻松浏览所有库,并使您了解发生了什么、在哪里以及为什么发生了某些事情。我看不出使用文本编辑器的好处。但是您可以使用文件输入和文件输出。但是这样做会使 smalltalk 变得像其他编程语言一样高效;)
我现在只学习了一个星期的 squeak 和 pharo,但即使对我这个初学者来说,IDE 的好处从一开始就很明显。
事实上,代码被分割成易于理解的方法,这些方法分组到协议中,协议分组到我们熟悉的类和类分组到包。因此,代码组织得非常好,我永远不会感到迷茫,一切都属于某个地方,一切都只需点击一下,一切都是可检查的,可浏览的,您只需选择右键单击并将您发送到那里。它会准确地向您显示您需要的代码,很少超过 10 行。这是 IDE。为什么您更喜欢文本编辑器,它会显示您不需要、不关心并且可能使您感到困惑的信息?
然后一切都在一个单一的图像中,而不是文件的集合、你的代码、你的库、系统库,甚至语言本身。一切尽在掌握,等着你,求你去测试,修改,使用,滥用。你是语言的一部分,语言也是你的一部分,如果有什么不符合你的想法,就改变它。这是 IDE。为什么要回到文件和文件夹断开连接的方式?
然后你开始害怕拥有所有这些能力,所有这些灵活性你不太可能做一些可能完全破坏语言和库的事情。它有可能,错误可能并且将会发生。IDE 再次为您提供帮助,每个更改都存储在本地 cvs 系统中,每个更改都可以随时分类、存储和监控。没有糟糕的撤销和任何其他废话。你得到的是旧的、成熟的、经过良好测试的版本控制。您可以随时准确地更改回您想要的内容,不会丢失任何内容,没有错误是不可逆转的。
如果您不信任您的硬驱动程序,则 vcs 在线扩展到 squeaksource 。它是否让您受命令行的支配?一定不行 。为您提供了简单而高效的 Monticello 浏览器,它将确保您安装和卸载时不会发生冲突。
当然,您不希望您的软件有错误,是吗?提供单元测试工具以确保您的代码可靠、稳定并且完全按照您的意愿行事。再次使用漂亮而出色的 GUI,只需按一下按钮即可完成复杂的任务。
因为没有一个是完美的,所以你会有时间反对可怕的错误。你一个人呆着吗?你猜对了,又提供了一个工具。调试器。您不需要调用它,不需要设置它,甚至不需要弄清楚它是如何工作的。与所有其他工具一样,设计简单但复杂。它不仅会发现错误,不仅会告诉你你做错了什么,不仅会导航回到触发错误的最基本的语言元素,提供关于语言行为的独特视角,就像我以前从未见过的一样,它还允许您进行实时编码。实时编码是在程序代码运行时对其进行编码的能力。这不是令人印象深刻且无限有用吗?
最后,也许你是那些无法取悦的人之一,也许你仍然发现缺陷、遗漏并认为你简单不喜欢。IDE 是用 smalltalk 编写的,smalltalk 是用 smalltalk 编写的,IDE 可以编辑自己和语言,除了语言的一些非常基本的功能和编译 C 的 VM 之外,没有什么是你不能改变的。如果您认为您可以使用上述所有工具来做到这一点,那么您猜对了。
而且工具并不止于此,smalltalk 可能不像其他语言那么流行,但它已经存在了很长时间,并且它有一些非常热情的程序员喜欢做出贡献。坦率地说,拥有如此出色的 IDE 和如此精心设计的语言,而其他语言为它们做出贡献似乎是一个挑战,但在闲聊的情况下,挑战在于抵制不贡献的诱惑,因为 IDE 使它变得如此简单。
当其他人还在编码时,您将完成您的代码并真正了解您做了什么以及为什么。这根本不是一件小事。我希望 Python 有这么好的 IDE 或任何其他语言。但根据我的经验,唯一接近的东西是 Delphi。即使在 Delphi 的情况下,我仍然更喜欢 squeak 和 pharo。
我对其他 IDE 感到恼火的是,它们根本不是 IDES,它们只不过是美化的编辑器、锁定、不灵活、不可编辑(除非您愿意使用另一种编程语言并浏览大量源代码)。Squeak、Pharo 和所有其他 smalltalk 方言提供了一个真正优雅的 IDE,为您提供了非常有用的工具。其他 IDE 最好深入了解 smalltalk 并真正理解成为 IDE 意味着什么。
说所有这些好话,闲聊远非完美。而且我认为它最大的弱点和缺陷是缺乏一些令人愉快和有用的文档,可以帮助初学者先入为主。Squeak By Example 以及 Pharo By Example 对我来说是一个很大的失望。它们仍然是两本极其重要的书,在两个平台上都提供了非常有价值的见解,但文档的质量有时从平庸到糟糕。主要原因是这两本书都遵循非菜鸟友好的方法。首先,他们让您深入了解 IDE,从第 1 章向您介绍调试器甚至单元测试!!!对我来说,这是一个很大的错误,即使我对编程还很陌生,也不得不努力跟进所解释的内容。然后书本身,让很多悬而未决的问题。例如,对实例变量与类变量的解释是不够的,我更喜欢几个示例,不仅可以显示如何,还可以显示原因。这本书的几个领域也充满了空白或难以理解。
当我找到这个链接http://stephane.ducasse.free.fr/FreeBooks.html并从那里下载“Smalltalk by Example”时,我的生活变得轻松多了标题但不对你是谁和你知道什么做任何假设。我只能强烈推荐它。我读到那里免费提供的其他书籍也非常好,我最终肯定会下载并阅读所有书籍。
irc.freenode.net 上的#squeak 也提供了很多帮助,那里的人一直在回答我的问题并帮助我理解。
Squeak wiki 还可以但还不够,它的组织也不是很好,而且我不喜欢在 wiki 文档中出现评论和讨论。因此,对于初学者来说,文档通常可能有点困难,当然,Smalltalk 并不是一种容易学习的编程语言。我听到很多 smalltalkers 说不同,我不能同意更多,当我将 smalltalk 与 python 进行比较时,就像白天和黑夜。但 !一旦理解了 smalltalk ,使用它进行编程就变得比我迄今为止所学的任何其他编程语言容易得多,而且我已经学会了其中的大部分。所以最后我认为 Smalltalk 是一个明显的胜利,我也喜欢 FFI 库,它可以让你轻松调用任何 C 库,它为 smalltalk 释放了强大的力量。
我认为您不需要先学习语言,然后再学习 IDE,这实际上是一个非常糟糕的主意,因为 IDE 可以帮助您理解语言及其库以及其中的任何类型的代码。语言和IDE就像兄弟姐妹,阴阳两相。
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |