首页
学习
活动
专区
圈层
工具
发布

用于数学的 10 个优秀编程语言

我的看法 这是一种相当好的函数式的基于规则的编程语言,可以非常好地处理符号计算。也就是说,就编程语言而言,我并不觉得它特别优雅。...Coq工作在归纳结构微积分理论的基础上,归纳结构微积分是结构微积分的一个衍生物。 作为编程语言,Coq实现了一种依赖类型的函数式编程语言,作为逻辑系统,Coq实现了一个更高阶的类型理论。...IDRIS Idris是一种具有相关类型的通用纯函数编程语言。类型系统类似于Agda使用的类型系统。 语言支持可与Coq媲美的交互式定理证明,包括策略,即使在定理证明之前,重点仍然放在通用编程上。...Idris的其他目标是“充足”性能,易于管理的副作用和支持实施嵌入式领域特定语言。 我的看法 研究型语言。它结合了Haskell和Coq的元素。很有意思。 8....得益于此丰富的生态系统,你可以轻松学习,这对于科学计算来说真的非常棒。而且,由于它很受欢迎,因此示例(和Jupyter notebooks)可以广泛使用。 10.

3.7K100

用了一段时间Agda的感想

我的第一感觉就是,Agda真的很好入门。Agda的语法和Haskell几乎完全一致,而且由于Agda支持Unicode,于是代码中可以使用大量的数学符号,可以很简单的将一个命题翻译为Agda代码。...可以说,在Agda中证明一个命题能充分体现Curry-Horwad同构的实质。进一步的说,Agda根本没有强调“证明”,而你的每一次证明,其实都是C-H同构的体现。而Coq却完全相反。...而针对这个目标,Agda提供了比如Case和Refine之类的工具来根据类型生成目标代码,这一点是十分方便的。但是缺点也显而易见,就是证明过程并不按照一般的证明顺序进行的,毕竟只是项的构造。...对于更深层次的证明,需要学习更多内容才可以。 最后是关于ide。Agda与Coq都提供了Emacs的插件以便编写程序。此外,Agda还有Atom与Vscode(不完善)等现代编辑器的插件。...Coq有官方的CoqIde,还有比如ProofAssistant也可以使用Coq。

1.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    6 个新奇的编程方式,改变你对编码的认知

    相关类型 示例语言:Idris, Agda, Coq 你可能习惯使用C和Java等语言来键入系统,编译器可以检查变量是整数,列表还是字符串。...相反,Idris使得类型成为编程语言的第一类成员,因此依赖类型系统似乎更加强大和干净。为了进行比较,请查看Scala vs Idris:相关类型,现在以及未来的讨论。...看起来你必须记住或想象堆栈的当前状态,而不是能够从代码中的变量名称中读取它,这可能使得很难推断代码。...这里的要点是:在大多数主流语言中,你需要描述如何解决一个特定的问题; 在声明性语言中,你只需描述你想要的结果,而语言本身就能找出到达那里的方法。...这能够用该数据的原始格式操作和描述各种数据,而不是用文本描述所有数据。Aurora也是完全互动的,可以立即显示每行代码的结果,例如 REPL。

    2.6K50

    陶哲轩:感谢Lean,我又重写了20年前经典教材!

    虽然在本书撰写时,Coq 或 Agda 等一些证明助手已经相当成熟,但形式化验证当时还不在陶哲轩的考虑范围内。...读者不用担心原书籍和形式化后的内容对应不上,所有章节都遵循原始书籍,根据章节序号就能找到。 需要特别说明的是,本次形式化未对运行效率进行优化,因为某些情况下转译可能不符合 Lean 的惯用规范。...而陶哲轩本人,也在等待大家的反馈。 网友评论 有熟悉陶哲轩该教材以及 Lean 的用户表示非常兴奋,希望可以移到自己的代码库中。...ta 表示自己一直对数学感兴趣,而《Analysis I》是第一本真正展示如何以编程式大脑所期望的严谨方式构建数学的教材。后来也接触了 Lean,同样对其效果非常满意。...以前,学生只可以从助教、老师或其他知识渊博的专家那里获得反馈,而现在能够通过 Lean 编译器快速得到反馈。

    13110

    2013年图灵奖得主Leslie Lamport:如何写出数学上完美的算法

    而发送或接收一个信息可以在多个过程中建立因果关系。逻辑时钟——现在也称为「Lamport时钟」提供了一种推理并发系统的标准方法。...Lamport认为,在动手写代码之前,要先思考和写作的重要性,这需要在本科计算机科学课程中教授,而现在却没有。 你曾说过,「如果你只是思考,不写代码,你只是认为你在思考而已」。...如果你很幸运,你可以检查足够大的实例,使你对该算法有足够的信心。 听起来,模型检查与另一种程序验证方法有关:使用Coq等工具进行交互式定理证明。它们有什么不同?...而TLA+不是为数学家设计的,而是为那些想证明其系统属性的工程师设计的。上世纪90年代,在花了大约15年时间编写并发算法的证明之后,我了解到为了证明一个并发算法的正确性,你需要做什么。...的确,世界各地的程序员所写的大多数代码都不需要非常精确地说明它应该做什么。但是,有些事情是重要的,需要正确的。 当人们建造一个芯片时,他们希望这个芯片能够正常工作。

    96530

    2013年图灵奖得主Leslie Lamport:如何写出数学上完美的算法

    而发送或接收一个信息可以在多个过程中建立因果关系。逻辑时钟——现在也称为「Lamport时钟」提供了一种推理并发系统的标准方法。...Lamport认为,在动手写代码之前,要先思考和写作的重要性,这需要在本科计算机科学课程中教授,而现在却没有。 你曾说过,「如果你只是思考,不写代码,你只是认为你在思考而已」。...如果你很幸运,你可以检查足够大的实例,使你对该算法有足够的信心。 听起来,模型检查与另一种程序验证方法有关:使用Coq等工具进行交互式定理证明。它们有什么不同?...而TLA+不是为数学家设计的,而是为那些想证明其系统属性的工程师设计的。上世纪90年代,在花了大约15年时间编写并发算法的证明之后,我了解到为了证明一个并发算法的正确性,你需要做什么。...的确,世界各地的程序员所写的大多数代码都不需要非常精确地说明它应该做什么。但是,有些事情是重要的,需要正确的。 当人们建造一个芯片时,他们希望这个芯片能够正常工作。

    55620

    超越宇宙极限:第六位海狸数再次突破,无法用常规数学符号表达

    「已经远远超出了人类可以想象或真正掌握的范围。」德克萨斯大学奥斯汀分校的计算机科学家 Scott Aaronson 如此感叹。...甚至在某些情况下,不存在任何办法可以给出答案。 图灵为了证明这一划时代的结论,创造了一种形式化的数学计算模型。...这个证明过程中深度使用了 Coq 智能证明助手。Coq 通过 Gallina 编程语言,让用户定义数学对象、陈述定理,并一步步构建证明。用户可以与 Coq 进行交互,逐步验证每一步的正确性。...既然这类新技术的相关图灵机的最开始的几个样本就能做到与现任冠军接近,那么在后续迭代中,采用移位溢出计数器的图灵机中很可能出现打破记录的新冠军。...研究者几乎可以肯定:「反九头蛇」永远不会停机。但问题是,他们至今没法证明这一点。

    4510

    2013年图灵奖得主 Leslie Lamport 专访:程序员需要更多的数学知识

    有了这个工具以后,计算机科学家开始想知道他们如何系统地将这些连接的计算机变得更大,而不增加Bug。Lampor提出了一个优雅的解决方案:Paxos,一种允许多台计算机执行复杂任务的「一致性算法」。...Quanta:您曾说过,「如果你只思考而不写作,你就只会思考你在思考的东西。」这就是模型检测(model checking)的目的吗?...如果幸运的话,您可以检查足够多的实例,从而使你对算法有足够的信心。但对于任何规模的系统和算法的使用,证明都可以验证其正确性。...Quanta:听起来,模型检测与另一种程序验证方法有关:使用Coq等工具进行交互式定理证明。它们有何不同? Lamport:Coq的目的是解决真正的数学问题,它能够捕捉数学家所做的推理。...20世纪90年代,在花了大约15年的时间编写并发算法的证明之后,我了解到为了证明并发算法的正确性需要做什么。

    70730

    2013年图灵奖得主 Leslie Lamport 专访:程序员需要更多的数学知识

    有了这个工具以后,计算机科学家开始想知道他们如何系统地将这些连接的计算机变得更大,而不增加Bug。Lampor提出了一个优雅的解决方案:Paxos,一种允许多台计算机执行复杂任务的「一致性算法」。...Quanta:您曾说过,「如果你只思考而不写作,你就只会思考你在思考的东西。」这就是模型检测(model checking)的目的吗?...如果幸运的话,您可以检查足够多的实例,从而使你对算法有足够的信心。但对于任何规模的系统和算法的使用,证明都可以验证其正确性。...Quanta:听起来,模型检测与另一种程序验证方法有关:使用Coq等工具进行交互式定理证明。它们有何不同? Lamport:Coq的目的是解决真正的数学问题,它能够捕捉数学家所做的推理。...20世纪90年代,在花了大约15年的时间编写并发算法的证明之后,我了解到为了证明并发算法的正确性需要做什么。

    78820

    JavaScript能做什么?

    JavaScript除了做前端开发,还能做什么? 很多朋友学习的第一门编程语言就是JavaScript,学习的过程中一定会思考这个问题:“JavaScript除了做前端开发,还能做什么?”...那我们在思考JavaScript能做什么之前,先看看下面这个问题: 厨房里的一把菜刀除了切菜还能做什么?...~~~~~~开个玩笑,回归正题~~~~~ JavaScript能做什么?...新手不建议用node专职做后台 (先定义一下新手:) (没有系统学习过web后台知识) (熟练掌握html与css) (可以熟练使用JavaScript和jQuery做出简单的网页效果) (对模块化组件化的开发有所了解...前端新手朋友们可以自己用node写接个后台接口,处理http请求,但这仅仅是为了解决前后台数据交互的问题,而不是正真掌握了后台知识。

    2.4K60

    AI将完成人类能做的一切,毕业演讲实录

    通过观察AI能做什么,在时机到来时不忽视它,就能激发出克服挑战所需的能量。 消失的Ilya重归 两年前的冬天,OpenAI联合创始人Ilya「逼宫」失败,奥特曼王者归来。...因为我们每个人都有一个大脑,而大脑是一个生物计算机。 为什么一个数字计算机、一个数字大脑不能做同样的事情呢?...你可以上X看看AI能做什么,人们在说什么,可能会略微感受到一些影响。 人们会想,哪些技能有用?哪些技能会变得不那么有用? 所以可以说,当前的挑战是AI将如何影响工作和我们的职业。...可以说,AI在很多方面还需要赶上,但它已经足够引人注目了。 有人说再过三年,有人说五年、十年,各种时间预测都被提出来了。 Ilya试图把人们带入这种由AI创造的极端而激进的未来思维空间。...通过简单地观察AI能做什么,在时机到来时不忽视它,就能激发出克服挑战所需的能量。 AI给人类带来的挑战,从某种意义上说是有史以来最大的挑战。 克服这一挑战也将带来最大的回报。

    11400

    理解音频焦点 (第 23 部分):更多的音频焦点用例

    原文地址:Understanding Audio Focus (Part 2 / 3): More Audio Focus use cases 原文作者:Nazmul Idris (Naz) 译文出自:...如果您的应用支持延迟音频聚焦,会发生如下情况: 当您的应用申请音频焦点的时候,会被拒绝并锁住,通话应用继续持有音频焦点,您的应用因此不播放音频。因为您的应用是游戏,可以正常继续操作,只是没有声音。...您可以像上文建议应对音频焦点得失的处理方式那样处理,在本例中,此时便可以开始恢复播放。...用户正在收听音乐或播客,而您的应用正好在短时间内生成音频: 在您的应用程序生成音频之前,它应该请求短暂的音频焦点。 只有当它被授予焦点时,才能播放音频。...理解音频焦点 (第 3/3 部分) - Nazmul Idris (Naz) - Medium Android多媒体开发资源 示例代码 — MediaBrowserService 示例代码 — MediaSession

    2.6K20

    程序员缺乏经验的 7 种表现!

    你能做什么:进行小的代码提交。一个好的做法是:每个工作日都进行代码提交。不要提交没有编译或者会导致构建失败的代码。2....如果你不遵守以上的规则,当你回顾自己完成的代码时会非常痛苦。以后如果需要修正问题或者增加功能,也会变得非常棘手。你能做什么:编写代码之前,对你要实现的功能有个清晰的了解。...让你的代码简洁而优雅。其他团队成员可以读懂代码并理解它打算做什么。3. 同时开展多项工作缺乏经验的开发人员不知道什么时候开始一项任务、如何推进、什么时候结束。他们试图并行处理多项任务。...如果一个开发人员因为别人对他代码给出的评论,而感觉被冒犯,只能表明他不具有真正的开发经验。他抱着做一天和尚撞一天钟的态度工作,却感慨没有遇到赏识自己的伯乐。你能做什么:对每个反馈保持积极的态度。...工作时间处理私人事务,这是违反商业道德,并且表现了你的不专业。我们需要对工作敬业,毕竟我们要靠它谋生。你能做什么:工作时间尽量不要处理私人事务。

    13900

    程序开发人员缺乏经验的7种表现

    你能做什么: 进行小的代码提交。一个好的做法是:每个工作日都进行代码提交。 不要提交没有编译或者会导致构建失败的代码。 2....如果你不遵守以上的规则,当你回顾自己完成的代码时会非常痛苦。以后如果需要修正问题或者增加功能,也会变得非常棘手。 你能做什么: 编写代码之前,对你要实现的功能有个清晰的了解。...让你的代码简洁而优雅。其他团队成员可以读懂代码并理解它打算做什么。 3. 同时开展多项工作 缺乏经验的开发人员不知道什么时候开始一项任务、如何推进、什么时候结束。他们试图并行处理多项任务。...如果一个开发人员因为别人对他代码给出的评论,而感觉被冒犯,只能表明他不具有真正的开发经验。他抱着做一天和尚撞一天钟的态度工作,却感慨没有遇到赏识自己的伯乐。 你能做什么: 对每个反馈保持积极的态度。...工作时间处理私人事务,这是违反商业道德,并且表现了你的不专业。我们需要对工作敬业,毕竟我们要靠它谋生。 你能做什么: 工作时间尽量不要处理私人事务。

    35330

    程序员缺乏经验的 7 种表现!

    如果你不遵守以上的规则,当你回顾自己完成的代码时会非常痛苦。以后如果需要修正问题或者增加功能,也会变得非常棘手。 你能做什么: 编写代码之前,对你要实现的功能有个清晰的了解。...让你的代码简洁而优雅。其他团队成员可以读懂代码并理解它打算做什么。 同时开展多项工作 缺乏经验的开发人员不知道什么时候开始一项任务、如何推进、什么时候结束。他们试图并行处理多项任务。...如果一个开发人员因为别人对他代码给出的评论,而感觉被冒犯,只能表明他不具有真正的开发经验。他抱着做一天和尚撞一天钟的态度工作,却感慨没有遇到赏识自己的伯乐。 你能做什么: 对每个反馈保持积极的态度。...工作时间处理私人事务,这是违反商业道德,并且表现了你的不专业。我们需要对工作敬业,毕竟我们要靠它谋生。 你能做什么: 工作时间尽量不要处理私人事务。...你能做什么: 花费时间和精力学习那些能在工作中或者实际项目中真正用到的技术。 从教程中学习并及时练习,相对于新手教程,自己实现一个功能能学到更多的东西。

    29030

    什么是ERP?如何选择合适的ERP系统?

    你可以结合自己的企业阶段和IT能力选一款试试。第一款:简道云 ERP适用企业:刚起步、没IT部门的中小企业或创业团队免费版能做什么?...第二款:Odoo 社区版(开源老牌 ERP,模块丰富)适用企业:有 IT 团队、懂 Python 或愿意部署服务器的公司免费版能做什么?...注意事项:上手成本高,非技术人员不建议使用;汉化程度不统一,国内用起来可能有障碍。第三款:ERPNext(开源简洁型,适合轻工业)适用企业:有轻度制造或零售业务,有一定技术支持团队免费版能做什么?...第四款:浪潮ERP体验版(国资背景,但更多偏向政企)适用企业:国产化需求重、本地部署优先的中大型企业免费版能做什么?...第五款:鼎捷易助ERP(适合制造业的小微版本)适用企业:制造业小厂、车间级管理者、五金、机械类中小企业免费版能做什么?

    27410

    3个问题,1套非技术人员的AI方法论 | 哈佛商业评论最新热文

    然而,跟所有技术一样,即便不拥有机器学习的学位,如果能够理解AI技术的原理,也能提升工作能力。...就像不是每一个知晓飞机驾驶原理的人,都是飞行员,但知晓原理,可能会让他们更心中有数:飞机飞行能做什么、不能做什么?如何降低飞机飞行中的噪音,或者在短途旅行中选择更经济实惠的那一个航班。...人类面对庞大数据分析的时候,总是想先找到其中规律,然后简化数据和运行,但可能就会忽略一些数据呈现的特点,而机器学习就不用,再大的数据,它都有方法找到各种维度。...知道AI擅长什么,才能在面对问题时知道:这个AI可以解决,这个AI还没法解决。 第三,知道AI无法做什么。...AI永远无法做什么?比如聘用谁、不聘用谁,董事会上该讨论和进行的决策,这些都无法让AI全权完成。

    48100

    工作十年,却只有一年经验,只因重复了九年

    你能做什么? 进行小的代码提交。一个好的做法是:每个工作日都进行代码提交。 不要提交没有编译或者会导致构建失败的代码。 2....如果你不遵守以上的规则,当你回顾自己完成的代码时会非常痛苦。以后如果需要修正问题或者增加功能,也会变得非常棘手。 你能做什么? 编写代码之前,对你要实现的功能有个清晰的了解。...让你的代码简洁而优雅。其他团队成员可以读懂代码并理解它打算做什么。 3. 同时开展多项工作 缺乏经验的开发人员不知道什么时候开始一项任务、如何推进、什么时候结束。他们试图并行处理多项任务。...如果一个开发人员因为别人对他代码给出的评论,而感觉被冒犯,只能表明他不具有真正的开发经验。他抱着做一天和尚撞一天钟的态度工作,却感慨没有遇到赏识自己的伯乐。 你能做什么? 对每个反馈保持积极的态度。...你能做什么? 花费时间和精力学习那些能在工作中或者实际项目中真正用到的技术。 从教程中学习并及时练习,相对于新手教程,自己实现一个功能能学到更多的东西。

    34110

    数学证明和计算机程序等同的深层链接

    如果答案是肯定的,那么他一定不能给自己刮胡子(因为他只给不刮自己胡子的男人刮胡子)。如果答案是否定的,那么他必须给自己刮胡子(因为他给所有不刮自己胡子的男人刮胡子)。...也就是说,不可能定义一个包含所有不包含自身的集合而不遇到矛盾。 罗素指出,为了避免这种悖论,我们可以使用“类型”(type)。...整数类型的数字 7 可以写为“7:整数”。你可以有一个函数,该函数获取类型 A 的对象并吐出 B 类型的对象,或者将一对类型 A 和类型 B 的对象组合成一个名为“A × B”的新类型。...这些是有助于构建形式证明的软件工具,例如Coq和Lean。在Coq中,证明的每一步本质上都是一个程序,证明的有效性通过类型检查算法进行检查。...这使得有时非正式的数学语言可以被计算机检查。 研究人员仍在探索数学和编程之间这种联系的后果。

    33910
    领券