为什么《七周七语言》选中的是这几种语言?

2024-01-08 17:38
文章标签 语言 几种 选中 七周

本文主要是介绍为什么《七周七语言》选中的是这几种语言?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从众多语言中,挑出本书包含的几门语言,这一过程也许不像你想得那么复杂。我们只不过发了些调查问卷,向本书的潜在读者请教了一番。调查数据汇总上来时,有八门语言入选希望最大。不过,我先是把JavaScript“踢”了出去,因为它实在是过于热门了,取而代之的是原型语言中热门程度仅次于JavaScript的Io。随后,我又把Python“踢”了出去,因为我只想给面向对象语言一个名额,而Ruby的票数多于Python。同时,这也给一个出人意料的候选者让出了位置——名单上位列前十的Prolog。下面,我给出成功入围本书的最终名单和挑选它们的理由

  • Ruby。这门面向对象语言高票当选,因为它不仅好用,而且好读。我曾经考虑过不介绍任何一门面向对象语言,但我又想在其他编程范型与面向对象编程之间作一些比较,因此,至少介绍一门面向对象语言还是有必要的。相比于大多数程序员的日常用法,我想把它挖掘得更深入一些,以揭示设计者的良苦用心。我最终决定重点介绍Ruby元编程(metaprogramming),因为它可以扩展Ruby的语法。对于Ruby榜上有名的结果,我还是相当认可的。
  • Io。和Prolog一样,Io也是本书颇具争议的语言。它虽与商业成功无缘,但其兼具简单性和语法一致性的并发结构,却是十分重要的思想。它的最简语法(minimal syntax)功能强大,与Lisp的相似性也颇能给人留下几分印象。Io不仅和JavaScript一样同为原型语言,还有着独一无二、韵味无穷的消息分发机制,因此在众多编程语言之中,它也占有小小的一席之地。
  • Prolog。没错,我知道Prolog年事已高,但它仍然力大无穷。它能轻松解出数独问题,这不禁让我大开眼界。而且用Java或C语言时,有些难题我殚精竭虑方能解决,用它却能干净利落地搞定。承蒙Erlang的发明者Joe Armstrong出手相助,我得以深刻体会到Prolog之妙。同时,也正是深受Prolog影响,Erlang才得以问世。如果你此前从未用过Prolog,我保证,它定会带给你惊喜。
  • Scala。作为运行于Java虚拟机上的新一代语言,Scala为Java系统引入了强大的函数式思想,而且也并未丢弃面向对象编程。回顾历史,我发现C++和它有着惊人的相似之处,因为从过程式编程过渡到面向对象编程期间,C++同样起到了举足轻重的作用。当你真正融入Scala社区之后,你就会明白,为什么对于函数式语言程序员来说,Scala是异端邪说,而对于Java开发者来说,Scala是天降福音。
  • Erlang。作为名单上历史最悠久的语言之一,Erlang不仅是一门函数式语言,而且在并发、分布式编程、容错等诸多方面都有着优异表现,真是想不火都难。CouchDB(新兴的基于云的数据库)的创始人就选择了Erlang,并且义无反顾地一直用它,只要花上点时间了解这门分布式语言,你就会明白原因所在。在Erlang帮助下,设计带有并发、分布式、容错等特征的应用程序将变得无比简单。
  • Clojure。这又是一门Java虚拟机语言,但正是这门Lisp方言,彻底颠覆了我们在Java虚拟机上并发编程的思考方式。它是本书唯一在版本数据库中使用同一种策略管理并发的语言。作为Lisp方言,Clojure或许拥有本书所有语言中最灵活的编程模型,因此绝不缺乏号召力。与其他Lisp方言不同的是,它不会带那么多括号 ,还有众多Java库和在各平台上的广泛部署作为坚强后盾。
  • Haskell。它是本书唯一的纯函数式语言,这也意味着,它根本不存在可变状态:只要使用相同的输入参数调用相同的函数,就会返回相同的输出。在所有强类型语言中,Haskell拥有最令人称羡的类型模型。和Prolog一样,它也需要你花一些时间理解,但你得到的回报绝对物超所值。

如果名单上没有你钟爱的语言,我深感抱歉。老实说,还真有语言狂热分子给我发过好几封恐吓信。在本节开始提到的民意调查中,我们总共列出了几十门语言。我挑的这几门语言未必是其中最出色的,但它们特点突出、个性鲜明,都具有重要的学习价值。

这篇关于为什么《七周七语言》选中的是这几种语言?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/584277

相关文章

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE