首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在现实世界中,“面向语言的编程”与OOP/Functional相比如何?

在现实世界中,“面向语言的编程”与OOP/Functional相比如何?
EN

Stack Overflow用户
提问于 2009-11-10 05:16:37
回答 6查看 630关注 0票数 3

我最近开始阅读一些与F#相关的文献,谈到“真实世界的函数式编程”和“专家F#”。开始的时候很简单,因为我有一些Haskell的背景,并且了解C#。但说到"Language Oriented Programming“,我就是搞不懂。-我读了一些解释,就像在读一篇学术论文,每一句话都变得更加抽象和奇怪。

有没有人有一个简单的例子来说明这类东西,以及它与现有范例的比较?这不仅仅是学术幻想,不是吗?;)

谢谢,wishi

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-11-10 05:30:49

F#有一些机制可以用一种可以称之为“面向语言”的方式进行编程。

首先,语法细节(函数调用不需要括号,可以定义自己的中缀运算符,...)使许多用户定义的库具有嵌入式DSL的外观。

其次,F#的“报价”机制可以让您引用代码,然后使用另一种语义/评估引擎运行它。

第三,F#“计算表达式”(又称工作流、monads等)还提供了一种方法来为某些代码块提供一种替代语义。

所有这些都属于EDSL类别。

票数 9
EN

Stack Overflow用户

发布于 2009-11-10 05:32:09

面向语言的程序(LOP)可用于描述以下任何内容。

创建外部语言(DSL)

这可能是LOP最常见的用法,也是您拥有特定域的地方-例如UPS通过路线运输类型运送包裹,等等。与其尝试在程序代码中对所有这些特定于域的实体进行编码,不如仅为该域创建单独的编程语言。所以你可以用一种独立的外部语言来编码你的问题。

创建内部语言

有时,您希望您的程序代码看起来不那么像“代码”,并且更接近问题域。也就是说,让代码“读起来更自然”。流畅的接口就是一个这样的例子:Fluent Interface。此外,F#的活动模式也很好地支持了这一点。

不久前,我在LOP上编写了a blog post,提供了一些代码示例。

票数 10
EN

Stack Overflow用户

发布于 2009-11-10 05:29:44

在面向对象编程中,您尝试使用对象对问题进行建模。然后,您可以将这些对象连接在一起以执行functions...and,最终解决原始问题。

在面向语言的编程中,不是使用现有的面向对象或函数式编程语言,而是设计一种最适合有效解决问题的新的领域特定语言。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1703869

复制
相关文章

相似问题

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