当前在线人数14570
首页 - 分类讨论区 - 电脑网络 - 葵花宝典版 - 同主题阅读文章

此篇文章共收到打赏
0

  • 10
  • 20
  • 50
  • 100
您目前伪币余额:0
未名交友
[更多]
[更多]
最近喜欢上了把人类输入和语言逻辑分开的风格
[版面:葵花宝典][首篇作者:nowhere7] , 2019年02月18日22:21:26 ,586次阅读,16次回复
来APP回复,赚取更多伪币 关注本站公众号:
[分页:1 ]
nowhere7
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 1 ]

发信人: nowhere7 (折腾), 信区: Programming
标  题: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Mon Feb 18 22:21:26 2019, 美东)

我也不知道这算是什么风格

举个例子,对不同类型数据进行一些操作
有些共同的处理,也有些类型特异的操作
具体还需要根据数据有些部分做一些分支判断

直接写就是各种if/for 语句,最多做些refactoring增强可读性。
我感觉这样做人类的逻辑被编程语言的语法给稀释了
很难在脑子里面建立一个清楚的处理逻辑
这样就有可以引入bug,维护代码也比较头疼

我的做法是对这样数据格式化,用一种统一的形式表示它们
然后把所有的语言处理逻辑写在一起,就是给出一条格式化过的数据,经过一套处理就
得到结果了。

具体到我用的C#,我一般用一个tuple来统一的表示格式化的数据
用一堆func/action的组合来表示处理过程,这个组合最后就是一个大的func/action

整个处理过程就是给一个tuple的集合,挨个用这个func/action加工一下就好
这个tuple本身就包含了输入数据以及对加工处理方法的一些高级指示
只要看看tuple的内容就基本明白这坨代码是要怎么工作了

希望我表述清楚了
我挺喜欢这种方式,不知道有没有什么术语就是描述这种风格的?
如果有,我想深入学习一下

--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 70.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 2 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Mon Feb 18 22:43:00 2019, 美东)

Tuple是只读的吧?你的function没有状态吧?不然组合起来很麻烦。

Immutable 数据结构,加上无状态的函数组合,就是functional 编程
(无类型那种)吧。看一下lisp, clojure ?

另外也许还可以看下data flow programming。

另外你描述的这套办法,对GUI应该很难使用。backend类似于信号处理的地方我觉得可
以用。
--
※ 修改:·guvest 於 Feb 18 22:44:52 2019 修改本文·[FROM: 47.]
※ 来源:· 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 47.]

 
nowhere7
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 3 ]

发信人: nowhere7 (折腾), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Mon Feb 18 22:54:29 2019, 美东)

对,没有状态,其实就是数据处理机

其实包括function的建立,也可以用一组tuple来描述
我最近做的是一个事情就是用一个binary decision tree(不知道有这个名词没)
来描述一个数据处理的逻辑
而每个逻辑分支都是用一个tuple描述:(test,if-true, if-false)
这样用一组tuple就描述了整个处理逻辑
不用写一堆if-else判断一层套一层了

所有的逻辑一屏不到就看完了,觉得很适合内存不大的人脑

我一直喜欢clojure,虽然一直处于入门状态
不过我们在dotnet上开发
不知道F#能不能一战

另外clojure是动态语言
我用C#这样写的时候总觉得静态类型有些局限
但是我的老大禁止我用reflection,因为performance的缘故,也确实是没必要,如果
我不非要这样写的话。


【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: Tuple是只读的吧?你的function没有状态吧?不然组合起来很麻烦。
: Immutable 数据结构,加上无状态的函数组合,就是functional 编程
: (无类型那种)吧。看一下lisp, clojure ?



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 70.]

 
nowhere7
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 4 ]

发信人: nowhere7 (折腾), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Mon Feb 18 22:59:00 2019, 美东)

