<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>smalltalk</title>
	<atom:link href="https://www.aitaocui.cn/tag/123357/feed" rel="self" type="application/rss+xml" />
	<link>https://www.aitaocui.cn</link>
	<description>翡翠玉石爱好者聚集地</description>
	<lastBuildDate>Mon, 21 Nov 2022 21:30:38 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://www.aitaocui.cn/wp-content/uploads/2022/11/taocui.png</url>
	<title>smalltalk</title>
	<link>https://www.aitaocui.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>smalltalk(面向对象的程序设计语言)</title>
		<link>https://www.aitaocui.cn/article/193391.html</link>
					<comments>https://www.aitaocui.cn/article/193391.html#respond</comments>
		
		<dc:creator><![CDATA[奥利奥巧克力棒]]></dc:creator>
		<pubDate>Mon, 21 Nov 2022 21:30:38 +0000</pubDate>
				<category><![CDATA[百科]]></category>
		<category><![CDATA[smalltalk]]></category>
		<guid isPermaLink="false">https://www.aitaocui.cn/?p=193391</guid>

					<description><![CDATA[Smalltalk被公认为历史上第二个面向对象的程序设计语言和第一个真正的集成开发环境 (IDE)。由Alan Kay，Dan Ingalls，Ted Kaehler，Adele ...]]></description>
										<content:encoded><![CDATA[</p>
<article>
<p>Smalltalk被公认为历史上第二个面向对象的程序设计语言和第一个真正的集成开发环境 (IDE)。由Alan Kay，Dan Ingalls，Ted Kaehler，Adele Goldberg等于70年代初在Xerox PARC开发。Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用，主要有：Objective-C，Actor， Java 和Ruby等。90年代的许多软件开发思想得利于Smalltalk，例如Design Patterns， Extreme Programming(XP)和Refactoring等。20世纪70年代到80年代前期，美国施乐公司的帕洛阿尔托研究中心（PARC）开发了Smalltalk编程语言。从Smalltalk-72、Smalltalk-78到Smalltalk-80，他们开发完成了整个Smalltalk系列，Smalltalk编程语言对近代面向对象编程语言影响很大，所以称之为“面向对象编程之母”。（此段摘自《松本行宏的程序世界》）</p>
</article>
<article>
<h1>历史</h1>
<p>最早的Smalltalk原型由Alan Kay于70年代初提出。类（来自Simula-67）、海龟绘图（来自MIT的 LOGO ）以及 图形界面 等概念的有机组合，构成了Smalltalk的最初的蓝图。</p>
<p>在1971年到1975年之间，Kay在Xerox PARC的小组设计并实现了第一个真正的Smalltalk语言系统。这个系统具有以下几个技术创新：</p>
<p>语言完全基于Simula的类和消息的概念。</p>
<p>语言没有固定的语法，语法分析由类本身完成。</p>
<p>开发环境的革新相当迅速。</p>
<p>虽然当时的位图显示器十分昂贵，但是Kay却说服了PARC让他使用这些位图显示器，这使得Kay和他的小组能够实现不同大小和字体的文字，使用多窗口环境，以及一些对图像处理的高端支持。</p>
<p>1975-76年间，Kay小组认识到应当对执行效率和规模进行优化。于是他们在许多重要方面重新设计了Smalltalk系统，在语言上：</p>
<p>引入了继承和子类的概念。</p>
<p>确定了语言的语法，这使得编译器能够产生高效、可执行、精炼的二进制代码。</p>
<p>Larry Tesler设计了浏览器，这极大地提高了Smalltalk程序员的编程效率。</p>
<p>前述的所有Smalltalk系统都是在特殊的硬件上实现的，直到1977-78年，Bruce Horn 和 Ted Kaehler 把Smalltalk-76移植到由Intel 8086处理器和自定显示器所组成的硬件环境（被称为NoteTaker）上。虽然这种硬件环境只生产了10台，但是它证明了在通常的处理器上实现Smalltalk的可能性。</p>
<h1>内容简介</h1>
<p>在1979-80年，部分受NoteTaker项目的影响，Smalltalk小组的注意力转移到Smalltalk的销售可行性上。小组设计并实现了新一代的Smalltalk系统，这次修改的目标着重于在标准硬件上的移植性等方面，包括：</p>
<p>采取 ASCII 码集，摒弃了原先在Smalltalk-72和-76中使用的特殊字符。</p>
<p>取消了原始(primitive)方法直接存取内存的能力。取而代之的是引入一系列的原始方法提供相应的功能。</p>
<p>引入了元类的概念。</p>
<p>引入MVC(Model-View-Controller)系统以方便交互式应用软件的开发。</p>
<p>程序实例</p>
<p>数学计算:</p>
<p>(15 * 19) + (37 squared)</p>
<p>可以理解为：向15发送消息&#x27;*&#x27;，参数为19；向37发送消息squared; 最后向15*19的结果发送消息&#x27;+&#x27;，参数为37 squared的结果。</p>
<h1>面向对象</h1>
<p>在Smalltalk中所有的东西都是对象，或者应该被当作对象处理。</p>
<p>例如下面的表达式：</p>
<p>2 + 3</p>
<p>应当被理解为：向对象2发送消息+，参数为对象3。</p>
<p>纯面向对象使得Smalltalk在语言结构方面有许多与其他语言不同的特点，例如在Smalltalk语言中没有条件语句，取而代之的是一些发送给对象true或者false的消息，因此它们不属于语言部分，而属于Smalltalk的类库；也没有循环重复语句（C语言中的for while），Smalltalk用向数字对象或块对象发送消息来实现重复执行。</p>
</article>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
<div class="mt-3 mb-3" style="max-width: 770px;height: auto;">
                                    </div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.aitaocui.cn/article/193391.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
