Coding Poet, Coding Science

Keep Stupid, Keep Hungry


  • Archives

  • Categories

  • Tags

  • Resources

  • About

  • Search
  • 简体中文
  • English (US)
close
Coding Poet, Coding Science

Scala编程概要(一):文档,注释,面向对象

Posted on 2015-07-01 | Post modified 2016-12-14 | In 编程语言 |

虽然每次都是从头开始看Java与Scala的初级的教程,但是每次看的时候重点不一样,对于语言的理解也不一样。这一次的时候,强调的是,我们如何从初学者成为能够熟练运用一门语言的开发者?为了做到这一点,我们需要付出哪些努力?

现在的看法是这样的。第一,我们应该按照写书的方式写Scala的程序。所以,如何从应用程序中生成文档,以及介绍这个文档是最基本的。所以,在初学者的第一章的时候就应该学习使用scaladoc来写文档,以便能够注释出来自己所写的东西,表达出来自己所写的东西是什么样的意思。第二,或许是对于某些语言,使用REPL环境。但是学习一个语言可能更关键的是学习它适应的设计模式,与常见的实践,就像写学术文档一样写程序。

Read more »
Coding Poet, Coding Science

用自举理解人工智能与学术研究

Posted on 2015-06-29 | Post modified 2016-12-14 | In 人工智能 |

最近人工智能在公众世界中变得很热。在各种技术应用铺天盖地的时候,肯定也有不少人在思考人工智能与人的思维的关系。在这里,我们首先关注的可能是这个很自然的问题:人工智能,或者干脆说智能机器,机器人,会不会取代人类。这里的取代,并不是说能够取代人的平常的工作,而是机器具有自主学习、自主决策的能力。完全不再需要人的干预。

本文的标题的前一半,就来尝试这个问题。至于后一半“理解学术研究”,比较具体。因为一直以来,科学研究活动都被视为是具有极高智力挑战的活动。同时,实际中的学术研究还是比较累的。单单做理论的工作,似乎很难合“学术共同体”的口味;而实践的工作,又上不了科学理论的台面。然而,科学活动的量级似乎越来越重。除了少数学科,如纯粹数学,研究方式变化没有那么大之外,几乎所有的科学都面临着数据处理的新的问题。“数据科学”,是否会成为所有的科学研究的基础?花费的代价越来越高的数值计算与模拟,是否越来越占据更大的份量?计算机在科学研究中的地位究竟是怎样的?

Read more »
Coding Poet, Coding Science

博客文章平台指南

Posted on 2015-06-21 | Post modified 2017-05-17 | In 出版 , 博客 |

参考Eric Walkingshaw的主页、Ian Ross的主页以及yogsototh的支持多语言的主页的设计以决定该怎样布局个人的主页。

Hakyll下面的个人主页项目,似乎有把个人主页分成程序和资源两个部分的倾向。进一步地,site.hs,以及编译器属于程序,CSS、Markdown与HTML模板属于“资源”。那么我们会问,制作一个个人主页必须学会编程,特别是Haskell编程么?似乎前台的工作就已经足够让人烦了:个人主页中的CSS、HTML页面布局的设计就变得非常麻烦。鉴于所使用的后台对于个人主页没有任何直接的影响,我们不妨把构建网站的程序从网站代码当中分离出来。

Read more »
Coding Poet, Coding Science

Agda语言介绍

Posted on 2015-06-08 | Post modified 2016-12-14 | In 编程语言 |

Agda语言是使用了依存类型的函数式编程语言。最初发表于2007年,是在Ulf Norell的博士论文里面。目前实践当中,函数式语言中使用依存类型还不多。但是依存类型在可以预见的未来内会继续发展。目前发展依存类型的函数式语言的动力在于形式证明。目前的版本是Agda2,基本上是重写了。Agda2不像Coq的地方在于,Agda没有对于tactics与函数式proofs的支持。Agda 2语言有对于数据类型、模式匹配、记录、模块、Haskell语法的支持。Agda 2是基于Zhaohui Luo的UTT类型理论,与Martin-L"of类型理论(也就是直觉类型论)有一点的不同。

Agda的值得提及的特性有归纳类型定义(这在Coq中也存在)、依存类型的模式匹配机制(允许在依存类型系统下使用模式匹配)、元变量(允许变量在运行的时候被细化和修改,因此支持程序在运行的时候增量构造,部分代替了tactics在Coq中的作用)、证明自动化(通过反射实现,以及允许程序在5s内枚举可能的证明),以及终止检查(因为Agda是一个完全的语言,能够保证每个程序都必然终止,以此保证语言的一致性,借助于Foetus termination checker实现终止检查)。

Read more »
Coding Poet, Coding Science

Erlang编程语言中的并发小测试

Posted on 2015-06-06 | Post modified 2016-12-14 | In 编程语言 |

已经接触了很多的编程语言。大概分成Lisp一系的、Haskell一系的,Erlang一系的、JVM一系的、C#一系的,以及OCaml一系的语言。但是自己感觉,分类上,可能还是按照类型的动态与静态,是否是纯函数式的,是否支持面向对象特性,是否支持自动类型推断(其实现代编程语言大概都支持了),求值的时候是否是惰性求值的,以及对于并发和并行的支持等。函数式语言的特性大概就这么看。其它的方面,说是语言的包管理系统、编译环境与版本控制。如果是在虚拟机上,那么对虚拟机上的原生语言的支持等。

看到这么多编程语言,自己感觉很多的设计模式都是内置在函数式语言中的,比如自己设想的在改变一个变量的时候,同时产生一种日志记录,已经在Clojure中完美实现。其它的语言特性也很多。

Erlang上面还建立有Eixir编程语言。语言更进一步。Erlang是运行在EVM虚拟机上的。有个时候,一些并发处理的机制与面向对象其实是不谋而合的。由于设计模式已经融入其中,自己感觉,设计模式是一种比较高级的抽象了。

Read more »
1…345…11
Istyasna

Istyasna

GO FORTH now and create masterpieces of the publishing art!

55 posts
36 categories
189 tags
RSS
GitHub Aliyun
Creative Commons
Links
  • Homepage
  • Hainan University
  • Qi Qi
© 2016 - 2017 Istyasna
Powered by Hexo
Theme - NexT.Mist