大家是怎么理解“算法”和“代码逻辑”两个词的

2019-06-20 16:51:07 +08:00
 sgissb1
今天和一好基友在讨论一个代码里面的逻辑怎么写的问题,主要是为了修改两个队列中数据处理先后次序的问题。

给定一个 A 队列和 B 队列,在需求中每次只允许取一个数据来处理,并且还要求是这两个队列里的。
A 和 B 交错着取(这次取 A,那么下次就要取 B )。
当我们在日常吹牛皮的很嗨时,边上就有哥们突然提到算法这个词,我们当时都一下子懵逼了。

因为在我们的眼里,只是对两个 list 取数据先后的问题,仅仅是一种代码逻辑问题,实际上对最终产出影响很小。我们眼中的算法要么是具备很强的数学理论基础,要么是解决某种特定问题的总称。

不晓得大家怎么看这两个词。码代码时间越久,总感觉这些定义很模糊了,有点事实而非。
4580 次点击
所在节点    奇思妙想
18 条回复
kyuuseiryuu
2019-06-20 17:00:56 +08:00
代码 + 逻辑 = 算法
smile561607154
2019-06-20 17:04:04 +08:00
同楼主,我从来把我写的东西称为算法。
smile561607154
2019-06-20 17:05:46 +08:00
同楼主,我从来不敢把我写的东西称为算法。
agagega
2019-06-20 17:06:39 +08:00
然而这就是算法。
sikariba
2019-06-20 17:11:12 +08:00
这就是算法+1
mcfog
2019-06-20 17:15:34 +08:00
算法是用于解决问题的一系列指令描述。他说的没问题,并不是只有教科书上的或 leetcode 里的那些才叫算法。解决“交互消费两个不同队列”这个特定问题的方法,当然是算法

an algorithm is a set of instructions, typically to solve a class of problems or perform a computation. -- Wiki

至于“代码逻辑”,我不知道什么叫代码逻辑,甚至找不到这个词对应的英文是什么,不建议使用这个模糊不清的词
whwq2012
2019-06-20 17:17:04 +08:00
算法的五个特性:有穷性,确定性,输入,输出,可行性。
简而言之,算法就是能解决问题的有穷步骤。
jmc891205
2019-06-20 17:18:55 +08:00
算法说白了就是一个可以精确描述的解决某种问题的方法
生活中处处都是算法
baicheng10
2019-06-20 17:20:56 +08:00
这是算法。
但我其实和楼主的看法比较类似,对词义上有狭义的偏见,心态吧,像上面说的,“不敢把自己写的东西称为算法”,有点像谦称一样。
airfling
2019-06-20 17:27:59 +08:00
能解决问题的就是算法
bzi
2019-06-20 17:42:43 +08:00
也算是算法,只不过因为简单而不好意思对外宣称是算法吧
zagfai
2019-06-20 17:44:38 +08:00
code 是实实在在的,algo 是虚的
Norie
2019-06-20 18:24:15 +08:00
算法不就是计算的方法吗?
akira
2019-06-20 18:58:10 +08:00
一般说的算法 应该是指 搜索 查询 遍历 排序 的算法

但是 广义上的算法,你这个确实也是能叫算法
pkookp8
2019-06-20 19:15:31 +08:00
我认为 与业务无关,可以抽象成特定问题的代码 叫做算法
比如你这里
与业务有关的代码,就叫做逻辑代码。
比如我得先发消息 a,再发消息 b,否则报错

但是我通常不会任何可抽象的问题都叫算法。比如我写了加减乘函数,算,但我不会说我今天写了一套算法
leishi1313
2019-06-21 02:22:25 +08:00
茴字的两种写法罢了,没必要争论。不同的代码逻辑可以是不同的算法,相同的算法可以有不同的代码逻辑,硬要细分侧重点是有不同,但是很多时候大家也会混着用的,这时候这俩基本就等于“程序的实现方法”
lyminghao
2019-06-21 10:56:24 +08:00
这俩词没啥区别吧。。。至少在定义上算法也没什么高大上的,只是实际使用中算法一般指比较高难度的算法 23333
enjoyCoding
2019-06-21 17:03:14 +08:00
一般业务上面的东西我喜欢用逻辑代称 不涉及业务只有数据结构或者想 lz 说的这种数据逻辑我称之为算法
像 lz 这个问题 很自然的想到归并排序对吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575891

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX