标签: declarative-programming

声明式和命令式编程有什么区别?

我一直在网上寻找声明性和命令性编程的定义,这将为我提供一些启示.但是,我发现的一些资源中使用的语言令人生畏 - 例如在维基百科上.有没有人有一个现实世界的例子,他们可以告诉我可能会给这个主题带来一些看法(也许在C#中)?

c# paradigms imperative-programming declarative-programming

494
推荐指数
13
解决办法
18万
查看次数

声明性和程序性编程范式之间有什么区别?

声明性程序性编程范式之间有什么区别?你能举个例子吗?

还存在哪些其他编程范式?

procedural-programming declarative-programming

90
推荐指数
4
解决办法
7万
查看次数

什么是WPF/XAML的开源替代品?

如果我们从HTML/CSS中学到了什么,那么声明性语言(如XML)可以很好地描述用户界面,因为:

  1. 构建可以有效模板化代码的代码预处理器很容易.
  2. 代码是一个定义良好的结构良好(理想情况下)格式,因此很容易解析.
  3. 有效解析或爬网基于XML的源文件的技术已经存在.
  4. UI脚本代码变得更加简单易懂.
  5. 它很简单,设计师可以自己设计界面.
  6. 程序员很擅长创建UI,因此对于设计人员来说应该很容易.

我最近看了一下WPF应用程序的内容(即XAML),它看起来非常熟悉HTML中使用的声明性语言风格.

桌面UI开发的当前状态在很大程度上是分数化的,否则在图形用户界面设计领域(IE.GTK,XUL,Qt,Winforms,WPF等)中将没有那么多的重复工作.

仅有Python的45个GUI平台

什么是代表这些特征的开源GUI:

  • 标准化
  • 平台独立
  • 声明性标记语言
  • 语言不可知论者

WPF,或更具体地说,XAML似乎是朝着正确方向迈出的可能的一步.

更新:

非常感谢您的信息,请保持信息.以下是我从评论和答案中收集的选项.

GladeXML

  • 编辑:Glade界面设计师
  • OS平台:全部
  • GUI平台:GTK +
  • 语言:C(libglade),C++,C#(Glade#),Python,Ada,Pike,Perl,PHP,Eiffel,Ruby

XRC(XML资源)

基于XML的格式,不是免费的,不是跨平台的,也不是特定于语言的

XUL

  • 编辑:任何基本的文本编辑器
  • OS平台:运行支持XUL的浏览器的任何操作系统
  • GUI平台:Gecko引擎?
  • 语言:C++,Python,Ruby作为插件语言而不是基础语言

注意:我不确定XUL是否值得在此列表中提及,因为它不是桌面GUI语言,而是更多的make-webapps-on-the-desktop语言.另外,它需要浏览器才能运行.IE,它是'用于桌面的DHTML'.

CookSwing

XAML(月光)

  • 编辑:MonoDevelop
  • OS平台:仅限Linux和其他基于Unix/X11的操作系统
  • GUI平台:GTK +
  • 语言:.NET

注意:XAML不是纯粹的开源格式,因为Microsoft控制其使用条款,包括随时更改条款的权利.月光不能合法地在Windows或Mac上运行.此外,唯一免于法律诉讼的平台是Novell.请参阅此内容 …

wpf user-interface xaml open-source declarative-programming

66
推荐指数
2
解决办法
3万
查看次数

什么是 PassthroughSubject 和 CurrentValueSubject

我碰巧研究了 Apple 的新组合框架,在那里我看到了两件事

PassthroughSubject<String, Failure>

CurrentValueSubject<String, Failure>

有人可以向我解释它们的含义和用途吗?

reactive-programming declarative-programming ios swiftui combine

22
推荐指数
5
解决办法
2万
查看次数

将命令式Java转换为功能性Java(游戏)

我正在学习更多关于Java 8及其功能的知识,我想用它做更多的练习.比方说,我有以下命令性代码,用于围绕屏幕边界包裹一个圆圈:

if (circle.getPosition().getX() > width + circle.getRadius()){
    circle.getPosition().setX(-circle.getRadius());
}else if (circle.getPosition().getX() < -circle.getRadius()){
    circle.getPosition().setX(width + circle.getRadius());
}
if (circle.getPosition().getY() > height + circle.getRadius()){
    circle.getPosition().setY(-circle.getRadius());
}else if (circle.getPosition().getY() < -circle.getRadius()){
    circle.getPosition().setY(height + circle.getRadius());
}
Run Code Online (Sandbox Code Playgroud)
  1. 我怎么能试着"功能化"呢?也许有些伪代码?在我看来,在这个例子中,可变性和状态似乎是固有的.
  2. 功能编程不适合游戏开发吗?我喜欢这两者,所以我想把它们结合起来.

java functional-programming imperative-programming declarative-programming java-8

12
推荐指数
1
解决办法
370
查看次数

C是命令式还是声明式编程语言

知道命令式和声明式编程之间的区别是否可以解释现实世界中两者之间的差异,这是非常令人困惑的?

请澄清C是否是一种命令式或声明式语言?

c imperative-programming declarative-programming

11
推荐指数
3
解决办法
8175
查看次数

函数式编程是一种声明式编程吗?

我知道声明性编程只是传递输入并期望输出而不说明程序是如何完成的.在函数式编程中,是一种编程范例,它接受输入并返回输出.当我检查高阶函数编程时,我们传递一个map/reduce函数,它没有透露程序是如何完成的.高阶函数编程和声明式编程是一样的吗?

functional-programming declarative-programming

8
推荐指数
1
解决办法
1411
查看次数

为什么mxml不支持组件构造函数?

为什么Flex框架的mxml语言不支持组件的构造函数或接受组件的构造函数参数?据我所知,如果它采用构造函数参数,则无法在mxml中声明ActionScript对象.我很好奇这个原因.它是Adobe的设计选择还是与声明性语言的工作方式有关?例如,为什么不允许:

<myNameSpace:MyComponent constructor="{argArray}"/> 
Run Code Online (Sandbox Code Playgroud)

apache-flex mxml declarative-programming

7
推荐指数
1
解决办法
3860
查看次数

Prolog中的卡片表示

我正在努力学习Prolog.这是我使用这种语言的第一步.作为练习我想写一些可以识别一些扑克手的程序(同花顺,四种,满屋等).

我正在寻找Prolog的优秀卡片代表.我需要有可能检查一张卡是否比其他卡大,如果卡适合,那么一张.

我已经开始使用代码:

rank(2).
rank(3).
rank(4).
rank(5).
rank(6).
rank(7).
rank(8).
rank(9).
rank(t).
rank(j).
rank(q).
rank(k).
rank(a).

value(2, 2).
value(3, 3).
value(4, 4).
value(5, 5).
value(6, 6).
value(7, 7).
value(8, 8).
value(9, 9).
value(t, 10).
value(j, 11).
value(q, 12).
value(k, 13).
value(a, 14).
%value(a, 1).

suite(d).
suite(h).
suite(c).
suite(s).

rank_bigger(X, Y) :-
               value(X, A),
               value(Y, B),
               A > B.
Run Code Online (Sandbox Code Playgroud)

这样可以检查等级A是否大于例如J.

但我不知道如何代表单卡.此表示应包含卡的等级并且也适合.Ace也存在一些问题,因为Ace排名第14,但也可以是1.

所以我的问题是,如果我想制定以下规则,如何表示卡片:

isStraight(C1, C2, C3, C4, C5) :- 
                                  [...]
Run Code Online (Sandbox Code Playgroud)

要么

isStraightFlush(C1, C2, C3, C4, C5) :- 
                                       [...]
Run Code Online (Sandbox Code Playgroud)

如果你了解语言,我确信这是一个简单的问题,但是用C或python这样的语言"切换"思维并不容易.:-)

poker artificial-intelligence prolog declarative-programming

5
推荐指数
2
解决办法
1656
查看次数

Java Functional Programming: How to convert a if-else ladder inside for loop to functional style?

The expectation is derive 3 lists itemIsBoth, aItems, bItems from the input list items. How to convert code like below to functional style? (I understand this code is clear enough in an imperative style, but I want to know does declarative style really fail to deal with such a simple example). Thanks.

for (Item item: items) {
    if (item.isA() && item.isB()) {
        itemIsBoth.add(item);
    } else if (item.isA()) {
        aItems.add(item);
    } else if (item.isB()){
        bItems.add(item)
    }
}
Run Code Online (Sandbox Code Playgroud)

java functional-programming declarative-programming java-8 vavr

5
推荐指数
1
解决办法
237
查看次数