Skip to content

Commit

Permalink
update tra
Browse files Browse the repository at this point in the history
  • Loading branch information
DaviRain-Su committed Jul 1, 2024
1 parent 6d09f62 commit 59dbfe2
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 37 deletions.
26 changes: 13 additions & 13 deletions src/introduction/ch1_better_programming_through_ocaml.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
# 通过 OCaml 更好地编程

你已经知道如何在主流语言如 Python 或 Java 中编程吗?好。这本书是为你准备的。现在是时候学习如何更好地编程了。现在是时候学习一种函数式语言,OCaml。
你已经掌握了像 Python 或 Java 这样的主流语言的编程技能吗?很好。这本书适合你。是时候学习如何更好地编程了。是时候学习一种函数式语言,OCaml。

<iframe width="791" height="445" src="https://www.youtube.com/embed/MUcka_SvhLw" title="Introduction | OCaml Programming | Chapter 1 Video 1" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

函数式编程提供了与你之前经验不同的编程视角。适应这个视角需要放弃老的想法:赋值语句、循环、类和对象等。这不容易
函数式编程提供了与您迄今为止所经历的编程不同的视角。适应这种视角需要放弃旧观念:赋值语句、循环、类和对象等。这并不容易

> 南隐(Nan-in),一位日本大师,处于明治时代(1868-1912)。有一位大学教授来询问禅。南隐为客人泡茶。他将客人的杯满溜,然后继续 pours。教授看着流出直到他不能再抑制自己。“已经满了。没有更多的空间!”“像这个杯,”南隐说,“你已经满足自己的见解和推测。如果你想让我向你展示禅,你首先需要空掉你的杯。
> 南隠(南隐),日本明治时代(1868-1912 年)的一位大师,接待了一位前来探讨禅宗的大学教授。南隠给他倒茶。他将访客的杯子倒满,然后继续倒。教授看着溢出来,直到他再也忍受不住。“满了,再也倒不下去了!”“就像这个杯子一样,”南隠说,“你充满了自己的观点和猜测。除非你先倒空你的杯子,否则我怎么能向你展示禅呢?
我认为学习 OCaml 将使您成为更好的程序员。以下是原因:
我相信学习 OCaml 会让你成为更好的程序员。以下是原因:

- 你将体验不可变性的自由,在那里所谓“变量”的值不能改变。告别,调试。
- 你将通过抽象化的实践,避免重复性,从而提高。再见,臃肿的代码。
- 你将被暴露在一种类型系统中,你最初会因为它拒绝你认为正确的程序而讨厌。但是,你会爱上它,因为你会谦卑地意识到它是对的,而你的程序是错误的。再见,失败的测试。
- 你将被暴露一些编程语言的理论和实现,帮助你理解当你编写代码时对计算机所说的基础。再见,神秘且魔法咒语
- 您将体验到不可变性的自由,其中所谓的“变量”的值无法更改。再见,调试。
- 您将在抽象化方面有所提高,这是通过提取共性来避免重复的实践。再见,臃肿的代码。
- 你将接触到一种类型系统,起初你会讨厌它,因为它会拒绝你认为是正确的程序。但你会逐渐喜欢它,因为你会谦卑地意识到它是正确的,而你的程序是错误的。再见,失败的测试。
- 您将接触到一些编程语言的理论和实现,帮助您理解在编写代码时向计算机传达的基础知识。告别神秘和魔法般的咒语

所有这些想法都可以在其他上下文和语言中学习。但 OCaml 提供了一个让你将它们全部捆绑起来的绝佳机会。OCaml 将改变你的编程方式
所有这些想法都可以在其他背景和语言中学习。但 OCaml 提供了一个难得的机会将它们全部捆绑在一起。OCaml 将改变你对编程的思考方式

