上周,《黑客与画家》总算翻译完成,已经交给出版社了。 翻译完这本书,累得像生了一场大病。把书稿交出去的时候,心里空荡荡的,也不知道自己得到了什么,失去了什么。 希望这个中译本和我的努力,能得到读者认同和肯定。 下面是此书中非常棒的一篇文章,原文写于八年前,至今仍然具有启发性,作者眼光之超前令人佩服。由于我不懂Lisp语言,所以田春同学帮忙校读了一遍,纠正了一些翻译不当之处,在此表示衷心感谢。 ============================ 为什么Lisp语言如此先进? 作者:Paul Graham
Lisp 是一种编程语言,以表达性和功能强大著称,但人们通常认为它不太适合应用于一般情况。Clojure 是一种运行在 Java™ 平台上的 Lisp 方言,它的出现彻底改变了这一现状。如今,在任何具备 Java 虚拟机的地方,都可以利用 Lisp 的强大功能。
注:本文节选自《SOD框架"企业级"应用数据架构实战》一书之【2.1.1“数”的起源】,转发自此图书的在线试读网站,更多内容可点击了解。
然后为了印证我的所学,我自己写了一个小函数,用于这篇文章中输入两个由 ~~~ 来标识的代码块
各种数据序列化格式进行比较。基本上,是回答以下问题:“能找到比JSON更好的东西吗?”。 这里找的是用于数据序列化的语言,而不是配置文件。
我有幸在我还是学生的时候见到了了不起的 Alan Perlis,并和他交谈了几次。他和我共同深爱和尊重两种非常不同的编程语言:Lisp 和 APL。跟随他的脚步是一项艰巨的任务,尽管他开辟了一条优秀的道路。尽管如此,我想重新审视他在这本书的原始前言中所做的一条评论(请阅读他的前言,它紧随在这个前言之后,然后再完成这个前言)。是否真的比起有 10 个函数作用于 10 个数据结构,有 100 个函数作用于一个数据结构更好?
这篇文章有两个目的:一是展示如何实现一个计算机语言的解释器,二是演示如何使用 Python 3 构造 Lisp 的一种方言 Schema,作者把自己的这个语言解释器称作 Lispy。几年前,作者曾展示过如何用 Java 和 Common Lisp 写 Schema 解释器。而本次的目的很纯粹,作者会尽可能简明扼要为大家进行介绍。
皇后是国际象棋里杀力最强的子,它可以吃掉同一条横线、竖线上其他棋子,也可以吃掉所在的两条斜线上的其他棋子(当然在角上只有一条斜线)。
数据服务是数据中台体系中的关键组成部分。作为数仓对接上层应用的统一出入口,数据服务将数仓当作一个统一的 DB 来访问,提供统一的 API 接口控制数据的流入及流出,能够满足用户对不同类型数据的访问需求。
作者 | 邓刚、陈晨、周飞强、冯广远、严旭东、朱寒婷、史修磊、金一丹 数据服务是数据中台体系中的关键组成部分。作为数仓对接上层应用的统一出入口,数据服务将数仓当作一个统一的 DB 来访问,提供统一的 API 接口控制数据的流入及流出,能够满足用户对不同类型数据的访问需求。 电商平台唯品会的数据服务自 2019 年开始建设,在公司内经历了从无到有落地,再到为超过 30+ 业务方提供 toB、toC 的数据服务的过程。本文主要介绍唯品会自研数据服务 Hera 的相关背景、架构设计和核心功能。 背景 在统一数仓
Lisp的本质(The Nature of Lisp)学习思考 作者 Slava Akhmechet 译者 Alec Jang 出处: http://www.defmacro.org/ramblings/lisp.html 简介 最初在web的某些角落偶然看到有人赞美Lisp时, 我那时已经是一个颇有经验的程序员。在我的履历上, 掌握的语言范围相当广泛, 象C++, Java, C#主流语言等等都不在话下, 我觉得我差不多知道所有的有关编程语言的事情。对待编程语言的问题上, 我觉得自己不太会遇到什么大问题
函数式编程 (functional programming) 正式开始有长足的发展始于 10 年前, 从那时起, 我开始看到 Scala, Clojure 和 F# 这样的语言得到关注. 这种关注并非只是像 "哇, 一个新语言, 酷!" 这样短暂的热度, 而是确实有某些实在的原因在推动着它 -- 或者至少我们是这么认为的.
匿名函数,顾明思义就是一种隐匿了名字的函数。Python中使用lambda语法定义匿名函数,只需用表达式而无需申明。
文章转载自伯乐在线 原文地址:http://blog.jobbole.com/18587/ 【译注】:圣经记载:在远古的时候,人类都使用一种语言,全世界的人决定一起造一座通天的塔,就是巴别塔,后来被上帝知道了,上帝就让人们使用不同的语言,这个塔就没能造起来。 巴别塔不建自毁,与其说上帝的分化将人类的语言复杂化,不如说是人类自身心灵和谐不再的分崩离析。之所以后来有了翻译,不仅是为了加强人类之间的交流,更寄达了一种愿望,希望能以此消除人际的隔阂,获求来自心灵的和谐及慰藉。真正的译者,把握血脉,抚平创痕,通传
这是我写的旋风式的编程语言简介 ,我会讲C、C++、Lisp、Java、Perl (我们在亚马逊用到的所有语言)、Ruby (我就是喜欢) 和 Python,把 Python 加进来是因为 —— 好吧
引言 SCIP(Structure and Interpretation of Computer Programs)[1]是MIT自1984年起的编程入门教程,尽管最近他们用Python的课程取代了Lisp语言,但是随着工业界越来越多的应用函数编程语言,如Clojure、Scala、Racket,以及软件开发使用并发的趋势(见文章[2]),重读SCIP是很有意义的。 SCIP分五章:构造过程抽象,构造数据抽象,模块化、对象和状态(涉及并发),源语言抽象,寄存器机器里的计算(编译器如何工作) 环境 OS
Log模块资料 http://www.cnblogs.com/yyds/p/6901864.html python语言的高级特性 函数式编程(FunctionalProgramming) 基于lambda演算的一种编程方式 程序中中有函数 函数可以作为参数,同样可以作为返回值 纯函数式编程语言:LISP,Haskell、 python函数式编程只是借鉴函数式编程的一些特点,可以理解成一半函数式一半python 需要学习 高阶函数 返回函数 匿名函数 装饰器 偏函数 lambda表达式 函数:最大程度复用代码
每个人都以为,Python 将会连续第二次获得 TIOBE 的年度编程语言的称号。但这一次偏偏是优秀的老牌编程语言 C ,它凭藉 2.4% 的年增长率荣登榜首获得了这个称号。紧随其后的是 C#(+2.1%)、Python(+1.4%)和 Swift(+0.6%)。
生成器和列表生成式的区别仅在于最外层的 [] 和 () 。[] 表示列表生成式,() 表示生成器。
Clojure 是JVM上的一个LISP语言变种,它比Common Lisp更强调纯函数式编程,但提供了一些STM工具以处理它所引入的状态问题。
http://www.defmacro.org/ramblings/lisp.html
我的旋风式简介会讲C、C++、Lisp、Java、Perl 、Ruby (我就是喜欢) 和 Python,把 Python 加进来是因为 —— 好吧,你看了就知道了。
A.1. 第一个计算机语言:Fortran Fortran I 诞生于 1957 年,由 IBM 设计,是世界上第一个真正的计算机语言。 Fortran I 运行于 IBM 704 计算机上。 Fortran I 支持:变量(变量名最多 6 个字符)、If 和 do 语句、格式化 IO。不支持:数据类型声明、单独编译子程序 Fortran II 发布于 1958 年,主要对 Fortran I 的编译器做了优化,并支持了单独编译的子程序。 Fortran IV 发布于 1962 年,并在 1966
在 Python 操作 MongoDB 数据库(上) 这篇文章中,我们学洗了 MongoDB 数据库的安装运行和使用,以及用 Python 连接 MongoDB。我们建立的 books 引用的是一个 MongoDB 的集合对象,既然是对象,那么就有一些方法供我们使用,今天我们就来学习一下。
GC、Lambda、 Java8的流(Stream)概念其实都来自函数式编程。 他因何有如此魔力呢?
Java8新特征Lambda表达式,读作λ表达式,它实质属于函数式编程的概念,要理解函数式编程的产生目的,就要先理解匿名内部类。lambda写的好可以极大的减少代码冗余,同时可读性也好过冗长的内部类,匿名类。
Babel is a JavaScript compiler!这是Babel官方对于babel的定义。身为前端工程师,因此有必要了解编译原理,幸运的是,“The Super Tiny Compiler”开源项目利用JavaScript写了一个简单的编译器。
现任 Emacs 维护者 Eli Zaretskii 在 9 月 30 号通过邮件列表[1]宣布 emacs-28 分支已经创建出,这意味着 28 版本的大功能已经 ready,不会再有大改动,但距离正式发版还要一段时间,根据之前的发版记录[2],大概率会在 22 年上半年 release。
1900年,Hilbert 提出了数学界悬而未决的10大问题,后续陆续添加成了23个问题,被称为著名的 Hilbert 23 Problem。针对其中第2个决定数学基础的问题——算术公理之相容性,年轻的哥德尔提出了哥德尔不完备定理,解决了这个问题形式化之后的前两点,即数学是完备的吗?数学是相容的吗?哥德尔用两条定理给出了否定的回答。
本章节将介绍有关计算过程(computational process)的知识。计算过程是存在于计算机里的一类抽象事物。在其演化过程中,这些过程会去操作一些被称为数据(data)的抽象事物。而人们则会创造程序(programs)来指导这些过程。在正常工作的计算机里,一个计算过程将精密而准确地执行相应的程序。
Python 支持 lambda 匿名函数,其扩展的 BNF 表示法是lambda_expr ::= "lambda" [parameter_list] ":" expression,也就是lambda 参数序列:表达式。
摘自维基百科,原链接为:http://zh.wikipedia.org/zh/LISP
源 | Reddit 译 | OSC - 周其 我时不时会发现一种编程语言的不同用法它有时候会改变我对编程的看法啊。这篇文章中,我想分享一下让我惊讶的发现。这不是类似于高呼“函数式编程会改变世界!”博客文章。我敢打赌,大多数读者都没有听说过下面的大多数语言和范例,所以你应该也会被这些新概念吸引。 注意:我对以下大多数语言的使用经验都很少,但是我发现他们背后的想法非常吸引人,但对其没有专业知识,所以有任何错误请指出并指导更正。如果您也有新的范例和想法,欢迎分享。 默认并发 示例语言:ANI,
作为IT专业人士,我们总是在寻找下一个主流趋势,否则我们的结局就会像这些编程语言一样。 文|“IT投资客”记者 女T客 如果你已经在IT界呆了超过五年,那么你就会看到编程语言来了又去。新语言进入市场(你好,Swift),其他语言渐行渐远(MUMPS,我们都很了解你)。 虽然现今IT世界大多数的编程语言都是C++、Java和C#等,但是我相信我们中的许多人在其他语言中也有经验。为了充分理解今天开发工具的优缺点,回顾一下这些来了又去的语言是很有用的。 好吧,我承认,它也是很有趣的。 首先,我要说的是这里列出的1
今天我们一起动手写一个编译器,但不是我们平常所说的编译器,而是一个超级超级小的编译器,小到如果你把本文件的所有注释都删了,真正的代码也就200多行。
Python是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LISP。Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。
1997 年的春天,国际象棋冠军 加里·卡斯帕罗夫(Garry Kasparov)输给了计算机程序“深蓝”。对于机器智能来说,这是历史上的关键时刻。对于某些人来说,这是一次生存危机,是对人类智慧至上的挑战。但是,对于世界上的技术专家来说,这是另一种意味上的里程碑,是 人工智能(artificial intelligence)(AI)领域的一次飞跃。这表明,想要真正的智慧机器诞生,或许不是太过于疯狂的梦想。
我们来继续肝伯克利CS61A的scheme project,这是本project的第四篇,如果漏掉了之前的内容,可以去翻一下历史记录。
2020的春季中小学受疫情影响,一直还没有开学,孩子宅在家说想做一个学校要求的研究项目,我就说你做一个怎么样通过编程来学习数学的小项目吧,用最简单的计算机语言来解决小学数学问题。虽然我是一个老码农,但一直不赞成教小学生学编程,觉得这是揠苗助长,小学生不应该过早的固化逻辑思维而放松形象思维,某些少儿编程机构居然教学C++游戏编程,我觉得这真是在摧残祖国的花朵。现在孩子宅在家 ,想让他学点什么好几次冒出学编程的想法都被自己给否决了,直到我看到数学老师要求同学们整理小学阶段的数学公式、概念,我看到有一个小朋友居然画出了平面几何体的“继承”关系,让我眼前一亮:这种抽象关系如果用程序来表示不正合适吗?明白抽象方法了,那么学编程问题就不大了。于是我在想应该教孩子学什么语言比较好:LOGO、VB还是炙手可热的Python?虽然我非常熟悉C#,但需要了解许多背景知识,还需要安装一个很大的框架环境,显然C#不适合小学生学习,Java也是。LOGO是老牌的儿童编程语言了,操控一个小海龟来画图很形象,VB入门简单,但要一个小学生熟悉它的集成开发环境要求还是高了点,选Python无非就是因为AI应用火它就火,除此之外我找不出它适合儿童使用的理由。
【导语】“适者生存”的自然法则在应用竞争激烈的编程语言界同样适用,而在数百种编程语言中,相对而言,哪些最具影响力?哪些才是开发者们最值得关注的?
我是一名热衷于函数式编程的Clojurian(Clojure粉),网络ID是lambeta(λβ),读作/‘læmeitə/,个人的博客网站是https://lambeta.com。俗话说,工欲善其事必先利其器,完善开发工具与我而言是一件愉快的事情,所以想把经验集结成文字,便有了这篇文章。这篇文章不会介绍太多花式或有深度的emacs配置,更多是摸索学习的过程,其中充满了乐趣。
最近跟一个朋友聊起编程语言的一些特性,他有个言论让我略有所思:“不能REPL的都是渣”。当然这个观点有点偏激,但我们可以探究一下,我们常用的编程语言里面,哪些支持REPL,哪些不支持,还有REPL的一些概况。 在一般的脚本语言中,有REPL是常态, 因为REPL非常的方便。 编程术语 REPL (Read-Eval-Print Loop) 中文的话有翻译成“交互式解释器”或“交互式编程环境”的。 不过我觉得不用翻译,直接REPL就好了,这样的术语,翻译成中文后,读者更难理解。下面是对 REPL 的解
EDA是个很大的话题,本系列只针对其中一小部分,数字电路的仿真,叙述一点概念性的东西,并不会过于深入,这方面的内容实则是无底洞。本系列并不是真的要做EDA,按照SICP里的相关内容,采用Lisp的方言Scheme。再者,Lisp并不是只有函数式一种编程范式,真正做EDA,仿真的核心部分为了运行效率可以采用C/C++编写,编程的思路也可以借鉴。
我们继续来肝伯克利CS61A,今天我们看的是作业8。这一次的作业有些特殊,不再是基于Python,而是一门全新的语言Lisp。
作者简介:张磊,思科原厂8年多technical consulting engineer,精通思科数据中心/园区网产品及技术;精通SAN网络架构及产品;熟悉广域网产品及技术。
前言:笔者之前是使用富文本编辑器,现在转用markdown编辑器,但是在写文章的时候发现即使博客主页设置用上了代码高亮皮肤,但还是在插入代码段的时候不起作用,查阅了他人的博客才发现要加上key描述 类似这样,比如你写c++代码,你要在’’'之后加上c++语言的key:cpp,这样就可以实现你的代码高亮了,下面表格附上各类语言的关键字key
最近在看storm的源码,就学习分享下clojure语法。 阅读目录: 概述 变量 运算符 流程控制 总结 概述 clojure是一种运行在JVM上的Lisp方言,属于函数式编程范式,它和java可以方便的互相调用,这样开发的程序可以很好的结合java和clojure的优点(storm),这跟Net中C#和F#的角色一样。 安装java1.6以上的JDK,下载地址。 下载clojure的环境 包,下载地址。 解压后用命令行进入到clojure目录下,输入下面命令进入REPL命令行交互界面: jav
领取专属 10元无门槛券
手把手带您无忧上云