avatar
c*h
1
前一段进了那个 Linksys E2000 router, 这个老的router ASUS WL-520GU 本来打算
就扔到
盒子里了,从网上发现有人说可以装上ddwrt 和optware, 外面加个usb 硬盘, 就是一
个NAS,还
可以装上transmission, 就是一个只有4w 的NAS 和下载机了.周4晚上开始折腾,
到现在已经
稳定下载48小时了,下载速度大概是 200-400 KBs.
ASUS WL-520 只有4M rom 和16M RAM, 所以还要在外挂的硬盘上分配一个swap 文件,
这样
transmission才能运行的比较稳定。
基本上能装dd-wrt, 至少有一个usb port的router 都可以改装, 嗬嗬,很绿色阿.
avatar
g*t
2
from github robpike
robpike写了个apply,filter,etc然后加上了如下的话:
I wanted to see how hard it was to implement this sort of thing in Go, with
as nice an API as I could manage. It wasn't hard.
Having written it a couple of years ago, I haven't had occasion to use it
once. Instead, I just use "for" loops.
You shouldn't use it either.
// Package filter contains utility functions for filtering slices through
the
// distributed application of a filter function.
//
// The package is an experiment to see how easy it is to write such things
// in Go. It is easy, but for loops are just as easy and more efficient.
//
// You should not use this package.
//
avatar
b*u
3
Good job!
avatar
h*i
4
He's not getting the point. It's not about how hard to implement this. It's
about moving up the ladder of abstraction.
It's not even hard to implement anything in assembly. But why would you want
to?
"The field is advanced one funeral at a time".
Applies to any field.
For example, Go is simply reactionary, archaic, and going against the force
of nature in computer science.

with

【在 g****t 的大作中提到】
: from github robpike
: robpike写了个apply,filter,etc然后加上了如下的话:
: I wanted to see how hard it was to implement this sort of thing in Go, with
: as nice an API as I could manage. It wasn't hard.
: Having written it a couple of years ago, I haven't had occasion to use it
: once. Instead, I just use "for" loops.
: You shouldn't use it either.
: // Package filter contains utility functions for filtering slices through
: the
: // distributed application of a filter function.

avatar
p*m
5
go get a $5 pbo. router is too busy to do all those
avatar
g*t
6
这些道理他们都懂。Ken Thompson 图灵奖讲话第一个例子就是C的固定点。一个printf
出自身的程序。
这些话就是街头卖艺...


: He's not getting the point. It's not about how hard to implement
this.
It's

: about moving up the ladder of abstraction.

: It's not even hard to implement anything in assembly. But why
would
you want

: to?

: "The field is advanced one funeral at a time".

: Applies to any field.

: For example, Go is simply reactionary, archaic, and going
against the
force

: of nature in computer science.

: with



【在 h*i 的大作中提到】
: He's not getting the point. It's not about how hard to implement this. It's
: about moving up the ladder of abstraction.
: It's not even hard to implement anything in assembly. But why would you want
: to?
: "The field is advanced one funeral at a time".
: Applies to any field.
: For example, Go is simply reactionary, archaic, and going against the force
: of nature in computer science.
:
: with

avatar
m*r
7
海老师,能不能用大白话说说下面这个段子是怎么回事? 别说那么高深的,就说3是怎
么和2乘, 又和1乘的。 这个东西叫 continuation_passing style, R里面的。
这个段子摘自 by thomas mailund
cp_factorial if (n == 1) {
continuation(1)
} else {
new_continuation continuation(result * n)
}
cp_factorial(n - 1, new_continuation)
}
}

cp_factorial(3) .
说说我的理解, 第一步是cp_factorial(2, new_continuation), 然后变成cp_
factorial(2, result*3) 因为第一步continuation = identity,
然后第二步? 我就不会了。 是不是 cp_factorial(1 , result*3*2) ??

s
want
force

【在 h*i 的大作中提到】
: He's not getting the point. It's not about how hard to implement this. It's
: about moving up the ladder of abstraction.
: It's not even hard to implement anything in assembly. But why would you want
: to?
: "The field is advanced one funeral at a time".
: Applies to any field.
: For example, Go is simply reactionary, archaic, and going against the force
: of nature in computer science.
:
: with

avatar
g*t
8
目测你的理解是对的。这段代码用了CPS的办法。
但并不是谁这就是CPS的全部。
我的理解CPS的根源是用function call来实现loop, goto灯的一个技术。最早是turing
一个论文出现的。我以前贴过。


