smalltalk

小号 oftware发展,在古代技术陷入了几十年。 今天,我们创建软件的方式与1960年代和1970年代的软件方式并没有太大不同。 那时,我们使用了文本编程语言,例如FORTRAN,LISP,COBOL,BASIC,Pascal和C,其程序是使用文本编辑器(例如TECO,QED,vi和Emacs)编写的。 我们将程序源代码存储在文件和文件夹中。 我们从命令行编译了这些程序。

为确保程序正常运行,我们必须对其进行测试,如果失败,则必须诊断出问题,编辑源代码以包含可能的修复程序,然后编译程序并再次运行。 如果再次失败,我们必须重新做一遍。 这个编辑-编译-测试-调试周期既耗时又效率低下。

快进到2018年。猜猜是什么? 我们仍在以同样的方式创建软件! 除了现在,我们正在使用Java,Python,JavaScript,Ruby,Swift和Golang。 我们正在使用文本编辑器(例如Vim,Emacs,Sublime Text,Atom和Visual Studio Code)编写代码。 我们将程序代码存储在文件和文件夹中。 即使隐式在IDE中,我们仍然从命令行进行编译。

我们仍然是edit-compile-test-debug周期的奴隶! 半个多世纪后,我们没有取得任何实质性进展。 在我们生活的这个“现代”时代,我们正在有效地使用石刀和熊皮进行编程。

星际迷航:“永远边缘的城市”

这正在损害我们的生产力。 随着软件变得越来越大,越来越复杂,软件需要花费更长的时间和更多的精力来编写。 我们需要更好的工具。 我们需要摆脱过去。

具有讽刺意味的是,40多年来,软件开发的未来一直盯着我们。 叫做Smalltalk。

创世纪:艾伦·凯的愿景

Smalltalk始于1970年代在施乐PARC的Alan Kay,Dan Ingalls和Adele Goldberg。 他们是学习研究小组的成员,Smalltalk的成立是为了研究针对儿童的教学计划。

Smalltalk是一种面向对象的编程(OOP)语言。 一直都是物体。 在这方面,Smalltalk的纯净和清晰使之成为几乎所有其他OOP语言的原型。

要了解Smalltalk哲学的精髓,请观看以下有关Alan Kay向Ted Nelson致敬的视频片段(始于2:18):

艾伦·凯(Alan Kay)向泰德·尼尔森(Ted Nelson)致敬

艾伦·凯(Alan Kay)的“ Smalltalk的早期历史 ”(©1993 ACM)提供了更多的见解:

Smalltalk是计算机本身概念的递归。 每个Smalltalk对象都没有将“计算机内容”划分为强度不如整体的东西(如数据结构,过程和函数,它们通常是编程语言的附属工具),而是递归了计算机的全部功能。 因此,它的语义有点像通过快速的网络将成千上万的计算机连接在一起。

Smalltalk的贡献是一种新的设计范式-我称之为面向对象的 -用于攻击专业程序员的大问题,并使新手用户可以解决小问题。 面向对象的设计是成功地定性提高建模效率的成功尝试,而这种效率越来越高的动态系统和用户关系因硅爆炸而成为可能。

Smalltalk是一种历史悠久的杰出语言。 这是它最大的成就:

  • Smalltalk向世界介绍了语言虚拟机 ,它也是Java和Ruby所基于的语言
  • Smalltalk开创了JIT(即时)编译的先河。
  • Smalltalk带来了第一个现代IDE(集成开发环境),其中包括文本编辑器,类浏览器,对象检查器和调试器。
  • Smalltalk是第一个支持实时编程和高级调试技术的图形语言工具,例如以非常用户友好的格式执行过程中的即时检查和代码更改。
  • 自从Smalltalk-80(在1980年)以来,它具有一流的功能和闭包,奇怪的是,这使Smalltalk非常适合函数式编程。
  • Smalltalk引入了软件架构模式MVC(模型-视图-控制器)。
  • 在很大程度上,Smalltalk负责为我们提供测试驱动开发(TDD)和极限编程(XP),它们在当今的标准敏捷实践中都非常有影响力。
  • Smalltalk使“鸭子打字”成为家喻户晓的单词。
  • Smalltalk率先开发了对象数据库,其中GemStone / S是一个很好的例子。
  • Smalltalk为我们提供了第一个重构浏览器。
  • Smalltalk有助于开发图形用户界面(GUI)和“所见即所得”(WYSIWYG)用户界面。
  • 史蒂夫·乔布斯(Steve Jobs)受到施乐PARC的GUI和WIMP(窗口,图标,菜单,指针)的启发,以完全调整苹果的战略。 GUI是Smalltalk工作的直接流出。

