在.Net Fringe 2016大会上,F#创建者Don Syme谈了他对F#现状的看法以及F#的二元性。F#是以一个为面向对象语言构建的运行时为基础构建的函数式语言。

\\

F#是2010年发布的,遵循开源许可协议。F#比.Net更早地踏上了开源之路,C#和.Net在2015年才开源。将F#开源主要是为了增加其公信力。那时,一门语言想要得到开发人员和企业的重视,开源是必须的。

\\

为.NET带来一门新语言的计划由来已久。函数式编程语言是隔离的,运行在自己的VM里。互操作标准(C调用、COM、CORBA、XML)让语言集成变得困难。

\\

F#的做法是使用一个已经被广泛采用的运行时,并在必要时采取折衷的办法。该语言在设计时就考虑了互操作性。像Scala和Swift这类较新的语言经常采用这种方法。

\\

F#的做法是将对象包含进来,让它们适应于面向表达式的类型化函数式编程。虽为函数式语言,但F#也支持类、抽象类和接口。

\\

//类定义\type Vector2D (dx:double, dy:double) =\    let d2 = dx*dx + dy*dy //对象固有属性\    // 导出属性\    member v.DX = dx \    member v.DY = dy\    member v.Lenght = sqrt d2\    member v.Scale(k) = Vector2D (dx * k, dy * k) // 导出方法\

\\

F#支持类、接口和抽象类。它还有一个值得注意的新增特性对象表达式,让开发人员可以匿名定义上述类型。

\\

type IMathExample =\    // 抽象方法\    abstract member Add: int -\u0026gt; int -\u0026gt; int\\    // 抽象不可变属性\    abstract member Pi : float\\// 使用对象表达式的接口实现\let obj = \  { new IMathExample with\    member this.Add x y = x + y\    member this.Pi = 3.14 }\

\\

由于F#语言几年来一直在发展,所以Syme简单介绍了该语言的现状:

\\

  • 开放、跨平台、中立、独立; \\
  • F#接受贡献; \\
  • 由非盈利性组织F#软件基金会管理; \\
  • 通过Xamarin提供移动开发和工具支持; \\
  • 由来自微软的Visual F#工具提供Windows和Azure支持; \\
  • F#编译服务是许多F#工具项目的基础; \\
  • F# 4.1的开发正在进行中。\

在谈及语言独立性时,Syme创造了一个新术语。他将“拟态独立性(mimetic independence)”定义为一种能力,借助这种能力可以将一种技术定义为独立于另外一种技术、联盟或既定利益的理念。虽然F#实现了拟态独立性,但我们仍然必须承认微软对此作出的巨大贡献。作为一个反例,Visual Basic就不符合这个条件,因为它完全依赖于微软。

\\

查看英文原文:Don Syme Presents F# Design Principles at .Net Fringe

F#创建者Don Syme谈F#设计原则相关推荐

  1. Jeremy Keith谈HTML5设计原则

    4月17日,在由InfoQ独家社区支持的上海"拥抱HTML5"活动上,第一次来到中国的<JavaScript DOM编程艺术>和<HTML5 For Web De ...

  2. 常见软件设计原则总结

    ​1 Dont' repeate yourself(DRY) DRY是一个最简单的法则,也是最容易被理解的,但有可能是最难被应用的(这需要我们在泛型设计上做相当大的努力,这不是一件容易的事).它意味着 ...

  3. 【六大设计原则-SOLID】

    SOLID简介: 历史:由Robert C·Martin汇总并推广 目标: 使软件更容易被改动 是软件更容易被理解 构建可以在多个软件系统中复用的组件 组成: 名称 简写 含义 单一职责原则 SRP ...

  4. 从设计原则谈软件开发(二)

    最近一直在一个培训公司做着极为无聊的培训,所以一直都没有时间上网.今天突然发现这里可以上无线,嘿嘿,就上来继续把这个文章完成. 上次说到了设计原则中的单一职责原则,今天时间比较紧,我就继续往下写,也不 ...

  5. php 如何设计索引_Mysql学习浅谈mysql的索引设计原则以及常见索引的区别

    <Mysql学习浅谈mysql的索引设计原则以及常见索引的区别>要点: 本文介绍了Mysql学习浅谈mysql的索引设计原则以及常见索引的区别,希望对您有用.如果有疑问,可以联系我们. 索 ...

  6. [Vue][面试]谈一谈对vue的设计原则的理解

    谈一谈对vue的设计原则的理解 思路: 在vue官网上写着大大的定义和特点: -渐进式JavaScript框架 -易用.灵活和高效 渐进式JavaScript框架: 与其它大型框架不同的是,Vue被设 ...

  7. 浅谈软件设计的七大原则

    软件设计原则这个话题看上去很大,乍一看确实不小,但是如果仔细去分析的话可以发现这些原则其实就是为了避免一些问题而提出的一些建议,这些建议呢普遍使用于软件的各个领域,所以给这些建议提高了一个档次就叫做原 ...

  8. 浅谈系统架构设计-从架构设计原理、架构设计原则、架构设计方法展开

    我们工作中一直强调要做架构设计.系分,最近前端同学在追求前端质量提升的时候,也在进行架构设计.前端系分的推广,那到底什么是架构设计和系分?该怎么做架构设计和系分?本文尝试对架构设计进行全面的介绍和分享 ...

  9. 类设计原则及设计模式(一篇就够)

    类设计原则及设计模式 类设计的六大原则 设计模式定义 设计模式的分类 创建型模式 1. 简单工厂和工厂方法模式 定义和分类 2. 抽象工厂模式 3. 单例模式 定义 优缺点 饿汉式单例与懒汉式单例类比 ...

最新文章

  1. 五:Angular 数据绑定 (Data Binding)
  2. CNCF宣布containerd毕业
  3. 【Java 并发编程】线程操作原子性问题 ( 问题业务场景分析 | 使用 synchronized 解决线程原子性问题 )
  4. 点击文字label同时选中checkbox radio
  5. CentOS-6.4 minimal - 安装VMware Tools(linux)
  6. TestNG 入门教程
  7. python怎么解释语言_python属于解释语言吗
  8. 【STM32】FreeRTOS系统配置
  9. LOJ #6052. 「雅礼集训 2017 Day11」DIV
  10. nginx 负载均衡tomcat
  11. 当迷茫在大学里泛滥成灾——李开复
  12. 嵌入式 博客导航大牛群集
  13. win10应用商店无法安装
  14. Win7重装后修复Ubuntu引导项
  15. 抖音数据统计_【数据】2018抖音大数据报告(完整版)
  16. 内存测试拷机软件,烤机软件 OCCT 更新 9.0.0 版本,新增 CPU/内存跑分测试
  17. 赢在中国 - 史玉柱经典语录(转载)
  18. php设计超级玛丽人物,面向对象实现简单版的超级马里奥小游戏
  19. 22万抢注“活动”双拼域名,95后创业者却因困意失之交臂
  20. QML之Canvas实现标尺(刻度尺)方案

热门文章

  1. 新数学丛书《连分数》 习题 3.2
  2. C#网络编程系列文章索引
  3. Java多线程 - AQS详解
  4. 六种方法实现CSS三栏布局
  5. window下git的使用
  6. App自动化测试探索(一)借助Appium实现APP的自动化测试
  7. Intellij IDEA神器常用技巧七-超好用插件推荐
  8. 【深度学习之美】卷地风来忽吹散,积得飘零美如画(入门系列之十)
  9. 【Nginx入门系列】第六章 Nginx+tomcat集群负载均衡部署
  10. C++编译期多态与运行期多态