clojure
编程生涯的头12年,我成绩斐然,这归功于我的工作理念。不仅仅在工作努力,而且在业余时间学习新技术和新编程语言。对任何一个成功的,而且一直保持很成功的程序员来说,这是他必须经历的
Clojure是当今最主流的运算平台JVM,把函数式编程语言引入JVM也是很多人尝试的方向,Clojure就是其中之一。Clojure是一个在JVM平台运行的动态函数式编程语言,其语法解决于LISP语言,在JVM平台运行的时候,会被编译为JVM的字节码进行运算。Clojure保持了函数式语言的主要特点,例如状态保持,全套宏支持,持久久的数据结构等等,并且还能够非常方便的调用Java类库的API,和Java类库进行良好的整合
匆匆合上此书,不得不承认自己最学习一门新的语言有着很高的兴趣,这一点特别展现在结束一门语言的学习任务进入下一门的时候——兴奋与期待。 每一门语言都是由简至繁 这一点从附加的练习上可见一般. 这本书不是一本教会你如何写各种语言Hello World的书 当然也不是一本教你从入门到精通的书; 而是Paradigm. 这期间 接触到了七种不同语言的不同特性 Ruby Io Prolog…印象中名称这些不再是曾经听闻过的”名字” 而是亲身体验过的可以用来”实践”的Programming languages. 很多特性是让人惊讶的 如何去使用之解决一些问题则是作者教会我们的内容. 此书带来的最大的效果不是让我学会了Clojure或者Haskell 当然也没有完全帮助我理解了函数式编程的概念 事实上这也是不可能的. 在如此短的时间之内要学会一门语言 哪怕是熟悉这门语言的最常用的语法函数 没有那么简单. 虽然说大多数语言的语法之间的差别不是很大 特别是借鉴了C语言的语言 对于我这种在科班之中学习过C++的人而言 更是熟悉不过了. 但是具体到细节中却又有不同之处 这可以从书中细细体味. 这本书的模式相信不仅仅是对于语言的不同范式而适用的 也可以借鉴到其他的书籍写作中. 书是读完了 为我打开了一扇大门 前方的旅途就要自己探索了.
操作系统没有办法准确知道一个线程需要多少堆栈空间,所以它分配的数量大约是一兆字节。 解决这个问题的方法是实现一种机制,即利用有限数量的操作系统线程,并在其之上处理大量的 "逻辑线程"。 对于大多数语言来说,这意味着添加某种形式的async/await语法: 你在代码里放一个await,语言就知道它可以切换到处理另一个任务
一直以来我都不知道Clojure里面的正则表达式有两种语法 我一直以为只有一种 那就是Java的语法 因为Clojure根本没有自己的正则表达式引擎 而是完全依赖于host 如果是JVM就是Java的语法 如果是Javascript虚拟机 那就是Javascript的语法. 其实Clojure这里做一个小小的优化 那就是#语法 例子: 节省了几个反斜线 注意这不符合Java的语法 Java中\s \S都必须对反斜线进行转义 因为\s \S不是合法的转义字符. 当然要在Clojure中使用Java的正则表达式语法也是可以的 要加一个re-pattern 难怪我的正则表达式有时候有效有时候无效 一直以为是自己的写法有问题 原来是对象弄错了. 这个小的改进固然是方便了一些 但是仍然增加了学习成本 而且对于没有耐心看文档的人 很容易先入为主 很容易忽略这些细节 再加上这个改进并不是完全的改头换面 所以即使在#语法中使用Java的格式 也并不是任何时候都出错 这就更加增加了迷惑性 很可能一个人用了很久都没发现自己用的是错误的语法. 我也是刚刚才发现.