初识Erlang

最近读完了《Erlang程序设计》。 比较有感触的还是函数式语言程序设计。 (1) 变量不变。 在命令式编程的体系下,同一个函数,即便是在传入参数相同的情况下,在并行的环境的下很有可能产生不一样的输出。 变量不变给函数带来了确定性,这与数学中的函数确定性是一致的。这也就意味着函数式编程是无副作用的,因而极大的降低了并发编程的难度,我们平时提倡尽可能使用消息来通信而不是共享内存来通信其实也是这个道理。 Erlang通过CSP(Communicating Sequential Processes)来降低了并行程序的难度:执行次序的不确定性,共享变量引起的竞争条件。 某种程度上,其实也是一种actor模型吧。 (2)函数是First Class, 函数就是一切。 函数是First Class不仅仅是函数式语言才有的,但是这些非函数式的语言并没有把函数当作最重要的一个元素来看待。 在函数式语言中,函数作用机制非常强大,象程序的控制结构都可以用函数来实现。

CURLOPT_POSTFIELDSIZE Post

最近用libcurl向某商web服务器作登录校验踩了一坑。 事情的表象是这样的,在windows上没有问题,linux上投递过去的数据乱码。但是如果将curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data)中的data写死,即写成字符串常量,也是没有问题的。 开始以为一些参数和环境的问题,查了半天问题依旧,才怀疑到变量生存周期的问题,将data生命期拉长,就好了。