: 海老师,能不能用大白话说说下面这个段子是怎么回事? 别说那么高深的,就
说3是怎

: 么和2乘, 又和1乘的。 这个东西叫 continuation_passing style, R里面的。

: 这个段子摘自 by thomas mailund

: cp_factorial
: if (n == 1) {

: continuation(1)

: } else {

: new_continuation
: continuation(result * n)

: }



【在 m******r 的大作中提到】
: 海老师,能不能用大白话说说下面这个段子是怎么回事? 别说那么高深的,就说3是怎
: 么和2乘, 又和1乘的。 这个东西叫 continuation_passing style, R里面的。
: 这个段子摘自 by thomas mailund
: cp_factorial : if (n == 1) {
: continuation(1)
: } else {
: new_continuation : continuation(result * n)
: }

avatar
m*r
9
死了三千六百五二个脑细胞,总算想明白, 该过程如下:
cp_factorial(3)
cp_factorial(2, result * 3 )
cp_factorial(1, result * 2 * 3 )
1 * 2 * 3
其实就是表达式在里面传递, 这表达式如果不打出来给人看, 还真是别扭。
这种用法确实有点精妙之处, 思路和传统递归不一样, 传统思路是跟踪数字变化,这
个段子是跟踪表达式逐渐变化, 不知海老师有什么方法能把上面几行给打出来。
avatar
g*t
10
恭喜你。你自己搞定了麦卡锡lisp文章里面的一个段落。
scheme的作者还给这个trick起了个牛X的名字,好像又写了个名著。
这个思路是lift up到了多一个参数的函数。和数学里的传统continuation技术是一样
的。谁给的这个名字“continuation pass style”似乎已不可考。但给这个名字的,
我觉得一定是algorithm的大能。
=====================================================
例如x+2=3你会求解。
但是
x**2 + x + 2 =3 ....(1)
如何求解?
牛顿的办法就是引入一个参数p。
let y = x+p
replace y into (1), omit the higher order terms of p.
Then let z = y +q
....
===============================
In modern DNN system, a number 1 is lifted up to 1+p.
That is the root of the autograd algorithm.
https://blog.demofox.org/2014/12/30/dual-numbers-automatic-differentiation/

【在 m******r 的大作中提到】
: 死了三千六百五二个脑细胞,总算想明白, 该过程如下:
: cp_factorial(3)
: cp_factorial(2, result * 3 )
: cp_factorial(1, result * 2 * 3 )
: 1 * 2 * 3
: 其实就是表达式在里面传递, 这表达式如果不打出来给人看, 还真是别扭。
: 这种用法确实有点精妙之处, 思路和传统递归不一样, 传统思路是跟踪数字变化,这
: 个段子是跟踪表达式逐渐变化, 不知海老师有什么方法能把上面几行给打出来。

avatar
g*t
11
https://people.cs.umass.edu/~emery/classes/cmpsci691st/readings/PL/LISP.pdf
enjoy!
function callings == flowchart control loop

【在 g****t 的大作中提到】
: 恭喜你。你自己搞定了麦卡锡lisp文章里面的一个段落。
: scheme的作者还给这个trick起了个牛X的名字,好像又写了个名著。
: 这个思路是lift up到了多一个参数的函数。和数学里的传统continuation技术是一样
: 的。谁给的这个名字“continuation pass style”似乎已不可考。但给这个名字的,
: 我觉得一定是algorithm的大能。
: =====================================================
: 例如x+2=3你会求解。
: 但是
: x**2 + x + 2 =3 ....(1)
: 如何求解?

avatar
w*g
12
有没有觉得结构化编程语言是一个巨大的历史进步?各种脑子不好的人也都可以写程序
了。

:死了三千六百五二个脑细胞,总算想明白, 该过程如下:
:cp_factorial(3)
avatar
g*t
13
高见,对单个程序任务来讲。结构化编程优势很大。降低了写程序的门槛。
但有个副作用。结构化编程可以实现任意goto也要死掉很多脑细胞才能完整的证明。这
个事实被自然地忽略掉了。


: 有没有觉得结构化编程语言是一个巨大的历史进步?各种脑子不好的人也都可以
写程序

: 了。

: :死了三千六百五二个脑细胞,总算想明白, 该过程如下:

: :cp_factorial(3)



【在 w***g 的大作中提到】
: 有没有觉得结构化编程语言是一个巨大的历史进步?各种脑子不好的人也都可以写程序
: 了。
:
: :死了三千六百五二个脑细胞,总算想明白, 该过程如下:
: :cp_factorial(3)

avatar
m*r
14
多谢楼上鼓励。 七八行的小东西我想了两天, 一开始还误以为continuation是R里面
的特殊函数 到文档里找了半天。 幸亏不是干这行的 不然死的很难看。
avatar
g*t
15
NI HEN NIU
NI MEI YOU FANG QI
ZHE GE HEN NAN ZI JI NONG QING CHU

【在 m******r 的大作中提到】
: 多谢楼上鼓励。 七八行的小东西我想了两天, 一开始还误以为continuation是R里面
: 的特殊函数 到文档里找了半天。 幸亏不是干这行的 不然死的很难看。

avatar
h*i
16
CPS is not a high level abstraction. It's a trick for program transformation
, often used as an intermediate representation to implement something
difficult without having to extend the base language.
For example, in Clojure, people have used similar tricks to implement
asynchronous primitives (like those in golang) as a library (e.g. core.async
), or to implement Bayesian probabilistic programming primitives (e.g.
Anglican).
These tricks are possible in Clojure because it is a Lisp, so you can use
macros to implement them without having to extend the language itself.
These things are not what I talk about regarding high level abstraction.
Map, filter, etc are what I actually refer to. These let you move away from
how things are implemented, and think in thoughts that are closer to how a
lay person (non programmers, basically) think about things.
With these high level abstraction, you have to think in logic steps, and
each step does one thing only. Whereas a for-loop, you are not think in
logical steps, you are simulating a von-neumann computer in your head, that'
s
why people have hard time learning programming. As soon as for-loop is
introduced, half of the class will drop off.

【在 m******r 的大作中提到】
: 海老师,能不能用大白话说说下面这个段子是怎么回事? 别说那么高深的,就说3是怎
: 么和2乘, 又和1乘的。 这个东西叫 continuation_passing style, R里面的。
: 这个段子摘自 by thomas mailund
: cp_factorial : if (n == 1) {
: continuation(1)
: } else {
: new_continuation : continuation(result * n)
: }

avatar
h*i
17
I don't think they get it. Most people here don't get it either.
Because it's hard to imagine a time when you have not learned programming.
People lack the ability to introspect a past self.

printf

【在 g****t 的大作中提到】
: 这些道理他们都懂。Ken Thompson 图灵奖讲话第一个例子就是C的固定点。一个printf
: 出自身的程序。
: 这些话就是街头卖艺...
:
:
: He's not getting the point. It's not about how hard to implement
: this.
: It's
:
: about moving up the ladder of abstraction.
:
: It's not even hard to implement anything in assembly. But why
: would

avatar
n*7
18
我看了一下这个code,确实有点绕
不过我觉得不是这个概念多复杂,而是因为人脑的memory非常有限,需要跟踪的量一多
就oom了
这段code的问题在这里
new_continuation continuation(result * n)
}
又是result 又是new_continuation的,
这两个东西现在没用,result本身又是个有意义的词
一下把人绕晕了
其实把这个东西当做匿名函数放到调用里面就好多了
我把ifelse也放一起了,你看是不是容易理解多了?
cp_factorial ifelse(n == 1, continuation(1), cp_factorial(n - 1, function(x)
continuation(x * n)))
另外一个绕的地方是function composition
执行过程写出来就是
cp_factorial(2, function(x) identity(x * 3))
cp_factorial(1, function(x) identity((x * 2) * 3))
identity((1 * 2) * 3)


: 海老师,能不能用大白话说说下面这个段子是怎么回事? 别说那么高深的,就
说3是怎

: 么和2乘, 又和1乘的。 这个东西叫 continuation_passing style, R里面的。

: 这个段子摘自 by thomas mailund

: cp_factorial
: if (n == 1) {

: continuation(1)

: } else {

: new_continuation
: continuation(result * n)

: }



【在 m******r 的大作中提到】
: 多谢楼上鼓励。 七八行的小东西我想了两天, 一开始还误以为continuation是R里面
: 的特殊函数 到文档里找了半天。 幸亏不是干这行的 不然死的很难看。

