由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - python代码写成这样,什么鬼阿。
相关主题
怎么这里这么多人学python有因为Spark而学习Scala的吗?
也谈OOP跟FP之争第三代编程语言基本特征都很相似
花了一个小时学习了python我们来聊聊paradigms吧
Haskell很难学。。FP并不比OO什么的更“高级”
scala写个loop老难了其实想学就学fp,不学就算了
mutating input argument不应该鼓励吧scala不是pure fp
对 (im)mutability 的误解和深度理解设计一个string class,是应该用linked list还是array?
[合集] 我也花了一小时读了一下pythonNode做大系统better than Java, .NET
相关话题的讨论汇总
话题: image话题: fp话题: 代码话题: oop话题: python
进入Programming版参与讨论
1 (共1页)
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开始满天飞了
: 日

相关主题
mutating input argument不应该鼓励吧有因为Spark而学习Scala的吗?
对 (im)mutability 的误解和深度理解第三代编程语言基本特征都很相似
[合集] 我也花了一小时读了一下python我们来聊聊paradigms吧
进入Programming版参与讨论
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最好。

相关主题
FP并不比OO什么的更“高级”设计一个string class,是应该用linked list还是array?
其实想学就学fp,不学就算了Node做大系统better than Java, .NET
scala不是pure fpvertx里面同一个module多个verticle的疑问
进入Programming版参与讨论
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不清楚,如果满天飞,程序员可火掉。

相关主题
go也是三种paradigm混合的语言也谈OOP跟FP之争
vert.x+swift是开发下一个generation的app的最捷径花了一个小时学习了python
怎么这里这么多人学pythonHaskell很难学。。
进入Programming版参与讨论
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()舒服多了。
: 但产品环境里这些灵活性就是找死了。

1 (共1页)
进入Programming版参与讨论
相关主题
Node做大系统better than Java, .NETscala写个loop老难了
vertx里面同一个module多个verticle的疑问mutating input argument不应该鼓励吧
go也是三种paradigm混合的语言对 (im)mutability 的误解和深度理解
vert.x+swift是开发下一个generation的app的最捷径[合集] 我也花了一小时读了一下python
怎么这里这么多人学python有因为Spark而学习Scala的吗?
也谈OOP跟FP之争第三代编程语言基本特征都很相似
花了一个小时学习了python我们来聊聊paradigms吧
Haskell很难学。。FP并不比OO什么的更“高级”
相关话题的讨论汇总
话题: image话题: fp话题: 代码话题: oop话题: python