每周一荐:程序设计语言原理、英国组曲

2024-01-07 07:40

本文主要是介绍每周一荐:程序设计语言原理、英国组曲,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来自:http://game-lab.org/?p=181

书籍:《程序设计语言原理》

豆瓣: http://book.douban.com/subject/3119946/

【简介】

本书从为什么学习程序设计语言入手,深入细致地讲解了命令式语言的主要结构及其设计与实现,内容涉及变量、数据类型、表达式和赋值语句、控制语句、子程序、数据抽象机制、支持面向对象程序设计(继承和动态方法绑定)、并发和异常处理等方面。最后两章介绍了函数式程序设计语言和逻辑程序设计语言。

【笔记】

作为一个程序员,一般只有精通一门程序设计语言就可以胜任当前的工作了。当往往进入一个新的项目,或者重新选择一份工作,或者自己发现当前的所使用的程序语言对于有些问题的解决,用着不是那么方便,这个时候我们就倾向于去寻求一种合适的语言。比如,我最近在工作过程中,发现当前项目其实缺少很多工具,我们开发主要用的是C++,一个个对于C++不能说的上精通,但各种语法与库也了然于胸,用C++去写一些工具的时候就发现细枝末节太多、太烦人,数据库、XML文件解析、字串处理虽说都有库支持,但总感觉用着不那么顺手,速度也没那么快,还不如找一个脚本语言快速开发一个,Python正和我意。

程序语言之间有很多共同之处,往往当你精通一门之后,学习其它语言就触类旁通了。需要做的事情就是熟悉它的语法,如果能看懂相应的BNF(巴克斯——劳尔范式)那就更好了,遇到模棱两可的语法问题,多去查查就好了。语义一般都大同小异,当你知道了程序言的各种机制的实现之后,对其语义的理解就更加深刻了。《程序设计语言原理》这边书相当于程序语言各种机制的总结,同时对于我们去学习新语言也指出一条清晰的思路,对现在正在用的语言也有更加深刻的认识了。

程序语言的分类:

  • 命令式语言:使用最多的,如:C/C++/Java/VB/Pascal等所有主流语言。主要是因为冯诺依曼计算机模型(处理器负责计算,内存负责存储中间结果)。
  • 面向对象语言:基于数据抽象的封装,提出类、对象、继承、动态绑定等概念,用来模拟问题领域出现的事物。C++/Java最好的例子了。
  • 函数式语言:这种类型的语言是基于阿隆佐·邱器(Alozo Church,阿兰·图灵的师傅)提出的lamda演算,语言中一切皆函数。Lisp就是典型的函数式语言。
  • 逻辑语言:基于谓词演算,可以进行逻辑推理的语言,如:Prolog(这种类型的语言至今还没用过,只是听说过大名~~)

命令式语言的学习思路:

  1. 名字、变量、绑定
    • 名字是否大小写敏感?那些是关键字?那些是保留字?
    • 变量六个基本属性:名字、地址、类型、值、生存期(时间)、作用域(空间)
    • 变量类型检查?强类型吗?
    • 变量的作用域如何?静态作用域、快、动态作用域?
    • 变量的生存期如何?精通变量、栈动态变量、显示堆动态变量、隐式堆动态变量(垃圾回收)?
  2. 数据类型
    • 基本类型:数值类型(整数、浮点数、复数、小数)、布尔类型、字符类型
    • 字符串类型
    • 序数类型:枚举、子范围类型
    • 数组类型
    • 关联数组
    • 记录类型
    • 联合类型
    • 指针类型
    • 引用类型
  3. 表达式与赋值语句
    • 算术表达式
    • 关系表达式
    • 布尔表达式
    • 操作符号的优先级、结合性
    • 操作符号的重载
    • 赋值语句:简单赋值、条件目标、符合复合赋值操作符、列表赋值、混合模式赋值
  4. 控制结构
    • 选择语句:双向选择语句(if… else …)、多向选择语句(switch .. case ..)
    • 循环语句:计数器循环(for …)、逻辑控制循环(while)、用户定位的控制循环(break、continue)
    • 无条件跳转(goto)
  5. 子程序(过程抽象)
    • 过程
    • 函数
    • 参数传递语义模式:输入形、输出型、输入输出型
    • 参数传递实现模式:按值传递、按结果传递、按值与结果传递、按引用传递
    • 参数的类型检查
    • 局部引用环境:局部变量、嵌套子程序
    • 重载子程序
    • 通用子程序(如:C++函数模板)
  6. 面向对象的程序设计(数据抽象)
    • 抽象数据类型
    • 继承
    • 动态绑定

以上大概列举了一个语言的所有特性,有些语言支持、有些语言不支持。语法不尽相同,但语义一般都是相同的。只要按着上面列举的顺序,确定好某一种语言的语法形式,我相信你我都会很容易学会一门新的语言。上述的仅仅是学会了一门程序设计语言,为了解决实际问题其实我们还面临着无尽的长路,问题的模式和相应的程序语言库等都需要慢慢去熟悉和学习。

所以我认为,精通一门语言并不代表着你会用那种语言写一些不算糟糕的程序,还意味着必须知道常见的问题模式及其对应的程序库,并且烂熟于心,遇到问题时候很自然地就会用到它。当然每种语言还有它独有的一些技巧和使用注意事项,对这些也要必须有所了解。千万不要自称:“我精通xxx语言”,其实我们只是“会”用它写一些程序而已,所谓的精通者必定对这门语言有着极其深刻的理解和认识、甚至编译器效率,各种细微之处也了然于胸。(以上仅为个人观点)

音乐:巴赫的《英国组曲》

试听: http://www.xiami.com/album/368302

【简介】

巴赫的英国组曲是17世纪键盘名作,根据最新考证应该写于巴赫服务魏玛宫廷时期(1708-1717)。各曲都充满协奏曲的华丽精神,具有典型的德国风格,因为巴赫将乐谱献给某英国贵族,所以被称之为《英国组曲》。《英国组曲》共有六号,在规模、表现力以及情感上都比巴赫的同类键盘作品《法国组曲》要庞大。这些组曲有的短小但意境广博,有的具有浪漫的气息,有的清新内敛,有的庄严肃穆。用现代钢琴来演奏这部巴洛克的复调作品更有一番迷人的风韵。明朗、快乐又清澄的第一号;华丽却流露出女性般的柔美与优雅的第二号,而阴暗感伤味较沈的第三号,流露牧歌气氛的华丽组曲的第四号,有威严威、作曲法很用心的第五号,隐藏阴暗热情的第六号。

【评价】

听着很舒服,很安静,特别是晚上一个人的时候。看着书,听着bach的音乐,思考一些问题。

2012/02/18 22:49 于上海

转载于:https://www.cnblogs.com/mywolrd/archive/2012/03/30/2424548.html

这篇关于每周一荐:程序设计语言原理、英国组曲的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

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 信息工具的实现服

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

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

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

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

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

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

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

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

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、