首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Clojure与LispClojure与Lisp

所以,为什么上个世纪50年代的编程语言,到现在还没有过时?简单说,因为这种语言本质上不是一种技术,而是数学。数学是不会过时的。...3 递归 Lisp是第一种支持递归函数的高级语言。 4 变量的动态类型 Lisp语言中,所有变量实际上都是指针,所指向的值有类型之分,而变量本身没有。...思想1到思想5已经被广泛接受,思想6开始主流编程语言中出现,思想7Python语言中有所实现,不过似乎没有专用的语法。 思想8可能是最有意思的一点。...如果你创造了一种新语言,其中有car、cdr、cons、quote、cond、atom、eq这样的功能,还有一种把函数写成列表的表示方法,那么它们的基础上,你完全可以推导出Lisp语言的所有其他部分。...最后,Clojure 设计上也考虑了并发性,并具有并发编程的一些独特特性。

1.9K30

为什么Lisp语言如此先进?(译文)

至于Ruby,如果回到1975年,你声称它是一种Lisp方言,没有人会反对。 编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平。...Lisp是第一种支持递归函数的高级语言。   4. 变量的动态类型。Lisp语言中,所有变量实际上都是指针,所指向的值有类型之分,而变量本身没有。...思想1到思想5已经被广泛接受,思想6开始主流编程语言中出现,思想7Python语言中有所实现,不过似乎没有专用的语法。 思想8可能是最有意思的一点。...如果你创造了一种新语言,其中有car、cdr、cons、quote、cond、atom、eq这样的功能,还有一种把函数写成列表的表示方法,那么它们的基础上,你完全可以推导出Lisp语言的所有其他部分。...所以,当我说假定你与ITA竞争,你用五年时间做出的东西,ITALisp语言的帮助下只用三个月就完成了,我指的五年还是一切顺利、没有犯错误、也没有遇到太大麻烦的五年。

1.2K60
您找到你想要的搜索结果了吗?
是的
没有找到

优秀的程序员是懂指针和递归的

没有指针,内存自动回收,大量的设计模式,简化了递归的思考,真把人当成了一个傻子,希望把所有复杂性都掩盖好,这样就不容易犯错。好笑的是,现在大量的学校开始以Java作为教学语言,这有没有问题?...如果教学是以简化编程,更注重计算机科学的学习,那没有问题。当如果天天讲一些Java的新特性,1.4 1.5的区别,讲autobox,那就太好笑了。一个不适合做程序员的学生也可以达到及格。   ...我们再看看lisp,看看C。其实一个是递归的代言词,一个是指针的代言词。如果你无法从多个层次进行抽象,那么你很难适应lisp函数式编程的风格,也就不奇怪理解不了Google的Mapreduce。...但还是有一些Java大牛的,James Gosing就是其中一位,他们都是C和lisp或者说指针和递归的高手。...其实Javascript的复杂是由于它本身就吸收了C和lisp的精华。所以closure、pointer都可以得到体现。不了解Javascript指针的同学可以看看我的对象真经。

85150

函数式编程很难,这正是你要学习它的原因

如果你用Scala, Haskell, Erlang,F#或某个Lisp方言来编程,很可能没有公司会花钱聘你。...也许大多数的人对Paul Graham 的《Beating The Averages》这篇文章更加熟悉: 使用Lisp开发使我们的开发周期迭代的如此之快,以至于有时当竞争对手新闻发布会上推出他们的新功能一两天后...它给你的初次印象不友善   我7岁时就开始编程漫长无聊的郊区夏季里,我祖父的计算机上瞎搞一气。我学了BASIC,用它在屏幕上画一个蹦跳的球。...但我想,差不多所有学过编程的人都有过遇到困难的经历。我们在学了一些基本知识后,必然会遇到一些公认的概念上的关口,比如指针。很多计算机科学教授会把指针描述为他们课程上的过滤网。...没有一个清晰的指导(比如由一个实用主义的作者写的一本好书),本来已经很困难的学习任务变的更加可怕。   这些叠加起来的复杂因素导致了不出意外的结果:很多人不情愿函数式编程学习中投入时间。

