谢邀。对于个人来说,这是我在知乎上看到的最有价值的问题。
补充一下quora上面的相关问题链接:
Programming for Kids: What are good ways to teach 12-year-old child programming?另外补充几个相关的新闻链接:
读读这3位年轻创业家的故事吧!13岁、16岁、22岁——可真够年轻的! 下一代程序员是什么样子?不过这个和codecademy不同,是付费网站。
只能说,跟老美相比,我们又落伍了。
因为我这几年一直在搞iOS开发,也一直在努力尝试把教育和游戏结合在一起,提供寓教于乐的学习体验。对于知识教育(相对于教育的另一大核心人格教育),个人认为两点最重要,
首先就是培养兴趣;
其次就是培养自主学习和解决未知问题的能力。
先不论年龄,既然你对语言和ios开发感兴趣,已经解决了最重要也是最难的一个问题。
那么接下来就是如何培养自主学习和解决未知问题的能力。
根据你的描述,我提一下自己的建议,供你参考,但不一定适合你个人的特点:
1.说到语言,如果要学习编程和软硬件开发,首先要学的不是哪种编程语言,而是英语。
没错,这是一个无奈的事实,除非有一天有哪位天才的中国黑客开发出基于中文自然语言的编程语言,并且让它被世人所接受。
当然,考虑到现在的中小学都已经开设了英语课程,这个看起来并非很大的障碍。事实则不然,很多大学生研究生包括毕业多年的老码农对英语的掌握都不行。当然,不乏很多高手牛人编程开发搞得好但英语很烂。但考虑到以下一些事实,个人认为适当提高下英语水平是很有必要的。
(1)几乎所有重要语言,重要开发工具,开源项目都是在英文网站上以英文的形式展示。
以ios开发为例,苹果官方开发论坛,stack overflow,github,google code, source forge等等网站都是让自己成为iOS开发高手的极大帮助。
以创业为例,kickstarter,Y-Combinator等网站会帮助你实现自己的一个看似甚至荒谬的创意。
(2)基于我朝特色,很多对于开发人员开发非常重要的社交网站和资源都必须翻墙获取,当然也都是英文的。
比如twitter,facebook,一些海外的极客,黑客论坛。
(3)针对12岁这个年龄,很难找到针对性的语言和软件开发培养教程,但是这个问题对老外(特别是老美)根本不是问题。如果你的英语比较好,可以很轻松的通过twitter,facebook,论坛,编程网站找到适合自己年龄阶段的开发教程。我不想直接给你答案和链接,如果你真的对编程感兴趣,就要尝试着自己去寻找答案。
绝大多数的老外牛人都是在12岁甚至更早的年龄开始了自己的编码和创造生涯,而其中的大多数则是从开发属于自己的游戏和小工具开始。那些名字都不用提了。
正因为如此,国外牛人和我们的差距至少是10年,不得不承认,这是一个可怕的数字。而且人最有想象力的年龄阶段正是在12岁前后,只会更早,而非20,30甚至40。
当然,如果你对英语很头大,也可以跳过。不过我想引用allan kay的一句话,People who are really serious about
softwareshould make their own
hardware. 真正喜欢软件的人会尝试着制造自己的硬件。这句话后面我还会引用,不过在这里其实想套用它的格式来一句,People who are really serious about programming should be familiar with English. 真正喜欢编程的人应该对英语很熟悉。
既然你有兴趣,还怕什么!
那么如何提高英语水平?上课帮不了你任何忙,唯有兴趣。比如看看国外的电影,玩玩国外的游戏(英语单机或者外服),尝试着写自己的技术博客,多看国外的新闻,多去国外黑客极客喜欢的网站转。对于iOS开发来说,意味着多看苹果官方文档。
相信我,在这个过程中你不仅会提高英语水平,也会拓展你的视野和思路。
2.第1点里面说的都是英语,接下来说说编程语言和iOS开发的学习。
之所以要强调第1点,是因为国内实在没有什么好的教程,特别是针对12岁这个年龄阶段的初学者来说。
我一向很讨厌国内的计算机课教学和国内一些公司的面试。一上来就是C语言,一上来就是复杂的语法,数据结构和算法,先把你吓个半死,从此彻底失去了兴趣。可以说,在我朝:
很多程序猿之所以愿意当程序猿,只是把它当做一个谋生工具而已。我们这批程序猿很多人都是这样,也很难改变了。但未来的天朝程序猿应该是真正有梦想,有创造力和想象力的人。
所以,远离一些让你瞬间对编程失去兴趣的教程,除非你要把自己当做一个励志榜样。
step1. 如果你英语可以,我建议你可以从codecademy的基本教学开始
Learn to code如果你对英语没什么兴趣,可以跳到step2
虽然这里面教的主要是网络开发语言,比如javascript,php,ruby,python之类的,但个人认为非常适合初学者入门。
为什么是这些网络开发语言而不是C语言之类的?
1.兴趣
codeacademy的教程非常浅显易懂,而且很有趣味性,可以让你在不知不觉间学到很多东西。
2.立见成效
学习任何一门技能(不仅包括编程语言)的主要目的是用来解决未知或未曾接触过的问题。所以在学这些语言的第一天,你就要尝试着做一些简单的网页,试着做一个自己的网站。不要被那些所谓的专家吓倒,按照我朝专家的观点,一个程序猿不学会数据结构和算法就不能做东西,纯属放屁!
这一点我和很多老美的观点一致,屠龙刀固然锋利,杀鸡未必比得上菜刀。你要学习的是如何解决问题,而不是去发明另一种编程语言和算法,这些大可以在你成为高手之后再去做。
永远记得,入门和成为高手是不同的过程,绝大多数人都倒在门槛上,不敢迈出第一步。
可以参考这篇文章:
如何学编程,JUST DO IT!在学完codeacademy系列中的每种语言(做了一个你自己的网站或小应用)后,你就可以真正开始iOS的学习了。
我希望你到此为止仍然对编程有非常浓厚的兴趣和创造自己产品的渴望。
step2. 接下来你就可以看http://raywenderlich.com里面的iOS入门系列教程了。
iPhone Tutorials里面有iOS for high school students系列教程,虽然你可能不是高中生,但考虑到我朝初等教育的先进,应该远远超过了他们的水平。
iOS For High School Students: Getting Started另外我根据这里面的教程改写了一个中文版的教程(让不懂编程的人爱上iPhone开发)
让不懂编程的人爱上iPhone开发(系列1完结)step3. 学完了这个系列后,就可以考虑做自己的iOS产品了。
如果你想开发简单的应用,可以接下来看这个网站的应用开发系列
How To Create A Simple iPhone App on iOS 5 Tutorial: Part 1/3如果对游戏开发感兴趣,可以接下来看这个网站的游戏开发基础系列
How To Make A Simple iPhone Game with Cocos2D 2.X Tutorial使用cocos2d(cocos2d-iphone,cocos2d-x或cocos2d-html5),可以比较轻松的开发手机或者平板电脑上的游戏。
我个人跟人合写了一本<cocos2d权威指南>的书,不过自觉里面写的有些啰嗦了,也不一定适合你。说明一下,这本书需要对Objective-C和iOS开发有一定的了解,完全的入门新手不建议购买。
(
《Cocos2D权威指南(Coco2D领域内容最全面、系统和深入著作,系统讲解其使用方法、技术要点、工作原理、开发技巧、最佳实践及性能优化)》王寒,屈光辉,周雪彬)
哦,我差点忘了告诉你,raywenderlich这个网站的教程都有中文版的,你是不是松了一口气呢~
step4. 接下来怎么办?
接下来要回到1里面告诉你的方法,想一个idea,然后把它实现。在这个过程中你会遇到很多问题,你需要查看苹果官方教程,去和高手论剑,去开源项目取经甚至为这些项目做贡献。
我最近刚整理了下iOS开发常用的国外网站:
iOS开发常用国外网站清单_eseedo_新浪博客当然,国内的cocoachina(
CocoaChina 开发讨论区 最热的iOS开发论坛),51cto(
iOS_移动开发)和csdn(
CSDN.NET - 全球最大中文IT社区,为IT专业技术人员提供最全面的信息传播和服务平台上)也有很多的资料可以供你参考。 )
但始终记住:
你学东西是为了解决问题的,不要陷到某个坑里起不来了。而且你可以创造性的用自己的方法来解决问题。
相信我,这个世界上本没有专家,只是忽悠多了就成了专家。
不知道你目前在哪个城市,我目前人在成都,如果你需要学习又恰好在这里,可以周末或假期找我。我愿意免费教你学会基础的iOS开发(应用或游戏都可以),这样或许更有针对性。可以通过我的邮件或新浪微博(http://weibo.com/eseedo),微信(iseedo)联系我。
我很乐意和你分享一下自己学习iOS的心得体会。
顺便说一下,我最近其实一直在考虑是否业余时间开一个类似美国少年黑客训练营性质的针对k12(小学,初中,高中)的编程周末班或者假期训练营,主要教K12游戏和网络应用开发,可以是公益性质的,也可以是带商业性质的。但因为工作原因迟迟没有行动。如果有同好可以联系我,我们一起探讨下这个问题,共同弥补中国黑客的10年差距。我相信这是一件非常有意义的事情。
这不是一个生意,但却是一件值得去做的事情。
对不同的人来说,或许应该根据自己的实际情况来选择不同的路。我从来不认为兴趣导向的学习方式就是适合所有人的,没有任何东西是适合所有人的。每个人都可以选择自己的路,条条大路通罗马,没有一个人的路是相同的,也没有万能的路。
但至少我个人的理念是,Learn programming the happy way,learning everything the creative way.
在快乐中学习,在创造中成长,这就是我所追求的目标。
最后的最后,我想说,facebook的最初版本就是PHP写的。选择神马语言进行开发,真的没有你想象的那么重要。重要的是,立即行动起来,做产品。参考:
马克·扎克伯格是独自完成 Facebook 最初版本代码的吗?