我一直在网上寻找声明性和命令性编程的定义,这将为我提供一些启示.但是,我发现的一些资源中使用的语言令人生畏 - 例如在维基百科上.有没有人有一个现实世界的例子,他们可以告诉我可能会给这个主题带来一些看法(也许在C#中)?
声明性和程序性编程范式之间有什么区别?你能举个例子吗?
还存在哪些其他编程范式?
如果我们从HTML/CSS中学到了什么,那么声明性语言(如XML)可以很好地描述用户界面,因为:
我最近看了一下WPF应用程序的内容(即XAML),它看起来非常熟悉HTML中使用的声明性语言风格.
桌面UI开发的当前状态在很大程度上是分数化的,否则在图形用户界面设计领域(IE.GTK,XUL,Qt,Winforms,WPF等)中将没有那么多的重复工作.
什么是代表这些特征的开源GUI:
WPF,或更具体地说,XAML似乎是朝着正确方向迈出的可能的一步.
非常感谢您的信息,请保持信息.以下是我从评论和答案中收集的选项.
基于XML的格式,不是免费的,不是跨平台的,也不是特定于语言的
注意:我不确定XUL是否值得在此列表中提及,因为它不是桌面GUI语言,而是更多的make-webapps-on-the-desktop语言.另外,它需要浏览器才能运行.IE,它是'用于桌面的DHTML'.
注意:XAML不是纯粹的开源格式,因为Microsoft控制其使用条款,包括随时更改条款的权利.月光不能合法地在Windows或Mac上运行.此外,唯一免于法律诉讼的平台是Novell.请参阅此内容 …
我碰巧研究了 Apple 的新组合框架,在那里我看到了两件事
PassthroughSubject<String, Failure>
CurrentValueSubject<String, Failure>
有人可以向我解释它们的含义和用途吗?
reactive-programming declarative-programming ios swiftui combine
我正在学习更多关于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)
java functional-programming imperative-programming declarative-programming java-8
知道命令式和声明式编程之间的区别是否可以解释现实世界中两者之间的差异,这是非常令人困惑的?
请澄清C是否是一种命令式或声明式语言?
我知道声明性编程只是传递输入并期望输出而不说明程序是如何完成的.在函数式编程中,是一种编程范例,它接受输入并返回输出.当我检查高阶函数编程时,我们传递一个map/reduce函数,它没有透露程序是如何完成的.高阶函数编程和声明式编程是一样的吗?
为什么Flex框架的mxml语言不支持组件的构造函数或接受组件的构造函数参数?据我所知,如果它采用构造函数参数,则无法在mxml中声明ActionScript对象.我很好奇这个原因.它是Adobe的设计选择还是与声明性语言的工作方式有关?例如,为什么不允许:
<myNameSpace:MyComponent constructor="{argArray}"/>
Run Code Online (Sandbox Code Playgroud) 我正在努力学习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
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