为什么Smalltalk不流行
最近读到一本书,说Python程序员比Java程序员聪明。同理,懂Smalltalk的程序员也比Java程序员聪明。所以,我在StackOverflow上找到这个关闭很久的问题,整理了一下,跟大家分享。
在介绍为什么Smalltalk不流行之前,你一定会想它有什么特别之处吗,以至于很多技术刊物和出版物在谈论面向对象时都拿它作为参照。我只会Java,它真的有那么重要吗,或者说我需要学习它。因此我先就这个问题作了整理。
Smalltalk可以说是OO语言的先驱之一(当时与之对应的是Simula和Eiffel),它是相当纯粹的OO语言。
- 一切皆对象,对象之间的通讯只能通过发送消息实现
- 无原生对象(例如int或boolean等)
- 无结构控制(例如for或switch等),听起来不可思议但这是真的
- 无静态对象(static)
它甚至实现了一些现在看来司空见惯的设计:
- 虚拟机(JIT编译)
- 检查式调试
- “Hotswapping”执行代码
- 闭包
- 现代IDE
- Duck typing
- 基于Model-View Controller (MVC) 的UI
- 测试驱动开发(TDD)和敏捷方法
另外Smalltalk还有很多特性让它显得另类:
- 基于Image的系统而不是基于文件
- 面向对象的数据库
毫不夸张的说,Java和apache-common的集合类(collections)API都极大地受到Smalltalk的影响。
我不会建议你去学习Smalltalk,但熟悉这些基本概念(目前很多语言都提供了)对你相当有帮助。 该语言的创作者Alan Kay最初的目的是儿童教育。现在人们不再大规模使用它,但这不并不是说它完全退出了。比如,JPMorgan有一个大型的管理衍生品风险的系统就是用Smalltalk语言编写的。
言归正传,回到刚才的主题,为啥Smalltalk没有流行起来。 某人说,最近几个月来我一直在看Smalltalk(VisualWorks),我越学越对它刮目相看。不过我总觉得我是不是忽略了一些东西,它现在为啥不再流行还是它从未流行过。那些抛弃Smalltalk转而学习Java或C++的人,谁能告诉我这是为什么。
大家普遍认可的一个回答说,有很多原因(大部分是历史造成的)导致Smalltalk没有火起来。
- 与那个时代的硬件相比,它太超前了。
- 1995年,Java横空出世,Smalltalk主要的厂商(ParcPalace)正忙着呢与另一个厂商(Digitalk)合并,最终以失败告终。
- 2000年,Cincom收购VisualWork时,人们已经不再对Smalltalk感冒了。
- 此后,Smalltalk不再扮演重要角色,但它又恢复了一些市场。
为什么Smalltalk不流行的更多相关文章
- 【转】最流行的编程语言JavaScript能做什么?
本文转自互联网! 首先很遗憾的一点是,“PHP虽然是最好的语言”,但是它不是最流行的语言. 对不起的还有刚刚在4月TIOBE编程语言排行榜上榜的各个语言: 你们都很棒,但是你们都担当不了这个大任. 开 ...
- 2015最流行的Android组件、工具、框架大全
Android 是目前最流行的移动操作系统之一. 随着新版本的不断发布, Android的功能也日益强大, 涌现了很多流行的应用程序, 也催生了一大批的优秀的组件. 本文试图将目前流行的组件收集起来以 ...
- 流行的JavaScript库 ——jQuery
1.为了简化 JavaScript 的开发, 一些 JavsScript 库诞生了. JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用者建立有高难度交互的 Web2.0 特性的富客 ...
- 最流行的编程语言 JavaScript 能做什么?
此文转载oschina文章 首先很遗憾的一点是,“PHP虽然是最好的语言”,但是它不是最流行的语言. 同时对不起的还有刚刚在4月TIOBE编程语言排行榜上上榜的各个语言: 你们都很棒,但是你们都担当不 ...
- 为什么google bazel构建工具流行不起来
作者Jack47 转载请保留作者和原文出处 之前博主写了系列文章Google软件构建工具Bazel原理及使用方法介绍.最近使用了一段时间后,觉得这个东西不是一种通用的构建工具,很难对接到情况复杂的大的 ...
- 流行ORM产品优缺点分析--EntityFramework、NHibernate、PetaPoco
什么是ORM? ORM的全称是Object Relational Mapping,即对象关系映射.它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操 ...
- 【转】【译】JavaScript魔法揭秘--探索当前流行框架中部分功能的处理机制
推荐语: 今天推荐一篇华为同事的同事翻译的一篇文章,推荐的主要原因是作为一个华为员工居然晚上还能写文章,由不得小钗不佩服!!! 其中的jQuery.angular.react皆是十分优秀的框架,各有特 ...
- iOS流行的开源代码库
本文介绍一些流行的iOS的开源代码库 1.AFNetworking 更新频率高的轻量级的第三方网络库,基于NSURL和NSOperation,支持iOS和OSX.https://github.com/ ...
- GitHub 上 57 款最流行的开源深度学习项目
转载:https://www.oschina.net/news/79500/57-most-popular-deep-learning-project-at-github GitHub 上 57 款最 ...
随机推荐
- Flex使用Blazeds与Java交互及自定义对象转换详解-DATAGRID读取ORACLE数据
http://www.cnblogs.com/RocD-DuPeng/articles/1751040.html 一.建立Flex与Java交互的工程. 本文中讲到的交互是利用Blazeds的,因为这 ...
- linux基础命令之:vi模式下查找和替换
一.查找 查找命令 /pattern<Enter> :向下查找pattern匹配字符串 ?pattern<Enter>:向上查找pattern匹配字符串 使用了查找命令之后,使 ...
- 使用ssh连接远程主机
在linux系统中,ssh是远程登录的默认工具,因为该工具的协议使用了RSA/DSA的加密算法.该工具做linux系统的远程管理是非常安全的. ssh登录远程主机(服务器)一般有两种方式:无密钥方式 ...
- oracle 触发器学习
触发器使用教程和命名规范 目 录触发器使用教程和命名规范 11,触发器简介 12,触发器示例 23,触发器语法和功能 34,例一:行级触发器之一 45,例二:行级触发器之二 46,例三:INSTEA ...
- 深入jQuery中的Callbacks()
引入 初看Callbacks函数很不起眼,但仔细一瞅,发现Callbacks函数是构建jQuery大厦的无比重要的一个基石.jQuery中几乎所有有关异步的操作都会用到Callbacks函数. 为什么 ...
- RabbitMQ on windows开启远程访问
我的RabbitMQ安装位置是:C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.5.6 为rabbitmq添加用户 C:\Progra ...
- VS2010中没有ado.net entity data model实体数据模型这一选项-解决办法
前提先安装VS2010 SP1包. 解决办法: 1.从VS2010的安装盘目录下面的WCU\EFTools找到ADONETEntityFrameworkTools_chs.msi和ADONETEnti ...
- android开发——学习总结20131204
android:launchMode,即Activity的启动模式,与Intent中的Flags共同作用,决定Activity如何启动. android:launchMode分别有"stan ...
- ruby 简介
Ruby 是一个注重均衡的语言,它的发明者松本行弘 Yukihiro “Matz” Matsumoto,混合了他喜欢的语言(Perl. Smalltalk. Eiffel. Ada 和 Lisp ) ...
- 个人关于React的一些理解
##React背景 React是当前前端最火的框架,它的理念思想及构建方法比AngularJS更适合做webApp. 它是由facebook团队研发并开源到社区,所以它有很强大的技术背景,而且它的架构 ...