> 没有影响你对编程的思考方式的语言不值得学习。”
> 阿兰·J·佩尔斯(1922-1990),图灵奖的首个受奖者
> 一种不影响你对编程思考方式的语言是不值得学习的。”
> 艾伦·J·佩里斯(1922-1990 年),图灵奖的首位获得者
此外,OCaml 很美丽。OCaml 优雅、简单、优雅。美学确实重要。代码不仅是为了机器执行,还要与人类交流。优雅的代码更容易阅读和维护。并不一定更容易编写
此外,OCaml 是美丽的。OCaml 优雅、简洁、优美。美学很重要。代码不仅仅是为了让机器执行而编写的。它也是为了与人类沟通而编写的。优雅的代码更易阅读和维护。编写优雅的代码并不一定更容易

OCaml 代码你写的可以是时尚和有风格的。起初,这可能不太明显。你学习一种新的语言—you 不会在 Introductory Sanskrit 的第一天期望欣赏梵文诗歌的。实际上,你可能会感到沮丧一段时间,因为你努力表达自己在新语言中。但是,给它一些时间。等你掌握了 OCaml,你可能会惊讶地发现,当你返回已知的其他语言时,它们看起来多么丑陋
你写的 OCaml 代码可以是时尚和有品位的。起初,这可能并不明显。毕竟,你正在学习一门新语言——你不会期望在初学梵文的第一天就欣赏梵文诗歌。事实上,当你努力用一门新语言表达自己时,你可能会感到沮丧一段时间。所以给自己一些时间。当你掌握了 OCaml 之后,当你回到其他你已经了解的语言时,你可能会惊讶地发现它们变得多么丑陋
8 changes: 4 additions & 4 deletions src/introduction/ch1_look_to_your_future.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

<iframe width="791" height="445" src="https://www.youtube.com/embed/SKr3ItChPSI" title="Functional Programming - Why Part 1 | OCaml Programming | Chapter 1 Video 3" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

通用语言不断变化。你的生活中,你可能会学习一些。今天是 Python 和 Java。昨天是 Pascal 和 Cobol。前一天是 Fortran 和 Lisp。不知道明天将是什么?在这个快速变化的领域中,你需要能够快速适应。一个好的程序员需要学习编程背后的原则,这些原则超出了任何特定的语言。没有更好的方法来获取这些原则,除了从函数角度来 approach 编程。从头开始学习一种新的语言提供了反思的机会,让你可以思考编程和在某种语言中编程之间的差异
通用语言来来去去。在你的生活中,你可能会学习几种。今天,是 Python 和 Java。昨天,是 Pascal 和 Cobol。再之前,是 Fortran 和 Lisp。谁知道明天会是什么呢?在这个快速变化的领域,你需要能够迅速适应。一个优秀的程序员必须学习超越任何具体语言的编程原则。没有比从功能角度来看待编程更好的方法了。从零开始学习一门新语言为你提供了反思编程和在某种语言中编程之间差异的机会

如果你想学习更多关于函数式编程的知识,OCaml 将为你提供良好的准备。OCaml 对函数式编程的本质进行了明确和简化,使其在其他语言中(如 Scala)混杂函数式和命令式编程或极端函数式编程(如 Haskell)时没有做到
如果您在学习 OCaml 之后想了解更多关于函数式编程的知识,您将会有很好的准备。OCaml 在澄清和简化函数式编程的本质方面做得非常出色,这是其他混合函数式和命令式编程(如 Scala)或将函数式编程推向极致(如 Haskell)的语言所不具备的

即使你再也没有使用 OCaml 编程后,你仍然会更好地为未来做好准备。函数式语言的高级特性有惊人的趋势预测主流语言的新特性。Java 在 1995 年将垃圾回收引入了主流; Lisp 在 1958 年就已经实现了。Java 直到 2004 年的第 5 版本才拥有泛型; ML 家族在 1990 年就已经拥有了。首类函数和类型推断已被像 Java、C# 和 C++ 这些主流语言所吸收,长期以来都是函数式语言引入它们后的结果
即使您在学习 OCaml 后再也不编写代码,您仍然会为未来做好准备。函数式语言的高级特性有一种令人惊讶的趋势,可以预测更主流语言的新特性。Java 在 1995 年将垃圾回收引入主流;而 Lisp 在 1958 年就有了这一特性。Java 直到 2004 年的第 5 版才有泛型;而 ML 系列在 1990 年就有了。头等函数和类型推断已经被纳入主流语言,如 Java、C#和 C++,这是在函数式语言引入它们之后的 10 年内发生的

