Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >AI开发的语言需求

AI开发的语言需求
EN

Stack Overflow用户
提问于 2010-08-19 13:07:32
回答 8查看 1.8K关注 0票数 19

可能重复:

Why is Lisp used for AI?

是什么使语言适合于人工智能的开发?

我听说LISP和Prolog在这个领域被广泛使用。哪些特性使它们适合于AI?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-08-20 16:02:32

总体而言,我认为AI“首选”的语言的主要特点是它们拥有高阶编程和许多抽象工具。

在我看来,高阶编程(也就是第一类对象)往往是大多数AI语言http://en.wikipedia.org/wiki/Higher-order_programming的一个定义特征。这篇文章是一个存根,它省略了Prolog http://en.wikipedia.org/wiki/Prolog,它允许高阶“谓词”。

但基本上,高阶编程的思想是,你可以像传递变量一样传递函数。令人惊讶的是,许多脚本语言也有作为第一类对象的函数。LISP/Prolog是一种给定的AI语言。但其他一些可能会令人惊讶。我看过几本关于Python的AI书籍。其中之一就是http://www.nltk.org/book。我也看到了一些Ruby和Perl的例子。如果您深入研究LISP,就会发现它的很多特性都类似于现代脚本语言。然而,LISP是在1958...so中出现的,它确实领先于它的时代。

有一些用于Java的AI库。在Java中,你可以使用类上的方法将函数作为第一类对象进行排序,这比LISP更难/更不方便,但也是可能的。在C和C++中,你有函数指针,尽管它们比LISP更麻烦。

一旦你有了作为第一类对象的函数,你就可以进行比其他方式更通用的编程。如果没有函数作为第一类对象,您可能必须构造sum(array)product(array)来执行不同的操作。但是使用函数作为第一类对象,您可以计算accumulate(array, +)accumulate(array, *)。你甚至可以做accumulate(array, getDataElement, operation)。由于人工智能的定义如此模糊,因此灵活性类型是一个很大的帮助。现在,您可以构建更通用的代码,这些代码可以更容易地以甚至不是最初设想的方式进行扩展。

Lambda (现在到处都是)成为一种省去输入的方法,这样你就不必定义每个函数了。在前面的示例中,您可以直接使用accumulate(array, lambda element: return element.GPA, +),而不是在某个地方创建getDataElement(arrayelement) { return arrayelement.GPA }。因此,您不必使用大量的函数来污染您的命名空间,只需调用一两次。

如果你回到1958年,基本上你的选择是LISP、Fortran或汇编。与Fortran相比,LISP更加灵活(不幸的是效率也较低),并且提供了更好的抽象方法。除了作为第一类对象的功能外,它还具有动态类型、垃圾回收等功能(目前任何脚本语言都有)。现在有了更多的选择来作为一种语言来使用,尽管LISP受益于成为第一个并成为每个人碰巧都在使用的AI语言。现在看看Ruby/Python/Perl/JavaScript/Java/C#/,甚至是最新提出的C语言标准,你都会开始看到LISP中潜入的特性(map/reduce、lambdas、垃圾回收等)。在20世纪50年代,LISP远远领先于它的时代。

即使是现在,LISP仍然在大多数竞争中保持着一些王牌。LISP中的宏系统非常先进。在C中,您可以使用库调用或简单的宏(基本上是文本替换)来扩展该语言。在LISP中,您可以定义新的语言元素(考虑您自己的if语句,现在考虑您自己的自定义语言来定义GUI)。总体而言,LISP语言仍然提供主流语言仍未赶上的抽象方法。当然,您可以为C定义自己的自定义编译器,并添加您想要的所有语言构造,但没有人真正做到这一点。在LISP中,程序员可以通过宏很容易地做到这一点。此外,LISP是经过编译的,根据编程语言的不同,它通常比Perl、Python和Ruby更高效。

Prolog基本上是一种用于表示事实和规则的逻辑语言。什么是专家系统,而是规则和事实的集合。由于用Prolog表示一组规则非常方便,因此与专家系统有明显的协同作用。

现在我认为使用LISP/Prolog来解决每一个AI问题并不是一个既定的选择。事实上,只要看看Java可用的机器学习/数据挖掘库就知道了。然而,当你正在制作一个新系统的原型或者因为你不知道自己在做什么而进行实验时,使用脚本语言比静态类型的语言更容易做到这一点。LISP是最早拥有所有这些我们认为理所当然的特性的语言。基本上,一开始根本没有竞争。

而且,总的来说,学术界似乎非常喜欢函数式语言。这样就不会影响到LISP的功能。尽管现在你在这方面也有ML、Haskell、OCaml等语言(其中一些语言支持多种范式……)。

票数 10
EN

Stack Overflow用户

发布于 2010-08-19 13:45:17

Lisp和Prolog在这个特定领域的主要名片是它们支持像lambdas这样的元编程概念。这很重要的原因是,当您想要在一种编程语言中使用自己的编程语言时,它很有用,就像您通常想要编写专家系统规则一样。

