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

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

相关文章

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Go语言使用slices包轻松实现排序功能

《Go语言使用slices包轻松实现排序功能》在Go语言开发中,对数据进行排序是常见的需求,Go1.18版本引入的slices包提供了简洁高效的排序解决方案,支持内置类型和用户自定义类型的排序操作,本... 目录一、内置类型排序:字符串与整数的应用1. 字符串切片排序2. 整数切片排序二、检查切片排序状态:

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细