Tag: 编程语言

静态types的完整Lisp变体是可能的吗?

静态types的完整Lisp变体是可能的吗? 这样的事情是否有意义存在? 我相信Lisp语言的优点之一就是其定义的简单性。 静态键入会破坏这个核心原则吗?

Haskell学什么语言?

作为我的第一个编程语言,我决定学习Haskell。 我是一个分析哲学专业,Haskell允许我快速正确地创build感兴趣的程序,例如,用于自然语言分析的转换器,定理certificate器和解释器。 虽然我只编程了两个半月,但我发现Haskell的语义和语法要比传统的命令式语言更容易学习,而且对于大多数的构造来说,现在感觉很舒服。 Haskell编程就像魔法一样,但是我想扩大编程知识。 我想select一种新的编程语言来学习,但我没有足够的时间去select一种任意的语言,放弃它,然后重复。 所以我想我会在这里提出这个问题,以及关于我正在寻找的语言types的几个规定。 有些是主观的,有些是为了缓解从哈斯克尔的过渡。 强types系统。 Haskell编程中我最喜欢的部分之一是编写types声明。 这有助于构build我对个人职能及其与整个计划关系的思考。 这也使我的程序的正确性非正式的推理更容易。 我关心的是正确性,而不是效率。 强调recursion而不是迭代。 我在Haskell中使用迭代构造,但recursion地实现它们。 但是,理解recursion函数的结构要比复杂的迭代过程容易得多,特别是在使用组合器和更高阶函数(如地图,折叠和绑定)的情况下。 奖励学习。 Haskell是一个有用的语言,有点像阅读康德。 几年前我和C的经验不是。 我不是在寻找C.语言应该强化一个概念上有趣的范式,在我完全主观的意见中,C-like不这样做。 衡量答案 :当然,这些只是笔记。 我只想回答所有给予答复的人。 你一直很有帮助。 1)有几个回应表明,强调recursion的静态types语言意味着另一种function语言。 当我想继续与Haskell强有力的合作时,camccann和larsmans正确地指出另一种这样的语言会“缓解过渡的太多”。 这些评论非常有帮助,因为我不打算在Caml编写Haskell! 在certificate助理中,Coq和Agda看起来都很有趣。 特别是Coq将为build构逻辑和formstypes理论提供一个坚实的介绍。 我花了一点时间用一阶谓词和模态逻辑(Mendellsohn,Enderton,一些Hinman),所以我可能会用Coq很有趣。 2)其他人非常青睐Lisp(Common Lisp,Scheme和Clojure)。 从我所收集的内容来看,Common Lisp和Scheme都有很好的介绍材料( On Lisp和The Reasoned Schemer , SICP )。 SICP中的材料使我倾向于Scheme。 特别是通过SICP的计划将包括一个不同的评估策略,实施懒惰,以及关注延续,口译,符号计算等主题的机会。 最后,正如其他人所指出的,Lisp对代码/数据的处理将是全新的。 因此,我倾向于select(2),一个Lisp。 3)三,Prolog。 Prolog有很多有趣的材料,其主要领域正是我感兴趣的领域。它有一个简单的语法,很容易阅读。 我目前无法评论,但在阅读了Prolog的概述并略读了一些介绍性材料之后,它与(2)排在了一起。 而且似乎Prolog的回溯总是被黑客攻入Haskell! 4)在主stream语言中,Python看起来最有趣。 蒂姆耶茨使语言听起来非常有吸引力。 显然,Python经常被教给一年级的CS专业; 所以它要么在概念上丰富或容易学习。 我不得不做更多的研究。 谢谢大家的build议! 它看起来像一个Lisp(Scheme,Clojure),Prolog,或像Coq或Agda这样的certificate助手是推荐的主要语言。

从代码片段中检测编程语言

什么是检测代码片段中使用哪种编程语言的最佳方法?

函数式编程语言如何工作?

如果函数式编程语言不能保存任何状态,他们如何做一些简单的事情,比如读取用户的input? 他们如何“存储”input(或为此存储任何数据?) 例如:如何将这个简单的C的东西转换成像Haskell这样的函数式编程语言? #include<stdio.h> int main() { int no; scanf("%d",&no); return 0; } (我的问题受到了这个出色的文章的启发: “名词王国的执行” ,阅读它让我更好地理解了什么是面向对象的编程,Java如何以一种极端的方式实现它,以及函数式编程语言是如何对比。)

除JavaScript之外的其他语言是否在括号起始位置(同一行和下一行)之间有区别?

今天,当我随机阅读O'Reilly的JavaScript模式书时,发现了一个有趣的事情(参考文献27页)。 在Javascript中,在某些情况下,如果大括号的起始位置不同,则会有所不同。 function test_function1() { return { name: 'rajat' }; } var obj = test_function1(); alert(obj); //Shows "undefined" 而 function test_function2() { return { name: 'rajat' }; } var obj = test_function2(); alert(obj); //Shows object JSfiddle演示 那里有没有其他语言有这样的行为? 如果是这样,那么我将不得不改变我的习惯.. 🙂 我主要关心PHP,C,C ++,Java和ruby。

我应该使用乘法还是除法?

这是一个很有趣的问题: 假设我们需要执行一个简单的操作,我们需要一个variables的一半的值。 通常有两种方法可以做到这一点: y = x / 2.0; // or… y = x * 0.5; 假设我们使用与语言一起提供的标准运算符,哪一个具有更好的性能? 我猜测乘法通常更好,所以当我编码的时候,我试图坚持,但是我想确认一下。 虽然我个人对Python 2.4-2.5的答案感兴趣,但也可以随时发布其他语言的答案! 如果你愿意,可以随意发表其他更奇特的方式(比如使用按位移动操作符)。

真正理解程序和function之间的区别

我真的很难理解程序和函数编程范例之间的区别。 以下是维基百科关于函数式编程的前两段: 在计算机科学中,函数式编程是一种将计算看作是math函数的评估并避免状态和可变数据的编程范例。 它强调function的应用,与强调状态变化的命令式编程风格形成鲜明对比。 函数式编程的根源在于lambda演算,这是20世纪30年代为了研究函数定义,函数应用和recursion而开发的一个正式系统。 许多函数式编程语言可以被看作是lambda演算的详细描述。 在实践中,math函数与命令式编程中使用的“函数”概念之间的区别在于,命令式函数会产生副作用,从而改变程序状态的值。 正因为如此,它们缺乏参考透明性,即相同的语言expression式可能会在不同的时间导致不同的值,这取决于正在执行的程序的状态。 相反,在函数代码中,函数的输出值只依赖于input到函数的参数,所以用参数x的相同值调用函数f两次将产生相同的结果f(x) 。 消除副作用可以使得更容易理解和预测程序的行为,这是函数式编程发展的关键动机之一。 在第2段中说的 相反,在函数代码中,函数的输出值只依赖于input到函数的参数,所以用参数x的相同值调用函数f两次将产生相同的结果f(x) 。 对程序devise来说,这不是一回事吗? 在程序和function方面,应该看到什么呢?

是SQL甚至TSQL图灵完成?

这是今天在办公室出现的。 我没有计划做这样的事情,但理论上你可以在SQL中编写一个编译器吗? 乍一看,在我看来,图灵是完整的,尽pipe对于许多类问题来说非常麻烦。 如果它不是完整的,那要做什么呢? 注意:我不想做任何事情,比如在SQL中编写一个编译器,我知道这将是一个愚蠢的事情,所以如果我们可以避免这个讨论,我将不胜感激。

为什么variables名称不能以数字开头?

我刚刚和一个新的c ++开发人员一起问了一个问题:“为什么variables名称不能以数字开头? 我不能拿出答案,除了一些数字可以有文字(123456L,123456U),如果编译器认为所有的字母字符都是variables名称,那么这是不可能的。 这是正确的答案吗? 还有更多的理由吗? string 2BeOrNot2Be = "that is the question"; // Why won't this compile?

互斥和临界区别有什么区别?

请从Linux,Windows的angular度解释? 我在C#编程,这两个术语会有所作为。 请尽可能多地发布,例如… 谢谢