为了在像C这样的低级命令式语言中很好地做到这一点,通常最好只为你的新(专家系统规则)语言创建一个单独的编译器或语言库,这样你就可以用新语言编写你的规则,用C编写你的操作。这就是像CLIPS这样的东西背后的原则。

票数 3
EN

Stack Overflow用户

发布于 2010-08-19 17:54:24

您需要的两个主要功能是进行实验性编程的能力和进行非常规编程的能力。

当你在做人工智能时,根据定义,你并不真正知道你在做什么。(如果你这样做了,它不会是人工智能,不是吗?)这意味着你想要一种可以快速尝试和改变的语言。就我个人而言,我还没有找到比Common Lisp更好的语言。

类似地,您正在做一些不太传统的事情。Prolog已经是一种非传统的语言,Lisp的宏可以极大地改变这种语言。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3522064

复制
相关文章
开发需求
计算器开发需求 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 import re import functools def minus_operator_handler(formula): '''处理一
hankleo
2020/09/16
3790
腾讯云什么产品可以满足大型语言模型的开发需求?
腾讯云提供了多种产品和服务,可以满足大型语言模型的开发需求,以下是一些常用的产品和服务:
gavin1024
2023/05/18
9230
上亿商品的语言处理需求 | 京东AI NLP技术的研究与落地
从2010年起,深度神经网络开始在各个领域引发人工智能技术的重大突破。在语音识别领域,截止到2017年,借助于深度学习技术语音识别在Switchboard数据集上的词错误率下降到5.1%,基本可与人工识别相媲美;而在图像识别领域、机器翻译、语音合成技术等其他领域也取得了巨大进步,使得机器基本已经做到和人一样能听、能看、能说。随着人工智能技术这些领域的不断突破,人们也更期待看到自然语言处理技术(NLP)带来更多的创新。
京东技术
2018/07/30
1.1K0
上亿商品的语言处理需求 | 京东AI NLP技术的研究与落地
你给需求文档,AI就能帮你开发安卓App
就有一个叫做Text2App的“AI”,你“喂”给它一串文字需求,它就能直接给你“消化”成安卓应用!
量子位
2021/06/17
1.1K0
用于AI开发的5种最佳编程语言
你是一个对你下一个项目选择编程语言困惑的AI(人工智能)追求者吗?如果是这样,那么你来对地方了,因为在这里我们将看到AI开发最好的5种编程语言。
老人雨何
2018/01/29
3.4K0
2022 需求最大的 8 种编程语言
DevJobsScanner 在过去的 14 个月(从 2021 年 10 月到 2022 年 11 月)中分析了超过 1200 万个开发人员职位需求,并从其中挑选了明确需要编程语言的工作机会,得到了 2022 年最受欢迎的 8 种编程语言。
小林coding
2023/01/04
8830
2022 需求最大的 8 种编程语言
没有需求文档,拒绝开发?
在我们公司,需求都是开发口头去问产品,就直接开发了。产品不给写需求文档,开发和测试同学应该接受吗 ?
程序媛淼淼
2022/09/01
1K0
最适合AI开发的六种编程语言
AiTechYun 编辑:nanan 自从AlphaGo战胜柯洁,AI风头就一直无人能及。而对于开发者来说,AI是一个十分广阔的领域,很多编程语言都可以利用AI进行开发。下面是整理出的几种典型编程语言供大家参考: Python Python是AI领域中使用最广泛的编程语言之一,它简单易用,且可以无缝与数据结构和其他常用的AI算法一起使用。基于Python的很多有用的库都可以在AI中使用,例如Numpy提供科学的计算能力,Scypy的高级计算和Pybrain的机器学习。 Java Java也是AI项目的一
企鹅号小编
2018/01/19
1.7K0
最适合AI开发的六种编程语言
社交直播APP源码开发搭建的多种业态需求和功能需求
所谓的“一对多社交”,比如直播社交,这就是典型的一对多社交,一位主播对多位观众,通过弹幕和评论进行互动,如果有聊得开心的(打赏多的)可以再聊个私信什么的。
布谷鸟小刘
2021/07/23
6690
关于软件开发需求分析的分享
  软件需求分析就是把软件计划期间建立的软件可行性分析求精和细化,分析各种可能的解法,并且分配给各个软件元素。需求分析是软件定义阶段中的最后一步,是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
用户7053485
2020/03/12
1.5K0
【盘点】最适合AI开发的六种编程语言
自从AlphaGo战胜柯洁,AI风头就一直无人能及。而对于开发者来说,AI是一个十分广阔的领域,很多编程语言都可以利用AI进行开发。下面是整理出的几种典型编程语言供大家参考: Python Pytho
AiTechYun
2018/03/06
1.4K0
【盘点】最适合AI开发的六种编程语言
软件工程:需求开发阶段
需求开发阶段的主要任务就是分析问题,研究问题所发生的现实世界(即问题域),寻找实现软件系统与现实世界有效互动的办法,并严格描述该互动办法。而软件需求开发是一个连接现实世界与计算机世界的活动,是软件工程的起始阶段,设计、实现等后续阶段的正确性都以它的正确性为前提。如果需求开发过程中有错误未能解决,则其后的所有阶段都会受到影响,因此与需求有关的错误修复代价较高,需求问题对软件成败的影响较大。而我们之所以认识不到需求开发阶段的重要性主要是因为学校时间项目的特殊性,具体来说学校的课程设计或实训:
Here_SDUT
2022/09/19
2.2K0
软件工程:需求开发阶段
小智ai:chatgpt带来哪些新岗位的需求
ChatGPT作为一项重要的自然语言处理技术,已经在各个领域中产生了广泛的应用。这些应用也带来了新的就业机会和需求,以下是一些可能的新岗位:
用户10544499
2023/05/05
2560
为什么Python成了开发AI的主流语言?Java系列、Ruby等编程语言不行吗?
人工智能(AI)作为一项颠覆性的技术,正日益在各个领域展现出巨大的潜力和影响力。在AI开发中选择适合的编程语言至关重要。本文将探讨为什么Python成为开发AI的主流语言,同时分析Java系列和Ruby在这个领域的局限性。
海拥
2023/06/27
4080
为什么Python成了开发AI的主流语言?Java系列、Ruby等编程语言不行吗?
在线教育平台开发需求分析
随着互联网的不断发展,现代信息技术向教育行业迅速扩展,教育的方式也不再是传统面对面的书本传授了,线下模式正面临着前所未有的严峻挑战,同时也面临着前良好的发展机遇—在线教育平台开发需求旺盛。它打破了传统教育的局限,在高等教育、继续教育、在职教育乃至终身教育中发挥前所未有的作用。
万岳教育系统
2020/06/04
3.6K0
在线教育平台开发需求分析
基于契约的开发:通过明确需求优化软件开发流程
作者 | Naresh Jain 译者 | 明知山 策划 | 丁晓昀 独立开发和部署单个微服务的能力是成功采用微服务策略最关键的指标。然而,大多数团队在部署微服务之前必须经历大量的集成测试。这是因为集成测试已经成为识别微服务之间兼容性问题的必要条件,因为单元和组件或 API 测试没有覆盖微服务之间的交互。 首先,集成测试是一种发现兼容性问题的后期反馈机制。修复这些问题的成本随着发现时间的推移而成倍增加(如上图底部的热图所示)。 此外,这可能会导致客户端和服务端团队做大量的返工工作,严重影响特性交
深度学习与Python
2023/03/29
7850
基于契约的开发:通过明确需求优化软件开发流程
那些需要自己开发的安全需求(服务端)
最近在实施App安全方面的方案,下面是一些思考。有些安全方面的产品需要购买,本文中的却要自己集成。需要开发的组件很多,所以依个人经验,简单做了下分层,不包括App端和主机环境。
xjjdog
2019/07/10
5870
那些需要自己开发的安全需求(服务端)
SaaS企业要满足客户的定制开发需求吗?
本文作者 吴昊:腾讯SaaS加速器导师、纷享销客天使投资人、前执行总裁,具有20年企业信息化和6年SaaS营销团队创新经验。 前天和一个做SaaS的团队交流,他们处在我说的《SaaS创业路线图》中的“产品打磨”阶段 —— 产品已经做出来,也找到了少量试用客户。 这时候遇到一个大家常见的问题:目标客户提出的需求超越了我们初定的需求边界,要不要做定制开发?这个问题,不少创业公司都会遇到。每家都有难念的经,具体情况各不相同,今天我为大家写几条原则吧。 第一,明确自己是做产品的,还是做项目的。做项目的公司
腾讯SaaS加速器
2020/06/09
1.2K0
干货分享:五大最适合学习AI开发的编程语言
AI(人工智能)为应用开发者开创了一个全新的可能性。通过利用机器学习或深度学习,您可以生成更好的用户配置文件、个性化设置和推荐,或者整合更智能的搜索、语音界面或智能助手,或者以其他数种方式改进您的应用。你甚至可以构建看得懂、听得懂,并与人类互动的应用。准备学习AI的你,知不知道选择哪种编程语言合适呢?以下列举的五种编程语言,被认为是最适合用来学习AI。大家可以参考一下。
LiveEdu
2018/05/21
1.7K0
干货分享:五大最适合学习AI开发的编程语言
产品需求与项目需求的差异
产品周期要比项目周期长久,项目周期随着交付就结束了,后期或许会有维护阶段。产品则贯穿了整个产品的生命周期,从一个idea到落地,经过市场检验,中间也可能发生方向性调整等等,一直到产品退出市场,这个周期可能跟项目周期一样,也可能是拉长了的几个项目周期。
MavenTalker
2023/03/07
8140
产品需求与项目需求的差异

相似问题

Setuptools“开发”需求

127

如何开发AI脚本

31

iPhone开发的系统需求

33

iOS开发测试需求

14

CKAN扩展开发需求

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档