看了下data flow programming,感觉有那么点意思
但是再一看语言,居然基本都没见过,除了simulink和VHDL
VHDL还是最近从FPGA组刚听来的。。
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 另外也许还可以看下data flow programming。
: 另外你描述的这套办法,对GUI应该很难使用。backend类似于信号处理的地方我觉得可
: 以用。



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 70.]

 
pptwo
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 5 ]

发信人: pptwo (pp), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Mon Feb 18 23:05:11 2019, 美东)

远有hadoop/spark近有tensorflow/pytorch

【 在 nowhere7 (折腾) 的大作中提到: 】
: 看了下data flow programming,感觉有那么点意思
: 但是再一看语言,居然基本都没见过,除了simulink和VHDL
: VHDL还是最近从FPGA组刚听来的。。



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 67.]

 
nowhere7
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 6 ]

发信人: nowhere7 (折腾), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Mon Feb 18 23:10:27 2019, 美东)

tensorflow/pytorch不是做DL的吗
也算data flow?
data 流过一层层网络?
【 在 pptwo (pp) 的大作中提到: 】
: 远有hadoop/spark近有tensorflow/pytorch



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 70.]

 
pptwo
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 7 ]

发信人: pptwo (pp), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Mon Feb 18 23:38:42 2019, 美东)

是这样,就是个可以用GPU加速还可以对某些输入求导的DFG。
【 在 nowhere7 (折腾) 的大作中提到: 】
: tensorflow/pytorch不是做DL的吗
: 也算data flow?
: data 流过一层层网络?



--

※ 来源:·BBS 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 67.]

 
nowhere7
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 8 ]

发信人: nowhere7 (折腾), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Mon Feb 18 23:49:48 2019, 美东)

这个不够通用啊
【 在 pptwo (pp) 的大作中提到: 】
: 是这样,就是个可以用GPU加速还可以对某些输入求导的DFG。



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 70.]

 
nowhere7
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 9 ]

发信人: nowhere7 (折腾), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Mon Feb 18 23:51:20 2019, 美东)

搜到一篇文章,虽然有点旧

Basics of Dataflow Programming in F# and C#

https://www.codeproject.com/articles/107121/basics-of-dataflow-programming-
in-f-and-c
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 70.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 10 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Tue Feb 19 00:16:34 2019, 美东)

这文章不太靠谱。

我的浅见:
1。有状态的类里面不搞啥纯函数了。放public void updateX(double[][] x)之类的
用reference的update方法。

2。纯函数单独放一个类。参考下Java自带的math类。

3。全部贯彻纯函数不太现实。因为需要大量的copy。
函数参数假如是个高维数组,多数语言进去函数里面都是地址。
数组小的话,函数里第一行copy一下就好。大的话,只能用reference了。

最后,一个功能模块一个写法更合适。一个办法写到底是很难搞的。oo在很多地方是必
须的。functional的办法写信号transfer方便易懂。但是大量数据有时候要copy。会乱
。另外functional无法方便的处理GUI,传感器信号IO listener等等。画图更不用说了。

最后。一个办法写上几万行,自然就碰到毛病和各种修了。我认为具体大于抽象,不宜
执着。

【 在 nowhere7 (折腾) 的大作中提到: 】
: 搜到一篇文章,虽然有点旧
: Basics of Dataflow Programming in F# and C#
: https://www.codeproject.com/articles/107121/basics-of-dataflow-programming-
: in-f-and-c





--
※ 修改:·guvest 於 Feb 19 00:21:33 2019 修改本文·[FROM: 47.]
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 47.]

 
guvest
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 11 ]

发信人: guvest (我爱你老婆Anna), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Tue Feb 19 00:18:20 2019, 美东)

tensorflow方法论混乱。越来越乱。
【 在 nowhere7 (折腾) 的大作中提到: 】
: 这个不够通用啊



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 47.]

 
dracodoc
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 12 ]

发信人: dracodoc (david), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Tue Feb 19 11:00:01 2019, 美东)

专家系统的规则集合

if else不嵌套是好事


