如何教女朋友一起编程

餐前小菜:美国波士顿动力公司昨天发布了 Atlas 机器人的视频,引起国内外轰动。虽然公司仅仅称之为 Atlas 的下一代版本,但看起来这是一个巨大的产品飞跃,因为它就像一个完全不同的物种。

若干年前,在我还是一个小小的软件开发人员的时候,我就梦想有一个女孩能让我与之畅谈我喜欢的东西。我想和她谈论我做了什么。不是简单地说我在做与电脑相关的东西,而是能够更深层次地畅所欲言。就像和同事一起的那种谈话。我希望当我发现了什么令人兴奋的新玩意儿的时候,当我兴致勃勃地讲给她听的时候,她能理解我。

回想我还在上大学的时候,我也经常将我这个梦想说给朋友听。我以为他们会和我想的一样,但让我吃惊的是,我是这群极客中唯一一个这么想的人。他们中的每一个人都告诉我,他们不想找一个女程序员做女朋友,他们说这会让他们会发疯。但我认为他们是在自欺欺人。

他们内心真正的想法是,要找到一个既好看、聪明,又对编程感兴趣,以及最重要的是,对你有意思的女孩,那是不可能的。概率微乎其微?!!

让我告诉你一个秘密,兄弟,她其实并不需要知道编程。生活中的一切东西都是可以学习的。的确,有些人可能更擅长于编程这些理科类的东西,但这并不意味着其他人就无法学习和理解这些内容了。我们能骄傲地宣称自己是个程序员,是软件工程师,那是因为我们用了很多年的时间去学习和掌握这些知识。但是我要告诉你一个真相,许多你花了一年时间才明白的东西,其实可以在5分钟内被解释得清清楚楚,如果你知道怎么解释的话。

指针运算真的很难吗,还是我们需要这么说以便于自吹自擂,炫耀自己的能耐,因为我们自己是好不容易才明白它是如何工作的?理解多态性困难吗?是真的很难理解,还是我们自己理解的角度不对?

思维角度相当于80分智商。

你完全能在短短几个小时内就将指针,手动内存管理,栈和堆分配,垃圾收集等等等等解释得一清二楚,如果你选择了正确的形容和比喻方式。

算法难吗?我敢打赌,你肯定不希望有人半夜吵醒你要你写一个快速排序。但是,如果你有很多小刀,然后教你的女朋友如何对它们进行排序(明显是按大小来)?你可能依然需要示范个两三次,才能让她真正认同这种排序方法是有效的,但其实这个算法本身不要太简单。

智能识别十字路口和T字路口,并立即做出精确反应。基本车体为三轮、二驱、双层设计。主控芯片采用最常用的51单片机;驱动采用L9110驱动芯片驱动两个减速直流电机;L7805稳压芯片设计出电源电路为系统提供稳定电压;循迹模块使用红外对管座位传感器。

如果你有一个问题,想了几个小时还是搞不明白,那么不妨试试解释给你的女朋友听。不要以为这是在对“牛”弹琴(各位美眉勿喷),如果你在句子中突然有所发现,可以中断谈话。试着真正地解释给她听,就算她一点儿也不懂技术。如果你能用一个正确的比喻手段来解释的话,她理解起来其实是很容易的。

记住得是她自愿学习这些东西,你不能强迫灌输知识给她,自己想学才能学得进去。你需要打破的最大障碍是,克服她“我永远不会明白”的忧虑。

这并不难,只是需要时间

大约6个月前,我的女朋友还正在学习政治学,攻读她的硕士学位。她真的没有任何技术经验。

然而突然有一天,她决定要学一些很酷的东西,以便于用JavaScript在我给她制作的个人网站上面放一些动画。于是我开始教她Ruby on Rails。两周之后,她建立了自己的web app。几个星期后,她意识到,她需要一些更深层次的知识,于是我开始教她更多基本的东西。

我们学习了如计算机如何工作,如何手动分配内存,栈和堆分配之间的差异,如何在Objective-C做到正确地引用计数,垃圾收集器是如何工作的,函数式编程(此处指Haskell),网络协议以及更多。她甚至知道了我在一年前还不知道的东西。

基本上我采取的方式是,对于我知道的内容,提取重要的东西,扔掉99.5%用于说明什么重要的浪费时间的玩意儿,只教她需要知道的东西。

不过这还不足以让人成为一个程序员,她还需要了解硬件部分,但即使这样,她已经比大多数在学校中学习软件工程的人懂得更多了,仅仅学了6个月之后。

你是一个专业的老师

作为一个专业的开发人员,也意味着在一定程度上你是一个专业的老师,因为我们的工作迫使我们需要不断地解释给其他人听。我们必须将自己代入阅读者的角色以便于让我们的代码更易于理解。我们必须解释我们做的事情,当别人不知道这有什么用的时候。我们必须教实习生如何迈向自己的伟大之路。

我们在工作中能做的就是将复杂的事情简单化(话说,有些人恰喜欢反其道而行)。之所以需要这么长的学习时间,其原因之一就是因为我们经常迷路。你可能有一个偶尔会给你解释一些东西的教授,但是很遗憾每周只有一节课。

但是话说回来,如果你教你的女朋友——因为是住在一起的——那么她随时就可以问你,因为你随传随到,立马可以给她解答问题。

开发人员通常之所以非常擅于谷歌搜索,是因为经常陷入迷途。总是需要自己去寻找答案。但是,如果在同一个房间里,对方随时能提供答案的话,那生产效率还能不高吗?

译文链接:http://www.codeceo.com/article/how-tech-girlfriend-programming.html
英文原文:How to Teach Your Girlfriend Programming
翻译作者:码农网 – 小峰

> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

学会定时器的使用,就可以用单片机实现时序电路,时序电路的功能是强大的,在工业、家用电气设备的控制中有很多应用,例如,可以用单片机实现一个具有一个按钮的楼道灯开关,该开关在按钮按下一次后,灯亮3分钟后自动灭,当按钮连续按下两次后,灯常亮不灭,当按钮按下时间超过2s,则灯灭。数字集成电路可以实现时序电路,可编程逻辑器件(PLD)可以实现时序电路,可编程控制器(PLC)也可以实现时序电路,但是只有单片机实现起来最简单,成本最低。定时器的使用是非常重要的,逻辑加时间控制是单片机使用的基础。

生成海报
点赞 0

Abin

我还没有学会写个人说明!

相关推荐

颜射猫咪!一个超酷的宠物行为矫正机

这是一个风和日丽的周末,我把美味的鲈鱼从冰箱里拿出来解冻,睡个午觉打个游戏后,准备晚上大吃一顿…… 美好的剧本都会紧接着一个可怕的转折……这并不是一个应该有的套路,当我准备对鱼下手的时候,万万没想到,鱼不见了?! 不用多想,没谁了,也就家里那

基于8051单片机实现电子时钟+数字秒表设计

概述 电子时钟是一种利用数字电路来显示秒、分、时的计时装置,与传统的机械钟相比,它具有走时准确、显 示直观、无机械传动装置等优点,因而得到广泛应用。随着人们生活环境的不断改善和美化,在许

51小车(一)

1.准备: 借鉴: 详细介绍如何从零开始制作51单片机控制的智能小车(一)———让小车动起来_慕羽★的博客-CSDN博客_新手怎么制作单片机智能小车 2.已有模块 (1)  已有电机驱动 (2)