代码之家  ›  专栏  ›  技术社区  ›  Michael Ratanapintha

探索声明性编程语言的技巧?[关闭]

  •  5
  • Michael Ratanapintha  · 技术社区  · 6 年前

    问题

    如前所述,您有什么技巧可以帮助您熟悉声明性编程语言吗?

    或者只是一个简单的例子,你必须沉浸在语言和它的语法中,直到它渗透进来,直到你得到你的黄金时刻 了解了 . 这不是一个真正的选择,因为我不能再连续几天把自己锁在一个房间里,细细研读超过六本关于这个主题的不同书籍(责任就是它们的本质和全部)。

    所以,当你处理声明性语言的时候,有什么能帮助你的技巧或诀窍吗,有什么见解可以传递给你吗?

    P.S.I____ 关闭并投入工作 艾斯。

    背景

    我13岁的时候,我第一次开始编写代码(基本上,在我的姐妹身上 Oric-1 )

    从那时起,我就用许多新概念和许多不同的语言来工作,全力以赴,迅速占据上风。对象方向?不麻烦。事件驱动范式?给我抽支烟,我会回来吃早饭的。

    OWL、MFC、ActiveX、VB3、4, 5和6、VB.NET、Pascal、Delphi、C、C++&C;没有人挡住我的路,至少没有很长时间。

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

    几周前,我投身于XAML,各位,我比游泳更沉沦。

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

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

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

    另外,不,我不是真的这么自大。是的,我第一次打OO的时候就跌跌撞撞,第一次写事件驱动的UI(Windows3.11上的vb3)。

    编辑

    它开始下沉,我在这个领域的坚韧性得到了回报, 只是需要很长的压裂时间 !

    . …我觉得我太老了,不适合做这种事。…:)

    9 回复  |  直到 12 年前
        1
  •  3
  •   Dan Rosenstark    15 年前

    在本世纪初,我教了很多XSL(或者如您所愿的XSLT):这真的是一个不同的世界。然而,这是范式转换的基础:您必须认识到声明性语言确实是不同的。我最重要的建议是继续研究别人的解决方案,把工作放进去,并且 试着停止在流动中思考 . 最糟糕的是,在XSL中,有一个“if”和一个“else”,但通常有另一种方式来做事情。

    与学习OO不同,在XSL(或任何声明性语言,我想)中,除非您声明性地做,否则您将无法完成您要做的事情。

    因此,答案在一定程度上是“闭嘴,按你的建议做工作”,但更重要的是要认识到,很多工作都是让你的头脑围绕着范式的转变。所以真正的答案是, “保持你的眼睛皮毛为范式转变。” 你必须停止在流程中思考,并开始在规则中思考,这些规则可以以任何顺序触发…如果他们做得好,他们什么时候开火都没关系。当你终于开始思考规则而不是事情发生的时候,你就开始摸索这个转变了。

        2
  •  2
  •   pjc50    15 年前

    从真正了解该语言的人那里找到一些例子,并解释“为什么”。学习模式和习语会产生不同。

    我怀疑你试图在声明性的土地上做命令性的事情,这意味着你要按照步骤思考。根据所需输入+这些输入的无状态函数写下数据流,看看这是否有帮助。

    尝试使用功能性或功能性QE语言,如ML或Scheme。

        3
  •  1
  •   anon    15 年前

    我不知道您对XAML的具体问题是什么(我自己也没有使用过),但我发现,当使用基于XML的技术(如XSLT)时,一点Lisp或方案经验可能会有很大的帮助。你可能想看看如何使用免费提供的优秀方案系统。 http://www.plt-scheme.org .

        4
  •  1
  •   T.E.D.    15 年前

    我看得出这件事会让你大吃一惊。您列出的所有语言确实非常相似(过程性)。

    一旦你放下这个,我 高度地 鼓励你学习 functional language 也。你可能也会发现这很困难,但是学习它将大大帮助你的一般编码技能。您将拥有一个全新的技巧包(甚至在过程语言中),并且您将不再害怕递归。

        5
  •  1
  •   Community CDub    7 年前

    考虑你最喜欢的 “programmer ignorance” pet peeve . 第一个代码片段显然是过程性的。在第二个片段中,你 作出声明性陈述 要使百分比有效,它必须介于0和100之间。

    所以,我想只要您足够努力地研究声明性编程语言,您就不会遇到麻烦了… there is no royal road to geometry

        6
  •  1
  •   17 of 26    15 年前

    像Binary Worrier一样,我在C、C++、MFC等方面有着很长的历史,并且在XAML、WPF和C.I上已经达到了最快的速度。我在HTML、JavaScript和XSLT中进行了一次侧滑,我认为这对我准备好XAML有很大帮助。

    Xaml背后的基本思想是相当简单的-它是关于 显示 不是你 . Xaml的难点在于,只有大量的实现细节需要学习,而您最终会同时学习所有这些细节,以便能够完成大部分工作。

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

        7
  •  1
  •   Plynx    12 年前

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

    大多数程序员对这个语句的反应都很平静。就像……”什么?”

    但是,对这种说法的信仰是导致人们难以理解其他编程范式的原因。它是 是的,很久没见了。为了更好地理解编程,许多人可能会受益于思考为什么这个语句是错误的。

    即使是在纯汇编中编程,现代处理器也会重新排列指令,执行分支预测,并尝试同时执行多个可能相互依赖的指令。以这种方式,他们认为是逻辑依赖,而不是序列。序列隐喻是一个错误的概念,即一条指令逻辑上依赖于它前面的一切。如果这是真的,解释程序的最好方法就是检查控制流。但事实并非如此。

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

        8
  •  0
  •   ennuikiller    15 年前

    我发现最简单的“摸索”一种语言的方法就是开始将它专门用于所有的编码。对于一种全新的语言,我会说学习曲线大约是每天4-5小时编码的2周。在这之后,它会突然“点击”,你就可以开始不再依赖手册和文档了。

        9
  •  0
  •   Adam Jaskiewicz    15 年前

    我上了大学(编程语言)。感觉就像我不断地用头撞砖墙,但是在课堂上,大约有三分之四的时间,我意识到墙已经不在了;我已经连续几周没有用头撞了。这是一种非常超现实的感觉。

    我想任何其他方法都不会有同样的魅力。读戈德尔、埃舍尔、巴赫;听爱默生、莱克、帕尔默和卡霍斯鲁·索拉布吉的很多作品;抽点甘加酒,然后加入时间。