F#学习过程中的一点看法

接触F#其实已经很久,因为没有用,也就没有仔细去学,现在在公司的一部分工作也是负责新技术的研究,在弄VS2011过程中发现MVC4中有模型层直接用F#的模板,看来微软有点要实际推F#的感觉,于是决定系统的学习一下F#。下面聊聊这几天学习F#的一些感觉:
1)函数式编程其实并不是什么新的玩意,可以看做是一种过程式语言,属于结构化编程,面向过程。这其实也符合我原来对面向过程和面向对象编程的一些看法(可以参考我原来的博文),其实面向过程很适合哪些问答式,来料加工式应用场景的应用编程(比如Web编程,数据库编程),面向对象和面向过程也是相互可以替代,辩证统一的。

2)F#的语法在进行函数式编程时很多地方确实比较方便,但方便也不能乱用,比如递归,如果F#内部不对递归做一定优化,其实很多时候在数学上的递归表达还是需要转换成迭代来实现,否则效率和性能都是大问题,比如斐波拉切数计算.

3) 对于微软来讲,F#应该不是简单的函数式编程这么简单,而是微软主打并行计算的一种语言.比如,F# 缺省就不支持变量,只支持标识(可以看做是c#中的const变量,常量),本质就是为了消除并行计算中的内存访问并发问题.F#对函数定义的语法支持非常到位,(就像写数学公式),这也是并行计算所需要的.

4)F#对序列,元组,集合等类型的支持虽然很大,看起来简单,但程序员的自主控制性比较差。F#学到现在,我觉得就match with(条件分支,类似C#的switch)和并行计算支持是亮点,其它每感觉到什么很特别的地方。

5)F#的一个特色就是取消了{}这种语言块标志,{}现在变成了对象边界(类似json格式对象),语言块的确定主要靠缩进和分号(;)来表达,感觉对于语句多点的代码组织非常不利,至少不是非常直观。当然,从另外一个角度讲,这就从根本上要求你写程序比较采用良好的缩进风格,否则你得到的是语法错误,这算是一点点的好处。

6) 其实纵观这么多高级编程语言,其实都是大同小异,各自侧重不同,在编程思想上没有突破的情况下,各个编程语言厂商不得不一边在语法上下功夫,加些语法糖来避免审美疲劳,一边向应用靠近,提供一些企业级的库支持.这就使得程序员的学习成本在不断上升,虽然是语法糖,但你也不得不去学.另外也使得语言包越来越大,开发框架人为的越来越复杂,开发出来的程序发布和部署的体积也是越来越大,而效率和性能则在硬件商的升级中遮盖了过去。

.......

PS:做程序员很辛苦,明知道大同小异,但也不得不学!

另外Apress,.Foundations.of.F.Sharp.(2007).BBL.[1590597575].pdf这本书有些地方讲得还是不错,但非常坑爹的地方是一是有些语法解释不到位,另外就是很多示例代码无法运行,语法都是错误的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值