【读书笔记】七周七语言:理解多种编程范型【本文持续更新中!】


本书概要介绍和阅读目标

这本书名为 Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages ,作者是 Bruce A. Tate ,即《七周七语言:学习编程语言的实用指南》,不过翻译时改成了《七周七语言:理解多种编程范型》。

学编程就好比学游泳,再好的理论也不如一头扎下水,扑腾着呼吸新鲜空气管用。在初次没入水面的那一刻,你必定会惊慌失措,但当你奋力浮出水面、大口大口地喘着气,你又会无比喜悦。这时你心里明白:“我学会游泳了。”至少我当初学游泳那会儿,就是这种感受。编程也同样如此——迈出第一步最难。因此你需要一位好老师,鼓励你勇敢地跳入水中。

在这里插入图片描述

顾名思义,(从英文书名的角度)这本书介绍了七种编程语言——它们的特性应用编程入门知识关键编程范型、运用代表该语言最重要特性的技术解决问题。(从中文书名的角度)本书尤其关注不同编程语言蕴含的不同编程范型,可以说本书最重要的任务之一就是学习新的编程范型,(从英文书名的角度)本书也确实是学习这些语言的优秀入门指南。

…作为读者,你的脑袋必须多腾出点地方,以容纳七种不同的语法风格四种编程范型、四十年语言开发的宝贵经验;作为作者,我必须尽量全面地涵盖各个主题,以便让你更好地理解语言。

这里列出本人阅读本书要达成的目标:

  • 搭建相应语言的学习环境:下载对应的编译器或解释器,建立语言文件夹,在VSCode上安装相关插件,书写配置文件;

    买这本书等于跟我做了笔买卖:你认可我把重点放在编程语言本而非详尽的安装过程上,我承诺在有限时间内尽可能多地授业解惑。你要学会利用Google搜索那些细枝末节,可别指望我会帮你解决各种安装问题。如此一来,我才有空间深入挖掘语言本身,而你在读过本书后,也才能了解更多语言方面的细节。

  • 将书上的范例全部实现一遍:将书中的完整程序和代码片段一一输入并查看结果,做到对七种语言 Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell 均略知一二——相当实用的技能!借鉴网络上的程序时可以针对问题进行调整。

    获得任何新技能的第一步,是先别想着独立解决什么,而是重复一遍前人已竟之事,这是掌握一门技能最快的方法

可以说,学习本书不是为了成为专家但是要学到比"Hello World"更加实用的知识


第一章 简介

1.1 不走寻常路

这本书不是某些只介绍语言间相差无几的皮毛的教程,而是让我们痛快淋漓、深入探索语言本质。让我们了解以下问题:

  • 语言的类型模型会影响对问题的处理方式和控制语言的运行方式。一门语言的类型模型是什么?强类型(Java)/弱类型(C语言),静态类型(Java)/动态类型(Ruby)。本书侧重强类型,也涉及静态类型和动态类型。
  • 语言的编程范型是什么?面向对象 Object-Oriented 、函数式、过程式,或者综合体?本书中有基于逻辑的Prolog,完全支持面向对象思想的Ruby和Scala,拥有函数式特性的Scala、Erlang、Clojure、Haskell,以及原型语言Io。其中Scala是多范型的 multiparadigm ,Clojure是多方法的 multimethod(甚至允许自定义范型)。
  • 如何和语言交互?编程语言可编译可解释,可有虚拟机或没有,有交互式命令行则先使用命令行,更大的项目用文件编程,不会涉及到如何打包。
  • 语言的判断结构 decision construct核心数据结构是什么?语言基本有 if, while 结构或其变形,像Erlang有模式匹配,Prolog有合一 unification 。核心数据结构则重点关注集合 collection 的使用,全面透彻理解集合。
  • 语言有哪些与众不同的特性?要么是独特的高级结构,如Clojure的宏 macro 、Io的消息解释 message interpretation ,要么支持强力的虚拟机,如Erlang的BEAM,要么提供针对特定问题的逻辑模型……

