Home  >  Article  >  Backend Development  >  作为程序员,女朋友想学习编程,我该做些什么?

作为程序员,女朋友想学习编程,我该做些什么?

WBOY
WBOYOriginal
2016-06-06 16:11:061853browse

我是个Python 与 Node 的粉丝, 是否从中选择一门来教女朋友?如何来教女朋友?
如果选一门新的语言,好处是可以和女朋友一起学从0开始,但是会增重我的负担。
如果选择一门新语言,Ruby合适吗?因为我也喜欢Coffee,也喜欢Ruby的code for fun。

回复内容:

之前试着教过自己的女朋友写代码,事情发生在一年前。当时她正在写《极客爱情》,一个中文女和一个工科男的故事。当时我觉得可以教她写代码,就先从几个点开始:

1. 先找一个她的兴趣点——如某个应用。
2. 选定一门简单的语言,No Java, No Lisp。最好是JS,或者Ruby/Python之类的动态语言,考虑到Python的Logo是一条蛇,我觉得JS会好一点。
3. **手把手教她写代码这点很重要**
4. 带她把她的应用的原理过一遍,或者做一遍。

之前,还写了一篇文章介绍了一下:

原文链接:为何开始教中文女友学编程

过去编程这种事只有专业的人才能做,见过不同的人掌握着很好的编程能力,有学美术的,有学金融的,应该也会有学中文的。学编程这种事情需要一种动力,对于不需要以编程为生的来说。编程可以训练人的逻辑思维,相对于数学来说,编程更容易加强人的思维能力,数学已经被教材和大多数的老师教得枯燥乏味。


事情的起因

简单地说事情的起因就是:

  • 女友最近在使用一个叫\”词CI\”的APP,一个用来填词(即唐诗宋词中的宋词,如蝶恋花之类的都是填出来的)的软件(网上有各种关于作者的介绍,或者说这算是对于作者APP的一种推广)。
  • 除此还有一个好的契机是苹果推出了新的语言Swif,看上去这种语言已经适合一般人来写程序。
  • 不过主要原因是,她有点争强好胜。

接着便拿女友的iPhone(我用的是Lumia 920),试用了下APP,感觉了下大致就是把词的平仄都存在数据库中,再读取出来一个个做比较。于是拿着她的Windows(自己的电脑主板坏了,用的是借的一台古董级的西门子,装的是Ubuntu)找了个手机助手下了个APP,解压完发现果然有一个sqlite3的db文件,再一看数据库的内容,教她理解这个逻辑应该不难(难的应该是UI和用户体验)。


蛇或者宝石

\”Python是蛇,Ruby是宝石\”,你会选择哪一个。


大部份人应该都是传统课堂过来的,也就是学C语言的,C语言最强大的是指针,于是很遗憾的是这造成了一种编程很难的错觉。考虑到此,我便将选择放到了Python和Ruby之间,两者感觉起来似乎难度不大,但是这是对于程序员来说。

  • Ruby讲究的是——做一件事,可以有多种方法。这和它的前辈Perl真是像极了,所以要读懂Perl没有那么简单,Ruby在我刚接触到一些产品的代码时候也是如此。
  • Python讲究的是——做一件事,只有一种方法。换句话说,Python追求的是简单。

于是在蛇和宝石之间选择了蛇。而且

  • 个人用得比较多的是Python,因为库比较丰富。
  • 找不到适合的Ruby书本。

于是上了亚马逊买了本《Head First Python》,可以翻译为《深入浅出Python》,意思就是可以很简单地学Python。书中后面讲的是移动开发,以及WEB开发。


目前的结论

两个晚上的三个小时过去了,演示了一个基础版的汉字到平仄的转换,有兴趣的话可以在稍后的内容中关注。主要难度:

  • 专业名词太多了。这是一本写给程序员看的书。

另外的结论便是:

  • 对于一般人来说,教他们开始学编程没有想象中的难。

如果你打算教你的女友学编程:

  • 有耐心的教。
  • 亲自去教。而不是只给一本书,只给一本三天入门某某语言的书。
  • 找个她感兴趣的突破点。如果她学的是生物你应该试着去找些相关的。

我所做的大致就是:

  • 让另一半理解你的工作。
  • 让她能理解一些基础的原理。

当然如果你不会试着那样做的原因可能是,带有点歧视的大男子主义,编程这种事男生可以的,女生也不会有问题的。脑子不用是容易生锈的~~,现在的想法便是简单地做一个demo出来,在亚马逊的平板上用QPython,直接上手APP有点难,当然除此之外可能需要更多的语法。逻辑上能理解的,语法上便也不过来。


附上她写的极客爱情:



01.爱它,还是爱我
02.去实验室约会吧
03.我真的不是修电脑的
04.我的编程养成记
05.极客的神逻辑
06.我们的战争
07.和电脑的亲密接触
08.邋遢IT民工拯救记
09.当情书遇上技术博客
10.技术宅不解风情
11.和不会聊天的人谈恋爱
12.不想加班的程序员不是好程序员
13.技术宅的网购属性
14.找女朋友难,找工作更难
15.极客的文艺情怀
16.二十二岁开始的初恋
17.当爱情遭遇远程调试
18.基友一生一起走
19.梦想还是要有的,万一实现了呢
20.待我代码编成,娶你为妻可好 (完)
番外之一:爱情中的那些碎段子
番外之二:程序员如何邂逅真爱之伪攻略篇
番外之三:极客男友的情人节礼物大作战

和她弄的微信公众号:


作为程序员,女朋友想学习编程,我该做些什么?

然后我也陪她搞微信公众号:


作为程序员,女朋友想学习编程,我该做些什么? 教咯,你会什么教什么,题目做不出来就惩♂罚♀她。 1. 如果你们不在一个地方,你通过聊天教她,呵呵,教了一会儿话风就完全变了。。。
好难呢!不会呢!⊙︿⊙
这都是什么鬼!(⊙0⊙)
我不要学编程,你们这帮变态的程序猿!~>_不会呢,怎么办呢!
2. 如果你们在一个地方,不是家里,你教她,呵呵,教了一会儿话题就变了。。。
好饿,咱们去吃东西吧!└(^o^)┘(尼玛,明明才坐下来不到十分钟)
这些东西好无聊啊,咱们去吃东西吧!\(^o^)/(是谁说要学的来着,是谁来着)
好难啊,我们去吃东西吧!(☆_☆)(为什么又是吃东西。。。)
3. 如果你们在一个地方,是在家里,你教她,呵呵,教了一会儿,欧麦噶,这也是编♂程♀?(ˉ﹃ˉ)

所以,作为一个过来人,我跟你说啊,你能做的也就供一些参考资料了 你不觉得,纠结语言是非常不程序猿的表现么

程序猿应该纠结于字体和编辑器
所以你可以试试先教一下如何使用vim和emacs
然后选择一门像是ML或者Oz这种有道理的语言去教导一下,顺便讲点type相关的或者设计模式相关的

然后就可以啪啪啪了
说起来,每次我和别人讲Linux的时候我总是想从谓词,名词和副词/形容词成分开始讲起怎么破 你是python和node的粉丝,又觉得学一门新语言是「负担」。。。所以想学、教ruby,突然又开始喜欢coffee,但又觉得ruby是code for fun

我看到了一颗对cs满怀期待最终被狠狠击碎的❤️了

如果非要你来教的话,教java php吧。。 稍微更新点~
我就在跟男票学习中。

因为本人是新媒体专业(以前是传媒狗),跟互联网的关系还算紧密。
然后越发觉得没有点技术性的本领不太行,就想学点简单的编程。
目前只是带点兴趣了解,并不会说靠这个来吃饭什么的。
只因为自己智商有限(像大学里java学得很烂,差点挂掉ʕ •ᴥ•ʔ )。
男票不是计算机专业的,他学的是控制,然后硕士学了CE,没有学CS

我以前有点点编程基础,HTML算是比较所见即所得,能调动点兴趣,所以我本身最开始只是想学点HTML。
然后我想要有点动态效果,所以又加了CSS

