t**r 发帖数: 3428 | 1 def minArea(self, image, x, y):
a, b = (max(I) - min(I) + 1
for image in (image, zip(*image))
for I in [[i for i, row in enumerate(image) if '1' in row]])
return a * b
脚本語言太恶心了 |
d******e 发帖数: 2265 | 2 这个是写代码的人的问题。
【在 t**r 的大作中提到】 : def minArea(self, image, x, y): : a, b = (max(I) - min(I) + 1 : for image in (image, zip(*image)) : for I in [[i for i, row in enumerate(image) if '1' in row]]) : return a * b : 脚本語言太恶心了
|
l**********n 发帖数: 8443 | 3 must have a good reason
【在 t**r 的大作中提到】 : def minArea(self, image, x, y): : a, b = (max(I) - min(I) + 1 : for image in (image, zip(*image)) : for I in [[i for i, row in enumerate(image) if '1' in row]]) : return a * b : 脚本語言太恶心了
|
z****e 发帖数: 54598 | 4 脚本语言需要code review which意思就是,可读性太差
fp也差不多 |
l**********n 发帖数: 8443 | 5 oop可读性很差吧。fp可读性好
【在 z****e 的大作中提到】 : 脚本语言需要code review which意思就是,可读性太差 : fp也差不多
|
z****e 发帖数: 54598 | 6
快给我拉倒,一个全部都是func可以整死一堆人
pure oop的可读性绝对强过pure fp
否则就没有pure oop什么事了
就是一堆人搞不定fp,所以弄出了oop
【在 l**********n 的大作中提到】 : oop可读性很差吧。fp可读性好
|
l**********n 发帖数: 8443 | 7 fp没有状态,当然容易理解。oop更难理解
【在 z****e 的大作中提到】 : : 快给我拉倒,一个全部都是func可以整死一堆人 : pure oop的可读性绝对强过pure fp : 否则就没有pure oop什么事了 : 就是一堆人搞不定fp,所以弄出了oop
|
z****e 发帖数: 54598 | 8
这不好容易理解,这叫相对容易实现
但是同时io变得很麻烦了
这叫简单?
我今天刚处理完一个swift的map reduce
简直是joke
【在 l**********n 的大作中提到】 : fp没有状态,当然容易理解。oop更难理解
|
z****e 发帖数: 54598 | 9 swift现在也跟python, ruby, scala这些一样了
_, $0, $1开始满天飞了
日 |
l**********n 发帖数: 8443 | 10 需要状态的地方就oop啊,但是fp显然更好维护
【在 z****e 的大作中提到】 : swift现在也跟python, ruby, scala这些一样了 : _, $0, $1开始满天飞了 : 日
|
|
|
z****e 发帖数: 54598 | 11
你无非想对付多线程并发冲突嘛
这个用一个actor不就行了
fp要是更好维护,就没有actor什么事了
历史证明其不好维护
单线程是joke,除了ui,我一概不搞单线程
有几个core上几个thread
【在 l**********n 的大作中提到】 : 需要状态的地方就oop啊,但是fp显然更好维护
|
z****e 发帖数: 54598 | 12 顺便说一下,状态这个什么意思啊?
多少人能够正确理解状态的?
这种混蛋概念真是误人子弟,一天到晚屁事不做
就在这种鸟事上倒腾,翻来覆去搞什么code review
难怪股价崩了 |
l**********n 发帖数: 8443 | 13 但是显然数据单向流动更好维护,immutubility比mutable更好维护
【在 z****e 的大作中提到】 : 顺便说一下,状态这个什么意思啊? : 多少人能够正确理解状态的? : 这种混蛋概念真是误人子弟,一天到晚屁事不做 : 就在这种鸟事上倒腾,翻来覆去搞什么code review : 难怪股价崩了
|
z****e 发帖数: 54598 | 14
我不否认啊,问题是为什么要说immutable呢?
msg不就好了,msg就是immutable的
不需要理解immutable的概念就能做了
vert.x做得多简单,不像fp那样,概念满天飞,简直就是一joke
认真想想,fp那些鸟蛋概念其实都是扯蛋
【在 l**********n 的大作中提到】 : 但是显然数据单向流动更好维护,immutubility比mutable更好维护
|
d******e 发帖数: 2265 | 15 _就是一个占位符。这个就是炫鸡,如果影响到可读性,代码必须重构。
$0, $1这个其实不是好习惯,
scala里面case class可以解决,但是data piplein里面,由于scala map继承 java
map entry想法,很屎,只有转化成为一个二元tuple.
python里named tuple,和a,b = tuple可以解决。基本上,python 应该很少会出现_1,
_2。 要是满天飞可以fire了。
swift不清楚,如果满天飞,程序员可火掉。
【在 z****e 的大作中提到】 : swift现在也跟python, ruby, scala这些一样了 : _, $0, $1开始满天飞了 : 日
|
d******e 发帖数: 2265 | 16 这个就是一行流。
什么东西都要一行搞定。
【在 l**********n 的大作中提到】 : must have a good reason
|
d******e 发帖数: 2265 | 17 显然脚步语言不是给低手用的。
【在 z****e 的大作中提到】 : 脚本语言需要code review which意思就是,可读性太差 : fp也差不多
|
d******e 发帖数: 2265 | 18 fp一个funciton parameter.oop整出20个设计模式。你给我谈可读性?
【在 z****e 的大作中提到】 : : 我不否认啊,问题是为什么要说immutable呢? : msg不就好了,msg就是immutable的 : 不需要理解immutable的概念就能做了 : vert.x做得多简单,不像fp那样,概念满天飞,简直就是一joke : 认真想想,fp那些鸟蛋概念其实都是扯蛋
|
d****i 发帖数: 4809 | 19 这个就是所谓的追求“代码简洁”,变成这副屎样,Python之父Guido说过什么所谓的
fp啊,什么list comprehension啊,都千万不要用,都是虚晃一些生造的概念骗人的,
老老实实用for loop最好。
【在 t**r 的大作中提到】 : def minArea(self, image, x, y): : a, b = (max(I) - min(I) + 1 : for image in (image, zip(*image)) : for I in [[i for i, row in enumerate(image) if '1' in row]]) : return a * b : 脚本語言太恶心了
|
l**********n 发帖数: 8443 | 20 没有括号的语言就是耍流氓
【在 d****i 的大作中提到】 : 这个就是所谓的追求“代码简洁”,变成这副屎样,Python之父Guido说过什么所谓的 : fp啊,什么list comprehension啊,都千万不要用,都是虚晃一些生造的概念骗人的, : 老老实实用for loop最好。
|
|
|
t*********r 发帖数: 387 | 21 oop和imperative programming不等价, fp语言也可以oop
【在 l**********n 的大作中提到】 : 需要状态的地方就oop啊,但是fp显然更好维护
|
t*********r 发帖数: 387 | 22 最后一句的结论太极端了
【在 z****e 的大作中提到】 : : 我不否认啊,问题是为什么要说immutable呢? : msg不就好了,msg就是immutable的 : 不需要理解immutable的概念就能做了 : vert.x做得多简单,不像fp那样,概念满天飞,简直就是一joke : 认真想想,fp那些鸟蛋概念其实都是扯蛋
|
z****e 发帖数: 54598 | 23
那怎么debug啊?
log里面exception都是某某某行出错了
你一行?您逗吧?
【在 d******e 的大作中提到】 : 这个就是一行流。 : 什么东西都要一行搞定。
|
z****e 发帖数: 54598 | 24
错
脚本是装逼用的
【在 d******e 的大作中提到】 : 显然脚步语言不是给低手用的。
|
z****e 发帖数: 54598 | 25
快给我拉倒
一个反射就可以把function塞入参数
你来20个模式?哪20个?
列举出来我看看
【在 d******e 的大作中提到】 : fp一个funciton parameter.oop整出20个设计模式。你给我谈可读性?
|
z****e 发帖数: 54598 | 26
静态类型
括号
1st class citizen func
java不搞这些都是很有道理的
怎么看怎么对
防止脑残装逼
否则就是随地大小便
一天到晚就给人擦屁股
【在 l**********n 的大作中提到】 : 没有括号的语言就是耍流氓
|
z****e 发帖数: 54598 | 27
不完全等价
但是在某些哲学上冲突
比如万事万物都是对象
万事万物都是func
后者贼78扯蛋
导致连io都出问题
因为无法完成封装
oop虽然封装起来很繁琐
但是可以很好滴完成封装
【在 t*********r 的大作中提到】 : oop和imperative programming不等价, fp语言也可以oop
|
t*********r 发帖数: 387 | 28 不光是这几点,每次上新的codebase有了静态类一般很快能上手
Python/JS要看半天才能开码
【在 z****e 的大作中提到】 : : 不完全等价 : 但是在某些哲学上冲突 : 比如万事万物都是对象 : 万事万物都是func : 后者贼78扯蛋 : 导致连io都出问题 : 因为无法完成封装 : oop虽然封装起来很繁琐 : 但是可以很好滴完成封装
|
t*********r 发帖数: 387 | 29 你喷的太狠了
FP也没要求万事万物都是函数
【在 z****e 的大作中提到】 : : 不完全等价 : 但是在某些哲学上冲突 : 比如万事万物都是对象 : 万事万物都是func : 后者贼78扯蛋 : 导致连io都出问题 : 因为无法完成封装 : oop虽然封装起来很繁琐 : 但是可以很好滴完成封装
|
z****e 发帖数: 54598 | 30
,
你这说的不就是code review那一套么?
动不动就是重构,动不动就是要人去遵守这些规则
如果不搞code review,这些垃圾在代码里面
你能发现得了么?这些代码可都能通过unit test哦
机器没问题,有问题的是人,所以最后不得不让人去伺候人写代码
这不是胡闹嘛,人多贵的成本,让人去伺候人的话,那成本立马翻倍
难怪这样瞎搞的公司最近股价一个比一个跌得凶
swift里面比较烂的代码,都跟过份自由有关,比如$0,$1,_这种
不过swift单平台,不用顾及其他人感受,想改就改
所以现在swift越改越像java
以前都是class var,现在一律static var
case class就是一个joke
居然by default有set/get
这是何苦?写个set/get无非就是点几个按钮
让ide自动生成这点事,非要定义一个名词,叫什么case class
搞得好像很高大上,其实毫无意义
case class绝对没有set/get那么简单直接明了
皇帝的新装莫过于如此
在一些无所谓的事情上故弄玄虚
【在 d******e 的大作中提到】 : _就是一个占位符。这个就是炫鸡,如果影响到可读性,代码必须重构。 : $0, $1这个其实不是好习惯, : scala里面case class可以解决,但是data piplein里面,由于scala map继承 java : map entry想法,很屎,只有转化成为一个二元tuple. : python里named tuple,和a,b = tuple可以解决。基本上,python 应该很少会出现_1, : _2。 要是满天飞可以fire了。 : swift不清楚,如果满天飞,程序员可火掉。
|
|
|
z****e 发帖数: 54598 | 31
那就不是纯粹的fp了
越是越脆的fp越希望你封装彻底
否则副作用明显,到处是状态
那与oop何异?
不过纯粹fp也搞不下去,所以最后还是从了actor
which就是到处都是副作用的fp,其实就是oop
封装最后还是由一个object/actor来完成
【在 t*********r 的大作中提到】 : 你喷的太狠了 : FP也没要求万事万物都是函数
|
t*********r 发帖数: 387 | 32 fp处理一些实际的问题的确不方便,所以大部分FP语言最终没做到彻底纯粹。但fp的精
髓在于只有运算算法而不跟世界状态打交道的时候(比如编译,算model),编辑器可以
通过能够利用语言只有值而没有变量这个设定实现很多在imperative语言里面不能实现
或很难实现的功能,比如https://en.wikipedia.org/wiki/Pattern_matching,
automated
proof checking https://en.wikipedia.org/wiki/Coq。你要把这种语言扩展到带OO
也可以,只是object没有setter对于一般人来说很难用。
但如我所说,FP的对立是imperative,我说的这几点不适用与imperative language
【在 z****e 的大作中提到】 : : 那就不是纯粹的fp了 : 越是越脆的fp越希望你封装彻底 : 否则副作用明显,到处是状态 : 那与oop何异? : 不过纯粹fp也搞不下去,所以最后还是从了actor : which就是到处都是副作用的fp,其实就是oop : 封装最后还是由一个object/actor来完成
|
g*****g 发帖数: 34805 | 33 通配符这种东西用来写点测试身心愉快。我老现在用 Groovy写点 unit test, mock的
时候用这通配符要比 Java里调用 any()舒服多了。
但产品环境里这些灵活性就是找死了。
【在 z****e 的大作中提到】 : : 那就不是纯粹的fp了 : 越是越脆的fp越希望你封装彻底 : 否则副作用明显,到处是状态 : 那与oop何异? : 不过纯粹fp也搞不下去,所以最后还是从了actor : which就是到处都是副作用的fp,其实就是oop : 封装最后还是由一个object/actor来完成
|
z****e 发帖数: 54598 | 34
OO
imperative对应的就是declarative啊
fp总是标榜自己declarative而已
但是declarative可远远不止fp一个p罢了
虽然fp和oop不完全重叠,但是在某些哲学思想上是冲突的
我前面已经说了
你的这种用法,其实就是我的用法
直接做成一个巨大的Util,也就这样了
这样用我不反对啊,我也是这样用的
【在 t*********r 的大作中提到】 : fp处理一些实际的问题的确不方便,所以大部分FP语言最终没做到彻底纯粹。但fp的精 : 髓在于只有运算算法而不跟世界状态打交道的时候(比如编译,算model),编辑器可以 : 通过能够利用语言只有值而没有变量这个设定实现很多在imperative语言里面不能实现 : 或很难实现的功能,比如https://en.wikipedia.org/wiki/Pattern_matching, : automated : proof checking https://en.wikipedia.org/wiki/Coq。你要把这种语言扩展到带OO : 也可以,只是object没有setter对于一般人来说很难用。 : 但如我所说,FP的对立是imperative,我说的这几点不适用与imperative language
|
z****e 发帖数: 54598 | 35 declarative的目的是
dont make me fucking guess
让你的代码写清楚你要干什么
最好不要让我去看代码,因为我不想看
fp的很多东西做不到这一点
actor和oop可以做到
你见过有人说vert.x难的么?
但是vert.x又能实实在在解决问题哦
这就是为什么我认为vert.x有前途的主因
完全不看,是不可能的
但是如何尽力让别人看懂,这恰恰是oop所擅长的
hello world的确更难,但是java在一大堆代码的时候
其可读性是无与伦比的,项目失败
绝大多数不是因为功能点无法实现
而是因为代码不可维护,其中就包括fp这些老古董
如果这些古董成功的话,就没有java了,因为不需要嘛
就是因为fp的很多语言,外加c,c++做失败了
所以才会有了java的推广和流行
当然java太具体了,oop比较抽象
真正做到declarative的就是java
你的java代码给我,三分钟之内我可以说出这个java代码大概在干嘛
如果用上各种框架的话,比如spring的话,就更快了
我直接看annotation就大概能明白了 |
z****e 发帖数: 54598 | 36
@Mock
实在是testing利器
【在 g*****g 的大作中提到】 : 通配符这种东西用来写点测试身心愉快。我老现在用 Groovy写点 unit test, mock的 : 时候用这通配符要比 Java里调用 any()舒服多了。 : 但产品环境里这些灵活性就是找死了。
|