Keri Savoca 发在 Medium 
量子位 报道 | 公众号 QbitAI

编者按:最近,国外一名小姐姐分享了自己的编程学习经验,引起了不少关注。她名为Keri Savoca,小时候就学了HTML并开发了网站。之后又学习了SQL语言以及JavaScript和Ruby等。在这个过程中,她也积累了不少感悟与经验,并分享了出来。有人阅读了之后称,文章里面的确有比较扎实的干货。希望能够给你带来启发。

编程并不是要你告诉计算机做某事

很多人都以为,编程就是要告诉计算机去做某事,就只需要编写一个命令,就像 do X一样,问题就解决了。

这其实是一个很大的误解,编程需要的不是do X,而是:

  • Do X to Y

  • Get X from Y

  • Get X from Y, and put it in Z

  • Create X in Y

  • Create X in Y, and make it do Z

等等。

只有开始写代码来解决实际问题,才能意识到这一点。

比如说,从BigQuery 中提取一组数据,并将其连接到Data Studio中做条形图。

一般情况下,可以通过点击按钮对X轴上的参数进行升序或降序排序,但你想要根据BigQuery中的维度进行自定义排序的手,就需要代码来解决这个问题了。

假设想要完成的X轴上的排序顺序是:A, D, E, B, C, F,排序顺序与其在“table001”中“location”维度有关系,可以这样解决:

ELECT *,CASEWHEN location = ‘A’ then 1WHEN location = ‘D’ then 2WHEN location = ‘E’ then 3WHEN location = ‘B’ then 4WHEN location = ‘C’ then 5WHEN location = ‘F’ then 6ELSE 0END as SortOrderFROMtable001

现在可以根据 SortOrder 进行排序,这是自定义的,而不是升序或降序。

这就是所谓的do X,但编程远远没有结束。因为这些只存在于控制台中,而没有实际应用。

编程到这个阶段,才刚刚完成了一半。

这听起来像是一个常识,但对于刚开始编程的人来说,可能需要过一段时间才能够在概念上有所理解与体会。

写代码是为了解决问题,不要太依赖教程

但根据说明性教程学习编程的时候,却很难学到这一点。

因为你不是在真正解决一个问题,而是在遵循一系列的指令。

当你正确的遵循这些指令的时候,就会产生一个特定的结果。

但如果你要去解决一个尚未解决的问题时呢?就没有任何指令可以遵循了。

在学习编程的时候要注意到,学习到的技能应该是可以转换的。如果你不能把你练习的技能应用到不同的场景中,跟着教程学习就没有意义。

基于这方面考虑,上面的示例应该要加上because这个词:

  • Do X to Y because …

  • Get X from Y because …

  • Get X from Y, and put it in Z because …

  • Create X in Y because …

  • Create X in Y, and make it do Z because …

当你学会了制作一个待办事项列表应用程序的时候,你应该学到的是,如何使用相同的概念来使应用程序以类似的方式运行。

多试试伪代码,可以提升算法思维

当写出来的代码没法运行的时候,你要怎么做?

很多人的方式是试错,尝试不同的方法来解决问题。

结果无非两种:要么终于起作用了,要么不起作用。

这并不是在于对编程语言缺乏理解,而是算法思维上的问题。

比如你想写一段代码,从Y那里得到X,然后放到Z里面。

却发现不知道从哪里得到了Z,然后试着把它放到了X中。

该怎么办?只是试错可能解决问题,但很难知道到底哪里错了。

一种英国学校学生经常玩的游戏“FizzBuzz问题”通常被用来当做编程面试中的题目,也可以作为练习“伪代码”的测试:

写一个程序打印1到100这些数字。但是遇到数字为3的倍数的时候,打印“Fizz”替代数字,5的倍数用“Buzz”代替,既是3的倍数又是5的倍数打印“FizzBuzz”。

技术博主闻波(webary)在过去的一篇博文中说,就这样的一个小问题,很多优秀程序员顺手就能写出来方式,但很多计算机专业的毕业生都不会做或者花费更多的时间去做。

背后的原因,就是忽略了如何想出解决问题的办法,而是一上来就想代码实现的问题。

而伪代码是一个比较好的方式,会引导你从算法开始思考。

这不需要你去考虑用什么语言来解决问题,而是先想出解决问题的办法。

原文链接:
https://medium.com/better-programming/the-3-realizations-that-made-me-a-better-programmer-af7d1bcab4d3

简单却又复杂的FizzBuzz面试编程问题
https://www.cnblogs.com/webary/p/6507413.html

作者系网易新闻·网易号“各有态度”签约作者

大咖齐聚!参会嘉宾重磅揭晓

量子位 MEET 2020 智能未来大会启幕,李开复、倪光南、景鲲、周伯文、吴明辉、曹旭东、叶杰平、唐文斌、王砚峰、黄刚、马原等AI大咖与你一起读懂人工智能。观众票已售罄,欢迎大家戳链接预约直播:http://vku.youku.com/live/ilproom?id=8029679

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 !

从小开始学编程的小姐姐自述:我变成更好程序员的三点心得体会相关推荐

  1. 爆炸了!刚刚!小姐姐说她找了个程序员男友

    就在刚刚!我的好朋友告诉我她交到男朋友了!!说好要单身一辈子的呢? 什么?就这样为了一个程序员抛弃了陪伴她多年的我!感觉身心受到了暴击!呵~女人...翻脸比翻书还快. 别理姐 一边玩去 毕竟小编也是从 ...

  2. 某程序员吐槽:31岁小姐姐拒绝条件优越的大厂程序员,只因身高不足163cm,难道矮是原罪?...

    之前我们写过身高在相亲中的重要性,尤其男生的身高更是小姐姐们的重点考量标准之一,只是这个标准真的这么重要吗? 一个阿里程序员吐槽:给妹子介绍男友,妹子身高161cm,比例曲线都很好,脸中等偏上,学历工 ...

  3. 自学编程变得越来越简单之后,那些老程序员是有多恐慌?

    我大学时期在一所注重硬件系统的学校中学习电子和计算机工程,中途我发现了网页开发这样东西,它彻底改变了我的人生轨迹. 我是否希望自己学的是计算机科学还是软件工程?那还用说?但是,考虑到我一直在自学关于编 ...

  4. 大学辍学、自学编程,GitHub创始人是怎么号召2800万程序员的?

    2008年,现年33岁的执行董事长Chris Wanstrath与软件开发伙伴Tom Preston-Werner(38岁)和PJ Hyett(35岁)共同创立了GitHub,总部位于旧金山.10年来 ...

  5. 猿来小课Python视频老师简述让程序员崩溃的瞬间

    作为一个资深的程序猿,我日常的任务就是和代码无数次交锋,在公司敲代码时不知道你们有没有遇到过让你崩溃的瞬间呢?本篇文章猿来小课Python视频老师就收集整理了一些让程序员崩溃的瞬间,让我们下面一起来对 ...

  6. Kaggle 美女小姐姐自述:我是怎么成为竞赛中 Top 0.3% 的?

    本文转载自量子位,禁二次转载 天天跟数据打交道的研究人员,都有一个成为Kaggle顶级大师(Grandmaster)的梦想. 但每年的Kaggle参赛团队众多,通常一个项目都有数千人至上万人报名,如何 ...

  7. 孩子从小要学编程吗?

    许多面向儿童的计算机教程和编程语言十分风行,那么是否人人都应该从小学计算机呢?答案是因人而异,如果孩子喜欢,当然是最好不过. 2019年7月30日,参赛选手在进行"少儿编程赛".( ...

  8. Kaggle大牛小姐姐自述:我是怎么成为竞赛中Top 0.3%的 | 干货攻略

    原文:Lavanya Shukla 铜灵 编译整理 量子位 出品 | 公众号 QbitAI 天天跟数据打交道的研究人员,都有一个成为Kaggle顶级大师(Grandmaster)的梦想. 但每年的Ka ...

  9. 用Google Brain的机器学习项目:Magenta,教神经网络学抖音小姐姐作曲。

    先上我们要学习的小姐姐 的美照.. 一.配置环境 1.自己配置环境:python,tensorflow,bazel(编译),java.然后下载magenta(https://github.com/te ...

最新文章

  1. java 三维全景_3D开发-全景技术基础
  2. c#switch语句判断成绩_Go的条件判断语句
  3. 扫盲篇:用户体验不等于可用性
  4. 简单分享一个轻量级自动化测试框架目录结构设计
  5. HTML静态网页---标签
  6. matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数
  7. tracepro杂散光分析例子_2020临中高考咨询群咨询成效问卷结果分析
  8. Linux IP别名,接口绑定,多网卡绑定
  9. 80X86寄存器详解
  10. 用了三天终于安装成功 jsv8 centos7.6 + 宝塔+ php7.2 安装V8js
  11. python 大文件分片上传_Python实现大文件分片上传
  12. 如何解决条码打印机隔张打印问题
  13. 新版LinuxLinus Torvalds发布
  14. jQuery雪花插件JQuery-Snowfall Plugin
  15. 微信公众号历史数据采集和推文监控
  16. HTML 如何让图片自动改变大小,CSS如何设置图片的大小
  17. 用计算机处理图像属于啥技术,计算机图像处理技术在网页设计中的应用
  18. 草根创业者下一个风口:娃娃机
  19. FRR、FAR和ERR
  20. 机器学习:03 Kaggle比赛 患者是否患糖尿病

热门文章

  1. ubuntu-18.04 root登录图形界面失败问题解决方案
  2. zip 文件下载函数封装
  3. Nginx 静态文件 location 指定
  4. 【Java学习笔记之四】java进制转化
  5. 简单区分grep 命令 *的作用
  6. JavaScript作用域链
  7. windows环境运行MongoDB
  8. 090621 NTFS删除的恢复
  9. 关于工大瑞普Dynamips模拟器
  10. 仿qq邮箱源码程序_巧用小程序·云开发实现邮件发送功能丨实战