avatar
m*r
19
thanks for helping. Your code is working !
祝狗年顺利!

【在 n******7 的大作中提到】
: 我看了一下这个code,确实有点绕
: 不过我觉得不是这个概念多复杂,而是因为人脑的memory非常有限,需要跟踪的量一多
: 就oom了
: 这段code的问题在这里
: new_continuation : continuation(result * n)
: }
: 又是result 又是new_continuation的,
: 这两个东西现在没用,result本身又是个有意义的词
: 一下把人绕晕了

avatar
m*r
20
大师高屋建瓴, 一针见血, 虽然我只想知道3为什么能和2乘,又和1乘。 从来不说具
体数字, 真乃大师风范。
这个冯诺依曼是我前导师的导师的...导师。控制论的创始人,不知道是造导弹的还是
原子弹的。 德国人真不是盖的。

transformation
async

【在 h*i 的大作中提到】
: CPS is not a high level abstraction. It's a trick for program transformation
: , often used as an intermediate representation to implement something
: difficult without having to extend the base language.
: For example, in Clojure, people have used similar tricks to implement
: asynchronous primitives (like those in golang) as a library (e.g. core.async
: ), or to implement Bayesian probabilistic programming primitives (e.g.
: Anglican).
: These tricks are possible in Clojure because it is a Lisp, so you can use
: macros to implement them without having to extend the language itself.
: These things are not what I talk about regarding high level abstraction.

avatar
m*r
21
还请楼上几位大师顺手把这个题目看一看?
http://www.mitbbs.com/article_t/Programming/31519957.html
这个题目,currying, 和阶乘题目是摘自同一本书同一章, thomas
里面的思想, haskell想出来的,是把多元函数f(x, y, z)变成复合函数
function(x) function(y) function(z) f(x,y,z)
思想是优美的,可我始终参不透R代码到底是怎么实现的。 我很怀疑和R里面do.call这
个函数某些性质有关。
祝大家狗年升官发财活出个人模狗样儿 !
avatar
g*t
22
冯诺伊曼不是控制论的创始人。控制论的创始人是维诺。他有两本自传我在国内读过。
此人十几岁就拿phd了。字里行间对培养他的他老爹深恶痛绝。另外如果我没记错冯诺
伊曼是匈牙利人...


: 大师高屋建瓴, 一针见血, 虽然我只想知道3为什么能和2乘,又和1乘
。 从来
不说具

: 体数字, 真乃大师风范。

: 这个冯诺依曼是我前导师的导师的...导师。控制论的创始人,不知道是
造导弹
的还是

: 原子弹的。 德国人真不是盖的。

: transformation

: async



【在 m******r 的大作中提到】
: 还请楼上几位大师顺手把这个题目看一看?
: http://www.mitbbs.com/article_t/Programming/31519957.html
: 这个题目,currying, 和阶乘题目是摘自同一本书同一章, thomas
: 里面的思想, haskell想出来的,是把多元函数f(x, y, z)变成复合函数
: function(x) function(y) function(z) f(x,y,z)
: 思想是优美的,可我始终参不透R代码到底是怎么实现的。 我很怀疑和R里面do.call这
: 个函数某些性质有关。
: 祝大家狗年升官发财活出个人模狗样儿 !

avatar
g*t
23
函数调用最后都是堆栈实现的。


: 还请楼上几位大师顺手把这个题目看一看?

: http://www.mitbbs.com/article_t/Programming/31519957.html

: 这个题目,currying, 和阶乘题目是摘自同一本书同一章, thomas 。

: 里面的思想, haskell想出来的,是把多元函数f(x, y, z)变成复合函数

: function(x) function(y) function(z) f(x,y,z)

: 思想是优美的,可我始终参不透R代码到底是怎么实现的。 我很怀疑和R
里面do.
call这

: 个函数某些性质有关。

: 祝大家狗年升官发财活出个人模狗样儿 !



【在 m******r 的大作中提到】
: 还请楼上几位大师顺手把这个题目看一看?
: http://www.mitbbs.com/article_t/Programming/31519957.html
: 这个题目,currying, 和阶乘题目是摘自同一本书同一章, thomas
: 里面的思想, haskell想出来的,是把多元函数f(x, y, z)变成复合函数
: function(x) function(y) function(z) f(x,y,z)
: 思想是优美的,可我始终参不透R代码到底是怎么实现的。 我很怀疑和R里面do.call这
: 个函数某些性质有关。
: 祝大家狗年升官发财活出个人模狗样儿 !