> Python 即将于 2021 年 2 月支持模式匹配
> Python 刚刚宣布计划在 2021 年 2 月开始支持模式匹配
10 changes: 5 additions & 5 deletions src/introduction/ch1_the_past_of_ocaml.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# OCaml 的过去

OCaml 的 genealogy 来自于一系 programming 语言,祖先是 Lisp,还包括其他现代语言,如 Clojure、F#、Haskell 和 Racket。
从家族谱的角度来看,OCaml 来自编程语言的血统,其祖父是 Lisp,包括其他现代语言如 Clojure、F#、Haskell 和 Racket。

OCaml 源自英国苏格兰爱丁堡计算机科学实验室 Robin Milner 等人的工作。他们在 1970 年代末期 1980 年代初期从事定理证明器的开发。传统上,定理证明器都是使用 Lisp 语言实现的。Milner 不断遇到问题,即定理证明器会将非正确的“证据”(即非证据)组合起来,并声称它们是有效的。因此,他尝试开发一种只允许您构建有效证据的语言。ML(Meta Language)的结果就是这种工作。ML 语言的类型系统被精心设计,以便只能在该语言中构建有效证据。然后,写了一款定理证明器程序,该程序构建了证据。最终,这种“Classic ML”演变为了一门完整的编程语言
OCaml 起源于苏格兰爱丁堡计算机科学实验室的罗宾·米尔纳(Robin Milner等人的工作。他们在 1970 年代末和 1980 年代初致力于定理证明器。传统上,定理证明器是用诸如 Lisp 之类的语言实现的。米尔纳一直遇到一个问题,即定理证明器有时会将不正确的“证明”(即非证明)组合在一起,并声称它们是有效的。因此,他尝试开发一种只允许您构建有效证明的语言。ML 代表“元语言”,是该工作的结果。ML 的类型系统经过精心构建,以便您只能在该语言中构建有效证明。然后,定理证明器被编写为一个构建证明的程序。最终,这种“经典 ML”演变成了一种成熟的编程语言

早期 80 年代,ML 社区出现了分歧,法国一方和英国、美国另一方。法国方面发展出了 CAML,并后续开发出 Objective CAML(OCaml),而英国和美国则发展出了 Standard ML。这两个方言非常相似。微软在 2005 年引入了一种名为 F#的 OCaml 变体。
80 年代初,机器学习领域出现了一场分裂,法国人站在一边,英国人和美国人站在另一边。法国人继续发展了 CAML,后来发展出了 Objective CAML(OCaml),而英国人和美国人则发展了 Standard ML。这两种方言非常相似。微软在 2005 年推出了自己的 OCaml 变体,称为 F#。

Milner 得到了 1991 年的图灵奖,主要是由于他对 ML 的工作。ACM 为他的奖项网站上写道: Milner 得到了 1991 年的图灵奖,主要是由于他对 ML 的工作。[ACM]((https://amturing.acm.org/award_winners/milner_1569367.cfm) 为他的奖项网站上写道
Milner 1991 年因其在 ML 领域的工作而获得了图灵奖。[ACM]((https://amturing.acm.org/award_winners/milner_1569367.cfm) 为他的奖项所做的网站包括了这样的赞美

> ML 确实是时代的先驱。它基于清晰和有条理的数学思想,分解开来,使其可以独立研究和相对容易地重新混合和重复使用。ML 对许多实际语言产生了影响,包括 Java、Scala 和 Microsoft 的 F#。事实上,没有严肃的语言设计师应该忽视这个好的设计例子
> ML 远远领先于其时代。它建立在清晰和明确的数学思想之上,这些思想被拆分开来,以便能够独立研究,并相对容易地重新混合和重复使用。ML 已经影响了许多实用语言,包括 Java、Scala 和微软的 F#。事实上,任何认真的语言设计者都不应忽视这个优秀设计的例子
Loading

0 comments on commit 59dbfe2

Please sign in to comment.