Git Product home page Git Product logo

composing-programs-zh's Introduction

COMPOSING PROGRAMS Netlify Status

这是一个翻译项目,原书为伯克利 CS61A 的配套教材 Composing Programs,也是计算机一大圣经 SICP 的 Python 版本。

项目现在为维护状态,如果您发现了翻译的错漏或含混之处,可以提交 issue 或者 PR,我会抽时间 review 或者修改。同时感谢所有参与翻译的同学,也感谢每一个给项目 star 的同学。

贡献者列表

composing-programs-zh's People

Contributors

1utte avatar asandstar avatar billycrapediem avatar charliecrx avatar ciqi6 avatar congwen-wang avatar dukle3 avatar etherfin avatar flisrkr avatar haiboolang avatar hhankyangg avatar jackeyzzz12138 avatar jespery avatar joeljt avatar kasarel avatar lizzy-0323 avatar longguzzz avatar mancuoj avatar nzomi avatar renovate[bot] avatar rhoninyoung avatar shifang99 avatar silver-ymz avatar stydxm avatar sumingfirst avatar tr4cck avatar wmjim avatar zhou427 avatar zhoudaixing avatar zyl1121 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

composing-programs-zh's Issues

1.6.5节公式出错

接近小节末尾部分,原文:推广到 n 次方根,我们可以得到 $f(x)=xn−a$ 和它的导数 ${d}f(x)=nx^{n−1}$
正确应该是 $f(x)=x^n-a$

针对专业名词的改进建议

改进建议:
(1)对专业名词增加中英文对照表;
例如:
赋值:assignment
语句:statement
表达式:expression

(2)文中第一次出现某个专业名词时,在中文后面的括号内附上英文全名,如果有缩写也把缩写附上。
对于这一条建议,仓库中的翻译大部分地方实现了这一建议,只是偶尔有些地方有遗漏。
例如:第一次提到“语句”时,没有附上 statement 这个英文名。
https://composingprograms.netlify.app/1/5
1.5.1 语句
到目前为止,我们虽然主要思考的是如何计算求解表达式,但我们已经见过了三种语句:赋值(assignment)、 def 和 return 语句。尽管这些 Python 代码都包含表达式作为它们的一部分,但它们本身并不是表达式。

对“1.5.2 复合语句”中某个句子翻译的一点改进建议

这个中文翻译仓库极大得提高了学习效率。
我在阅读中发现有个句子稍欠通顺,查了原文对照之后,提出一点改进建议,希望能给这个仓库做一点点贡献。

  • 英文原文

Compound statements typically span multiple lines and start with a one-line header ending in a colon, which identifies the type of statement.

  • 原始翻译

复合语句通常跨越多行,以单行头部(header)开始,并以冒号结尾,冒号标识语句的类型。

  • 改进建议

为了体现原文中的which从句,建议翻译成:
复合语句通常跨越多行,以单行头部(header)开始,并以冒号结尾,其中 冒号标识语句的类型。
或者
复合语句通常跨越多行,以单行头部(header)开始,并以 标识语句类型的冒号 结尾。

⭐️ 共建计划

翻译其实是一件非常适合开源新手的事情,你可以一边学习 CS61A 一边进行翻译,同时也可以熟悉开源流程,感受团队协作带来的乐趣。所以还是希望能有更多小伙伴参与进来,一起进步。

如何参与

  • 对于想参与的同学,可以直接回复本 issue 领取一个 Todo 即可
  • 领取之后,fork 项目,翻译该节,提交 PR 即可,我会 review 之后合并
  • 具体流程可以参考 #4
  • 不排斥占领坑位,不过还是希望尽量在一周之内完成翻译
  • 在提交了有价值的 PR 后,我会拉你加入本组织
  • ...

如何翻译

  • 请参考第一章的翻译,以及 中文文案排版指北
  • 必要的英语概念需要在括号内标注,比如:高阶函数(higher-order function)
  • Python Tutor 需要使用 iframe 嵌入,Scheme 语言暂时用链接代替
  • 公式需要使用 LaTeX 插入
  • 图片需要下载至 public 文件夹下
  • ...