avatar
m*r
24
是的,我其实犹豫了一下, 好像还攀不了冯诺依曼的高枝。
我老板的老板是这个
https://en.wikipedia.org/wiki/George_Zames
他的老板是这个
https://en.wikipedia.org/wiki/Norbert_Wiener
搞的领域是这个
https://en.wikipedia.org/wiki/H-infinity_methods_in_control_theory
我肯定不让我儿子学这个

【在 g****t 的大作中提到】
: 冯诺伊曼不是控制论的创始人。控制论的创始人是维诺。他有两本自传我在国内读过。
: 此人十几岁就拿phd了。字里行间对培养他的他老爹深恶痛绝。另外如果我没记错冯诺
: 伊曼是匈牙利人...
:
:
: 大师高屋建瓴, 一针见血, 虽然我只想知道3为什么能和2乘,又和1乘
: 。 从来
: 不说具
:
: 体数字, 真乃大师风范。
:
: 这个冯诺依曼是我前导师的导师的...导师。控制论的创始人,不知道是
: 造导弹

avatar
g*t
25
Zames? 小增益定律 ?
哎,说起来都是泪。这东西连postdoc都找不着啊。谁碰谁死。
十几年前本站有个哥们和我聊过很多这方面东西,后来他回国做postdoc了。名校名师
,专业不好,又不想转码工.


: 是的,我其实犹豫了一下, 好像还攀不了冯诺依曼的高枝。

: 我老板的老板是这个

: https://en.wikipedia.org/wiki/George_Zames

: 他的老板是这个

: https://en.wikipedia.org/wiki/Norbert_Wiener

: 搞的领域是这个

: https://en.wikipedia.org/wiki/H-infinity_methods_in_control_
theory

: 我肯定不让我儿子学这个



【在 m******r 的大作中提到】
: 是的,我其实犹豫了一下, 好像还攀不了冯诺依曼的高枝。
: 我老板的老板是这个
: https://en.wikipedia.org/wiki/George_Zames
: 他的老板是这个
: https://en.wikipedia.org/wiki/Norbert_Wiener
: 搞的领域是这个
: https://en.wikipedia.org/wiki/H-infinity_methods_in_control_theory
: 我肯定不让我儿子学这个

avatar
g*t
26
刚看了下,这哥们在清华当assoc professor了。看来苦尽甘来,有能力的人总能成功.
.....


: Zames? 小增益定律 ?

: 哎,说起来都是泪。这东西连postdoc都找不着啊。谁碰谁死。

: 十几年前本站有个哥们和我聊过很多这方面东西,后来他回国做postdoc了。名
校名师

: ,专业不好,又不想转码工.

:

【在 g****t 的大作中提到】
: Zames? 小增益定律 ?
: 哎,说起来都是泪。这东西连postdoc都找不着啊。谁碰谁死。
: 十几年前本站有个哥们和我聊过很多这方面东西,后来他回国做postdoc了。名校名师
: ,专业不好,又不想转码工.
:
:
: 是的,我其实犹豫了一下, 好像还攀不了冯诺依曼的高枝。
:
: 我老板的老板是这个
:
: https://en.wikipedia.org/wiki/George_Zames
:
: 他的老板是这个
:
: https://en.wikipedia.org/wiki/Norbert_Wiener

avatar
s*k
27
应该是维纳,就是著名的维纳滤波创始人,火箭导弹这些大杀器的制导的基础解决理论
都源于此,直到遇到登月任务发现搞不定,于是kalman横空出世,当时NASA的人听了
kalman的思想惊为天人,靠着kalman的“抱着木盆划过大西洋”成功登月

【在 g****t 的大作中提到】
: 冯诺伊曼不是控制论的创始人。控制论的创始人是维诺。他有两本自传我在国内读过。
: 此人十几岁就拿phd了。字里行间对培养他的他老爹深恶痛绝。另外如果我没记错冯诺
: 伊曼是匈牙利人...
:
:
: 大师高屋建瓴, 一针见血, 虽然我只想知道3为什么能和2乘,又和1乘
: 。 从来
: 不说具
:
: 体数字, 真乃大师风范。
:
: 这个冯诺依曼是我前导师的导师的...导师。控制论的创始人,不知道是
: 造导弹

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。