对函数式编程的一点思考

对函数式编程的随想。

你要不举个杨辉三角的例子,用函数式写比用命令式写简单多了 :slightly_smiling_face:

1赞

函数式到后面就是 category theory , 前面很吸引人,后面难度太高,卡在中间不上不下不如传统的编码方式。函数式在我的经验里是能够增强对系统设计的理解,将副作用隔离,这样无副作用这部分就是一个通用可复用代码片段。

3赞

这种 iteration 函数式表达是通用的,写的实现可以是琐碎的 procedural, 但是脑子里装的是这个template。

第一项是 loop 内部的具体执行的body, 尾部两项是 for,while 控制的外层循环,中间部分…是可选参数。

我们的生活语言, 每个词语其实就可以理解为一个函数, 或者某些名词是一个变量(加上函数修饰一下), 都是纯函数
例如 “我很快乐” => (insure 'me :happy)

3赞

啊 都想到这了。进一步可以发现propositional logic,然后是first-order logic

“她以前很可爱”“你过去很快乐”,模态逻辑,请

(let (($she "Merry")
      ($you "LdBeth"))
  (match-status (before :1-year $she) (very #'lovely))
  (match-status (before :10-year $you) (very #'happy)))
1赞

枯藤老樹昏鴉

這種描寫意境之語呢?

留给你的课后习题 或者请教 @LdBeth 帮你解答

突然想到(灵感?),请问你是否认可

就是 名词 对应 数据(数据结构或者对象)
动词 对应 算法函数
形容词 对应 也接近算法
关键是:
副词 对应 高等函数 => 以函数(动词)为参数的函数 返回一个动词函数

所以我很看好函数式编程,我也是计划要走人工智能这条路(先别学 不要被牵着走 先自己想 更有可能突破)

2赞

先别学 不要被牵着走 先自己想

先了解下应该没问题 https://en.wikipedia.org/wiki/Category:Logic_in_computer_science

你说的这些statement/proposition,在逻辑中都能找到形式化的对应
如果真想自己reinvent一些概念加强理解,可以找本逻辑的书读,着重关注下logical system的一些性质

名词 对应 数据结构或者对象名

动词 对应 函数名

我实际写代码的时候就是按这个命名规则来的,但不是开始就是这样,这个是为了ctags能够准确跳转到定义,被迫遵守的一个命名规则

看jetbrains的idea网站,说深度智慧理解你的代码,无与伦比的快速,智能的体验:即时,聪明的代码完成。预测您的需求并自动执行繁琐且重复的开发任务

有那么多人都说好,看来jetbrains确实做到了并没有吹牛,我感觉这个智能的体验如果在提升一步,是不是就是人工智能级别的体验了。

有没有可能,如果人工智能真的可以实现(?),最先应该是应用到程序员的开发工具里面,programmer先受益,之后才会是其它领域。

如果是可以编写故事的人工智能, 类似 GPT 那种, 感觉 tabnine 算是差不多实现了.

如果是能够通过图灵测试乃至有自我意识的人工智能, 那程序员可能就直接失业了.

说不定整个人类都得失业. :joy:

图灵机的结构注定了不会产生自主意识,不用担心。

确实可能失业,失业无疑是让人难以承受的事,但换个角度看,大部分人每天工作实际也是什么事也没做成,工作更多的时候只是一种社会财富的分配方式,但分配方式却又不是多劳多得,比如某些人不用工作照样拥有大量社会财富……… 所以人工智能如果真能实现应该是利大于弊的

1赞

大多数技术是跟别人学提高好多倍效率,例如数学物理
但是人工智能我们现在还没有太大的进展,或许我们需要“灵感” 我想先自己去思考 而不是看别人的经验,更高的概率“挖掘”灵感

俺也是不断地思考活到老学到老,对AI慢慢有领悟,例如:
人类之所以那么“智能”,都是基于“传教”,我们都是从小跟大人老师学了十几年,也就是把前人的经验copy过来(他们也是copy过来而很少是自己发明/感悟过来的),就好像“下载”他们的git仓库到我们的大脑里

有没有发现,对于没有丝毫经验的事情(外行),就算看似很简单我们也一窍不通,所以我们多“智能”也不算,大部分都基于“经验”,其实就是“数据缓存” ,我们多大脑就是个高性能CPU

所以感觉Lisp多macro 对AI确实有本质优势,能够更抽象更方便地复制甚至进化“经验”

优胜劣汰,我们切实很多人都只是暂时凑数的,大自然会慢慢优化甚至“重构”的……

1赞

举个例子, 就像人类可以轻松地识别一张照片的人脸, 而AI很吃力, 那也是基于人有了"经验", 如果一个人从来没有见过别人也没有照过镜子, 那能识别出来吗?
所以AI也是要不断地"下载/积累"经验, AlphaGo 也是要基于很多经验不断地去下多局棋盘, 不断地积累, 没有绝对(不像数学里很多是绝对的)

就像我经常想要提到的某些事情或者某个词语(或者某个名字)

一时又想不到了, 但是一提到某些关联的事立刻就想到了, 所以人的大脑神经也是类似于要循环或者Hash, 一旦找到某些对应的 Key, 就可以快速回想起来, 或者我们对某些关键的事情 CREATE index ...

我们现在也很多地方是用到的吧? 很多是在IDE(Emacs), 只是智能的"程度", 例如补全代码啊
难道"每个"人都比这些IDE更智能吧? 或许也需要很多时间去积累, 人类积累了多少万年才到现在的"智能"?? 而计算机才多久, 就像一个小毛孩VS一个老头了…

1赞