车镜厂家
免费服务热线

Free service

hotline

010-00000000
车镜厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

专访周家安我的十年编程自学之路万芳

发布时间:2020-02-14 11:54:14 阅读: 来源:车镜厂家

专访周家安:我的十年编程自学之路-CSDN.NET

摘要:有一群人对计算机兴致盎然,却总不得要领,所以本期社区之星的话题是:编程学习。在编程路上该如何选择和学习语言?编程学习的重点是什么?如何克服编程学习中的枯燥和无聊?社区之星第十四期采访了自学编程的周家安,相信他在编程学习路上长达十年的摸索能给诸位带来答案。

导读:这是一名“不务正业”(专业是人力资源管理)却一心投入计算机怀抱的人,他年纪轻轻却凭着浓厚的兴趣和独特的学习方法自学了诸多计算机语言,他乐于分享和解惑并因此出书,这一切是怎么做到的?他有什么认识和感悟?……为此CSDN记者对这位87后进行了专访并发表成文,希望能给那些在计算机路上彷徨、挣扎和困惑的人带来心灵鸡汤——只要决心努力,任何事都可完成,同时也希望给技术大牛们带来共鸣,因为你们也曾这么“跋山涉水”过。

有人为选用什么编程语言而发愁时,周家安形象的表示:“吃饭用筷子,刷牙用牙刷,你不要用牙刷来吃饭就行。”

周家安,2010年大学毕业,先后从事PHP版电子商务平台扩展开发、嵌入式开发、Web开发、Web服务接口开发和ERP系统外接应用程序开发,著有《Windows Phone 8开发技巧与案例精解》一书。

那些年自学编程的青涩之路

CSDN:你是什么时候接触到计算机?那个时候对计算机的兴趣一直持续了多久?

周家安:记得第一次接触计算机还是在2002年,那时候我正在上初中,一个偶然的巧合我与计算机结下了不解之缘。

那时候,我弟弟正在上小学,有一天,可能是学校的图书室(那时候还没有像样的图书馆)进行清理,一位老师搬着一叠书正要离开,在门口看见我弟弟,就顺手塞给他两本书。弟弟不知道是什么书,就拿回家给我看。

原来那是两本计算机程序设计竞赛的基础教程,一本是Pascal,另一本是QBasic。强大的好奇心驱使我打开这两本书,就这样,我糊里糊涂地踏上了自学编程之路。

CSDN:你自学的第一个语言或技术是什么?大概用了多久?能和我们分享下自学编程中的一些经历吗?

周家安:第一个学习的语言是QBasic,对于这个语言,我想现在很多新生的初学者朋友应该很陌生了。当时我对比了那两本书,发现QBasic比较容易接受,感觉学起来比Pascal简单,于是就从QBasic开始。那时候家里还没有买上电脑,所学到的东西都是“纸上谈兵”,只是偶尔到表哥家里“发挥”一下。

2003年国庆长假,表哥从广州大学城回来,就让他帮忙到电脑城组装了一台电脑。那时候我才真正有了可以实践的机会,心里无限欣喜。那时候还不能上网,个别邻居较为幸运就用电话线上网,于是我拿着一张软盘到学校叫老师帮我拷贝了一个QBasic,然后回家放在电脑上,等到周末不用上学,我坐在电脑前把书上的所有例子代码都实战了一遍,敲键盘敲得我手都累,对着显示屏幕坐了一整天。我说不出是什么让我这么疯狂,不过总的一句话是:每次我写完程序后都有一种很强烈的成就感,就是这种感觉让我很兴奋,就会迫不及待地接着去学习更多知识,这样我会得到更多的成就感。

有一次在书店看书的时候,看到一本书叫《Visual Basic中文版基础培训教程》(人民邮电出版社,2002年),我想都没想就买下,只要周末不用上学我就把自己宅在家里,哪里也不去,就拿着这本书看,开着电脑一边看一边把书上的例子敲一遍。书上也建议用这种方法学习,也就是我们大家都懂的,实战为主。

