由买买提看人间百态

topics

全部话题 - 话题: mutable
首页 上页 1 2 3 4 5 6 7 8 (共8页)
z****e
发帖数: 54598
1
比起你自己动手去用各种lock,那是要强太多
但是比起其他多线程的框架来说,比如fp那种
就未必了,其实本质没啥大不了的
无非就是隔离嘛,mutable的var容易导致冲突
那如何解决,就是这些框架要解决的问题
解决手段有很多,最终实现的程度也不一样
显然vert.x最爽,你不需要成天惦记着什么single thread, immutable这些东西
当然synchronized这些就更不需要了,vert.x下我可以肆无忌惮滴重用代码
只需要记住一个basic rule,任何时候,一个verticle只会被一个thread所访问,o啦
剩下的是vert.x的事,其他的都做不到,要你记这个要你记那个,烦死
嗯,ejb勉强可以,但是繁琐了点,要配置,当然vert.x也不是完美的
还是需要自己对付异步问题,虽然比起node已经好很多了
那现在不就是一堆人涌过去解决这个问题嘛
把以前老的同步api全部弄成异步的,当然rxjava解决的callback金字塔也是一个成果

好?
h*i
发帖数: 3446
2
来自主题: Programming版 - 1st class citizen
第三种写法可以与第一种写法一样,也可以不一样。obj如果是个mutable object,
func们都是obj上的method, 那就是一样的。但如果不是,那就可以不一样,所以更灵
活。
z****e
发帖数: 54598
3
来自主题: Programming版 - 1st class citizen
因为需要返回this
但是第二种只能immutable
obj的scope可没有被控制住,除非是值传递
但这里是obj,不是int
因为指针指向的是同一个内存块,primitive types不会有问题
值传递ok,但是如果是结构体,就会冲突,除非clone给每一个thread
这个例子其实是很好的一个mutable好过immutable的例子
z****e
发帖数: 54598
4
来自主题: Programming版 - 1st class citizen
嗯,有道理,这样就不用mutable了
m***r
发帖数: 359
5
来自主题: Programming版 - Python日报 2015年3月楼
Python日报 2015-03-19
@好东西传送门 出品, 过刊见
http://py.memect.com
订阅:给 [email protected]
/* */ 发封空信, 标题: 订阅Python日报
更好看的HTML版
http://py.memect.com/archive/2015-03-19/short.html
1) 【用Python和MoviePy将数据动态可视化】 by @Python开发者
关键词:库, 数据科学, 应用, 可视化, 视频处理
《用Python和MoviePy将数据动态可视化》Python有些出色的数据可视化库,但很少能
渲染GIF或视频动画。本文介绍如何运用MoviePy作为其他库的通用动画插件。 [1] (
@丹川黑马 译,欢迎加入翻译组: [2] )
[1] http://python.jobbole.com/81185/
[2] http://www.jobbole.com/groups/6/?utm_source=jobboleblog-article
2) 【Python函数参数默认值的陷阱和原理深究】 by @Pyt... 阅读全帖
z****e
发帖数: 54598
6
来自主题: Programming版 - 各个语言在paradigms上的对比
c/go -> imperative procedural
java/swift/dart -> imperative oo 不支持func java和swift还有generic和
reflective,最popular都在这里,入门应该首选这个,毫无疑问,就dart弱一点,其
他两个很强悍
clojure/haskell -> func 不支持oo
groovy/js/python -> imperative oo func 主要是这三个亮,python还支持
reflective,但是多数脚本不支持,脚本同时搞oo和fp,所以就慢,还有就是脚本一般
都是dynamic types还有mutable object,所以慢
scala啥都有,除了c和go做的procedural以外,其他都有,全能战斗型语言
z****e
发帖数: 54598
7
再real time的话,那就只能自己用thread去处理了
framework非常无能为力,所以vert.x这个时候也很灵活
你随时可以转到thread为主的开发上
这个时候要注意控制gc的停顿在20ms以内
一般要pool ojbect,否则触发大gc的话,停顿就会变长
小gc一般都很快了,都是几ms就搞掂了,所以不怕
这个时候对object的重复使用就很关键了
这个时候还是要回到oop上去,一般的fp的immutable太容易触发大gc了
想想每s如果产生几十个immutable object会是怎样一幅光景
mutable object还是非常有必要的
z****e
发帖数: 54598
8
来自主题: Programming版 - go几天的一些感受
by default就是immutable
如果你要改成mutable的话
挨个改过去
要多傻有多傻了
干脆一开始就不要用
h*i
发帖数: 3446
9
来自主题: Programming版 - FP更接近人的思维
是啊,系统绝大大部分代码都是FP的啊。OOP只是用来管很少的stateful的的事情:比
如各种数据库的链接是stateful的,web server自己的life cycle是stateful的,如此
而已。
你说的用FP写系统是啥意思嘛?没有mutable state?那你这不是自己树立个稻草人来打
么?
w***g
发帖数: 5958
10
来自主题: Programming版 - FP更接近人的思维
scala的container库by default是immutable的。
只不过immutable的东西大部分情况效率都很低,就是写FP的人一上实战也会
改mutable的版本。

etc
h*i
发帖数: 3446
11
来自主题: Programming版 - FP更接近人的思维
是的,ancester都要copy, 但Clojure用的很宽的trie(branching factor=32), 所以
结构很浅,一般没有几个ancester需要copy,比如一个有4 billion节点的结构也就六
层。
还有,immutable也不是总比mutable慢,看是什么算法。有些算法,比如react.js里面
的diffing, immutable就更快,所以现在clojurescript很火。
h*i
发帖数: 3446
12
来自主题: Programming版 - clojure高手请进
atom很简单,可以把atom理解成其他编程语言里面的变量(mutable),更确切的说,它
很像C里面的指针,但是tread safe的。
初学者要记住swap!的时候不是传新的值进去就行,而是要传一个函数进去,来转换旧
的值。这个转换函数必须是没有副作用的,因为可能别的线程也在访问这个atom,这个
转换函数可能会被试几次才成功。
用到atom的时候记得deref,@,所以我说它像指针。
atom可以用在任何地方。但idomatic的用法,是用来做可变状态的容器。比如写一个非
常简单的小游戏的话,可以把整个游戏世界的状态用一个map来描述,然后把这个map放
到一个atom里面;再比如数据库连接的状态,也可以放入一个atom里面。等等。
p*****2
发帖数: 21240
13
来自主题: Programming版 - Clojure上手123

你去看看真正的项目,关键时刻还是上imperative,clojure也不例外,mutability不
敢丢
p*****2
发帖数: 21240
14
来自主题: Programming版 - go channel和clojure core.async哪个好