1K51

盘点那些奇形怪状的编程语言

程序员正经的工作中当然不会用到 esolang。Esolang 的使用者和创作者主要是一个由爱好者组成的小圈子,圈子中有程序员,有计算机科学家,有业余学习编程的人,也有像我这样基本不会编程的人。...不过我们只用了一个存储单元,没有移动过指针,也没有用上循环。...这样+和-就没有区别了,我们可以把这两个指令合并,写成@。 然后,我们可以用}来表示>@;也就是指针向右移动一格,然后加一。注意向左移动一个和向右移动一格可以抵消,两次加一也可以抵消。...Esolang 维基的 Two-dimensional languages 分类里列出了一百多种二维编程语言,其中有 Befunge 的模仿者,也有一些脑洞特别大的作品,比如说 Piet。...Parenthesis Hell Qpliu 设计的一种 LISP 方言,继承了 LISP 最重要的特点:括号。

1.7K40

​50年来最具影响力的十大编程语言!

以下为译文: 软件世界中有各种各样的编程语言,每年还会不断开发新的语言。最近又发布了Scala、Kotlin、Go和Closure,然而事实表明,它们中只有少数能够存活下来。...顾名思义,c++是C流行时代作为下一代语言开发的。与偏重结构化的C编程相比,它最显著的编程特性是面向对象。 c++IT领域得到了广泛的应用,因为它兼容本地系统,并具有面向对象特性。 ?...我从未尝试过Lisp,但据说它是Haskell、Erlang或Scala等函数式编程语言之父。它主要用于军事发展和防空系统。...与Lisp类似,Pascal是一门古老的语言,所以没有多少Pascal课程,但是如果您想学习Pascal,可以查看Udemy上的 Learn to Program with Pascal。...他们在编程领域做出了巨大的贡献,如果没有他们,就不会我们的今天。 如今,他们中有一些人仍和我们一起继续贡献着,而有些人已经离开我们。让我们永远铭记他们对编程世界的贡献。

58240

用 Kotlin 的函数式编程 替代 GOF 设计模式用 Kotlin 的函数式编程 替代 GOF 设计模式函数式编程(FP)《Kotlin极简教程》正式上架:

就像在OOP中,一切皆是对象,编程的是由对象交合创造的世界; FP中,一切皆是函数,编程的世界是由函数交合创造的世界。 函数式编程中最古老的例子莫过于1958年被创造出来的Lisp了。...于是就创造了LISP。正因为是 IBM 704 上开搞的,所以 LISP 的表处理函数才会有奇葩的名字: car/cdr 什么的。...例如:函数无法作为普通数据那样来传递(OOP函数指针上的约束),所以OOP中有各种各样的、五花八门的设计模式。...简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。而我们OOP中的那么多的设计模式,其实就是OOP的多态性的约束规则下,对这些函数指针的调用模式的总结。...而在OOP中,很多所谓面向对象设计模式(design pattern),都是因为面向对象语言没有first-class function(对应的是多态性),所以导致了每个函数必须被包在一个对象里面(受约束的函数指针

1.1K50

畅谈百年编程语言

LISP 虽然很多小方言都已不复存在,但仍未消亡。较大的方言(如 CommonLISP)仍然保持着增长的势头,也没有真正消亡。所以:我们并不总是指单一语言的编程社区。...R 语言非常适合统计,并且社区中有很大优势。大家都认为,你不会用它来写操作系统。 Java 是最近流行的通用语言。之后的一切都成了这样或那样的小众语言。...LISP 是另外一种最古老的语言,它并不注重性能,但是由于其灵活性和易于实现而繁荣。所以,“否”栏中有一个复选标记。 但这当然不是投票。相反,Fortran 和它的用户社区所关心的是性能。...LISP 最初需要一点性能来使其数学表达能力可行。最终,处理器变得更快,这一点被放弃了——现代 LISP 的实现中,car 和 cdr 绝对不是简单的寄存器访问,而且没有人在乎。...否则像指针别名这样的问题就会把它的早期用户赶到 Fortran 的怀抱中,而 Fortran 是一种更快的语言,没有这个问题。 C 是一种足够快、足够令人愉悦的语言,它能够很好地兼顾特性和性能。

24330

漫画 | 垃圾回收实在是太垃圾了!

1960年,人工智能之父 John McCarthy 麻省理工大学做了一次重要演示 Lisp的担心很快就变成了现实 垃圾回收虽然卖力工作,可是系统还是恢复不了。...在编程的世界中,内存分配每时每刻都在发生,从底层来讲,可以分为三类。 而Lisp中所有的数据都是“表”(List),都是堆中动态分配的,如果它不支持GC,程序员管理表(List)估计就会疯掉。...算法分为两个阶段, 第一个阶段是标记, 从一个GC root集合出发,沿着“指针”找到所有活动对象 到了清除阶段,只需要把那些没有被标记的对象删除,释放空间就行。...Lisp曾经遭遇的GC尴尬不会再出现了,GC逐渐成了编程语言的标配。  当然, 还有些编程语言坚守,因为他们承担着更重要的使命。...GC把程序员从内存管理中解放出来,世界上没有免费的午餐,付出的代价就是多了虚拟机/解释器这一层额外的开销。

62750

日拱一卒,伯克利CS61A,居然有Lisp这样的语言……

这一次的作业有些特殊,不再是基于Python,而是一门全新的语言Lisp。 我之前没有接触过Lisp,还是这一次受到课程的影响看了一点。...根据阮一峰大佬的说法,Lisp并非是一种编程语言,而是一种理论演算的思想。是从纯数学理论发展出的语言,而非为了某种编程开发的需要而设计的。因此虽然是诞生自上世纪五十年代,但至今仍未过时。...过程这个名字有一些古老了,基本上只一些上古编程语言中出现,现在主流的编程语言一般都叫函数或者是方法(method)。 那调用过程怎么写呢?...是的这个就是Lisp语言中的list。 链表当中链表的最后一个元素的next指针指向的是空,Lisp当中也有类似的要求。...这里我们要做的是使用Lisp中的list来实现Set,没有看过视频也没有关系,我们直接来看题就行。 Q6: Contains 实现Contains函数,用来判断元素是否Set当中。

94640

程序设计语言概述_c语言程序设计基本概念

为什么类型申明C语言中要与控制流隔离开来? 4. 现在主流语言最基本的元素是? 5. 有没有语言它的类型结构,在运行时也可以改变? 动态性? 什么是动态性? 1....指令信息 a) 代码段(动态性需要操作系统或者虚拟机支持,例如动态链接库,动态类加载,lisp语言自生成代码) 语言举例 汇编语言 汇编语言没有动态性吗? 没有。...(另,虚基类没有成员变量没有虚函数的时候会被优化。这也是JAVA可以多重继承接口interface的原因。) 4. 不要使用virtual复杂的多继承,深层次继承中。 5....例如arrayCopy方法,如果每次都拷贝大段内存,指令集中有特别指令可以加速。 3. 例如类层次结构,多态的优化。...(这个像C函数指针,但是它是高阶的,即返回值可能也是函数) 3. 没有过程,类似规格说明的语法,更容易理解,自解释。 4. 基于list的编程,函数更通用。 5.

1.4K40

近 50 年来最具影响力的 10 种编程语言,都是谁发明的?