另外

开启计划后,陆陆续续也有些 PR,但翻译质量良莠不齐,我由于工作原因也不能大量投入时间在 Review 上。

于是有很多未经 Review 就被合并的 PR(大部分没有遵守 中文文案排版指北 来做)。

所以如果有同学也想参与贡献但不想翻译大章,也可以通过 Review 来进行贡献,感谢!

“1.5.4 条件语句”章节中对“assign”的翻译有含混之处。

“1.5.4 条件语句”章节中对“assign”的翻译有含混之处。
https://composingprograms.netlify.app/1/5

  • 英文原文

The expressions inside the header statements of conditional blocks are said to be in boolean contexts: their truth values matter to control flow, but otherwise their values are not assigned or returned.

  • 仓库中的翻译

条件块头部语句内的表达式被称为布尔上下文:它们值的真假对控制流很重要,另外,它们的值不会被 分配 或返回。

  • 推荐翻译

条件块头部语句内的表达式被称为布尔上下文:它们值的真假对控制流很重要,另外,它们的值不会被 赋值 或返回。

翻译问题

一些专有名词可以保留,优先放英文,括号里面再放中文.而不是反过来

建议将 “suite” 翻译为 “句体”

对比 python官方英文和中文文档,发现在对复合语句的介绍时,英文的suite被翻译为中文的“句体”。

头部和缩进的语句组(suite)一起称为子句。复合语句由一个或多个子句组成:
建议将本仓库中 “1.5.2 复合语句”章节中的上述语句替换成如下语句:
头部和缩进的语句组(suite)一起称为子句。复合语句由一个或多个子句组成:

  • 本仓库的中文文档

https://composingprograms.netlify.app/1/5

  • python官方英文文档

https://docs.python.org/3/reference/compound_stmts.html

  • python官方中文文档

https://docs.python.org/zh-cn/3/reference/compound_stmts.html

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

This repository currently has no open or pending branches.

Detected dependencies

npm
package.json
  • @fontsource/jetbrains-mono ^5.0.9
  • katex ^0.16.8
  • markdown-it-smartarrows ^1.0.1
  • markdown-it-texmath ^1.0.0
  • vitepress 1.0.0-rc.4
  • vitepress-plugin-comment-with-giscus ^1.1.7
  • vue ^3.3.4

  • Check this box to trigger a request for Renovate to run again on this repository

2.5.5 Inheritance 翻译

“we find that similar classes differ in their amount of specialization. ”此句中的'classes'翻译成了“班级”,应该为“类”

对“2.2.3 抽象屏障”章节中部分翻译的改进建议

  • 英文原文

An abstraction barrier violation occurs whenever a part of the program that can use a higher level function instead uses a function in a lower level.

  • 仓库中的翻译

每当程序中可以使用更高级别函数的一部分使用了较低级别的函数时,就会违反抽象屏障。

  • 推荐的翻译

当程序中有一部分 可以使用更高级别函数 但却 使用了低级函数时,就会发生抽象屏障冲突。

  • 推荐改进的原因

(1)使用 “本”“但却” 来体现英文原文中的 “instead”
(2)调整 “一部分” 在句子中的位置,更符合中文常见的语言组织形式。

图片无法打开

您好,2.4中的566行(第九节Propagating Constraints)链接的图片无法打开。

2.8.5 增长类别

常见的类别中的表格中,增长阶描述一栏,除了“常数”,其他四个的描述有串行,可能不是很准确。

2.2.3节翻译问题

2.2.3节表格下面第二段的第一句话:每当程序的一部分可以使用更高级别的函数而不是使用较低级别的函数时,就会违反抽象障碍。

读起来有些歧义,应该为:每当程序中可以使用更高级别函数的一部分使用了较低级别的函数时,就会违反抽象屏障。