clj也需要mutability呀。
h*i
发帖数: 3446
15
来自主题: Programming版 - go channel和clojure core.async哪个好
怎么不一样?我们都看到了,用的时候代码是一样的,那还能有什么不一样?
只能是用到的资源不一样,效率不同。
现在我看了core.async的实现细节(见下面的video),我甚至认为连效率可能都差不多
。core.async的go是一个宏,在编译前就变成了state machine, 没有runtime
overhead, 而且这个state machine是用mutable state实现的,最后编译成jump table
机器码。我相信Go语言的实现也不会比这效率高到哪去。
https://www.youtube.com/watch?v=R3PZMIwXN_g&t=24m46s
h*i
发帖数: 3446
16
来自主题: Programming版 - go channel和clojure core.async哪个好
core.async可以block,也可以不block,用户自己选择,这是优点不是缺点啊。
在不block的时候,core.async的实现和Go里面的goroutine的实现的几乎是一样的,都
是把状态park在适当的地方,等数据来了把context换过来,继续走。而且数据结构都
是追求lightweight, core.async用一个mutable array, goroutine用一个stack, 我没
看出来性能能够如何不同。
async没有什么magical的,就是个语言内部实现的context switch,不用OS的那一套而
已,这样可以更加lightweight。
l**********n
发帖数: 8443
17
来自主题: Programming版 - python代码写成这样,什么鬼阿。
但是显然数据单向流动更好维护,immutubility比mutable更好维护
C*********r
发帖数: 21
18
来自主题: Programming版 - Chef?
Chef大家用的多么,是不是靠谱呢?
还有一个小问题,一般deploy一个service到prod之后,我们也会手动的做一些
verification。但是很多function是mutable的,会改变真实的数据,这样的function
就比较难以verify,有没有什么好的方法呢?
w****w
发帖数: 521
19
来自主题: Programming版 - Spark请教。
有点入门了,exception还要处理一下。这里实际使用spark的人看来不多。
import my.pdf._
import collection.JavaConverters._
import collection.mutable._
def extract_func ( row: (String, org.apache.spark.input.PortableDataStream)
) =
{
val stripper = new MyStripper()
val extractor = new MyReportExtractor()
extractor.setText(stripper.getText(row._2.open));
row._2.close
extractor.getContent().asScala
}
val file_rdd = sc.binaryFiles ("/path/test/*.pdf")
file_rdd.flatMap(extract_func(_)).zipWithIndex.map(_._1)... 阅读全帖
h*i
发帖数: 3446
20
immutable是会有存储和运行时间上的overhead,但这些都会被硬件进步和优化技术解
决。研究各种优化技术是计算机科学应该搞的正事,也是计算机科学进步的动力。
目前来说,对绝大多数应用,现有的immutable data structure的效率足够用了。以
Clojure为例,我还从来没听说过有人抱怨过Clojure运行慢的(抱怨启动速度慢的很多
,那是Clojure编译器在JVM上实现的问题,在Javascript上就没有这么明显的问题)。
存储空间的话,我的经验是Clojure程序和一般的Java程序内存消耗差不多。其实如果
仔细研究一下immutable的工作原理,就会发现, 其实它并不会占用更多内存,因为用
不到的数据都会被垃圾回收,而用到的数据immutable和mutable没有太多区别。当然
immutable对垃圾回收器的压力要大些。Clojure有transducer这类技术,可以减少计算
中间结果数据的产生。
除了函数可以被传来传去,还有就是函数都是带closure的,我觉得这很重要。

发帖数: 1
21
see below:
For example, with the function type
A -> B // functional notation
public B meth(A arg) // how this looks in Java
we have the following:
Let C be a subtype of A, and D be a subtype of B. Then the following is
valid:
B b = meth(new C()); // B >= B, C < A
Object o = meth(new C()); // Object > B, C < A
but the follwoing are invalid:
D d = meth(new A()); // because D < B
B b = meth(new Object()); // because Object > A
hence, to check whether ... 阅读全帖
h****r
发帖数: 2056
22
来自主题: Programming版 - python还是有些傻傻的行为的
比如function的default value, 如果给的是mutable value, 从此就产生了一个static
object, 如果在function里对这个default value进行了修改,下次再call这个
function with default value, default value就不再是原定义的那个,而是上次被
call修改后的。
L***s
发帖数: 1148
23
来自主题: Programming版 - python还是有些傻傻的行为的
mutability是正交的另一个问题

lang
L***s
发帖数: 1148
24
来自主题: Programming版 - python还是有些傻傻的行为的

这个问题在别处有讨论过
http://www.newsmth.net/bbstcon.php?board=Python&gid=84864
发信人: pulo (普洛米·我们的民族从来不缺乏苦难), 信区: Python
标 题: Re: 关于空list做默认参数的一个疑问
发信站: 水木社区 (Thu Dec 29 04:32:28 2011), 转信
一个函数的默认参数是该函数(对象)的一个属性,存在一个叫func_defaults
的tuple里,而函数(类)本身在def时就实例化了,其func_defaults属性
有可能在多次函数调用过程中改变。
拿楼主的例子来说:
>>> def test1( x=[] ):
... print(type(x))
... x.append(0)
... return x
...
>>> test1.func_defaults
([],)
>>> test1()

[0]
>>> test1.func_defaults
([0],)
>>> test1()

[0... 阅读全帖
w***g
发帖数: 5958
25
来自主题: Programming版 - groovy 不错啊
是这个词immutable,我都忘了。
其实写程序就是研究怎么把球往盒子里放。
如果看球, 都是immutable;如果看盒子, 都是mutable。
functional数据结构就是只看球不看盒子,
但真要程序写得好,还是得猜用了几个盒子。
g****t
发帖数: 31659
26
来自主题: Programming版 - groovy 不错啊
就是带状态的神经元
和不带状态的吧
Rnn是Turing 完备的...


: 是这个词immutable,我都忘了。

: 其实写程序就是研究怎么把球往盒子里放。

: 如果看球, 都是immutable;如果看盒子, 都是mutable。

: functional数据结构就是只看球不看盒子,

: 但真要程序写得好,还是得猜用了几个盒子。

N********n
发帖数: 8363
27
来自主题: Programming版 - 面向数据的编程与面向对象的编程

封装保证了专职模块负责专项数据,即安全还有清楚OWNERSHIP。带来的开发效
率远比没有封装强。
Hate to break it to you but "immutable data" is simply myth. You
can put some value type data in immutable state but not for real
world complex data like a big server database as the real world
is inherently mutable.
N********n
发帖数: 8363
28
来自主题: Programming版 - 面向数据的编程与面向对象的编程

append
immutable
"IMMUTABLE"概念在C++/C#/JAVA早有了,那些const/readonly/final关键字
就是干这个用的。"IMMUTABLE"不是万能药,因为RACE CONDITION往往是逻辑
上的错误,不是用几个"IMMUTABLE"变量就能避免的。
如果两个操作同时在一个账户上存钱且彼此之间没有任何同步,那这个账户的
数目最终有可能是错的。账目数字就是个“inherently mutable”的东西,解
决的方式就是要写同步机制代码,强制这两个操作在串行状态下执行。逻辑上
问题,不是弄个IMMUTABLE,append-only之类的小trick就能避免的。
h*i
发帖数: 3446
29
来自主题: Programming版 - 面向数据的编程与面向对象的编程
这个immutable数据结构可不是const, readonly这么简单的概念,也不是小trick,可
见你并不理解immutable是啥意思。
immutable不是说不能改东西,而是说,不在*原地*改东西。所谓改东西,其实是产生
一个新东西。在数据库上用,就是append only,在kafka这种东西上用,就叫
persistent queue.
真正在概念上类似的东西,是copy on write,就是不管改什么,都先copy一个,原来
的不变,在copy上面改。当然如果真copy的话,性能是会很差的。所以immutable数据
结构的技术难点就是如何让人在概念上觉得是copy了,但其实没有copy,至少没有全
copy。实现的办法就是所谓的structure sharing,就是用一个树来track改动,只是
copy改动的树的路径。上述的的算法,最早是Bagwell在2000年的一篇文章《Ideal
Hash Tree》提出的: https://infoscience.epfl.ch/record/64398/files/
idealhashtrees.pdf
Cloju... 阅读全帖
N********n
发帖数: 8363
30
来自主题: Programming版 - 面向数据的编程与面向对象的编程

如果有两个存钱操作A和B同时进行。A先读,当A没结束写时B就开始读那么最
终A或者B写进去的数目是错的。数据端存取到底是原地还是APPEND或COPY都
是无用功。
银行账号这种变量在逻辑上是“inherently mutable”,A、B在逻辑上就是
要操作同一个变量。若硬塞给A、B各一个immutable变量让他们互不冲突那逻
辑上就错了。所以我说race condition是逻辑上的问题,不是靠immutable
数据结构拿出来用一下就可以简化编程了。immutable有用但没那么神。
h*i
发帖数: 3446
31
来自主题: Programming版 - 面向数据的编程与面向对象的编程
你还是概念不清楚。
你把变量和identity搞混淆了。identity是逻辑上的一个东西。实现一个逻辑上的东西
及其变化,有两种实现办法,1.用一个变量。2.用一个指针来指向immutable的量。
这两种办法,在逻辑上是一样的。变量你懂, 我就不讲了。
用immutable的数据如何实现一个identity的变化?具体来说,如何实现一个帐户数目
的变化?简单,用指针啊。变化前,指向immutable数A,变化后,指向imutable数B,
就这么简单。所谓immutable数据结构,其实是在玩指针的游戏。明白了么?
至于同时操作一个帐户怎么做,简单,数据库Transaction怎么做的,这儿也同样的办
法。比如两个操作,同时来,其中一个可能要被roll back的,或者retry。这些与
mutable, immutable是没有关系的,两者做法一样,无非是一个是改数,一个是改指针
指向。
h*i
发帖数: 3446
32
来自主题: Programming版 - 面向数据的编程与面向对象的编程
race condition和我们讨论的问题没有什么关系。没有人说immutable数据结构是用来
solve race condition的。
我来回顾一下,尝试诊断一下你的思维过程。我在说OOP的封装在数据是immutable的情
况下,会成为不必要的限制。你说没有封装就不能抽象了, 我说没有封装也能抽象。
然后你说immutable是const,readonly啥的小trick,不能解决race
condition.。这个跳跃就很奇怪了,如果你的论证试图是说mutable OOP能解决race
condition, immutable不能,那还情有可原,但你又不是在说这个。总之,你随意从一
个问题跳跃到另一个完全无关的问题,说明你的思维方式很不严谨,不适合做技术工作。
稍微发挥一下。很多老中在技术工作中被认为表达能力不强,表面上说是英文不好。我
个人观察,其实不是英文不好,而是思维方式不符合逻辑,其中文表达的能力也不强。
我说的留美学生大多没文化的现象,可能与语言表达能力和思维方式都有关系。所以我
说教育小孩,特别在早期,要重文轻理,否则问题很大。
d******c
发帖数: 2407
33
来自主题: Programming版 - 面向数据的编程与面向对象的编程
有太多东西是人想出来的,但也需要去实现。
值也同样是人想出来的,最多有客观事实,但只有人去加工才变成值。
计算机执行程序时根据时钟去执行下一条指令,时钟跟你说的一个地址存不同东西不太
一样吧。

在的东西,是人想出来的概念,然后用一种计算机实现来模拟的。如果你追根到底,会
发现,就连计算机的mutable的变量,也是用一个地址存不同的东西(i.e. immutable
value)来实现的
h*i
发帖数: 3446
34
来自主题: Programming版 - 面向数据的编程与面向对象的编程
我说immutable让很多编程问题更简单。然后你提出一个编程问题,是immutable与
mutable都有同样的毛病的,这能说明什么呢?如果你认为这就成了immutable不行的“
反例”(你的用词),说明你逻辑思维能力不行。
在计算机上表示加满油的油箱,与空的油箱,必须要用两个不同的数据表征,这没有任
何问题。你提这个来说明immutable是不对的,再次证明你思维有点乱。因为你主观上
觉得这是同一个油箱,与在计算机上需要把他们表示为两个不同的油箱,是没有关系的
。我们在讨论计算机上如何表示更好。
h*i
发帖数: 3446
35
来自主题: Programming版 - 面向数据的编程与面向对象的编程
R programming还是基于赋值的,results <- lm(X),所以不算是FP.
在纯FP里面,一般编程不赋值。immutable数据,不能赋值。如果你没用过,可能想象
不出不能赋值怎么编程。哈哈。
R的作者后悔没干脆把R搞成Lisp来着,所以他有FP的倾向,但R不是FP的语言。
Lisp不一定是纯FP的,common lisp, scheme, 这些Lisp,大都还是基于赋值的编程,
不是FP为主的。数据还是mutable的。
Clojure是FP为主的,因为是immutable by default
g****t
发帖数: 31659
36
来自主题: Programming版 - coroutine comes to Java - Project Loom
Python function参数如果是mutable,不是每次调用的时候
有trick吗,例如
def f(..,x=[0])
我经常用x放上次函数被调用时候的信息。算是显式的yield。
Python 自己的yield我不用,因为它跟c实现的很多yield不太一样。
这些东西其实都是内存快照加上一些goto


: 有理. cooperative threading有助于降低lock contention.

: 但是你有没有想过, 如果OS thread lock了, 这个thread上面所有的

: coroutine就全都挂起了. 我实在不愿意用coroutine这个词,

: 因为你们说的其实就是cooperative user-space threading.

: 真正的coroutine好几十年前就已经死了. 主流语言没一个支持

: coroutine的. python的yield勉强算半个吧.

: 我上次说这个都好几年前了吧. 我现在改行做machine learning了.


发帖数: 1
37
看OCaml实现哈希表也要用到mutability:
https://github.com/lucasaiu/ocaml/blob/
master/stdlib/hashtbl.ml
能用纯粹的函数式方法实现吗?难道函数式语言把side
effect藏到程序员看不到的地方就算完事了?
w***g
发帖数: 5958
38
藏到garbage collector. 纯fp数据结构那篇博士论文是少有的博士论文神作。


:看OCaml实现哈希表也要用到mutability: https://github.com/lucasaiu/ocaml/
blob/master/stdlib/hashtbl.ml。能用纯粹的函数式方法实现吗?难道函数式语言把
side
l**********1
发帖数: 5204
39
cited:
會議討論最熱烈的問題之一,是獲得性究竟能不能遺傳。“米派”認為,后天獲得
的性狀可以遺傳。而“摩派”認為,起決定作用的是基因。他們舉例說:一只被切掉尾
巴的老鼠,生出來的老鼠還是有尾巴。
摩爾根的嫡傳弟子、復旦大學教授談家楨反駁說:“我們搞生物科學的人,也希望
獲得性能遺傳。比如我們現在念了書,以后生了兒子不念書也能有知識,這不是更好嗎
?但是我們不能把愿望作為結論。”
實際上,為期15天的討論,這些學術問題并沒有獲得結論。
----
So 談家楨 just omitted Barbara McClintock PNAS 1950 paper shown a hint that possible Jumping material
(Gene?) within Maize at Tsingdao 1956 meeting from he wthout
Barbara McClintock her sense then.

The origin and behavior of mutable loci in maize. (1950)
PNAS 36:344-355... 阅读全帖
i******s
发帖数: 925
40
来自主题: Biology版 - baozi for paper
Please send it to m****[email protected]
http://informahealthcare.com/doi/abs/10.3109/09553002.2014.8994
title: "Increased mutability and decreased repairability of a three lesion
clustered DNA damaged site comprised of an AP site and bi-stranded 8-oxoG
lesions"
m******g
发帖数: 467
41
PNAS 14.09.30
稍微了解一下:
1. Ecological and evolutionary significance of genomic GC content diversity
in monocots
GC: higher stability, mutability and cost
flow cytometry to measure GC contents in 239 monocot species
A******r
发帖数: 974
42
来自主题: Biology版 - 求 paper
http://link.springer.com/article/10.1007%2FBF00259414
Molecular and General Genetics
May 1990, Volume 221, Issue 3, pp 475-485
Excision and transposition of two Ds transposons from the bronze mutable 4
Derivative 6856 allele of Zea mays L.
Michael F. Dowe Jr.,
Gregg W. Roman,
Anita S. Klein
包子酬谢。
z**********g
发帖数: 16
43
Discussing The Existence of “repulsion particle” And Its Significance

Zhuang Yiliong
Shanghai Institute of Science and Technology Management
Abstract:This report has advanced a assume about the existence of “
repellention” by a kind of new idea. Beginning with this, I have explained
more successfully some import theory questions in the area of the present
physics, cosmology and philosophy ect. At same time a few of new reasons
have been raised But this is only rough idea of physica... 阅读全帖
S******y
发帖数: 1123
44
that data structure in Python is mutable.
欢迎浏览Python/R/Hadoop实战速成课网页-
http://plus.google.com/+statsGuyMITBBS/about
S******y
发帖数: 1123
45
that data structure in Python is mutable.
欢迎浏览Python/R/Hadoop实战速成课网页-
http://plus.google.com/+statsGuyMITBBS/about
z*******n
发帖数: 1034
46
来自主题: MobileDevelopment版 - Apple's Swift climbs quickly in language popularity
InfoWorld Tech Watch
July 14, 2014
Swift, Apple's new programming language for iOS and OS X applications, has
rocketed up the charts in two monthly tabulations of programming language
popularity.
Introduced in early June, the language enters the July Tiobe Index at number
16 and did even better on this month's PyPL Popularity of Programming
Language index, placing 10th. "Everybody is curious to know what this new
language is about, especially because it has been developed by Apple," said
Paul Ja... 阅读全帖
首页 上页 1 2 3 4 5 6 7 8 (共8页)