【 在 nowhere7 (折腾) 的大作中提到: 】
: 我也不知道这算是什么风格
: 举个例子,对不同类型数据进行一些操作
: 有些共同的处理,也有些类型特异的操作
: 具体还需要根据数据有些部分做一些分支判断
: 直接写就是各种if/for 语句,最多做些refactoring增强可读性。
: 我感觉这样做人类的逻辑被编程语言的语法给稀释了
: 很难在脑子里面建立一个清楚的处理逻辑
: 这样就有可以引入bug,维护代码也比较头疼
: 我的做法是对这样数据格式化,用一种统一的形式表示它们
: 然后把所有的语言处理逻辑写在一起,就是给出一条格式化过的数据,经过一套处理就
: ...................



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 129.]

 
nowhere7
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 13 ]

发信人: nowhere7 (折腾), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Tue Feb 19 23:27:17 2019, 美东)

嗯,今天仔细看了一下这个文章
对于我的需要overkill了

我是实用主义派,那种写法简洁高效优雅就怎么写

我们大组有个project,虽然也是C#的,但是通篇functional style, monads啥的
我是看的挺累
写这个的高手升职了,后来maintain这个项目的小哥苦不堪言
感觉就是文言和白话的区别
【 在 guvest (我爱你老婆Anna) 的大作中提到: 】
: 这文章不太靠谱。
: 我的浅见:
: 1。有状态的类里面不搞啥纯函数了。放public void updateX(double[][] x)之类的
: 用reference的update方法。
: 2。纯函数单独放一个类。参考下Java自带的math类。
: 3。全部贯彻纯函数不太现实。因为需要大量的copy。
: 函数参数假如是个高维数组,多数语言进去函数里面都是地址。
: 数组小的话,函数里第一行copy一下就好。大的话,只能用reference了。
: 最后,一个功能模块一个写法更合适。一个办法写到底是很难搞的。oo在很多地方是必
: 须的。functional的办法写信号transfer方便易懂。但是大量数据有时候要copy。会乱
: ...................



--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 70.]

 
lsunspot
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 14 ]

发信人: lsunspot (小手), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Wed Feb 20 08:48:09 2019, 美东)

pattern match?

--
☆ 发自 iPhone 买买提 1.24.09
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 100.]

 
nkw
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 15 ]

发信人: nkw (非死非活), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Thu Feb 21 00:34:29 2019, 美东)

写企业应用要自己定义monad的机会不多。一直做对此有刚需的项目。
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 2604:2000:6b47:]

 
nowhere7
进入未名形象秀
我的博客
[回复] [回信给作者] [本篇全文] [本讨论区] [修改] [删除] [转寄] [转贴] [收藏] [举报] [ 16 ]

发信人: nowhere7 (折腾), 信区: Programming
标  题: Re: 最近喜欢上了把人类输入和语言逻辑分开的风格
发信站: BBS 未名空间站 (Fri Feb 22 23:11:56 2019, 美东)

update一下
还没有code review,只是standup提了一下
有同事表示阅读有困难
想想没必要当个强推自己风格的asshole
又花了点时间改成一般的oop风格

改的过程中就因为各种判断逻辑东一块西一块
老要对照改之前的一片描述逻辑的code来写
感觉还是喜欢自己的风格

另一个感觉是C#不适合这种写法
实现的很丑,跟自己水平有限也有关系吧
这也是同事不喜欢的原因之一
Lisp应该好很多,不过我估计没机会用clojure
计划再把F#捡起来看看能不能一战
--
※ 来源:·WWW 未名空间站 网址:mitbbs.com 移动:在应用商店搜索未名空间·[FROM: 70.]

[分页:1 ]
[快速返回] [ 进入葵花宝典讨论区] [返回顶部]
回复文章
标题:
内 容:

未名交友
将您的链接放在这儿

友情链接


 

Site Map - Contact Us - Terms and Conditions - Privacy Policy

版权所有,未名空间(mitbbs.com),since 1996