出现:1981年8月BYTE和Apple

Smalltalk曾经是一种非常流行的语言。 它于1981年8月在BYTE杂志的封面上首次亮相:

从那时起,Smalltalk直接启发了许多其他OOP语言,包括Objective-C,Python,Ruby,PHP,Perl,Erlang,CLOS,Dart,Java,Groovy和Scala。 苹果甚至为Macintosh创建了Smalltalk。

尤其是Objective-C在IT行业产生了巨大的影响。 它的语法本质上是C和Smalltalk之间的交叉。

使用Objective-C为Steve Jobs的NeXT计算机公司编写NeXTStep操作系统。 NeXTStep最终演变为macOS,自此以来,Objective-C已被用于编写大量的iOS应用程序。

Zenith:企业挑战

Smalltalk的流行在1990年代达到顶峰,当时它是仅次于C ++的最流行的OOP语言。 根据1995年IDC的一份报告,OOP语言的市场份额为:

  1. C ++ — 71.3%
  2. 闲话-15.1%
  3. Objective-C-5.7%
  4. 对象帕斯卡-4.2%
  5. CLOS-2.5%
  6. 埃菲尔铁塔-1.1%
  7. 其他所有-0.2%

但是,C ++庞大,复杂且使用繁琐。

这是Computerworld于1995年11月6日发布的页面,其中显示了Smalltalk和C ++的优势:

Smalltalk非常适合企业使用,以至于在1990年代,IBM选择Smalltalk作为VisualAge企业计划的核心,以取代COBOL:

Java于1995年问世,它是免费的。 Smalltalk许可非常昂贵。

Java支持Internet。 小话不是。 Java取代了Smalltalk。

从1990年代至今,有两种免费的 Smalltalk方言得以生存:GNU Smalltalk(1991)和Squeak(1996)。 但这还不够。

在2000年代初期,美国联合军方使用Smalltalk编写了百万行战斗模拟程序JWARS。 它实际上胜过了美国空军用C ++编写的称为STORM的类似模拟。 这本身就是对语言功能的惊人证明。

救赎:海边的故事

Smalltalk通过Seaside Web框架在Web空间中赎回了自己,这在如何编写Web应用程序方面开辟了新天地。

在Seaside的网站上 ,以下是框架的主要卖点:

  • 程序化HTML生成。 很多标记都是样板:列表,链接,表单和表格的相同模式逐页显示。 Seaside具有用于生成HTML的丰富API,可让您将这些模式抽象为方便的方法,而不必每次都将相同的标签序列粘贴到模板中。
  • 基于回调的请求处理。 为什么要为页面上的每个链接和表单输入都想出唯一的名称,而只是从URL中提取它们并在以后请求字段? Seaside使您可以将块(而非名称)与输入和链接相关联,从而自动执行此过程,因此您可以考虑对象和方法,而不是ID和字符串。
  • 嵌入式组件。 不要一次思考整个页面; Seaside使您可以将UI构建为包含状态的单个组件对象的树,每个对象都封装了页面的一小部分。 通常,它们可以在应用程序内和应用程序之间一遍又一遍地使用-例如,几乎每个应用程序都需要一种方法来显示搜索结果的批处理列表或具有可排序列的表,并且Seaside包含这些组件。框。
  • 模态会话管理。 如果您可以用一种方法来表达复杂的多页工作流程,该怎么办? 与需要为每个页面或请求使用单独的处理程序的servlet模型不同,Seaside使用自然的线性控制流将整个用户会话建模为连续的代码段。 在Seaside中,组件可以像子例程一样相互调用和返回。 将这些调用中的一些调用组合到一个方法中,就像您正在使用控制台I / O或打开模式对话框一样,并且您具有工作流程。 是的,后退按钮仍然可以使用。

Teapot是秉承Python的Flask和Ruby的Sinatra精神的新的微型Web框架。

可以使用Amber Smalltalk和PharoJS进行前端Web开发。

再生:现代的闲话

2008年,Pharo发布了。 它是为二十一世纪而现代化的开源Smalltalk。

Pharo加入了一些有希望的语言的行列,例如Clojure,Crystal,Dart,Elixir,Elm,F#,Haskell,Haxe,Julia,Nim,Racket和Rust。 Pharo有增长的潜力。

Pharo联盟有助于使该语言成为企业级产品。 一些著名的联盟成员:

  1. 摩根大通银行(JPMorgan Chase),美国一家主要的银行和金融服务公司
  2. 泰雷兹(Thales),一家专门研究航空航天,国防和安全的法国大型工程公司
  3. GemTalk Systems,面向对象的DBMS的领先供应商
  4. 法国计算机科学与自动化研究所Inria
  5. ESUG(欧洲Smalltalk用户组)

TechBeacon:通过社交媒体进行宣传

Smalltalk的数字营销始于2015年,当时有一个名为“ Smalltalk Renaissance”的WordPress博客和一个名为“ Smalltalk Talk”的中型博客。 通过社交媒体发表和推广了数十篇文章。

2016年7月18日,TechBeacon发表了一篇题为“ 如何学习Smalltalk可以使您成为更好的开发人员 ”的文章,该文章启动了第二次大型营销活动。

此后,包括重新出版在内,全球超过7万人阅读了该文章。

它已在Medium,Tech In Asia,LinkedIn和一个名为Хабрахабр(Habrahabr)的俄罗斯博客中转载。

它产生了数十篇Smalltalk文章,包括一些教程,这些文章通过Medium,Hacker News,Reddit,Twitter,Facebook,Google +,LinkedIn,Flipboard和Quora推广。

该活动已被诸如The New Stack和Slashdot之类的媒体报道。

在Quora,成千上万的人问他们应该使用哪种编程语言来学习编程,他们得到了基本的答案:他们应该从Smalltalk开始!

Smalltalk是最好的教学语言,因为:

  1. 它是最简单,最容易学习的语言之一。 它具有六个保留字! 完整的语法适合明信片。
  2. 它是纯粹面向对象的,并且在这方面的清晰性和一致性使学习面向对象的编程极其容易。

面向对象的编程是IT行业中使用最广泛的编程范例。 熟悉OOP至关重要。

这是明信片:

与其他任何编程语言相比,Smalltalk可以证明使程序员的工作效率提高2-3倍!

根据Namcook Analytics研究 (表16),基于提供1000个功能点的工作小时数的“经济生产率”,Smalltalk需要6879小时,而Python需要12697小时,JavaScript需要15929小时。 C需要26,273小时!

关键是使用Smalltalk非凡的内置IDE进行实时编码 。 它类似于Visual Studio和Eclipse,但更小,更易于使用。 这是Pharo IDE:

Pharo的系统浏览器

结论

艾伦·凯(Alan Kay)著名地说道:“预测未来的最佳方法是发明它。” 的确,他在40年前通过创建Smalltalk以及他对面向对象编程的愿景的体现来做到这一点。

如今,Pharo像灯塔一样闪耀着,指明了软件开发的未来。 现在该早该给Smalltalk了。

翻译自: https://hackernoon.com/back-to-the-future-with-smalltalk-57c68fab583a

smalltalk

smalltalk_通过Smalltalk回到未来相关推荐

  1. smalltalk_设计模式smalltalk和阅读代码的失落艺术

    smalltalk Kyle Brown, IBM Fellow, CTO Cloud Architecture, IBM Cloud and Cognitive Software Kyle Brow ...

  2. 通过Smalltalk回到未来

    小号 oftware发展,在古代技术陷入了几十年. 今天,我们创建软件的方式与1960年代和1970年代的软件方式并没有太大不同. 那时,我们使用了文本编程语言,例如FORTRAN,LISP,COBO ...

  3. 回到未来:Smalltalk 编程系统

    Smalltalk 是19世纪70年代由 Alan Kay 设计的,第一个以面向对象(Object-Orientation)为主要范式的编程语言 1.Smalltalk 具有大量首创的特性,深刻影响了 ...

  4. 回到未来 – 大胆畅想如何追赶并超越腾讯模式

    其实,明天是什么样子,它就会是什么样子.         我总是喜欢幻想,无论是对过去还是对未来,对生活或是对爱情.         不过憧憬多过幻想. 一直比较关注互联网的动态,想象如果某某公司的某 ...

  5. 《神经网络:回到未来》(Neural Nets Back to the Future)-ICML 2016

    <神经网络:回到未来>(Neural Nets Back to the Future) 官方主页:Neural Nets Back to the Future @ ICML 16 June ...

  6. Dolphin Smalltalk 7 遵循 MIT 开源

    Object Arts 的 Smalltalk 编程语言实现Dolphin Smalltalk在MIT许可证下开源,该公司在时隔9年之后发布了开源版的Dolphin 7,上个版本还是在2006年发布的 ...

  7. java的smalltalk规则,Smalltalk相当于Java的静态是什么?

    What is the Smalltalk equivalent of Java's static fields and methods? IOW, what do the Smalltalkers ...

  8. Smalltalk 语言的地位为何一落千丈?

    [CSDN编者按]"我们有这么多珍贵.优雅.给了我许多快乐的语法,为什么你们还在使用那些劣质的语法?你们怎么能这么盲目.这么愚蠢?"这类争论永远没有胜者,建议不要尝试. -- Al ...

  9. 艾伦·凯与Smalltalk语言

    为什么80%的码农都做不了架构师?>>>    艾伦·凯与Smalltalk语言 您知道左面挂着图灵奖奖章的人是谁吗?他是世界上第二个面向对象语言--Smalltalk的发明人艾伦. ...

最新文章

  1. Mybatis 工作总结 持续更新
  2. 如何在Python中反转列表?
  3. mfc程序转化为qt_工控编程,Qt 学习之路
  4. android fps 垂直同步,浅谈Android流畅度
  5. 线性代数笔记: Cholesky分解
  6. Java多线程之静态代理
  7. 使用xUnit测试验证属性
  8. 《信息处理技术员考试考前冲刺预测卷及考点解析》下午案例复习重点
  9. 深度学习之 RBF神经网络
  10. json rpgmv 加密_rpg制作大师mv加密打包教程
  11. 实习僧[shixiseng.com]爬虫实战笔记
  12. windows winrar 指令_WinRAR的命令行模式用法介绍
  13. android开发 高德地图自定义地图应用【最新】
  14. python 今天日期是多少,python time时间,日期,时间
  15. python程序设计入门书籍推荐_python刚刚入门,接下来这几本python的书会让你成为别人眼里的大神!...
  16. adams语句_ADAMS模态力 - MSC技术文章 - 中国仿真互动网(www.Simwe.com)
  17. LinkedList 类 的简单应用
  18. 51nod 1431 快乐排队
  19. Cocos Creator游戏之橡皮怪(一)
  20. 【爬虫】Heritrix 3.2安装和运行实例

热门文章

  1. mysql latin1编码_mysql的latin1编码支持中文吗?
  2. 在c语言中 寄存器变量的说明符是,c语言性能优化—使用寄存器变量
  3. 设计模式的意图、动机
  4. Verilog系统函数—随机数产生
  5. “我,鲍鱼饭,一天卖出百余单,外卖销冠”
  6. 【ALGO】基础算法(1)
  7. 从接单到发货只要30分钟?是什么,让这家电子企业如此高效
  8. html表的标签奇数,将备用背景样式添加到HTML表的奇数行
  9. 一个不可估量的流量池!
  10. 边双连通和点双连通(连通性)