1.2 语言

这七门编程语言的选择理由:

  • Ruby:面向对象语言,好用好读。重点介绍Ruby元编程 metaprogramming ,可以扩展Ruby的语法。
  • Io:和JavaScript同为原型语言,兼具简单性和语法一致性的并发结构,还有独特的消息分发机制。最简语法 mimimal syntax 功能强大,和Lisp有些相似。
  • Prolog:正是深受Prolog影响,Erlang才能够问世,作者认为它可以带给我们惊喜。
  • Scala:运行于Java虚拟机上的一门语言,既引入了强大的函数式思想,也保留了面向对象。对于函数式语言程序员来说,Scala是异端邪说, 而对于Java开发者来说,Scala是天降福音。
  • Erlang:一门历史悠久的函数式语言,在并发、分布式编程、容错等方面表现优异,用它设计带有并发、分布式等特征的程序会十分简单。
  • Clojure:一门运行于Java虚拟机的、函数式的Lisp方言,彻底颠覆在JVM上并发编程的思考方式,是本书唯一在版本数据库中使用同一种策略管理并发的语言,最灵活的编程模型、众多Java库的支持。
  • Haskell:本书唯一的纯函数式语言,极其强大的类型模型,不存在可变状态;相同的输入调用相同的函数总会返回相同的输出。

1.3-1.5 为什么买这本书

想要提高自己编程水平的程序员,可以买这本书。每年花个一星期学一门新语言,最少要挑出一门相性最好的语言使用,并把其他语言的精华融入到这门语言的代码中。最理想的情况,学习新语言会引领你踏上一条崭新的职业道路

为了在新的计算机设计架构变革中占据先机,在编程范型的更新换代前提升自我,可以买这本书。比如Io、Scala、Erlang、Clojure、Haskell均拥有强大的并发模型,Io对 future 的实现、Scala的 actor 、Erlang的 let it crash 思想、Haskell避免副作用的纯函数、Clojure利用版本控制解决并发问题等等。

在学习语言基础时,想要真正理解语言设计者的思路,拥有超越基本语法的觉悟,可以买这本书。比如对Ruby能写一些元编程代码,可以用Prolog解决完整的数独问题,用Erlang写一个监控程序来检测崩溃进程、给用户报告崩溃进程的相关信息、启动另一进程接替崩溃进程的工作等等。为此,书中在每周设置了一些小型编程挑战和一个实战项目。

在带你超越语法之前,我要先向你作个承诺,同时也不得不作个让步。承诺是:决不会浅尝辄止、敷衍了事;让步是:无法像专业语言书籍那样涵盖所有基础知识。

如果阅读时不做任何习题,只能粗浅了解语法罢了;如果先看了答案再解答,也是不及格。真正要做的是先尽力解答习题,对于超出能力范围的小部分习题搜索答案。

此时此刻,我真想对你说几句意义深远又让人热血沸腾的话,但千言万语汇成四个字——享受编程


第二章 Ruby

2.1 VS Code配置Ruby语言环境

首先看一下这篇文章,配置好学习Ruby的语言环境。

2.2 Ruby学习笔记

见这篇文章。

暂且跳过这一章,可能要看完其他相关的书后再写。


第三章 Io

3.1 Io简介

3.2 第一天:逃学吧,轻松一下

1 开场白

2. 对象、原型和继承

3. 方法

4. 列表和映射

5. true、false、nil以及单词

6. 第一天学到了什么

7. 第一天自习

3.3 第二天:香肠大王

1. 条件和循环

2. 运算符

3. 消息

4. 反射

5. 第二天我们学到了什么

6. 第二天自习

3.4 第三天:花车游行和各种奇妙经历

1. 领域特定语言

2. Io的 method_missing

3. 并发

4. 第三天学到了什么

5. 第三天自习

3.5 趁热打铁

1. 核心优势

2. 不足之处

3. 最后思考

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

memcpy0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值