使用声明性编程语言的技巧?

时间:2009-05-18 13:24:07

标签: programming-languages declarative

问题

如前所述,您有任何提示可以帮助理解/理解/获取您的头脑声明性编程语言吗?

或者只是一个案例,你要沉浸在语言及其语法中,直到它渗透,直到你得到 Get It 的黄金时刻。这不是一个真正的选择,因为我不能再连续几天将自己锁在一个房间里,在这个主题上仔细研究了六本不同的书(责任就在于它们是什么以及所有这些)

那么,当您处理声明性语言时,任何有助于您的提示或技巧,任何传递的见解都会被传递?

P.S。我将亲自支持第一个回答“ Shutup and put in work ”。

背景

当我第一次开始拧代码时,我才13岁(基本的,在我的姐妹Oric-1上)。

从那以后,我一直在使用许多新概念和许多不同的语言,尽我所能,我快速占上风。面向对象?没打扰。事件驱动的范例?给我一个腌鱼,我会回来吃早餐。

Owl,Mfc,ActiveX,Vb3,4,5& 6,VB.Net,Pascal,Delphi,C,C ++& C#。没有人阻挡我,至少不会很长时间。

然而,最近我的完美成绩却受到了一些打击。

几个星期前,我全身心投入到Xaml,伙计们,我比游泳更沉没。

我认为我的主要问题是它是声明性的。我所有的其他编程技巧都是程序性的。我之前用MSBuild打过这个块,我可以复制一些如何让MSBuild工作的例子,但是从头开始把它放在一起会丢失。

回到Xaml,目前我疯狂地尝试将触发器连接到属性并获得我需要的效果。

我可以尽快在这里发布我的特定Xaml问题。现在我问这个一般的“声明性编程”问题。

P.S。不,我实际上并不是这么自大。是的,当我第一次点击OO并且第一次编写一个事件驱动的UI(Windows 3.11上的VB3)时,我偶然发现了地狱。

修改

它开始陷入困境,让我在这个领域取得如此成就的坚韧得到了回报,它只需要那么多的压缩时间

。 。 。我觉得我这个东西太老了。 。 。 :)

9 个答案:

答案 0 :(得分:3)

我必须在本世纪初教授一堆XSL(或XSLT,如你所愿):),这真的是一个不同的世界。然而,这是范式转换的基础:你必须意识到声明性语言确实是不同的。我最重要的建议是继续研究其他人的解决方案,投入工作,并且真的试图停止在FLOW中思考。最糟糕的是,在XSL中,有一个“if”和一个“else”,但通常还有另一种方法可以做。

与学习OO不同,在XSL(或任何声明性语言,我想)中,除非你以声明方式进行,否则你将无法做你想做的事情。

所以答案部分是“按照你的建议闭嘴并做好工作”,但更重要的一点是要意识到很多工作都是围绕着范式的转变。所以真正的答案是,“保持你的眼睛去寻找范式转换。”你必须停止思考流程并开始考虑可以按任何顺序触发的规则...如果他们'做得对,他们什么时候开火都没关系。当你最终在思考规则时,而不是当事情发生时,你就开始了解转变。

答案 1 :(得分:2)

从真正了解语言的人那里找到一些例子,并解释“为什么”。它正在学习有所作为的模式和习语。

我怀疑你正试图在声明性的土地上做必要的事情,这意味着你从步骤的角度思考。根据所需输入+这些输入的无状态功能来写下数据流,看看是否有帮助。

尝试使用ML或Scheme等功能性或功能性语言。

答案 2 :(得分:1)

我不知道您对Xaml的具体问题是什么(我自己没有使用过),但我发现在使用基于XML的技术(如XSLT)时,一点LISP或Scheme体验可能会持续很长时间办法。您可能希望使用http://www.plt-scheme.org免费提供的优秀方案系统。

答案 3 :(得分:1)

考虑您最喜欢的“programmer ignorance” pet peeve。第一个代码片段显然是程序性的。在第二个片段中,您发表声明性声明,要使百分比有效,则必须介于0到100之间。

所以我猜你只要你足够努力地处理声明性编程语言就没问题了...... there is no royal road to geometry

答案 4 :(得分:1)

我可以看到这可能会让你大吃一惊。您列出的所有语言确实非常相似(程序性)。

一旦你理解了这一点,我高度鼓励你学习functional language。您可能也会发现它很难,但学习它将有助于您的一般编码技能。你会得到一整套新技巧(即使是程序语言),你再也不会害怕递归了。

答案 5 :(得分:1)

像Binary Worrier一样,我在C,C ++,MFC等方面有着悠久的历史,并且已经开始加速XAML,WPF和C#。我通过HTML,Javascript和XSLT进行了一次小组旅行,我认为这为我准备XAML提供了很多帮助。

XAML背后的基本思想非常简单 - 所有关于你显示的内容,而不是你做什么。 XAML的难点在于只需要学习大量的实现细节,您最终可以同时学习它们,以便能够完成大部分工作。

如果问题更具体,我可能会更有帮助。

答案 6 :(得分:1)

  

“编程就是给计算机一系列指令。”

大多数程序员都对此声明保持平等。这几乎就像......“呃?”

但是,这种说法的信念是导致人们无法理解其他编程范式的原因。 是真的,并且已经很久没有了。为了更好地理解编程,许多人可能会从思考这个陈述为何错误中受益。

即使您使用纯汇编编程,现代处理器也会重新排列指令,执行分支预测,并尝试同时执行多个可能相关的指令。通过这种方式,他们考虑逻辑依赖性而不是序列。序列隐喻是错误的概念,即指令在逻辑上取决于它之前的所有内容。如果这是真的,推理程序的最佳方法是检查控制流程。但事实并非如此。

这不仅仅是声明性编程不适合这个比喻,而且还有并行和异步编程。

答案 7 :(得分:0)

我发现“grok”一种语言最简单的方法就是开始专门为你所有的编码使用它。我会用一种全新的语言对我说,学习曲线约为2周,每天编程约4-5小时。在那之后,它突然“点击”,您可以开始更少地依赖手册和文档。

答案 8 :(得分:0)

我参加了大学课程(Programming Languages)。我几乎觉得自己一直把头撞在一堵砖墙上,但是在整个班级的3/4路上,我意识到墙已经不存在了;几个星期以来,我一直在反对任何事情。这是一种非常超现实的感觉。

我认为任何其他方式都不会有同样的魅力。阅读Godel,Escher,Bach;听很多艾默生,湖,帕尔默和Kaikhosru Sorabji;吸了一些大麻,然后把它放进去。