为什么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 款最 ...
随机推荐
- 多态与异常处理ppt作业
1.请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识. 答:1.抛出异常 当程序发生异常时,产生一个异常事件,生成一个异常对象,并把 ...
- IP转换hash以及返回
InetAddress address = InetAddress.getByName("127.0.0.1"); System.out.println(address); int ...
- WeedFS依赖库 0.6.1
WeedFS依赖库 版本 0.6.1 =======================================================================glog====== ...
- 5.openssl dgst
该伪命令用于生成文件的信息摘要,也可以进行数字签名,验证数字签名. 首先要明白,要进行数字签名,需要计算出特征码即数字摘要,然后使用私钥对数字摘要进行签名.特征码使用md5,sha等计算出. 对象只能 ...
- 深入理解javascript原型和闭包
目录: 深入理解javascript原型和闭包(1)——一切都是对象 深入理解javascript原型和闭包(2)——函数和对象的关系 深入理解javascript原型和闭包(3)——prototyp ...
- ajax data传值
如果要我们要把整个form1表单中的输入框都传过去可以用data:$("#form1").serialize(), 但是我们如果还要传一个不在form中的值呢? 可以使用下面这种方 ...
- 【转】解决IIS7该问.svc文件的错误问题
解决IIS7.5中部署WCF时,访问.svc文件的404错误问题如果你直接在IIS 7中配置WCF,访问.svc文件时会出现404错误.解决方法,以管理员身份进入命令行模式,运行:" ...
- Office 365系列六 ------ 创建sharepoint online网站
这节跟大家介绍简单的创建sharep online私有网站集,sharepoint online 可以给我们提供开箱即用的功能,比如文档库:可以给我们取代File Server,提供了版本管理,版本变 ...
- 通用Hibernate DAO类(包括分页)
package com.jronline.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.S ...
- angularjs(一)基础概念
一.前言 前端技术的发展是如此之快,各种优秀技术.优秀框架的出现简直让人目不暇接,作为一名业界新秀,紧跟时代潮流,学习掌握新知识自然是不敢怠慢.当听到AngularJs这个名字并知道是google在维 ...