当把整本书看完后,书中的例子都照着练了一遍,为了向好同学、好哥们炫耀一下,我就想着做一个MP3播放器,大致与Winamp的基本功能相似,可以控制音频播放行为,可以保存和加载播放列表,一段MP3播放完了自动跳至下一段。根据书上的讲解,应该用MCI组件,但在编程过程发现,书上的例子我都练得很熟,代码也记得(我是死记硬背代码的),怎么自己做起来就好像什么都没学到一样呢?

我不甘心别人都能学会,难道我就不能?于是我下定决心,一定要通过自己的努力将这个播放器做出来。于是把书又从头到尾看了一遍,找到了原因:作为初学者,我过度关注代码的细节,从未去考虑过思路和逻辑,先做什么后做什么没有弄清楚。这是很多入门者都容易犯的错误。从那以后,我就非常注重思路,在写代码前要想好接下来要做什么,完成哪些,有哪些步骤,先做什么,再做什么,最后做什么。

CSDN:接下来你又学了哪些语言或技术?当时为什么会选择学这些?另外是什么因素驱使你不停的去学各种语言或技术?

周家安:在我上高中这几年,其实我主要使用的VB和Pascal,而C语言只是略懂一点点。由于平时能花在上面的时间真的很少,而且高三这一年,为了拼高考,我几乎连电脑都没碰过,对于VB,说真的,除了语法外,其他的都印象模糊了。

由于各种原因,大学我没能如愿地选到我想要的专业,而是选择了人力资源管理专业。刚上大学的时候,我一直在问自己:既然没能进入计算机相关专业,那还继续学习编程吗?可不久后我发现,在大学里面,空余时间实在太多了,如果不充分利用好这些时间,那岂不是在毁灭自己的青春年华?尤其是看惯了身边许多同学,有的在网游世界中越陷越深,有的陷入暧昧情感中不能自拔,有的漫无目的地熬日子……我呢,我不得不要好好想想,来大学究竟是干什么的?难道四年之后,还是一无所获地离开校园?难道真的像外面所传说的那样,大学毕业生还不如那些没受过高等教育的人吗?

从小性格十分倔强的我,下了死决心:我的大学生涯,绝对不能重蹈周围那些人的覆辙。我决定把所有空闲时间都泡在图书馆。

利用图书馆的资源,我接触到了PHP、Java、ASP、C++等内容。慢慢地,我把重点放在C++上,从《C++ Printer》中我读出了许多疑惑和神秘感。我曾问过自己:C++真的很难学吗?说它难学的都是谣言吗?还是人们习惯了定势思维,把它搞复杂了呢?

而真正让我有动力去学习更多C++的知识的,是一套讲得很优秀的视频教程,我相信很多人都看过,就是孙鑫老师的VC++教程,我真的要感谢孙老师,而且我还从图书馆借到了孙老师的书,从头到尾看了一遍,即使当时很多东西看不懂,但是我就硬撑着去看,我心里不停地暗示自己:我就不信我学不会!

大学期间,我很大一部分时间都用在学习C/C++上,不知道为什么,那时候我觉得.NET太简单了,不值得研究,显然我当时真犯了一个致命的错误,我估计现在还有不少人仍在犯着我当年的错误,那就是心态过于偏激,后来我才渐渐地明白,哪怕是写程序,也要培养自己具备良好的心理素质。

那个时候,大家都知道,C#比较热,为了彻底纠正我的错误,同时我也想亲身去体验一下.NET是什么。记得那时候书店里都有很多C#的书,这更加勾起我与生俱来的好奇心。就好比一个习武之人,对于陌生的拳法都会有着浓厚的兴趣,为了探个究竟,我便投入了.NET的学习中。

后来我想:自己完全自学编程,没有接受任何专业课程的教育,也没有参加任何培训,最大的好处就是不会受到现有理论的负面效果影响,所有东西都是凭借自己最真实,最直接的感觉去感悟,最终学到的东西是远远超过计算机专业的同学的。后来的学习经历更是证明了这一点。

后来参加工作,接触到ERP系统的开发,我才真正明白,.NET有它独有的优点。有一天公司停电了,就跑到外面跟一位朋友聊起天来,谈话中我不经意间说了一句话:“去商店买东西的时候,你会被琳琅满目,各式各样的商品弄得眼花缭乱,可是,你为什么要去商店?你去商店干吗呢?是不是别人说哪个商品好啊,你就去买呢?当然是购买你最需要的商品了。世界上哪来什么编程语言之争?争什么呢?”他用力拍了一下我的头脑,说:“来我们公司吧,你看看,我们公司论规模论实力都比你现在那个公司强。妈的,我们公司那些老程序员都说不出这么精妙的话,算你狠!”

