惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
小众软件
小众软件
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
Jina AI
Jina AI
博客园 - 【当耐特】
V
Visual Studio Blog
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
量子位
IT之家
IT之家
G
Google Developers Blog
V
V2EX
The GitHub Blog
The GitHub Blog
月光博客
月光博客
GbyAI
GbyAI

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟
Smalltalk学习笔记
2014-09-03 · via 夜行人
  • 所有一切都是物体(Everything is an Object)。这是Smalltalk中最重要的一条规则。
  • 一个变量没有与之关联的类型。变量仅仅指向物体
  • a := 2的真正含义不是“将a的值设置为整数2”,而是“让变量a指向一个值为2的SmallInteger(小整数)物体”
  • 所有的计算都通过消息(message)来触发。你向某个物体发送消息,然后就会发生某些事情。
  • (15 * 19) + (37 squared)可以理解为:向15发送消息 * ,参数为19;向37发送消息squared;最后向15*19的结果发送消息 + ,参数为37 squared的结果。
  • Smalltalk中所有的表达式都是<接受消息的物体> <消息>
  • 消息激发方法。一个消息会对应什么方法是由接受消息的物体决定的。
  • 每条消息(to: do:, whileTrue:, +)都会激发方法,这些方法是Smalltalk中的代码单元,你可以认为方法就是你常用的编程语言中的函数或者过程。方法是计算发生的地方。。你不仅可以查看它们的控制结构和操作是如何实现的——而且还能改动它们!
  • 每一个物体都是某类事物的一个实例。
  • 由于该类(事物)中定义了此实例(物体)的行为,所以必须找到这个接受消息的物体所属于的类,然后通过类来指出应该如何解释收到的消息。这一点非常重要。 (代码的位置,高层和底层视角的切换 很微妙)
  • 类是定义方法(行为)的地方,决定了物体是否有某种能力(能执行某个动作),所有代码都能在类中找到,没有魔术
  • Smalltalk中没有什么要记住的关键字(甚至没有if,你可以自己实现)!使用Smalltalk,就像用小积木,能让你搭建出你想要的任何东西。
  • 在Smalltalk语言中没有条件语句,取而代之的是一些发送给对象true或者false的消息,因此它们不属于语言部分,而属于Smalltalk的类库;也没有循环重复语句(C语言中的for, while),Smalltalk用向数字对象或块对象发送消息来实现重复执行。
  • 语言没有固定的语法,语法分析由类本身完成
  • Smalltalk是一种使用“晚绑定(late-binding”的语言,让相同的消息在不同的数据上执行近似的功能成为多态。当你看到一个printString消息时,你实际上并不知道将会执行什么,直到你了解这个消息被发送给哪个物体后,才能清楚到底会执行什么内容
  • 从smalltalk这里学习对象,从lisp那里学习函数
  • 面向对象编程的精髓在于将行为绑定在数据上
  • 在结构化程序设计之中,我们将精力集中在行为(动词)上,然后弄清楚我们需要哪些数据(名词)才能执行。总而言之,我们将数据绑定在行为上。但在面向对象程序设计之中,我们将程序的中心用名词和数据表示,然后弄清楚我们要将哪些行为绑定在他们之上
  • Smalltalk和Scheme都非常优美纯粹,一致性非常好,相比之下,主流工业语言有些大杂烩,不少由于妥协导致的不一致,以及难以理解
  • 严格遵照一个唯一标准机制的做法已经被证明具有惊人的威力
  • 学习纯粹的语言,能让你更容易搞懂核心概念,而不会被各种枝节分神,而这些概念是大多编程语言的核心

##参考资料

文章作者 种瓜

上次更新 2014-09-03