Orz oz

为了读 Concepts, Techniques, and Models of Computer Programming这本书,去下了 Mozart,一个支持编程语言 Oz的开发系统。照这书里的指点,运行Oz.exe,居然看到Emacs窗口弹出来。瀑布汗。。。这就是Mozart编程界面啊。怪不得只要8MB的安装空间。这时才注意到书里直接就用Emacs的黑话了,什么编辑器分成两个frames。我就纳闷,如果俺不用Emacs怎么办呢?为这么彪悍的编程系统, 失意体前屈一把,也算说得过去吧?
刚看完书的前言,已经被撩拨得心痒难忍。这本书和诸如SICP, PAIP, TAOCP这类大部头一样,也有自己的简写,CTM。 Lambda the Ultimate上的常客们热荐这本书。LtU是理论牛人(比如Erik Meijer)和理论叶公(比如俺)扎堆的地方,推荐的书多少都偏重理论、公式满篇。但从前言来看,CTM注重讨论对程序员重要的编程概念。摘几条有意思的片段:
  • 作者选取计算模型的主要标准是对编程实践有没有用
  • 什么时候向编程语言里加入新概念取决于“创造性扩展原则”:当程序出于技术原因变得过度复杂,但增加的复杂度和要解决的问题无关时,就可以引入新的概念了。引入的新概念应该简化程序。用逻辑编程方法解决和约束有关的问题可算一个例子。
  • 编程包含两坨基本部分:技术和科学基础。技术部分包括工具,实用技巧,和标准等。技术让我们能够实践编程。科学部分包括深广而有预测力的理论。这些理论让我们能够理解编程。技术和理论对编程缺一不可。没有技术,我们不过在搞纯数学。没有科学,我们不过在学习一门手艺,也就是说,我们不能深入理解编程。所以说嗫,教编程,既要教当前的工具(技术),也要教基础的概念(科学)。
  • 现在的编程教学分成不同的流派。面向对象,逻辑编程,函数编程。。。每个学派都有自己的理论。整合不同编程流派的单一领域已经失传了。
  • 每个编程流派各说各话好比修桥的各执己见。木桥门的认为用木头造桥是不二法门。铁桥门的坚持用钢铁造桥才是至理。偏偏没人想过同时用木头和铁造桥。书后用Java举了个例子:Java程序员觉得并发编程是本质困难,不可避免,但真正的原因是Java里解决并发问题的编程模型不够强大。
  • 把编程精简到逻辑算子的地步,比如lambda算子和π算子,只是简化了数学分析,但并不能帮助程序员建立直观概念。搞理论的老大好这一口,但程序员其实得不到多少好处。基础算子有助于研究计算的基础性质,但对分析理解通用的应用程序没有多大帮助。
  • 这本书强调综合应用各式编程模型。OO里高阶函数一样大有用处。可变状态在函数编程里也能派上用场。逻辑编程并非Prolog这类语言的禁脔。其实不同编程模型的差别也没那么大。申明式编程和命令式编程的共性大于个性。另外一方面,支持单一编程模型的语言反而会让编程变得困难。
俺提到过这本书的卖点之一是详尽讨论各式并发编程技术么?
P.S., 俺其实不相信世上有《九阴真经》这类得之称霸江湖,不得失意武林的秘籍。名动天下的高手们也是把键盘敲烂,把笔头写断,在激情的驱动下,一路磨练出来。我就算把这本书背下来,能写出云风写出的游戏么?显然不行嘛。This year head,每读一本书,也许就失去读另外10本精彩书籍的机会。所以呢,暂时找不到某本书的老大也不用痛苦,换本书读就行了。如果要找免费的经典读物,可以到 这里这里,和 这里。够读个十年二十年了吧。
P.P.S, 这本书有电子版。下载地址俺就不知道老。
文本编辑器 时间限制:1s 内存限制:128M 开始编程 题目描述 文本编辑器(或称文字编辑器)是用作编写普通文字的应用软件,主要用于用来编写和查看文本文件。 对于一个最简单的文本编辑器,它需要支持插入、删除、换行等功能,并且需要支持光标移动。初始时文本编辑器为空,光标位于编辑器最顶端。当我们输入不同功能的按键时,文本会发生对应的变化。 为了简化问题,我们把文本编辑器的功能简化为下述指令: insert x 在光标前插入新字符x,保证x属于大小写字母。 newline 从光标处换行。 delete 删除光标前的字符,如果光标位于行首,表示取消换行,合并到上一行;如果光标位于编辑器最前方,不发生任何变化。 left 光标左移,如果光标位于行首,左移到达上一行行末;如果光标位于编辑器最前方,不发生任何变化。 right 光标右移,如果光标位于行末,右移到达下一行行首;如果光标位于编辑器最后方,不发生任何变化。 请你输出所有指令结束后,文本编辑器最后显示的文本。 【输入格式】 输入包括多行。 第一行整数 𝑛 n,表示一共有多少条指令需要执行。( 1 ≤ 𝑛 ≤ 50000 1≤n≤50000) 下面为 𝑛 n行,每一行都是一个指令。 【输出格式】 输出包括若干行,为文本编辑器最后显示的文本,包括空行。 【输入输出样例#1】 输入#1 复制 10 insert A insert r left delete insert d insert b newline insert o right insert z 输出#1 复制 db orz list容器解答
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值