所以,我送给那些整天为选择用什么编程语言而发愁的朋友一句话:“吃饭用筷子,刷牙用牙刷。你不要用牙刷来吃饭就行了。”

促使我不断去学习这么多语言或知识的因素,我想至少有两个:一是性格,我小时候就很喜欢拆解电器,什么电风扇、电冰箱,洗衣机,收音机,反正是没有我不敢拆的,总是想看看这些电器的外壳里面都装着什么;二是逐层深入去学习,会带来更多的成就感,我很喜欢这种感觉。

与Windows Phone平台的不解之缘

CSDN:后来你为什么又对撰写技术博客产生兴趣?据说你的新书《Windows Phone 8开发技巧与案例精解》和你的写博经历有关,能和我们分享其中的故事吗?

周家安:是的,撰写技术博客,分享编程知识是一位老同学的建议,当时他跟我说:“学编程的人我是见得多了,像你这么个学法的,我还真第一次见,看过《射雕英雄传》吧?喂,你跟那个什么黄药师很像,怪招特别多。你这种学习方法有一点很有意思,那些抽象的东西到了你那里就全变成什么下水道(他说的是多线程),什么门铃(其实是回调函数)之类的。”他说如果我把这些东西写到博客里,一定会很牛B的。就是这样我就开始写博文了。

我写了一些有关Windows Phone应用开发相关的文章,后来出版社的编辑看到我的博客,希望能与我合作,写一本IT图书。几天后,我想也好,就同意了。

CSDN:WP8、Android和iOS之间你是如何取舍的?为什么最终会选择WP8平台?

周家安:其实,Android应用我在公司做过相关项目,都是和ERP系统集成的边沿性应用,也只能是边沿性应用,说白了是送给客户玩一下的,不收取费用的,因为这些应用是无法替代ERP的核心功能。后来我也做了一个WP版本的版单查询(服装行业术语),主要得益于WP上对WCF和Web服务支持得较好,可以直接与我们的核心系统对接。

iOS应用我没有做过,也不清楚具体情况。

选择WP8主要因为用现有的知识就可以快速迁移,学习成本低,另外是它的开发工具在代码管理上的优势。

CSDN:你是怎么看待这三大平台的发展?尤其是WP8,它目前所占市场份额仍然不高。

周家安:三大平台各有长短,对我而言,其实真的没什么区别。WP8市场份额不高并不意味着开发WP应用就没有收益,我是经济管理专业出身的,如何去应对市场的风云变化,心中还是有底的。但凡有一种新技术面世,在前期阶段都会出现泡沫的过度膨胀,这也是正常现象,毕竟自发性和盲目性是市场的基本属性,可以理解。一种新的技术出现,也不能说明它会替代现有的任何技术,而更有可能的情况是与现有的各种技术进行融合。

对于移动开发,我个人是不会投入太多精力。一来移动应用的快速增长并没有在客观上说明做移动开发就有高回报率。空白市场无处不在,举个例子,有一次我写了一个程序,它可以自动扫描指定目录下的照片,并计算出照片的物理尺寸(英寸或厘米),后来我想到:把这个程序扩展一下,除了计算单张照片的面积外,还加入统计指定目录中所有照片的总面积。这程序虽然不是很复杂,但你不要忽略它的市场价值,假设我把它完善一下,加入统计价格的功能,比如一平方米多少钱,冲印这些照片需要多少长度的相纸,每平方米的冲印成本是多少,最终的理想收益是多少。然后把这个程序卖给数码冲印店。你看,这难道不是市场吗?难道非要做手机应用不可吗?

目前,手机应用主要集中在娱乐方面,能否与商业化无缝融合还是个未知数,毕竟可发挥程度有限。在工业生产和商业应用领域,或许与特定设备结合得比较好的嵌入式开发更好,比如电子秤、无线激光扫描枪、医疗设备或其他智能设备等。

美女旗袍

美女性感照

裸体美女照片