首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >成为更好的F#程序员的途径

成为更好的F#程序员的途径
EN

Stack Overflow用户
提问于 2010-09-02 22:21:02
回答 7查看 1.9K关注 0票数 13

我想听听你们这些已经精通F# (以及函数式编程)的人的意见,从现在开始,我应该怎么做才能成为一名更好的/专业的F#程序员?

我已经了解了很多F#语法,并且有几年使用C++的经验。作为一名工程师和数学家,我的目标是设计更好的科学库(线性代数包、偏微分求解器等)。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-09-02 23:50:44

从现在开始,我应该采取哪些步骤来成为一名更好的/专业的F#程序员?

每天保持编码:)

我在07年9月搭上了F#列车,在那之前我已经有了大量的C#经验。我花了大约3个月的时间才停止用更有趣的语法编写C#代码,并开始学习正确的编码风格:)

小贴士和帮助我的事情:

  • 我发现F#使编写非惯用代码变得非常困难,而编写良好、整洁的代码却非常容易。如果你发现自己在与编译器抗争,那么10次中有9次你做错了什么。回到绘图板上再试一次。
  • 整个不变性的概念一开始还是个谜,但在08到09年间,我写了a wikibook,在一些缓慢的工作日子里,实现来自Okasaki的纯函数式数据结构的所有数据结构是非常困难的。我已经有一段时间没有看过它了,但我相信这真的很糟糕-但是,对于像我这样通常没有足够的动力在F#中开始一个宠物项目的人来说,向别人解释这种语言的经历是一个很好的开端:)
  • 地图,折叠和过滤器是你的朋友。尝试用这些函数来表达算法,而不是用recursion.
  • Non-tail递归函数实现循环,几乎总是更容易读写。请参见here.
  • Project Euler。很多人推荐它,我一点也不觉得它有什么特别的帮助。然而,如果你是一个数学家,你可能会比我更有用。
  • <3个联盟!在可变状态下使用them!
  • Falling --这是很大的禁忌。至少对初学者来说是这样。最糟糕的初学者代码充满了可变变量和ref变量。不变性最初是一个陌生的概念,因此我建议在一段时间内编写完全无状态的程序。

不过,最好的建议是每天坚持编码。

希望这能有所帮助!

--朱丽叶

票数 27
EN

Stack Overflow用户

发布于 2010-09-02 23:46:03

与任何其他语言一样,既然您已经了解了语法和基础知识,就可以编写代码并编写更多代码了。

在不使用inheritance.

  • If的情况下,

  • 在大型项目上编写一些不可变的数据structures.

  • Work,您熟悉的是纯函数式方式实现其中的一些,并注意到其中的一些

  • 是如何混合函数式和OOP风格的。

  • 在大型项目上编写一些不可变的数据structures.

  • Work,而不使用inheritance.

  • If。一旦你在没有继承的情况下完成了大量的抽象,就把它带回来,并开始混合在一起。找到平衡。

既然你作为一名工程师和数学家的目标是设计更好的科学图书馆,我建议将其作为学习练习,进行视频游戏风格的模拟。涉及到物理和数学,但也需要控制状态的东西。

票数 6
EN

Stack Overflow用户

发布于 2010-09-03 05:06:07

我只能同意,尝试向他人解释函数式编程是学习函数式编程的一个很好的方法。我花了很多时间思考我的F#书的结构,我认为这真的帮助我理解了函数概念之间的关系。即使是在你的公司或你的朋友做一个关于F#的演讲也应该会有类似的效果。

当我开始学习F#时,我开始了F# WebTools项目的工作。我认为这非常有用,因为项目的许多组件非常适合函数式编程,所以我学习了许多函数式技巧(因为它们是解决问题的最佳方法)。该项目处理了F#的源码树,并将其转换为JavaScript,因此我使用了大量的递归函数和区分联合。

您正在工作的领域与我的非常不同,所以我不能给您任何具体的建议,但以清晰的函数式方式编写程序是一个好主意-即使您认为以C++样式编写程序会更好。当您编写它时,您可能会找到一些方法来简化您的代码。

因此,我认为我可以给出的建议是:

  • 尝试向他人解释F# -这有助于您在头脑中组织想法
  • 选择好的问题开始-例如算法问题,处理树结构等。
  • 尽可能多地编写F#,不要害怕从看起来不完美的解决方案开始-我重写了我的第一个程序很多次!
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3628031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档