转自大数据文摘,编译:洪颖菲、武帅 软件世界中有各种各样的编程语言,每年还会有新的语言出现,最近发布的编程语言就有 Scala、Kotlin、Go 和 Closure,但历史车轮滚滚向前,浪花淘尽英雄,...编程语言是软件开发中最重要的东西,多年来伴随着人们的讨论和批评不断改进,没有最好的语言,只有更合适的语言。...与偏重结构化的 C 语言不同,它的显著特性是面向对象,C++ 仍然是最流行的语言之一,并且高频交易系统中有着广泛应用,因为它兼容本地系统并具有面向对象的特性。...Ruby 受 Perl、Ada、Lisp 和 Smalltalk 的影响,致力于让编程更加高效有趣。...与 Lisp 类似,Pascal 因其年代久远而没有什么好的课程,但是如果你想学习 Pascal,你可以 Udemy 上学习 Learn to Program with Pascal 课程。

1.6K121

【说站】java和c 哪个好

java和c 哪个好 java和c语言都是编程界比较热门的语言了,大家选择上想必很是头疼。两种语言都有一定的优缺点,下面我们带来具体的语言对比。...1、两种语言对比 Java比C语言更了一些修饰Public,Private,Protected都是比较常用的修饰符,而C语言没有这种修饰语言,换句话说,C语言仍然缺乏一定的稳定性。...Java不使用指针,但指针是C语言的精髓,但Java更多的是对每个数据的操作,如substring等。...而且对C语言来说是一个比较宏观的领域,所以Java可以说是C语言的基础上开设的,也就是C语言是基石,Java在当今的应用和使用中也比较丰富。...当然,C语言之前有Fortran、ALGOL、LISP、Pascal、Basic。C的定位比这些语言低,可以代替以前只编语言才能完成的工作。

6.1K40

Lisp的本质(The Nature of Lisp)学习思考

我相信, 如果以C语言做例子来讨论元编程, 理解起来一定会容易得多。好, 我们接着看。 一个问题是, 为什么要用代码来写代码呢? 实际的编程中, 怎样做到这一点呢? 到底元编程是什么意思?...它们有一个神秘的名字, 叫做元编程。所谓元编程的本义, 就是如此。 元编程本来可以用到无数多的地方, 但实际上使用的次数却没有那么多。...事实上它是一个指向代码块的指针, 附带有一些其他信息(例如一组参数变量)。只有把函数赋予其他符号时, 它才具有了名字, 就像把一个数值或字符串赋予变量一样的道理。...Lisp的内置函数集十分精简, 只包含了十分必要的部分。剩下的函数都是作为标准库来实现的。 Lisp宏 我们已经看到, 元编程一个类似jsp的模板引擎方面的应用。我们通过简单的字符串处理来生成代码。...而且, Lisp没有语义约束, 你可以构造任何数据结构, 只要你原意。 Lisp通过宏(macro)来做元编程。我们写一组宏来把任务列表(to-do list)转换为专用领域语言。

1.7K60

《Kotin 极简教程》第8章 函数式编程(FP)(1)第8章 函数式编程(FP)《Kotlin极简教程》正式上架:

就像在OOP中,一切皆是对象,编程的是由对象交合创造的世界; FP中,一切皆是函数,编程的世界是由函数交合创造的世界。 函数式编程中最古老的例子莫过于1958年被创造出来的Lisp了。...例如:函数无法作为普通数据那样来传递(OOP函数指针上的约束),所以OOP中有各种各样的、五花八门的设计模式。...简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。而我们OOP中的那么多的设计模式,其实就是OOP的多态性的约束规则下,对这些函数指针的调用模式的总结。...闭包包含以下两个组成部分: 要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放) 自由变量的作用域 PHP、Scala、Scheme、Common Lisp、Smalltalk...我们姑且称之为“编程之道”罢! Y combinator 给我们提供了一种方法,让我们一个只支持first-class函数,但是没有内建递归的编程语言里完成递归。

1.4K20

机器人10大流行编程语言对比,你掌握了哪种?

我究竟应该先学哪种编程语言? 这是一个许多新入行的机器人工程师在他们职业生涯中至少会问一次的问题。不幸的是,这也是一个没有简单答案的问题。 也许更恰当的问题应该是先从哪种编程语言开始学起?...机器人学中最流行的10种编程语言 世界上有1500多种编程语言,都要学的话是太多了。目前,机器人学中有这10种最流行的编程语言——如果你喜欢的不在这里,请在留言区告诉大家。...Pascal旨在鼓励好的编程习惯,还引入了结构,例如指针,这让Pascal成为从BASIC到更复杂语言的一块“敲门砖”。如今,这两种语言如果要说是好的“日常使用”程序语言,那是有点过时了。...LISP LISP是世界上第二古老的编程语言(FORTRAN更古老,但只早了一年)。相比今天提到很多其它编程语言,它的应用并不广泛。不过人工智能编程领域它还是相当重要的。...如果你没有开发电子原型产品,你也许永远不会用HDLs。即便如此,还是有必要了解一下这种编程语言,因为它们和其它编程语言差别很大。

1.2K80

程序员必知的常见命名方法

本文将列举常见的命名方法,没有孰优孰劣,每种都有其各自的使用场景。至于项目中采取哪种命名方式,不同的公司团队,不同的编程语言,不同的技术领域均不尽相同。我们需要坚持的一点就是统一至上。...小烤串式 Lisp 编程语言中经常被用到,所以有时也叫做 lisp-case。 URL 路径中经常使用小烤串式。例如 www.blog.com/cool-article-1。... C 中,这包含一些语义信息,因为C语言的char*类型的变量不确定是一个指向单个字符的指针,还是一个字符数组,或是一个零结束字符串。 w 标记一个变量是一个字。...使用匈牙利应用命名法的代码中有时候也可能包含匈牙利系统命名法,即在描述被单独以类型方式定义的变量时使用。...面对众多的命名方法,我们要知道没有最好的命名方法,就像没有最好的编程语言一样。 如果一个团队命名方法上保持一致,那么选择使用哪个命名方法并非那么重要,当然最好要和业界做法保持一致。 ​

45420

Java函数式开发——优雅的Optional空指针处理

Java8中,Optional为函数式编程的null处理给出了非常优雅的解决方案。本文将说明长久以来Java中对null的蹩脚处理,然后介绍使用Optional来实现Java函数式编程。...那些年困扰着我们的null Java江湖流传着这样一个传说:直到真正了解了空指针异常,才能算一名合格的Java开发人员。...对内存管理有点经验的理解——null表示内存没有被分配,指针指向了一个空地址。 稍微透彻点的认识——null可能表示某个地方处理有问题了,也可能表示某个值不存在。...因为1965那个计算机的蛮荒时代,空引用太容易实现,让哥根本经不住诱惑发明了空指针这玩意。”)。 然后,我们再看看null还会引入什么问题。 看看下面这个代码: ?...就像在传说中Lisp可以比C++的代码量少三十倍、开发更高效,但是若一个国内的常规IT公司真用Lisp来做项目,请问去哪、得花多少钱弄到这些用Lisp的哥们啊?

1.5K10

《Spring Boot极简教程》附录3 编程简史附录3 编程简史名词纪要参考资料

“她的努力只遇到了一点点小小的麻烦,那就是:实际上并没有任何计算机能够用来运行她的程序。后来的企业架构师们重新吸收了她的这个技能,用来学习如何更好地使用UML进行编程。”...他发明的λ演算是当今函数式编程(FP)的鼻祖,对函数式编程有巨大的影响,特别是Lisp 语言。...1962 - APL 1962 - Simula 1962 - SNOBOL 1963 - CPL (C的先驱) 1964 - BASIC 1964 - PL/I 1967 - BCPL (C的先驱) 其中有三个现代编程语言于...Kurtz)认为像FORTRAN那样的语言都是为专业人员设计,没有办法普及。于是,他们简化FORTRAN的基础上由共同研制出来的。1964年BASIC语言正式发布。...Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念。

48520
领券