由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 讨论程序语言没什么意思,functional programming还是不错的
相关主题
java在图像分析领域,就是一个扶不起的阿斗问个double和long double的问题
请教C++class嵌入式编程问题
C++ Function Pointer Array 的问题瓶颈在哪儿?
wdong帮忙几个alphaGo的问题C++多线程和硬件的关系
Remove elements from multiple vectors in C++震惊:java 的矩阵操作比 c++ 快?
如果不用很高级的feature,C++/Scala是否值得一战?请大牛们帮忙看一段并行c++代码的效率问题
有什么比较适合engineer用的语言吗?functional programming?
[bssd]汇报一下Julia进展在图像算法领域,纯java没戏,用java和c++混合编程很恶心
相关话题的讨论汇总
话题: functional话题: python话题: 函数话题: gpus
进入Programming版参与讨论
1 (共1页)
d******c
发帖数: 2407
1
语言只是工具,选好用的,自己喜欢的就是了。
语言对人影响很大,反过来人的思维不进步的话,还是可能以旧方式用新语言
最近读 functional thinking这本书,还不错,例子举得很好。
http://nealford.com/books/functionalthinking.html
用R用久了之后有了体会,再看functional就比较清楚了。回到python就发现过于过程
化。
区别在哪里?
R的性能一般,你有动力尽量用vectorized的现成函数,而不是写loop。实际上现成函
数能解决很多问题。这就强迫你把问题分解了。
vectorized,意味着每个函数都是pipeline的一环,每个处理一遍。相比一个巨型for
loop里面多个环节在一起,可能性能上有一点点优势,就是只遍历一遍,但是太多东西
纠缠在一起。从修改,测试角度多个独立函数要容易的多。函数要独立,就需要尽量没
有副作用,没有全局变量,这样逻辑上是简单的,想起来也轻松。
OO是封装,把方法封装在自己内部,太多内部变量,这适合不同的人,不同的部门相互
合作。functional里函数是一级成员,独立存在,重用函数比重用类容易的多。
一个人写程序的话,看看java程序,太多boiler plate了,太多行完全是冗余信息,有
价值的就10%。如果再搞TDD,再对那些不可能错的地方做测试,这完全就是为了增加代
码行数...
n******7
发帖数: 12463
2
python也能functional style
map reduce filter lambda
关键还是写代码的人
R变量的scope是个大问题
还有自动转换等各种坑
d******c
发帖数: 2407
3
有个so的讨论帖,python还是不太适合,有几个关键点没有做到。我讨论的那些点主要
不是map reduce之类,实际我几乎没用过。
https://stackoverflow.com/questions/1017621/why-isnt-python-very-good-for-
functional-programming
r的scope没啥问题啊
自动转换注意就好了,js这方面不更恶心,注意就行。
d******c
发帖数: 2407
4
R的设计一开始就是vector,单个元素也是长度为1的vector,许多函数可以接受vector
输入,产生vector输出,这样你根本不需要filter
v > 1 就能产生一个logical vector,然后用它去index就行了
v[v>1]
named vector可以用来做lookup table,也是直接按name index,就能做到lookup转换。
R设计上聪明的东西是很多的,还有method dispatch等等。
R的package尤其是做的很好,用惯了之后再比较python的库,安装,依赖,自己做
package方面都强很多。
p****o
发帖数: 1340
5
最近看了写functional programming的书,感觉python真不算是这个范畴内的。基本的
思维方式就不同。这个map,reduce,filter就算函数编程,真是很误导人。

【在 n******7 的大作中提到】
: python也能functional style
: map reduce filter lambda
: 关键还是写代码的人
: R变量的scope是个大问题
: 还有自动转换等各种坑

n******7
发帖数: 12463
6
矢量化是优势,也是局限,不是所有问题都适合矢量化的
R对于它target的领域,比如做做统计分析,还是挺好的
但是局限太多,其实正是很多所谓聪明的东西阻碍了它被更广泛的应用
所谓成也XX,败也XX
不过这也没啥,该用的时候用就成了

vector
换。

【在 d******c 的大作中提到】
: R的设计一开始就是vector,单个元素也是长度为1的vector,许多函数可以接受vector
: 输入,产生vector输出,这样你根本不需要filter
: v > 1 就能产生一个logical vector,然后用它去index就行了
: v[v>1]
: named vector可以用来做lookup table,也是直接按name index,就能做到lookup转换。
: R设计上聪明的东西是很多的,还有method dispatch等等。
: R的package尤其是做的很好,用惯了之后再比较python的库,安装,依赖,自己做
: package方面都强很多。

n******7
发帖数: 12463
7
不要拘泥于定义,其实FP也没有一个明确的定义
FP好的地方,即使你不用所谓的FP语言,也可以借鉴
比如合适的时候用我说的那些代替for loop
比如没必要的时候尽量不产生side effect
这个python java c# coding都是很有好处的

【在 p****o 的大作中提到】
: 最近看了写functional programming的书,感觉python真不算是这个范畴内的。基本的
: 思维方式就不同。这个map,reduce,filter就算函数编程,真是很误导人。

m*****n
发帖数: 3575
8
list comprehension可以解决绝大部分你认为需要functional programming的运用
另外functional programming不是什么新鲜高级的概念,excel公式就是functional
programming
现代程序需要一阴一阳两大要素,数据和算法函数
函数式编程想抛弃数据,尤其是中间数据,本来就是痴心妄想
o**n
发帖数: 2130
9
我老早年用logo metapost的确觉得比较舒服,现在已经完全没感觉了
d******c
发帖数: 2407
10
函数式一大好处是可以比较容易引入并行。能够几乎不改变代码就支持并行就是新鲜高
级的东西,10年前有吗?各种语言和库都支持吗?天底下没有新鲜事,但是很多东西的
做法不同,context不同,效果完全不同。
你给我来个python list comprehension并行看看。GIL从根子上就限定了python,
python作者自己说了一大堆python不是函数式的话,实际上他就不怎么喜欢。看他的文
章,完全是因为别人要,别人加的,他是持保留态度的。
I have never considered Python to be heavily influenced by functional
languages, no matter what people say or think. I was much more familiar with
imperative languages such as C and Algol 68 and although I had made
functions first-class objects, I didn't view Python as a functional
programming language.
http://python-history.blogspot.com/2009/04/origins-of-pythons-functional-features.html
还有excel公式就是函数式编程,瞎扯也得有点限度。你公式的输入是基于地址引用的
,这能叫函数式?你是把公式就叫函数吗?
什么时候函数式抛弃数据了?

【在 m*****n 的大作中提到】
: list comprehension可以解决绝大部分你认为需要functional programming的运用
: 另外functional programming不是什么新鲜高级的概念,excel公式就是functional
: programming
: 现代程序需要一阴一阳两大要素,数据和算法函数
: 函数式编程想抛弃数据,尤其是中间数据,本来就是痴心妄想

相关主题
如果不用很高级的feature,C++/Scala是否值得一战?问个double和long double的问题
有什么比较适合engineer用的语言吗?嵌入式编程问题
[bssd]汇报一下Julia进展瓶颈在哪儿?
进入Programming版参与讨论
m*****n
发帖数: 3575
11
R那些apply骨子里是loop,并行得用snowball
另外AlphaGo用40台电脑,每台N核,用的是python不是R

with

【在 d******c 的大作中提到】
: 函数式一大好处是可以比较容易引入并行。能够几乎不改变代码就支持并行就是新鲜高
: 级的东西,10年前有吗?各种语言和库都支持吗?天底下没有新鲜事,但是很多东西的
: 做法不同,context不同,效果完全不同。
: 你给我来个python list comprehension并行看看。GIL从根子上就限定了python,
: python作者自己说了一大堆python不是函数式的话,实际上他就不怎么喜欢。看他的文
: 章,完全是因为别人要,别人加的,他是持保留态度的。
: I have never considered Python to be heavily influenced by functional
: languages, no matter what people say or think. I was much more familiar with
: imperative languages such as C and Algol 68 and although I had made
: functions first-class objects, I didn't view Python as a functional

d******c
发帖数: 2407
12
谁说apply是并行了?哪里来的snowball?正确的package是parallel,在snow基础上改
进的
python GIL是无法解决的本质问题,路边新闻不能证明任何东西,你道听途说,一知半
解的东西太多了。
我也没有鼓吹R高性能并行,你立稻草人靶子已经成了习惯,逻辑问题太多。

【在 m*****n 的大作中提到】
: R那些apply骨子里是loop,并行得用snowball
: 另外AlphaGo用40台电脑,每台N核,用的是python不是R
:
: with

m******r
发帖数: 1033
13
这贴写的太牛逼了 说到了核心. 难怪我晕菜了好多年。 R这个语言发明的应该在很早
以前 (S language),难道那个时代的人就琢磨出所谓functional programming了 ?
不知道functional programming, closure中文名字叫什么。
vectoriztion叫矢量化
d******c
发帖数: 2407
14
S是bell lab的人发明的,有很多lisp的元素。

【在 m******r 的大作中提到】
: 这贴写的太牛逼了 说到了核心. 难怪我晕菜了好多年。 R这个语言发明的应该在很早
: 以前 (S language),难道那个时代的人就琢磨出所谓functional programming了 ?
: 不知道functional programming, closure中文名字叫什么。
: vectoriztion叫矢量化

d***a
发帖数: 13752
15
Functional programming早就有了,和Turing machine一样古老,也可以说更古老,
都出现在有CS这个专业之前。:)
Functional programming有它的优点也有它的问题,主要的问题是程序运行的性能不好
(非常不好)。
closure的中文叫做闭包。

【在 m******r 的大作中提到】
: 这贴写的太牛逼了 说到了核心. 难怪我晕菜了好多年。 R这个语言发明的应该在很早
: 以前 (S language),难道那个时代的人就琢磨出所谓functional programming了 ?
: 不知道functional programming, closure中文名字叫什么。
: vectoriztion叫矢量化

m*****n
发帖数: 3575
16
https://www.quora.com/What-hardware-does-AlphaGo-run-on-Is-it-customized-
hardware-for-best-performance
AlphaGo uses a distributed system of 1920 CPUs and 280 GPUs. AlphaGo uses
Nvidia GPUs for the system. This is comparable to the TU Dresden's Taurus
supercomputer that uses 256 GPUs. In their research paper on Nature, they
talk about how AlphaGo can be run on a single computer, but would have only
a 23% win rate against the distributed system with multiple cores and GPUs.
So, you can view the system as being customized/optimized. The AI however,
as mentioned above, can run on proprietary hardware, but would have
calculation difficulties compared to the "beefed-up" machines. For the
highest probability of winning, the DeepMind team used the distributed
approach when they challenged Lee Sedol 9p.
如果用的是NVidia的显卡进行计算,铁定不是R在算。因为NVidia显卡只支持C和Python
两种语言。

【在 d******c 的大作中提到】
: 谁说apply是并行了?哪里来的snowball?正确的package是parallel,在snow基础上改
: 进的
: python GIL是无法解决的本质问题,路边新闻不能证明任何东西,你道听途说,一知半
: 解的东西太多了。
: 我也没有鼓吹R高性能并行,你立稻草人靶子已经成了习惯,逻辑问题太多。

g****t
发帖数: 31659
17
C 也是bell lab
卷积神经网也是


: S是bell lab的人发明的,有很多lisp的元素。



【在 d******c 的大作中提到】
: S是bell lab的人发明的,有很多lisp的元素。
a*****e
发帖数: 1700
18
Python list comprehension 可以并行啊,用 Numba 库:
http://numba.pydata.org/numba-doc/dev/reference/pysupported.html#list-comprehension
list comprehension 本身也是从 FP 来的概念,等同于 list monad,但 Python 的语
法略局限。

with

【在 d******c 的大作中提到】
: 函数式一大好处是可以比较容易引入并行。能够几乎不改变代码就支持并行就是新鲜高
: 级的东西,10年前有吗?各种语言和库都支持吗?天底下没有新鲜事,但是很多东西的
: 做法不同,context不同,效果完全不同。
: 你给我来个python list comprehension并行看看。GIL从根子上就限定了python,
: python作者自己说了一大堆python不是函数式的话,实际上他就不怎么喜欢。看他的文
: 章,完全是因为别人要,别人加的,他是持保留态度的。
: I have never considered Python to be heavily influenced by functional
: languages, no matter what people say or think. I was much more familiar with
: imperative languages such as C and Algol 68 and although I had made
: functions first-class objects, I didn't view Python as a functional

m*****n
发帖数: 3575
19
你是怎么装Numba的?不是Anaconda只支持Numpy么?

【在 a*****e 的大作中提到】
: Python list comprehension 可以并行啊,用 Numba 库:
: http://numba.pydata.org/numba-doc/dev/reference/pysupported.html#list-comprehension
: list comprehension 本身也是从 FP 来的概念,等同于 list monad,但 Python 的语
: 法略局限。
:
: with

a*****e
发帖数: 1700
20
没这个说法吧,anaconda 装 numba 没问题,我从 source 装也没问题

【在 m*****n 的大作中提到】
: 你是怎么装Numba的?不是Anaconda只支持Numpy么?
相关主题
C++多线程和硬件的关系functional programming?
震惊:java 的矩阵操作比 c++ 快?在图像算法领域,纯java没戏,用java和c++混合编程很恶心
请大牛们帮忙看一段并行c++代码的效率问题c++这种语言注定了会越做越小
进入Programming版参与讨论
m*****n
发帖数: 3575
21
我从source装numpy基本是失败的

【在 a*****e 的大作中提到】
: 没这个说法吧,anaconda 装 numba 没问题,我从 source 装也没问题
H****S
发帖数: 1359
22
太麻烦,java stream直接就可以parallelMap

【在 a*****e 的大作中提到】
: Python list comprehension 可以并行啊,用 Numba 库:
: http://numba.pydata.org/numba-doc/dev/reference/pysupported.html#list-comprehension
: list comprehension 本身也是从 FP 来的概念,等同于 list monad,但 Python 的语
: 法略局限。
:
: with

d******c
发帖数: 2407
23
John Carmark QuakeCon keynote talk about functional programming
https://www.youtube.com/watch?v=1PhArSujR_A
article: In-depth: Functional programming in C++
http://www.gamasutra.com/view/news/169296/Indepth_Functional_programming_in_C.php
用C++一样可以发挥functional programming的作用。关键是人的思维方法。
g****t
发帖数: 31659
24
从多人多项目的大尺度平均来讲,语言和工具决定思维。而不是反过来。
个别例外不说明问题。我不同意c++ functional这种说法。

【在 d******c 的大作中提到】
: John Carmark QuakeCon keynote talk about functional programming
: https://www.youtube.com/watch?v=1PhArSujR_A
: article: In-depth: Functional programming in C++
: http://www.gamasutra.com/view/news/169296/Indepth_Functional_programming_in_C.php
: 用C++一样可以发挥functional programming的作用。关键是人的思维方法。

d******c
发帖数: 2407
25
没有什么c++ functional的说法。
他必须用C++,然后用functional programming的一些原则,很多东西只是个设计思路
的区别。像John Carmark这样的传奇式人物在自己公司里推行的方法是可以得到执行的
,好好推广就是了。

【在 g****t 的大作中提到】
: 从多人多项目的大尺度平均来讲,语言和工具决定思维。而不是反过来。
: 个别例外不说明问题。我不同意c++ functional这种说法。

d******c
发帖数: 2407
26
他的文章写的很清楚了
A large fraction of the flaws in software development are due to programmers
not fully understanding all the possible states their code may execute in.
In a multithreaded environment, the lack of understanding and the resulting
problems are greatly amplified, almost to the point of panic if you are
paying attention. Programming in a functional style makes the state
presented to your code explicit, which makes it much easier to reason about,
and, in a completely pure system, makes thread race conditions impossible.
No matter what language you work in, programming in a functional style
provides benefits. You should do it whenever it is convenient, and you
should think hard about the decision when it isn't convenient.
C++ doesn't encourage functional programming, but it doesn't prevent you
from doing it, and you retain the power to drop down and apply SIMD
intrinsics to hand laid out data backed by memory mapped files, or whatever
other nitty-gritty goodness you find the need for.
g****t
发帖数: 31659
27
"
No matter what language you work in, programming in a functional style
provides benefits.
"
这话我认为是胡扯八道。拿着菜刀,要多高的功夫才可以当螺丝刀用?
多少次里面有一次能这样用。

programmers
.
resulting
about,

【在 d******c 的大作中提到】
: 他的文章写的很清楚了
: A large fraction of the flaws in software development are due to programmers
: not fully understanding all the possible states their code may execute in.
: In a multithreaded environment, the lack of understanding and the resulting
: problems are greatly amplified, almost to the point of panic if you are
: paying attention. Programming in a functional style makes the state
: presented to your code explicit, which makes it much easier to reason about,
: and, in a completely pure system, makes thread race conditions impossible.
: No matter what language you work in, programming in a functional style
: provides benefits. You should do it whenever it is convenient, and you

j***w
发帖数: 489
28
这还大牛呢,这软件工程里著名定律就是there is no silver bullet.这家伙吹的
functional programming好像就是万能,常识都没有。functional programming有很多
缺点就不提了,还是不知道。

programmers
.
resulting
about,

【在 d******c 的大作中提到】
: 他的文章写的很清楚了
: A large fraction of the flaws in software development are due to programmers
: not fully understanding all the possible states their code may execute in.
: In a multithreaded environment, the lack of understanding and the resulting
: problems are greatly amplified, almost to the point of panic if you are
: paying attention. Programming in a functional style makes the state
: presented to your code explicit, which makes it much easier to reason about,
: and, in a completely pure system, makes thread race conditions impossible.
: No matter what language you work in, programming in a functional style
: provides benefits. You should do it whenever it is convenient, and you

n*w
发帖数: 3393
29
很多什么缺点?十个字


: 这还大牛呢,这软件工程里著名定律就是there is no silver bullet.这家伙吹的

: functional programming好像就是万能,常识都没有。functional programming
有很多

: 缺点就不提了,还是不知道。

: programmers

: .

: resulting

: about,



【在 j***w 的大作中提到】
: 这还大牛呢,这软件工程里著名定律就是there is no silver bullet.这家伙吹的
: functional programming好像就是万能,常识都没有。functional programming有很多
: 缺点就不提了,还是不知道。
:
: programmers
: .
: resulting
: about,

n***p
发帖数: 110
30
R有lisp老吗?
现代有几个functional programming language强过lisp了

【在 m******r 的大作中提到】
: 这贴写的太牛逼了 说到了核心. 难怪我晕菜了好多年。 R这个语言发明的应该在很早
: 以前 (S language),难道那个时代的人就琢磨出所谓functional programming了 ?
: 不知道functional programming, closure中文名字叫什么。
: vectoriztion叫矢量化

相关主题
黑c++的人是不是坐井观天?请教C++class
C++并发和Java并发有多大区别?C++ Function Pointer Array 的问题
java在图像分析领域,就是一个扶不起的阿斗wdong帮忙几个alphaGo的问题
进入Programming版参与讨论
j***w
发帖数: 489
31
性能,效率,易学性都是大问题。

吹的
programming

【在 n*w 的大作中提到】
: 很多什么缺点?十个字
:
:
: 这还大牛呢,这软件工程里著名定律就是there is no silver bullet.这家伙吹的
:
: functional programming好像就是万能,常识都没有。functional programming
: 有很多
:
: 缺点就不提了,还是不知道。
:
: programmers
:
: .
:
: resulting
:
: about,

N*****r
发帖数: 94
32

易学性其实真的不是大问题
性能和效率的确是问题、
现在鼓吹函数编程最大的好处,就是并行,但是并行要求你的函数编程是纯的。。
然后纯的函数编程是很烂的
所以...

【在 j***w 的大作中提到】
: 性能,效率,易学性都是大问题。
:
: 吹的
: programming

n*w
发帖数: 3393
33
举个性能和效率低的例子?

【在 N*****r 的大作中提到】
:
: 易学性其实真的不是大问题
: 性能和效率的确是问题、
: 现在鼓吹函数编程最大的好处,就是并行,但是并行要求你的函数编程是纯的。。
: 然后纯的函数编程是很烂的
: 所以...

1 (共1页)
进入Programming版参与讨论
相关主题
在图像算法领域,纯java没戏,用java和c++混合编程很恶心Remove elements from multiple vectors in C++
c++这种语言注定了会越做越小如果不用很高级的feature,C++/Scala是否值得一战?
黑c++的人是不是坐井观天?有什么比较适合engineer用的语言吗?
C++并发和Java并发有多大区别?[bssd]汇报一下Julia进展
java在图像分析领域,就是一个扶不起的阿斗问个double和long double的问题
请教C++class嵌入式编程问题
C++ Function Pointer Array 的问题瓶颈在哪儿?
wdong帮忙几个alphaGo的问题C++多线程和硬件的关系
相关话题的讨论汇总
话题: functional话题: python话题: 函数话题: gpus