每次他会做好ppt,然后音频加共享桌面来给我讲解。
当然PPT很简单啦,就是这样:
作为程序员,女朋友想学习编程,我该做些什么?然后这样:
作为程序员,女朋友想学习编程,我该做些什么?
很基本的概念讲,然后是例子咯。留点课后思考题,下次由我回答。
因为两个人都很忙,加上异国时间差,所以现在才上了两次课呜呜。(异国狗的忧桑

从我的角度:
如果不是将编程作为职业来学习,妹子只是对编程好奇。
那心态大概跟我一样,只是想知道
“哇,那个点上去会变颜色是怎么实现的!”
“那个下拉菜单又是怎么实现的!”
……
然后如果自己也能够做出来那成就感满满哦~
你在给她讲的时候,可以更多地给例子,不要讲一堆概念。
用一些生活中的简单例子类比,这样比较好理解

另外,建议可以手把手教妹子自己搭个博客!


嘛近期我发现这种上课方式效率太低 远没有我自己看书练习快ˊ_>ˋ
毕竟编程这种还是实践来得快
于是只在有问题的时候询问他
不匿啦 这事儿我明白,老婆跨专业学CS,以前没有编程基础。入门语言是Python和Java。

说说好多CS专业的人习以为常但是对初学者非常困惑的概念吧

1. 什么是function?和数学上的函数有什么关系?
2. method又是什么?和function又有什么关系?
3. static method又是什么?和普通method又有什么关系?
4. instance是什么?class是什么?还有啊你都没跟我说面向对象是什么还是从头说说吧
5. lambda是什么?(不要想着介绍清楚什么是closure…)

所以真的想入门的话,学一门functional programming language吧。我没有开玩笑

  • functional PL里函数的概念天然和数学的函数概念等价,除了函数和type之外几乎没有额外的概念需要学习(closure/currying之类概念对于没有任何编程基础的人来说没有负担)
  • 绝大多数函数式语言又有强大的类型推导或者动态类型所以初学者不用和类型奋斗或者在选择面前挣扎(为什么有Array之后还有ArrayList?你真的想在刚开始就介绍列表的插入效率、伸缩效率吗?)
  • 以及绝大多数函数式语言都有REPL所以不用跟初学者说:不用管这个int main(或者static void main)是什么只管死记硬背记住先。
我敢肯定,教着教着不是你死,就是她亡。不要教老婆学任何东西这个道理难道你不懂?她要学, 就花点钱让她去跟培训机构学,或者让她看视频教学。 手把手教,迟早要吵架。跟教老婆学开车一个道理。题住谨记 正在学习前端的少女飘过……

这个得先确认你女朋友想要学的方向是什么。
确认好后就可以把目前比较流行简单易学的编程介绍给她,让她有个大概的了解,然后自己选择学哪样。
如果她还是不知道该选哪个,你就先教她Python或Node。反正你懂,有人讲解她理解的快,开始学简单的以后就有信心学更难的,然后自己独立看书学习。

我男票就基本是这么带我的,虽然有些他也不懂,但他会自己先搜索了解然后教我,我自己也乐在其中( ̄▽ ̄) 作为女程序猿,第一语言是java(中学)不喜欢,导致很久没有考虑过编程什么的。我觉得ruby用来教很不错! 在北京等城市还有Rails Girls的活动,一般免费,她可以去参加。Rails Girls一次活动就可以弄出一个web app,有教练/师资,有助于培养兴趣, 而且在初级阶段可你给你这个老师省心不少。尽管不是专门教ruby coding,但是有了更明确的目标coding学的也快,再说rails也是比较程序员友好的框架。

我觉得Python可以教,而且教学难度要小,外面资源也多,code academy, pyGirls等等。但是刚开始学,能用来直接做的东西比较虚。画个图啊算个数据啦甚至实现一个复杂算法还算比较快学会,但没有那种。。。看得到用的来的东西,不像到处都用的web app (难道教Django?!),看喜好了吧。

Node.js嘛...嗯,我觉得一开始学“编程”就写一层一层的callback,感觉怪怪的,不大对。需要更多recursion theory,写点functional program才会理解得更好吧,我觉得。我也一直不是很喜欢javascript,水微深,安全性也不高,但Node.js大势所趋也算是从了。我用的[这个](github.com/rvagg/worksh)学的Node.js,还算循序渐进,但是样子不敢恭维,看她愿不愿意这种形式了吧。

我倒是听到有很多在说用前端甚至图像的代码来教小孩子Javascript,因为更视觉一些。你也可以考虑一下。

利益相关: Rails Girls coach-to-be (但总是没时间>______
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn