F# 编程/前言
F# : 前言 |
- 给贡献者的说明:通常前言由书籍的作者撰写。由于本书可能有多位作者,请随意撰写您自己的前言。
作者:Awesome Princess: 通常,作者会选择撰写关于本书本身的前言。但是,仅仅因为我是一个自恋狂,我想写点关于我自己。不是因为我是一个特别有趣的人,而是因为我与函数式编程的经历与这本书的创作有关。
所以,在 2006 年,我开始对我的工作感到厌倦。我唯一编写过的软件类型是在数据库之上添加 GUI 界面的软件,我已经对此感到厌倦。我想要找到一份有趣的工作。
仅仅是为了好玩,我开始查看一些高科技公司(谷歌、eBay、微软、亚马逊等)的职位空缺。我注意到,所有无聊的工作——CRUD 应用程序、简单的 Web 开发——都需要拥有 Java、C# 或 C++ 经验的程序员。有趣的工作——编译器编程、数字电路验证、大规模并行计算、生物识别技术——则需要具有奇怪和不熟悉语言经验的程序员。特别是
- 我在 Paul Graham 的文章 超越平均水平 中读到 Yahoo! Store 的第一个版本主要用 Lisp 编写。
- 我看到了谷歌的招聘启事,除了 C++ 以外,还要求具有 Haskell 或 Python 经验的程序员。
- 我在一篇 Erlang 常见问题解答 中读到,Erlang 编程语言是 T-Mobile 等电信提供商的首选工具。
- 我多年来听说 Lisp 在人工智能研究的黄金时代是一种利基语言。
- 我遇到了很多微软在驱动程序验证领域发布的职位空缺,寻找 OCaml 程序员。
世界上最非凡的应用程序并不是用 Java 编写的;它们是用这些奇怪的、晦涩的语言编写的。更有趣的是,需求量最大的语言——Erlang、Haskell、Lisp、OCaml——都是函数式编程语言,这对我来说是一种完全陌生的编程范式,我深陷 C#-Land 中。
在几种语言之间做出选择并不难。如果我要学习一种新的语言,它需要满足一些条件:它应该足够实用以供个人使用,速度相对较快,对雇主有用,当我告诉我的朋友我学习了一种奇怪的新语言时,它会让他们印象深刻。Haskell 在当时对我来说非常可怕,而且我无法真正利用 Erlang 的并发性来编写我自己编写的小范围应用程序。选择权最终落在了 Lisp 和 OCaml 之间;基于 这些对不同语言的比较,我认为 OCaml 的静态类型、快速的本地代码、微小的编译后的二进制文件以及在金融市场上的既定利基地位使它成为我的一个不错的选择。
我学习了 OCaml,它彻底改变了我的思维方式。在使用该语言并关注 OCaml 新闻组后,我听说了一种名为 F# 的 .NET 版 OCaml。我想我已经熟知 .NET BCL,而且我已经熟悉了 OCaml,我可能可以很快地学会这门语言。
在 2007 年 8 月,我花了一些时间熟悉 F# 语言。虽然我很快地掌握了大部分内容,但有一件事我注意到,那就是这门语言对于想要学习这门语言的人来说是多么难以接近。F# 材料的完全缺乏使得初学者无法将其作为他们的第一门语言学习。即使在今天,2008 年 11 月,也只有少数出版物,但即使作为一个拥有多年编程经验的人,我也很难理解和理解这门语言。
很长一段时间,我都想写一些对 F# 新手真正有用的东西,一些包含了学习这门语言所需的所有东西的综合资源。这本书最初是由一位维基教科书用户在 2006 年开始的,但近两年来,没有人为它撰写过任何实质性的内容。我找到了这本书,并决定,为了那些想要学习 F# 的人,我会把我知道的关于这门语言的一切都整理成一种格式,这种格式对于初学者来说是可接受的。
我对这本书的进展感到满意。最终,我希望人们将这本书链接到互联网上首选的、权威的 F# 教程。