或者改为:每当程序的一部分可以使用更高级别的函数使用了较低级别的函数时,就会违反抽象障碍。

原文:An abstraction barrier violation occurs whenever a part of the program that can use a higher level function instead uses a function in a lower level.

1.3.7 关于decimal的翻译

对于除法,Python 提供了两个中缀运算符:/ 和 //。前者是常规除法,因此即使除数可以整除被除数,它也会产生浮点数或十进制值:

在这一段中,”它也会产生 浮点数 或十进制值” 的原文是 “so that it results in a floating point, or decimal value“,此处 ”decimal value“ 翻译成 ”十进制值“ 感觉不太方便初学者理解

参考剑桥辞典给出的英汉释义

DECIMAL翻译:十进位的, 小数; 十进小数

对于python初学者来说,“十进制值”的含义比较难以理解,且原文有floating point与decimal value有同义替换的意思,原版的中文翻译在文本上可能会带给读者一种“有可能生成浮点数,也有可能生成十进制值(另一种数值)”的偏差理解。

建议修改为:

对于除法,Python 提供了两个中缀运算符:/ 和 //。前者是常规除法,因此即使除数可以整除被除数,它也会产生浮点数(十进小数值)

非常感谢学长学姐们的贡献!!!辛苦啦!❤️

1.1.md

最后,这个表达式

{w for w in words if len(w) == 6 and w[::-1] in words}
{'redder', 'drawer', 'reward', 'diaper', 'repaid'}
是一个复合表达式,它的计算结果是戏剧中所有正反拼写相同的单词的集合。神秘符号 w[::-1] 表示枚举单词中的每个字母,其中 -1 代表反向枚举。当你在交互式会话中输入该表达式时,Python 会在下一行打印它的值。

解释器:复合表达式的求解需要以一个可预测的方式来精确解释代码的过程。实现这样的过程,用于计算复合表达式的程序就称为解释器。解释器的设计和实现是第三章的主题。

这个解释有点问题

建议在简介或者第一章中增加SICP的全称 Structure and Interpretation of Computer

建议修改为:
https://composingprograms.netlify.app/
这是一个翻译项目,原书为伯克利 CS61A 的配套教材 Composing Programs,也是计算机一大圣经 Structure and Interpretation of Computer, SICP 的 Python 版本。

https://composingprograms.netlify.app/1/1
长期以来,我们都使用 Harold Abelson、Gerald Jay Sussman 和 Julie Sussman 三人编写的经典教科书《计算机程序的构造与解释》即 SICP(Structure and Interpretation of Computer) 来教授这些基本**,而本书大量借鉴了这本教科书。

1.5.4 条件语句中对“真值”的使用有含混之处

这两处都使用了 真值 这个词汇,但是表示的不是同一个意思,对应的英文原文也不是同一个词组。

  • 仓库中的翻译

Python 包含多个假值,包括 0、 None 和布尔值 False,所有其他数字都是**真值(true values)**。

布尔值(Boolean values):Python 有两个布尔值,分别叫做 True 和 False 。布尔值表示逻辑表达式中的**真值(truth values)**。

  • 修改建议

确实很难找到合适的词汇来分别对应这两个英语词语,建议在把 (truth values) 附在第二个 真值 后面,以示区别。

1.3 定义新的函数 Name Evaluation的翻译不准确

Name Evaluation. A name evaluates to the value bound to that name in the earliest frame of the current environment in which that name is found.
被翻译成了“名称求解(Name Evaluation):名称的计算结果为该名称所在环境中的最早的帧中与它绑定的值。”

推荐翻译:
名称求值,指的是:在环境寻找该名称,最早找到含有该名称的帧里边其绑定的值就是这个名称的计算结果。

in which that name is found这个限定性定语从句修饰的是the earliest frame,其实意思是,“在能找到这个名字的帧里边,最早找到的那个帧”。而不是“能找到这个名称的环境”里边的“最早的帧”。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.