• 函数式编程的两种路线

    Posted on: Sun, 08/26/2018 - 07:30 By: Huahai

    可能很多人没有意识到,函数式编程(FP)有两种非常不同的路线。

    一条路线,为类型疯狂。这条路线的语言以Haskell为代表。这种FP,一切以类型为
    中心,编程的主要任务,是要把类型搞对了,让编译器高兴,号称是“如果程序编译通
    过了,程序就是对的”。这条线来自学术界,有很长的历史,是FP的主流路线,有很多
    其他FP语言以此为模版。科班出身的同学们说到FP,说的就是这条路线的FP。可能他们
    上学的时候学过Haskell,甚至可能还给Haskell课当过助教,但是他们恨死了Haskell
    。所以这些同学们,是打死不信FP能实用的。

  • Backup Discourse with External PostgreSQL Server

    Posted on: Sun, 01/21/2018 - 05:58 By: Huahai

    Discourse is a modern forum software that is quite popular in the technology circle. One can install a Discourse server easily with the recommended method of using docker. All the services needed by the Discourse server, e.g. Postgresql and Redis, will be running inside a docker container, which is fine for a small installation. However, if one has already an external Postgresql server running, e.g.

  • FreeIPA in AWS EC2

    Posted on: Thu, 12/07/2017 - 23:34 By: Huahai

    Show how to install and configure freeIPA server and clients in AWS EC2 using Route53. Point out several important issues.

  • Ecobee3 installation with K wire

    Posted on: Fri, 12/01/2017 - 06:13 By: Huahai

    How to install Ecobee3 smart thermostat when one of the existing wire connection is labeled K on the old device? This is problematic because K wire does not appear in the Ecobee3's documentation, nor in the on screen menu. I found a solution: simply connect the K wire to Y1, then enable the G connection on Ecobee3 configuration screen.​

  • Data-Oriented Programming (DOP)

    Posted on: Sat, 12/03/2016 - 23:33 By: Huahai

    JSON is arguably the world's most popular human readable data format today.  It has largely replaced XML as the data exchange format on the Internet. One of the key reasons for the proliferation of JSON is its simplicity.  The data structure are very limited: only arrays, enclosed with []; and objects, enclosed with {}. That's it. It cannot be simpler.

    Apparently, this dead simple data format is enough to represent the vast landscape of data that JSON becomes the de-facto data format for Web services. Most Web APIs we use today speaks JSON. However, JSON is not native for most programming languages. It becomes a pain to convert to and back from JSON in programming languages.

  • 从变量说开来

    Posted on: Wed, 02/25/2015 - 22:07 By: Huahai

    数学的变量与计算机语言的变量不同。数学的变量更抽象,是真的变量。而计算机语言
    的变量是假的,其实还是属性,是某个内存地址或者寄存器的属性。

    一个非程序员A,第一次编程,看到变量,会很疑惑,比如我当年,“这是什么东西的
    的变量啊”, variable for what? 后来明白了,原来就是一个地址可以存不同的东西啊
    ,明白了。指针?这不是很明显么,就是地址啊,有什么难的?

    另一个非程序员B,第一次编程,看到变量,说,哦,我知道,数学上小学就学了的,
    变量就是数学上的变量啊,懂了。结果看到指针,panic了,数学上没有指针啊,
    到底什么是指针啊?

    人和人的思维方式不一样,从对数学的态度可以看出。有的人,比如冯诺伊曼,说“
    You don't need to *understand* mathematics, you just get used to it". 这种人
    就是上面的非程序员B。这些人成为数学家的话,一般会成为分析学家。中国培养出的
    职业数学家,大多是分析学家,比如张益唐之类,解决问题能力很强,一般不自己发明
    理论。

    另外一些人,比如Grothendieck,一定要把数学理解成某种结构才行,这种人成为数学
    家的话,会成为几何或者代数学家。这些人解决问题的能力不一定强,比如
    Grothendieck连57不是prime都不知道,但他发明了改变数学界的理论。这些人也是非
    程序员A。

    上述两种人可以用一个简单的测试来区分:给他一个玉米棒子,看他怎么啃。分析学家
    会啃得乱七八糟的,代数家会啃得一排排整整齐齐的。我有时在聚会时让大家做这个游
    戏,目前发现,中国人还是分析家居多。

Subscribe to Huahai's Blog