程序大部分逻辑可以用 sql 来实现,不知道和用代码实现哪种更有效率

2017-03-10 17:07:55 +08:00
 smdxex
程序大部分逻辑可以用 sql 来实现,不知道和用代码实现哪种更有效率

比如贪吃蛇大部分核心逻辑

//初始化形状
iniSnake(arr) ----->sql "insert arr 9 x=rownumber, y =9 " arr 表添加 9 行,一行代表一个点
//绘画形状
drawSnake(arr) ----->sql "select x,y=>drawPoint(x,y) from arr " 绘画形状 drawpoint 需要自己写

//检查是否有重合点
CheckSnake(arr) ----->sql "select count (*)> 1 arr a inner join arr j on (a.x=j.x) and (a.y=j.y) " 检查重合点
4469 次点击
所在节点    程序员
33 条回复
webcoder
2017-03-11 02:26:44 +08:00
所以 linq 出来了
smdxex
2017-03-11 07:35:56 +08:00
linq 只用于数据库,这个是绝大多数程序逻辑,都可用用 sql 语法,实现
wizardforcel
2017-03-11 12:00:09 +08:00
LINQ 可以写成链式调用,也可以写成表达式,所以你们觉得哪种更有效率呢?
msg7086
2017-03-11 12:29:31 +08:00
用 SQL 实现的意思,就是你写一个字符串,然后框架实现一个解析器,分析你的代码,然后转换成原本应该由你来写的代码,再执行。
msg7086
2017-03-11 12:31:15 +08:00
@wizardforcel LINQ 的两种写法编译出来的结果是相同的,所以运行效率相同。
至于编写效率,当然跟你熟悉哪种结构有关,你熟悉函数式语句的当然是 Lambda 方便,熟悉 SQL 的当然是 SQL Form 方便咯。
notreami
2017-03-11 14:05:20 +08:00
场景不同,没啥好比较的,折腾个导数据,肯定 sql 快,折腾复杂逻辑,比如多维度,数据库需要几百个表才能实现的,你看那个快?
notreami
2017-03-11 14:09:37 +08:00
几百个张表的,可以类比下, List<List<List<List<List<List<?>>>>>>
smdxex
2017-03-11 15:08:34 +08:00
@notreami 网站和 app ,逻辑都简单, sql 可以实现, app 除了界面没有多少业务
smdxex
2017-03-11 15:09:42 +08:00
这个 sql ,其实可以代替 orm ,
mkdong
2017-03-11 15:15:40 +08:00
@smdxex 我记得…… orm 不是用来代替 sql 的么……
yidinghe
2017-03-11 20:23:47 +08:00
有长期项目维护经验的人一般都会把代码尽量挪到容易维护的地方,效率是其次。
smdxex
2017-03-12 02:26:40 +08:00
@yidinghe 你不认为 sql 是比任何高级语言,抽象层次更高级吗
yidinghe
2017-03-12 09:10:22 +08:00
@smdxex 语法贴近自然语言不意味着抽象层次就高。 SQL 可维护性差表现在:标准的 SQL 不足以用来开发复杂的逻辑,必需要用到数据库特定的语法,也就是说 SQL 不是一个语言而是一系列语言,学习成本极高。而且这样的业务逻辑就算写出来,将来找谁交接都是个问题,大部分人只会标准 SQL 。
whatTheGhost
2017-03-12 11:18:45 +08:00
sql 不是图灵完毕的吧
smdxex
2017-03-12 12:14:56 +08:00
@whatTheGhost 不完备是没有关系得,这个必须有高级语言代码配合,只不过抽象了一些列逻辑
smdxex
2017-03-13 12:32:42 +08:00
高级语言函数调用写在查询内部,比较像 link ,
按照需求,还应该有并列链式结构,=>不仅有传参数意思,还有顺序结构意思,管道
smdxex
2017-03-13 12:34:42 +08:00
linq
msg7086
2017-03-13 23:34:45 +08:00
@smdxex 你说了半天其实就是在说函数式风格编程咯。这和 SQL 有啥关系。
smdxex
2017-03-14 04:23:42 +08:00
@msg7086 很多程序逻辑就是集合操作, sql 抽象了这个集合操作,解析成代码
msg7086
2017-03-14 07:31:41 +08:00
@smdxex 难道不是函数式风格编程能用来集合操作,而 SQL 只是其中的一种实现吗?
LINQ 本身就是函数式风格编程, LINQ SQL Form 是函数式编程的 SQL 转写表达。

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

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

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

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

© 2021 V2EX