编程思维怎么养成的,如何提高编程思维水平,编程思维怎么养成的,如何提高编程思维的
昨天看了一篇文章,里面有一段比较务实的话:
开发效率。从平台开发各个阶段的实践中我们发现,如果一个统计任务/算法任务/风险控制任务是用传统的编程思维来实现的,那么大量的开发、迭代和维护工作只能由堆开发人员来完成,一个任务可能需要一天甚至几天才能完成。一天几十甚至上百个任务,一条SQL只需要几分钟的开发时间(在我们工厂我们做了全平台SQL,用SQL思维代替编程思维,降低了平台使用门槛,极大解放了上层业务开发团队。
鲜惠的自行车,微信官方账号:趣店技术团队的大数据平台架构
你可能会好奇,什么是传统编程思维,什么是SQL思维?两者有什么区别?
要了解他们的区别和不同,不妨做一下测试题:
现在有100,000个主键id,对应一个记录表的主键。现在正在写代码获取100,000个id对应的记录。
这里有两种方法。
第一种是在SQL中使用In查询,但是由于SQL本身长度的限制,我们无法将10万个ID全部放入一个SQL中,所以我们将ID集合拆分,然后并发访问得到结果。
Select * from table 1其中ID in(.本能冲动.)第二种方法是将id保存为表A,然后将A与记录表连接。
如果是第一种方法,那么这就是我所说的‘编程思维’,而第二种方法就是SQL思维’。
之前发了‘编程思维’和SQL思维’到朋友圈,问大家有什么区别。答案各不相同。但是,就我的认知而言,表面上看,区别很明显:
1.SQL思维其实就是Join思维。如果你对数据的第一反应是join,pivot,那么你就是典型的SQL思维。
2.编程思维其实就是for/if/else思维。如果你对数据的第一反应是for/if/else,那么这就是典型的编程思维。
如果深入分析,SQL本质上是面向集合中特定的类型和表,所有的操作都转化为表操作,并且这个操作是通过声明来表达的。虽然最常操作的编程语言其实都是集合类,但是编程语言种类繁多,作为通用语言,并没有给出一个如何操作集合的“标准”思路。用户首先想到的是用for loop /if/else来处理集合。
专注于编程思维的人在接触SQL的时候会觉得别扭,还是觉得其for循环(包括if/else)的模式更可控更自由?而一个相对复杂的由SQL完成的任务,如果你使用for循环模式(其实是使用一些基本的set类),可能要花一天甚至几天才能完成,性能可能会比较差,而SQL可能只需要几分钟。
SQL的普及依赖于数据是按照表自然组织的,不管有没有数据库(SQL)都会这样。那么SQL自然是面向表的,自然会有很强的能量。
Excel-SQL-Python,Excel符合Torah的操纵数据,所以是操纵数据最广泛的工具,其次是SQL。Python虽然流行,但它是一门通用语言,复杂性就在于此。
一旦你有了SQL思维,你就可以非常高效地使用SQL来玩数据,但是任何语言都有它的局限性。比如SQL很难做机器学习。即使扩展了语法,也只能做一些系统提供的算法支持,无法充分利用现有的Python生态。
ML很好的解决了这个问题。在增强MLSQL的表达能力(脚本能力)的基础上,还全面支持Python生态系统,这是大数据和算法非常好的融合。
以下是一个小型的MLSQL脚本:
全SQL是MLSQL的主要特性。虽然它也允许你用Python编程,它是作为SQL内置的脚本语言存在的,但是它也大大扩展了MLSQL的能力,基本上你可以做任何你想做的事情。
如果想了解更多关于MLSQL的内容,可以点击MLSQL Zhihu专栏的原文链接,或者
扫码添加可爱微信号。添加成功后,将