Smalltalk

来自开放百科 - 灰狐
(版本间的差异)
跳转到: 导航, 搜索
(方言)
(图书)
 
(未显示1个用户的95个中间版本)
第1行: 第1行:
 
{{SeeWikipedia}}
 
{{SeeWikipedia}}
 +
 +
[[文件:Smalltalk-Balloon.jpg|right|Smalltalk]]
 +
 +
Samlltalk
 +
 +
==简介==
 +
[[文件:smalltalk-logo.png|right|Smalltalk]]
 +
 +
Smalltalk 发行于 1972年(50岁),开发始于 1969 年,[https://spectrum.ieee.org/xerox-parc The Story of Smalltalk]
 +
 +
*Smalltalk is a vision
 +
*Smalltalk has few concepts
 +
*Smalltalk is an environment
 +
*Smalltalk is a big system
 +
*Smalltalk as an [[operating system]]
 +
 +
Smalltalk 不仅仅是一门语言。Smalltalk-80 最初是作为一个完整的操作系统交付的,旨在运行在一台裸机上。Smalltalk-80 包含 virtual machine 规范。
 +
 +
I like it... It’s nice and clean and simple and pretty. Nice stuff!
 +
 +
— Alan Kay
 +
 +
Smalltalk 是 70 年代初期美国 XEROX 公司开发的,它不仅是一门编程语言,一个窗口系统,也是一个完整的编程环境,一个集编程、调试、运行和输出为一体的统一环境。
 +
 +
Smalltalk 创立了面向对象的思想并一直沿用至今。
 +
 +
Smalltalk is the consummate teaching language, Smalltalk is OOP done right.
  
 
The best way to predict the future is to invent it!  -Alan Kay
 
The best way to predict the future is to invent it!  -Alan Kay
第6行: 第33行:
  
 
Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:[[C++]],C#,[[Objective-C]],Actor,[[Java]]和[[Ruby]]等。90年代的许多软件开发思想得利于Smalltalk,例如设计模式、敏捷编程和代码重构等。
 
Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:[[C++]],C#,[[Objective-C]],Actor,[[Java]]和[[Ruby]]等。90年代的许多软件开发思想得利于Smalltalk,例如设计模式、敏捷编程和代码重构等。
 +
 +
[https://medium.com/smalltalk-talk/make-smalltalk-great-again-images-7cb21cd10623 Make Smalltalk Great Again]
 +
 +
==功能==
 +
Dynamically Typed + Live Environment
 +
 +
[https://docs.huihoo.com/smalltalk/Introductory-Squeak.html Basic Aspects of Squeak and the Smalltalk-80 Programming Language]
 +
 +
DynamicType (SelfType, ClassType, InstanceType)
 +
 +
[https://github.com/hernanwilkinson/LiveTyping Live Typing] Automatic Type Annotation for Dynamically Typed Languages]
 +
 +
Smalltalk 杀手级功能:
 +
*编程语言虚拟机机制
 +
*基于镜像(Image-based)的持久性
 +
*对象,一切都是对象,对象之间只通过消息进行交流(最纯粹的OO,也是最早的一个)
 +
*Live(实时)编程
 +
*先进的调试技术,如即时修改代码(on-the-fly code changes)
 +
*简单、不混乱(uncluttered)的 IDE 界面
 +
*特定领域语言([[DSL]])是 Smalltalk 唯一的工作方式,程序员必须使用对该领域自然的语言和符号来关注问题领域。
 +
 +
[[Lisp]], [https://medium.com/smalltalk-talk/lisp-smalltalk-and-the-power-of-symmetry-8bd96aaa0c0c Smalltalk, and the Power of Symmetry]
 +
 +
==对比==
 +
与 [[C++]]、[[Java]] 等语言的对比
 +
 +
[http://web.cecs.pdx.edu/~harry/musings/SmalltalkOverview.html Smalltalk: A White Paper Overview]
 +
 +
{| class="wikitable"
 +
|-
 +
! Smalltalk
 +
! Java/C++ 术语
 +
|-
 +
| instance variable
 +
| data member
 +
|-
 +
| instance method
 +
| member function
 +
|-
 +
| class variable
 +
| static data member
 +
|-
 +
| class method
 +
| static member function
 +
|}
  
 
==指南==
 
==指南==
 
*[http://docs.huihoo.com/smalltalk/Smalltalk-Overview.html Smalltalk: A White Paper Overview]
 
*[http://docs.huihoo.com/smalltalk/Smalltalk-Overview.html Smalltalk: A White Paper Overview]
 
*[http://docs.huihoo.com/smalltalk/Introductory-Squeak.html Basic Aspects of Squeak and the Smalltalk-80 Programming Language]
 
*[http://docs.huihoo.com/smalltalk/Introductory-Squeak.html Basic Aspects of Squeak and the Smalltalk-80 Programming Language]
 +
*[[GNU Emacs]] M-x package-install RET smalltalk-mode RET
  
==方言==  
+
==虚拟机==
* [[GNU Smalltalk]]
+
*[https://github.com/OpenSmalltalk/ OpenSmalltalk] The cross-platform virtual machine for Squeak, Pharo, Cuis, and Newspeak.
* [[Pharo]]: 专注于现代软件工程和程序开发技术
+
*[https://github.com/OpenSmalltalk/opensmalltalk-vm Cog VM] for [[Squeak]], [[Pharo]], [https://github.com/Cuis-Smalltalk Cuis], and [http://newspeaklanguage.org/ Newspeak].Cog is the fastest virtual machine for Squeak and Pharo.
* [[Squeak]]: 定位于教学
+
*[https://wiki.squeak.org/squeak/1447 Squeak Virtual Machine]
 +
*[https://github.com/pharo-project/pharo-vm Pharo VM]
 +
*[https://github.com/smarr/RoarVM RoarVM] - The Manycore [[Squeak]]VM
 +
*[https://github.com/HPI-SWA-Lab/RSqueak RSqueak] A [[Squeak]] VM written in RPython.[https://github.com/HPI-SWA-Lab/RSqueak-App RSqueak-App]
 +
 
 +
==实现==
 +
[[文件:Pharo-logo.png|right|Pharo]]
 +
 
 +
Smalltalk版本:
 +
*[https://wiki.squeak.org/squeak/64 Smalltalk-80]
 +
*[https://github.com/codefrau/Smalltalk78 Smalltalk-78]
 +
*[https://wiki.squeak.org/squeak/989 Smalltalk-72]
 +
 
 +
[https://www.cs.virginia.edu/~evans/cs655/readings/smalltalk.html Design Principles Behind Smalltalk]
 +
 
 +
[https://medium.com/smalltalk-talk/smalltalk-choices-6c39d09a40e6 Smalltalk Choices]
 +
 
 +
[http://www.refactoryworkers.com/SmaCC.html SmaCC (Smalltalk Compiler-Compiler)] [https://github.com/SmaCCRefactoring/SmaCC SmaCC @ GitHub]
 +
 
 +
Smalltalk 方言和开源实现
 +
*[[GNU Smalltalk]]
 +
*[[Pharo]]: 专注于现代软件工程和程序开发技术
 +
*[[Squeak]]: 定位于教学
 +
*[https://github.com/dolphinsmalltalk Dolphin Smalltalk]
 +
*[https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev Cuis Smalltalk] [https://blog.drgeo.eu/2022/02/dr-geo-update-cuis-port.html Dr. Geo update, Cuis port] [https://cuis-smalltalk.github.io/TheCuisBook/index.html The Cuis-Smalltalk Book]
 +
*[http://haver.klix.ch/ HaverOnCuis] A Cuis based Smalltalk With Modules
 +
 
 +
==商业版==
 +
Smalltalk商业版本发行商:
 +
*[http://www.cincomsmalltalk.com/ Cincom Smalltalk]
 +
*[http://www.instantiations.com/products/vasmalltalk/ VA Smalltalk]
 +
*[https://gemtalksystems.com/ GemStone] [https://docs.huihoo.com/smalltalk/esug/ESUG2019/03Wednesday/01-GemStone-Update.pdf GemStone/S 64 Update]
 +
 
 +
==包管理==
 +
*[https://github.com/Metacello/metacello Metacello]
 +
 
 +
==项目==
 +
*[https://github.com/svenvc/zinc Zinc HTTP Components]
 +
*[https://amber-lang.net/ Amber] A Web developer's best friend.
 +
*[https://github.com/seasidest/seaside Seaside web framework]
 +
*[https://github.com/ObjectProfile/Roassal3/ Roassal Visualization Engine]
 +
*[https://github.com/moosetechnology/Moose MOOSE] Platform for software and data analysis. [http://agilevisualization.com/ Agile Visualization]
 +
 
 +
==Objective-C==
 +
*[http://www.w2bc.com/article/210282 Objective-C与SmallTalk]
 +
*[https://github.com/mpw/Objective-Smalltalk Objective-Smalltalk] is a programming language derived from [[Objective-C]].
 +
 
 +
==C/C++==
 +
Smalltalk虚拟机大多由[[c programming language|C]]/[[C++]]开发。
 +
 
 +
==Java==
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2007/Tue/Calling_Java_ESUG_2007.1.pdf Calling Java JNIPort for VisualWorks]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2007/Tue/EclipseAsSmalltalkPlugin.pdf Cava := Eclipse as Smalltalk Plugin.]
 +
 
 +
==Ruby==
 +
*[https://github.com/MagLev/maglev GemStone Maglev Ruby] 基于GemStone/S虚拟机的[[Ruby]]语言实现。
 +
 
 +
==Erlang==
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2006/thursday/erlang-smalltalkConference.pdf Erlang @ Smalltalk Conference]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2006/thursday/erlang_in_11_minutes.pdf Erlang in 11 Minutes]
 +
 
 +
==函数式==
 +
*[https://stackoverflow.com/questions/3527753/why-is-smalltalk-not-a-functional-programming-language Why is smalltalk not a functional programming language?]
 +
*[http://code.google.com/p/hst/ HST] is a Smalltalk implementation in [[Haskell]]
 +
 
 +
==Cloud==
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2013/2-Tue/05-Smalltalk-in-the-Cloud.pdf Smalltalk in the Cloud]
  
 
==文档==
 
==文档==
 
*[http://docs.huihoo.com/smalltalk/Finding-the-Swan-in-Squeak-Ugly-Duckling-OSCON-2009.pdf Introduction to Smalltalk]
 
*[http://docs.huihoo.com/smalltalk/Finding-the-Swan-in-Squeak-Ugly-Duckling-OSCON-2009.pdf Introduction to Smalltalk]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2005/Tuesday/2005-ESUG-Pottier.pdf Smalltalk-80 : hardware and software]
 
*[http://docs.huihoo.com/smalltalk/Introduction-to-Web-Application-Development-Using-Smalltalk-Seaside-OSCON-2009.pdf Introduction to Seaside]
 
*[http://docs.huihoo.com/smalltalk/Introduction-to-Web-Application-Development-Using-Smalltalk-Seaside-OSCON-2009.pdf Introduction to Seaside]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2015/IWST/Slides/2.1.1-FPGA-circuits.pdf A Meta Model Supporting Both Hardware and Smalltalk-based execution of FPGA Circuits]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2016/02-Tuesday/1400-1430-Parallelism-with-OpenCL-Bee/ Parallelism with OpenCL in Bee Smalltalk]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2014/3-wednesday/1145-1230-JavaScript-for-VW/JavaScript-Engine.pdf JavaScript for VW Applications]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2009/TuesMorning/ESUG-2009-JIT-Security.pdf Security on JIT VMs]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2003/wednesday/aosta.pdf Inside AOStA]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2014/3-wednesday/1400-1430-Retrospective-7-VM-Engineering-Years/Retrospective.pdf Retrospective Seven VM Engineering Years]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2014/3-wednesday/1500-1530-Bee-Smalltalk-runtime/BeeSmalltalkRunTime.pdf Bee Smalltalk Runtime]
 +
*[http://docs.huihoo.com/smalltalk/esug/conferences/2011DIS/SqueakNos.pdf Enhancing SqueakNOS functionalities]
 +
*[http://docs.huihoo.com/smalltalk/esug/conferences/2011DIS/JourneyInTheVM.pdf A little Journey in a Virtual Machine]
 +
*[http://docs.huihoo.com/smalltalk/esug/conferences/2012FOSDEM/2012-FOSDEM-Marr-RoarVM.pdf Sly and the RoarVM] [https://github.com/smarr/RoarVM GitHub]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2005/Tuesday/2005-ESUG-Denker.pdf Runtime Bytecode Transformation for Smalltalk]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2005/Tuesday/2005-ESUG-Gybels.pdf Inter-Language Reflection] [http://docs.huihoo.com/smalltalk/esug/ESUG2005/Workshop/inter-languagereflection.pdf Inter-Language Reflection]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2005/Tuesday/2005-ESUG-Hirschfeld.pdf Open Aspects] [http://docs.huihoo.com/smalltalk/esug/ESUG2005/Workshop/openaspects.pdf Open Aspects]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2005/Tuesday/2005-ESUG-Bourqadi.pdf Towards Unified Aspect-Oriented Programming] [http://docs.huihoo.com/smalltalk/esug/ESUG2005/Workshop/unifiedaop.pdf Towards Unified Aspect-Oriented Programming]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2005/Tuesday/2005-ESUG-Gaelli.pdf Towards aTaxonomy of Unit Tests] [http://docs.huihoo.com/smalltalk/esug/ESUG2005/Workshop/unittesttaxonomy.pdf Towards a Taxonomy of SUnit Tests]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2009/MondayAfternoon/smalltalk-in-moodle.1.pdf Smalltalk in moodle] [http://docs.huihoo.com/smalltalk/esug/ESUG2005/Workshop/bytesurgeon.pdf Runtime Bytecode Transformation for Smalltalk]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2000/Slides/runtimeTools.pdf Building run-time analysis tools by means of pluggable interpreters]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2009/wed-morning/MultiCorePlayground.pdf Multi Core Playground]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2005/Friday/2005-ESUG-Berry.pdf SOA – Benefits and Risks]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2005/Wednesday/2005-ESUG-Renggli/2005-ESUG-Seaside.pdf Seaside – A Multiple Control FlowWeb Application Framework]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2003/wednesday/Classbox.pdf Classboxes: A Minimal Module Model Supporting Local Class Extension]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2002/German-In-7000000-Objects.pdf German in 7 Million Shared Objects]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2002/Smalltalk_in_Large-Scale_Enterprise_Architectures.pdf Smalltalk in Large-Scale Enterprise Architectures]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2000/Slides/virtualDominos/virtualDominos.html The making of Virtual Domino Topplings. VRML: Virtual Reality Meta Language]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG1999/NumericalMethods/Numerical-methods-web.pdf Numerical Methods]
 +
 +
==图书==
 +
*[http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf 《Smalltalk-80: The Language and its Implementation》Adele Goldberg and DavidRobson]
 +
*[https://book.seaside.st/ Dynamic Web Development with Seaside]
 +
*《The Art and Science of Smalltalk》 Simon Lewis Hewlett-Packard
  
 
==开发者==
 
==开发者==
 
*[https://github.com/dalehenrich Dale Henrichs]
 
*[https://github.com/dalehenrich Dale Henrichs]
 +
 +
==用户==
 +
Smalltalk用户和成功案例:
 +
*[http://www.cincomsmalltalk.com/main/successes/ Cincom Smalltalk成功客户]
 +
*[http://docs.huihoo.com/smalltalk/esug/ESUG2007/Thu/xM-at-SAP.pdf xM @ SAP]
 +
 +
==教育==
 +
*[https://medium.com/learn-how-to-program/latest Learn How To Program] Learning to program the Smalltalk way
 +
*[https://techbeacon.com/app-dev-testing/how-learning-smalltalk-can-make-you-better-developer How learning Smalltalk can make you a better developer]
  
 
==图集==
 
==图集==
 
<gallery>
 
<gallery>
 +
image:Smalltalk-80-Cover-of-the-Blue-Book.png|Smalltalk-80
 
image:smalltalk-roadmap.png|路线图
 
image:smalltalk-roadmap.png|路线图
 
image:squeak-workspace.png|Workspace
 
image:squeak-workspace.png|Workspace
 +
image:dolphin-smalltalk.png|Dolphin
 +
image:GemStone-Object-Server.png|GemStone对象服务器
 +
image:Gtoolkit-importing-cpp-blueprint-ast.png|Glamorous Toolkit软件分析
 
</gallery>
 
</gallery>
  
 
==链接==
 
==链接==
 
*[http://www.smalltalk.org/ Smalltalk官网]
 
*[http://www.smalltalk.org/ Smalltalk官网]
 +
*[https://files.squeak.org/ Squeak下载和存档]
 +
*[http://smalltalkhub.com/ SmalltalkHub]
 
*[http://docs.huihoo.com/smalltalk/ Smalltalk文档]
 
*[http://docs.huihoo.com/smalltalk/ Smalltalk文档]
 +
*[http://www.world.st/ The World Of Smalltalk]
 +
*[https://gemstonesoup.wordpress.com/smalltalk-101/ Smalltalk 101]
 +
*[http://www.vaikan.com/why-i-love-smalltalk/ 为什么我喜欢Smalltalk?]
 +
*[http://www.infoq.com/cn/articles/smalltalk-comeback-schwartz Randal Schwartz访谈:Ruby之根——Smalltalk王者归来]
 
*[[Squeak]]:一个免费的多系统下运行的Smalltalk环境
 
*[[Squeak]]:一个免费的多系统下运行的Smalltalk环境
 
*[http://www.vpri.org/ Viewpoints Research Institute] design for learning, powerful ideas education.
 
*[http://www.vpri.org/ Viewpoints Research Institute] design for learning, powerful ideas education.
第39行: 第228行:
 
[[category:programming language]]
 
[[category:programming language]]
 
[[category:smalltalk]]
 
[[category:smalltalk]]
 +
[[category:Huihoo Foundation]]

2022年9月4日 (日) 09:46的最后版本

Wikipedia-35x35.png 您可以在Wikipedia上了解到此条目的英文信息 Smalltalk Thanks, Wikipedia.
Smalltalk

Samlltalk

目录

[编辑] 简介

Smalltalk

Smalltalk 发行于 1972年(50岁),开发始于 1969 年,The Story of Smalltalk

  • Smalltalk is a vision
  • Smalltalk has few concepts
  • Smalltalk is an environment
  • Smalltalk is a big system
  • Smalltalk as an operating system

Smalltalk 不仅仅是一门语言。Smalltalk-80 最初是作为一个完整的操作系统交付的,旨在运行在一台裸机上。Smalltalk-80 包含 virtual machine 规范。

I like it... It’s nice and clean and simple and pretty. Nice stuff!

— Alan Kay

Smalltalk 是 70 年代初期美国 XEROX 公司开发的,它不仅是一门编程语言,一个窗口系统,也是一个完整的编程环境,一个集编程、调试、运行和输出为一体的统一环境。

Smalltalk 创立了面向对象的思想并一直沿用至今。

Smalltalk is the consummate teaching language, Smalltalk is OOP done right.

The best way to predict the future is to invent it! -Alan Kay

Smalltalk,被公认为历史上第二个面向对象的程序设计语言,和第一个真正的集成开发环境(IDE)。

Smalltalk对其它众多的程序设计语言的产生起到了极大的推动作用,主要有:C++,C#,Objective-C,Actor,JavaRuby等。90年代的许多软件开发思想得利于Smalltalk,例如设计模式、敏捷编程和代码重构等。

Make Smalltalk Great Again

[编辑] 功能

Dynamically Typed + Live Environment

Basic Aspects of Squeak and the Smalltalk-80 Programming Language

DynamicType (SelfType, ClassType, InstanceType)

Live Typing Automatic Type Annotation for Dynamically Typed Languages]

Smalltalk 杀手级功能:

  • 编程语言虚拟机机制
  • 基于镜像(Image-based)的持久性
  • 对象,一切都是对象,对象之间只通过消息进行交流(最纯粹的OO,也是最早的一个)
  • Live(实时)编程
  • 先进的调试技术,如即时修改代码(on-the-fly code changes)
  • 简单、不混乱(uncluttered)的 IDE 界面
  • 特定领域语言(DSL)是 Smalltalk 唯一的工作方式,程序员必须使用对该领域自然的语言和符号来关注问题领域。

Lisp, Smalltalk, and the Power of Symmetry

[编辑] 对比

C++Java 等语言的对比

Smalltalk: A White Paper Overview

Smalltalk Java/C++ 术语
instance variable data member
instance method member function
class variable static data member
class method static member function

[编辑] 指南

[编辑] 虚拟机

[编辑] 实现

Pharo

Smalltalk版本:

Design Principles Behind Smalltalk

Smalltalk Choices

SmaCC (Smalltalk Compiler-Compiler) SmaCC @ GitHub

Smalltalk 方言和开源实现

[编辑] 商业版

Smalltalk商业版本发行商:

[编辑] 包管理

[编辑] 项目

[编辑] Objective-C

[编辑] C/C++

Smalltalk虚拟机大多由C/C++开发。

[编辑] Java

[编辑] Ruby

[编辑] Erlang

[编辑] 函数式

[编辑] Cloud

[编辑] 文档

[编辑] 图书

[编辑] 开发者

[编辑] 用户

Smalltalk用户和成功案例:

[编辑] 教育

[编辑] 图集

[编辑] 链接

分享您的观点
个人工具
名字空间

变换
操作
导航
工具箱