精华内容
下载资源
问答
  • smalltalk
    2019-08-10 07:12:59
      在Smalltalk中所有的东西都是对象,或者应该被当作对象处理。
      例如下面的表达式:
      2 + 3

      应当被理解为:向对象2发送消息+,参数为对象3。

      (15 * 19) + (37 squared)

      可以理解为:向15发送消息'*',参数为19;向37发送消息squared; 最后向15*19的结果发送消息'+',参数为37 squared的结果。

    转载于:https://www.cnblogs.com/hubj/archive/2011/05/04/2036459.html

    更多相关内容
  • 另一个 Smalltalk VM … 是 Smalltalk 虚拟机。 它支持 Bluebook 中描述的 Smalltalk,部分支持类定义语法的 ANSI Smalltalk。 ... 是用 C 编写的,包含字节码编译器(仅用于已编译的代码表示 - 不解释)、JIT(目前...
  • Smalltalk-80 欢迎使用我的Smalltalk-80系统的“通过Bluebook” C ++实现,该系统可在OS X,Windows和Linux上运行!自从1981年8月在Byte杂志上首次阅读有关Smalltalk的内容以来,我一直对它感兴趣。那时,我们所拥有...
  • 用 C 编写的 Smalltalk VM 这是一个非常简单的 Smalltalk VM,用纯 C 编写。它运行以自定义格式编码的图像(请参阅)。 它是作为关于运行时系统的大学课程的作业来实现的。 它必须由我自己在大约 2 个月内完成,...
  • NeoCSV是一种优雅而有效的独立Smalltalk框架,用于在Smalltalk对象之间读取和写入CSV转换。 麻省理工学院许可。 继续阅读。 基本上,NeoCSV处理的格式是 基于文本(ASCII,Latin1,Unicode) 由记录组成,每行1...
  • 安全投注:Smalltalk中的RISC-V ISA 该存储库包含Squeak中RISC-V ISA的初始实现。这是什么? 该存储库包含实现为Smalltalk对象的32I RISC-V指令。 它还包含RISC-V CPU和内存结构的基本模拟,因此您可以加载这些指令...
  • #Assembly 语言仿真器 汇编语言仿真器是用 Cincom Smalltalk 编程语言编写的精简版汇编的仿真器。 该项目的总体目标是使用 Cincom 的 VisualWorks IDE 创建 GUI,同时使用 Smalltalk 语言的一些更有趣的功能。 要...
  • 一种将Smalltalk应用程序从映像直接部署到云而无需接触任何文件的工具。 当前支持部署到Google Cloud和Google Cloud Run云功能(lambda)和Google Compute Engine VM。 如果部署到Compute Engine,则需要为项目的...
  • Io是一种动态的基于原型的编程语言,与Smalltalk和Self处于同一领域。 它围绕消息从一个对象传递到另一个对象的思想。 有关更多信息,可在docs文件夹中找到编程指南和参考手册。范例程式码基础数学Io> 1 + 1==> 2Io...
  • Smalltalk-78 Smalltalk-78是Smalltalk-76的变体,可以简化在便携式“ NoteTaker”计算机上工作。 该存储库中有一个用JavaScript编写的虚拟机,用于在Web浏览器中运行Smalltalk-78快照。 要了解更多信息,请阅读我们...
  • 条纹小谈话Stripe API的Smalltalk实现。 您需要的免费帐户才能获得API密钥。 他们的API文档非常详尽,位于。 我认为您可以从此软件包访问其API的所有方面。 如果您发现未包括的内容,请告诉我们,我们可以努力进行...
  • 外研版高中英语一轮复习精品课件:选修6M1SmallTalk.ppt
  • smalltalk-全栈 全栈 Node.js / Angular / Socket.io / 快速聊天应用
  • Little SmalltalkSmalltalk的一种版本或方言,不符合Smalltalk-80标准。 Little Smalltalk已经存在了大约35年。 1984年,俄勒冈州立大学的Timothy Budd博士发布了Little Smalltalk的第一版。 这是一个非常简单的...
  • Cuis-Smalltalk-实用程序我自己提供的一组Cuis Smalltalk软件包。 如果发现有用,请随时将其包含在您的项目中:-) 安装:所有文件都捆绑在一起打包,只需将文件拖放到Cuis映像中,然后选择“安装打包”即可。片状...
  • 在我的Smalltalk项目中,我经常需要dr​​y-wit提供的功能。 我想在不调用bash的情况下使用它们。 设计 待定 用法 首先,使用Metacello加载它: Metacello new repository: ' github://rydnr/dry-wit-smalltalk:...
  • smalltalk语言介绍语法简单总结

    千次阅读 2020-12-31 11:19:03
    最近在学习Object C,Object C很多特性继承了smalltalk语言的特性,所以先了解一下smalltalk语言。smalltalk起源于上个世纪70年代,被公认为历史上第二个面对对象的程序设计语言,有自己的语法和语义。跟现在流行的...

          参考:https://www.jianshu.com/p/0aac0ba06808

         最近在学习Object C,Object C很多特性继承了smalltalk语言的特性,所以先了解一下smalltalk语言。smalltalk起源于上个世纪70年代,被公认为历史上第二个面对对象的程序设计语言,有自己的语法和语义。跟现在流行的编程语言有点差别,所以即使你是资深程序员,可能也一眼看明白它的意思。

    特点

    1.所有的东西都是对象。

    2.通过发送消息,通知对象要做什么。可以理解为函数调用请求。

    3.每个对象都有自己的存储空间,可容纳其他对象。

    4.每个对象都有一种类型。每个对象都是某个“类”的一个实例。一个类最重要的特征就是能将消息发送给他。

    5.同一类所有对象都能接收相同的消息。比如形状shape和圆circle的关系,圆完全能接收形状消息。

    关键字

    true:表示真对象

    false:表示假对象

    nil:空对象

    self:自己,调用当前类的消息时使用

    super:调用父类消息时使用

    基础语法

    • 注释:用双引号包围。 e.g. "这是注释"
    • 字符串:用单引号包围。 e.g. '这是一个字符串'
    •  单个字符:e.g. $c
    • 符号(Symbol):e.g. #thisIsASymbol大家也许对符号这个概念比较陌生。简单来说,如果两个符号的值一样,那么它们在内存中也是相同的对象。后面的 Ruby 等语言也继承了这一设计。
    • 变量声明:e.g. | a | ,也可以一次声明多个:| a b c |
    • 赋值语句:e.g. a := 5
    • 相等性与同一性:相等性使用 = ,相当于 Java 中的 equals() 。同一性使用 == ,即判断内存地址相同。
    • 返回语句:^ a 即其他语言中的 return a 。
    • 级联:不同于大多数语言,Smalltalk 使用 . 表示语句的末尾,而 ; 用于实现级联的功能。所谓级联,就是指可以连续在同一个对象上调用方法,而不必每次都重复写出这个对象。举个例子:
    | p | 
    p := Client new    
      name: 'Jack';     
      age: 32;     
      address: 'Earth'.
    

    现代语言中 Dart 就延续了类似的设定。不过我个人倒是觉得这个语法用处不大,毕竟用 Builder 模式也可以解决问题,而无需定义新的语法。

    方法与类

    来看一个 Smalltalk 中方法定义和调用的例子:

    "定义一个方法:使物体围绕某个轴旋转一定角度"
    rotateBy: angle around: vector
      | result |
      result := [...省略具体内容].
      ^result
    
    "调用这个方法"
    t rotateBy: a around: v.
    

    相信除了 Objective-C 程序员,大家初看到都会觉得这样的方法签名有点奇怪。不过我们可以基于主流语言的语法,来看看一个方法是以何种逻辑演化成 Smalltalk 的样子的。

    先从我们熟悉的形式开始:

    t->rotate(a, v);  // In C++
    t.rotate(a, v);   // In Java
    

    省略掉一些不影响语义的符号:

    t rotate(a, v);    // 省略掉 .
    t rotate a, v;     // 省略括号
    

    然后我们发现参数的含义不太清晰,可以给每个参数前面加一个词语来使含义更加精确:

    t rotate by a around v;
    

    但是这样的话,哪个词语是前缀,哪个是参数就不太能分得清。因此我们给前缀加个冒号来区分:

    t rotate by: a around: v;
    

    最后,都这样了,方法名字本身也没必要单列出来,可以直接和参数前缀合并起来,就成了 Smalltalk 现在的样子:

    t rotateBy: a around: v; 
    



    让我们再来看一个复杂点的例子:

     

    a negative | (b between: c and: d)
      ifTrue: [a := c negated]
    

    它相当于其他语言中的:

     

    if (a < 0 || (c < b && b < d)) {
        a = -c;
    }
    

    细品这个例子,我们可以看到很多有意思的地方。首先来看这个 c negated 。有人会说,直接写个 -c 不就完了,为什么要搞这么臃肿。表面看上去,只是写法的不同,但其实它代表着理念的不同。-c 代表对 c 这个数字做了一次数学运算,而 c negated 代表的是在 c 这个对象上调用 negated 方法,然后用这个方法的返回值去做下一步的操作。

    这里体现了 Smalltalk 的核心概念之一:一切皆是对象。对比另一门同样号称一切皆是对象的语言 Java,在 Java 中你永远不可能写出 5.negated() 这种代码,而所谓的基本类型、包装类型让多少初学者陷入困惑,又让多少面试官洋洋得意。但在 Smalltalk 里,对象的概念才是真正贯穿始终,保持同一性,也避免了这种困惑。

    其次我们来讨论 Smalltalk 中另一个重要概念:消息。在前文中我们看到了如何调用方法。但在 Smalltalk 中并没有调用方法的概念,而是叫做给对象发送消息。例如 c negated 用 Smalltalk 的话说,就是给对象 c 发送了一个名为 negated 的消息。

    在 Smalltalk 中有三种消息,它们在上面的例子中都能体现:

    • 一元(unary)消息:可以理解为一个无参方法,例如上面的 negated 消息。
    • 二元(binary)消息:就是常用的一组计算符号,比如四则运算符还有上面的 | 之类的。不过需要注意的是它的本质还是发送消息而不是直接运算,因此没有运算符优先级的概念。+* 在 Smalltalk 中的优先级是相等的。
    • Keyword 消息:就是普通的有参方法,在 Smalltalk 中就是每个参数以冒号连接来表示,比如上面的 rotateBy:around: 还有 between:and: 。这样的消息在 Smalltalk 中被称为 keyword

    有人可能会说,把方法调用说成是发送消息,但运行的效果是一样的,这不是换汤不换药吗?话是这么说,但用于描述的词汇的不同也会带来思维方式的不同。相比于「方法调用」,「发送消息」这个说法会显得更加泛用一些,也可以带来一些更本质的思考。

    举个例子,如果我们调用一个不存在的方法,那自然会报错。但如果给一个对象发送一个它不认识的消息,那非得报错吗?我大不了不处理不就行了。甚至,能不能在遇到这种情况时,有个兜底的逻辑统一处理下?—— Ruby 的 method_missing 了解一下。

    再比如说当我们学习面向对象时提到的所谓「三大特征」:继承、封装、多态。继承本质上是面向对象语言中实现代码重用的一种手段,但现在「组合优于继承」早已成为共识。封装是为了隐藏底层或内部的实现细节,也并不是面向对象独有的概念。而多态解释起来最为复杂,我们往往需要定义一个父类,并让两个不同的子类 override 父类的同一个方法,并编写不同的实现,来说明多态性。但是如果用发送消息的思路来解释就很简单了。给两个不同的对象发送同一个消息,这两个对象会做出不同的反应,这不是理所当然的事情吗?压根和类、继承之类的概念没关系。

    对面向对象这一概念的误读影响了很多人。记得几年前见过一个问题,问的是「JavaScript 是一门面向对象的语言吗?」,下面的回答也是众说纷纭。而之所以大家会有争议,是因为 JavaScript 中并没有类的概念,取而代之的是原型的概念,搞的很多人一下子就混乱了。后来 ES6 的标准里增加了 class 的语法糖,我就再也没有见过有人提这个问题了。

    希望读者通过学习 Smalltalk 这门面向对象的鼻祖级语言,理解一切皆是对象以及对象间通过发送消息来通信这两个核心理念,减少一些对面向对象概念的误读。

    在理解了 Smalltalk 的设计理念之后,我们再来看一下怎么声明一个类:

     

    Object subclass: #MyClass      
      instanceVariableNames: ''      
      classVariableNames: ''      
      poolDictionaries: ''      
      category: 'Pupeno'
    

    大部分编程语言都会使用 class 关键字声明一个类,并用 extends 或类似的关键字来声明继承关系。而 Smalltalk 则另辟蹊径。让我们来看看它的逻辑:首先,由于一切皆是对象,因此 Object 类也是一个对象;其次,Object 类可以接收名为 subclass: 的消息,创建一个新的对象作为它的子类。无需再引入任何特殊的语法,仅用语言本身的两个核心理念,就十分自洽地把类的概念创建了出来。

    不仅仅是定义类,还有我们常用的分支、循环语句等,在 Smalltalk 中都可以通过发送消息的形式来实现,而无需定义额外的诸如 ifwhile 等关键字。这或许就是 Smalltalk 把类似 subclass: 之类的带参消息都称作 keyword 的原因。它们完全可以替代其他语言中各种关键字的职能。

    代码块

    继续回到上一节的例子:

    a negative | (b between: c and: d)
      ifTrue: [a := c negated]
    

    关注这个 [a := c negated] 。这里由中括号包围的部分,大家或许会以为就像是 C++/Java 里跟在 if 语句后面的大括号——对,但不全对。在 Smalltalk 中它被称为代码块,是语言中的一等公民,可以放在一个变量里面,自由地控制它的调用时机,也可以把它像参数一样传递。如果你熟悉 JavaScript 就一定不会感到陌生。做个简单对比:

    "in Smalltalk"
    a := [:x | x + 1]       "将一个代码块赋值给 a"
    (a value: 10)           "运行这个代码块并传入参数 10"
    

     

    // in Javascript
    let a = function(x) { return x + 1; };
    a(10);
    

    其实这就是匿名函数的概念,了解过函数式编程概念的朋友们看了一定不会陌生。函数式编程的理念近年来也重回大众视野,即使是 Java 也在 1.8 中加入了相关的特性。可以看到虽说 Smalltalk 的特点是纯粹的面向对象语言,但论函数式编程的能力也完全不输现代的主流语言们。

    控制流

    结合 Smalltalk 对象间发送消息的思想和代码块的能力,我们将变得无所不能。上文中提到 Smalltalk 无需额外的关键字就能实现 ifwhile 等的功能。在最后一节中就让我们具体地看一下如何利用这些能力来实现 if 的功能吧。这也是我当初学习 Smalltalk 时最喜欢的一个例子。

    首先,我们需要定义出 truefalse 这两个常量:

    先定义出 PBoolean 类,然后将 PTruePFalse 作为它的子类。PTrue 类的实例就可以认为是 truefalse 也是同理。

    Object subclass: #PBoolean      
      instanceVariableNames: ''      
      classVariableNames: ''      
      poolDictionaries: ''      
      category: 'Pupeno'
    PBoolean subclass: #PTrue      
      instanceVariableNames: ''      
      classVariableNames: ''      
      poolDictionaries: ''      
      category: 'Pupeno'
    PBoolean subclass: #PFalse      
      instanceVariableNames: ''      
      classVariableNames: ''      
      poolDictionaries: ''      
      category: 'Pupeno'
    

    其次,我们定义 ifTrue:else: 消息。它接受两个代码块作为参数。当 PTrue 类的实例接收到消息时,它执行 ifTrue: 携带的代码块,忽略 else: 携带的代码块。反之亦然。

    "PTrue 中定义"
    ifTrue: do else: notdo  
      ^ do value
      
    "PFalse 中定义"
    ifTrue: notdo else: do  
      ^ do value
    

    再次,我们定义一个 MyClass 类,它可以接受 equals: 消息判断两个对象是否相等。为了方便起见,我们永远返回 true 。实际情况下可以自行实现其业务逻辑。

    equals: other  
      ^ PTrue new
    

    最后,我们就可以愉快地使用 if-else 了:

    m1 := MyClass new.
    m2 := MyClass new.
    (m1 equals: m2) ifTrue: [  
      Transcript show: 'They are equal'
    ] else: [  
      Transcript show: 'They are not equal'
    ]
    

     

    展开全文
  • 闪烁 - SmallTalk 练习 项目信息 名称:闪烁 主要目的:学习以及如何处理 。 有关更多信息,请参阅。 主题: 大学: 课程:2014-2015 Q1 交货日期:2015-01-20 交货标记:10 团队成员: 简要说明 这里有一个...
  • NeoJSON是一个优雅而高效的独立Smalltalk框架,用于在Smalltalk对象之间读取和写入JSON转换。 麻省理工学院许可。 继续阅读。 基本上,NeoJSONWriter用于将Smalltalk对象的JSON表示形式写入文本流。 类似地,...
  • 不久前,我在搜索Mario Wolczko的网站( )时遇到了这个问题,它与著名的Smalltalk“ Bluebook”对应的原始Smalltalk-80实现(请参阅 )。我在90年代使用Smalltalk,还与Squeak和Pharo一起玩耍。但是令我惊讶的是,...
  • ProjectFramework是MIT许可的库,用于使用Pharo Smalltalk在应用程序级别进行项目管理。 使用ProjectFramework可以构建典型的基于项目的桌面GUI应用程序,而无需为启动,保存,关闭,设置属性等项目行为重新发明轮子...
  • 用C编写的Smalltalk VM:内核映像 核心 对于我的 Package Alpha是一个最小的内核映像。 它是在中开发的,并使用构建器将其导出到图像文件中(请参见下文)。 内容: 基本类和元类层次结构 小整数,布尔值,字符...
  • Little Smalltalk(重构)3.1 这是蒂莫西·布德(Timothy Budd)的Little Smalltalk版本3的分支,其目标是现代化C代码并使之更具可读性和习惯性。 同时,为了尽力将其移植到功能强大的嵌入式设备上的任何人的利益,...
  • 我正在编写用于学习Pharo和Smalltalk的非常基本的,正在构建的海龟图形工具。 使用形态绘制乌龟。例子1 | tree |SDTurtle on.tree := [ :size | (size >= 1) ifTrue: [ SDTurtle forward: size; right: 45. tree ...
  • 用于管理和显示等距子画面的Smalltalk项目 用Pharo编写,但使用Morphic,希望可以在其他聊天中使用,如果没有,请告诉我。 图形和精灵主要是(c),但是Clint Bellanger和OpenGameart提供的CC。 目前支持: 从...
  • STON-Smalltalk对象表示法 一种轻量级的,基于文本的,人类可读的数据交换格式,用于诸如Smalltalk的基于类的面向对象的语言。 它可用于序列化域级别的对象,以实现持久性或网络传输。 顾名思义,它基于JSON...
  • This classic book is the definitive real-world style guide for better Smalltalk programming. This author presents a set of patterns that organize all the informal experience successful Smalltalk ...
  • Smalltalk 阅读清单这个 repo 有一个关于 Smalltalk 发展及其影响的选定历史的带注释的信息图。 它当然不是详尽无遗的,但应该提供一个很好的起点。 PDF 中的参考文献超链接到正确的来源。 请随意分享和编辑阅读列表...
  • Smalltalk的辉煌时代

    千次阅读 2020-02-23 14:17:46
    Smalltalk和其创作人alan kay都是IT界的一个传奇,值得后人了解和称赞。什么是Smalltalk,它取得了哪些成就呢?估计你在百度百科可以搜到,但是不够详细,不够丰满。 下面是一篇来自外国网友Richard Eng关于“what ...

    Smalltalk和其创作人alan kay(2003年图领奖得主)都是IT界的一个传奇,值得后人了解和称赞。什么是Smalltalk,它取得了哪些成就呢?估计你在百度百科可以搜到,但是不够详细,不够丰满。

    下面是一篇来自外国网友Richard Eng关于“what is smalltalk"的文章,他基本把smalltalk的历史和成就都介绍了,本文把其核心思想翻译如下:

    smalltalk是一种面向对象的编程语言,它有着丰富的而传奇的历史。它出生于19世纪70年代,在施乐研究院(Xerox PARC),由才华横溢的梦想家团队(包括Alan Kay,Dan Ingalls和Adele Goldberg)创作。smalltalk是为了调研给孩子的编程教学而创作的。可以理解,它是一种非常小而简单的语言,是主要编程语言中最小的。

    在Alan Kay的《Smalltalk的早期历史》(The Early History Of Smalltalk)(版权所有1993 ACM)中说:

    Smalltalk是对计算机本身概念的一种递归,而不是把“计算机材料”分成比整体强度小的东西,比如数据结构、过程和函数,它们是编程语言的常用工具,每个Smalltalk对象都是对计算机全部可能性的递归。因此,它的语义有点像让成千上万的计算机通过一个非常快速的网络连接在一起。

     Smalltalk的贡献是一种新的设计范式,我把它称之为面向对象,用于解决专业程序员的大问题和使初学者制造一个个小的可能性。面向对象是一种成功的尝试,提供了一个实质性的高效建模,使得硅爆炸所带来的复杂的动态系统和用户关系成为可能。

     以下是一些smalltalk的最高成就:

    • Smalltalk引入了语言虚拟机世界,这是Java和Ruby的基础。
    • Smalltalk是JIT编译器的先驱(即时编译器)
    • Smalltalk产生了第一个现代集成开发环境(IDE),包含了文本编辑器、类浏览,对象检查和调试。
    • 自从smalltalk-80以来,它有着一流的函数和封装特性,奇怪的是,这使得smalltalk成为了非常好的函数编程。
    • Smalltalk引入了软件架构模式MVC
    • 在很大程度上,Smalltalk给了我们测试驱动开发(TDD)和极限编程(XP),这是现在非常流行的敏捷实践。
    • Smalltalk给了我们第一个重构的浏览器
    • Smalltalk在开发图形用户界面(GUI)和“所见即所得”(WYSIWYG)用户界面方面发挥了重要作用。
    • 史蒂夫·乔布斯受到施乐PARC的GUI和WIMP(Windows、图标、菜单、指针)的启发,完全重新调整了苹果的策略;GUI是Smalltalk成果的直接输出。

    Smalltalk曾经是一个非常流行的语言。

    它于1981年8月在《字节》杂志的封面上首次亮相:

    smalltalk

    此后,Smalltalk直接促进了一代面向对象语言的产生,包括Objective-C,Erlang,CLOS,Ruby,Python,Perl,PHP,Dart,Java,Groovy和Scala。苹果公司甚至为Macintosh创建了一种smalltalk。

    SimalTalk的普及率在20世纪90年代达到顶峰,当时它是继C++之后最流行的面向对象语言。根据IDC发布的1995年的一份报告显示,面向对象语言的市场份额为:

    1. C++ — 71.3%
    2. Smalltalk — 15.1%
    3. Objective-C — 5.7%
    4. Object Pascal — 4.2%
    5. CLOS — 2.5%
    6. Eiffel — 1.1%
    7. all others — 0.2%

    Smalltalk非常适合商业用途,因此在20世纪90年代,IBM选择Smalltalk作为其VisualAge企业计划的中心,以取代COBOL。

    在21世纪初,美国联合军队使用Smalltalk编写了一个名为JWARS的百万线作战模拟程序。它实际上胜过美国空军编写的类似于C++的风暴模拟,这本身就是这门语言能力的惊人证明。

    今天,Smalltalk依然被全球很多企业使用,其中较著名的用户包括:

    • JP Morgan(摩根大通)
    • Desjardins(加拿大合作组织,北美最大的信用合作组织)
    • UBS(瑞银集团,欧洲最大的金融控股集团)
    • Florida Power & Light(佛罗里达电力照明公司)
    • Texas Instruments(德州仪器)
    • Telecom Argentina(阿根廷电信)
    • Orient Overseas Container Lines(东方海外货柜航运有限公司,香港集装箱货运)
    • BMW(宝马)
    • Siemens AG(西门子)

    Cincom, Instantiations, and GemTalk Systems是目前Smalltalk的主要供应商.

    Smalltalk是所有主要编程语言中生产力最高

    根据Namcook分析研究,Smalltalk是所有主要编程语言中生产力最高的(按“经济生产力”衡量,提供1000个功能点所需的工作小时数评估)结果如下:

    1. C — 26,273
    2. Fortran — 22,394
    3. JavaScript — 15,929
    4. Forth — 14,636
    5. Haxe — 14,636
    6. Lisp — 14,636
    7. C++ — 12,697
    8. Go — 12,697
    9. Java — 12,697
    10. PHP — 12,697
    11. Python — 12,697
    12. C# — 12,309
    13. Dart — 11,620
    14. F# — 11,312
    15. Ruby — 11,312
    16. Erlang — 10,758
    17. Elixir — 9,845
    18. Haskell — 9,845
    19. Julia — 9,465
    20. Perl — 9,465
    21. Delphi — 8,289
    22. Objective-C — 7,848
    23. Visual Basic — 7,848
    24. Eiffel — 7,156
    25. Smalltalk — 6,879

    原文:https://www.codeproject.com/Articles/1241904/Introduction-to-the-Smalltalk-Programming-Language

    结论

    Smalltalk是一项传奇,值得人们了解其思想精髓 

    展开全文
  • Cuis-Smalltalk-Dev:Cuis Smalltalk的积极开发

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,782
精华内容 11,512
关键字:

smalltalk