就在提交参赛作品后不久,我突然想起孟老夫子那句经典的话“天将降大任于斯人也,必先苦其心志……”,当然上天并没有要将多么重大的责任交付与我,但既然让我与Python这门程序语言结缘,我不想让它和我随着这个小小参赛作品的完成就缘分而尽了。要真是这样的话,整个参赛中努力学到的一些关于Python的知识也就付诸东流了!
山东商业职业技术学院 青争队 张清蛟
2013年的夏天,酷暑的炎热并不次于往年。说实话,要“牺牲”一个惬意的暑假,我还真有些不舍,但考虑到参加齐鲁软件大赛是一个可以多方面提升自我的机会,我又毅然决然地与伙伴们开始了大赛暑期夏令营生活。今回想起有苦也有甜的参赛过程,不禁想用不甚华丽的语句,将之撰写成文,也可以鼓励后来者。
【前】
经过大赛组织的巡回报告演讲,我对大赛产生了浓厚的兴趣。看到以往获奖的学长们在台上演讲,套用业界常用的一句话“我觉得自己的专业知识水平还菜”,便暗下决心,一定要通过大赛来不断学习,不断充实自己,让自己的专业水平和动手实践能力更上一层楼。
好的,废话不多说!首先来谈谈我们的组队,因为彼此之间的互相信任,我与其他四位伙伴迅速组成了我们可爱的“青争队”。但是,组队虽然快捷,挑选合适的命题却不是想象中的那么简单,由于大一还没结束,故知识水平确实有限,看看哪个命题都觉得不是那么简单。可能上天注定让我们与Python结缘,最终确定了《基于python的游戏和应用开发》这个命题。
但是确定命题后就可以万事大吉了吗?不然,理想很美好,现实很残酷。我们的参赛历程也可谓是步步艰辛啊!首先,我们不像人家选择《智能手机程序开发》命题的同学那样这么顺利,他们的目标很明确,在学过Java程序设计的基础之上做起智能手机来就容易了很多,而我们呢,最初连Python是什么、Python可以干什么都不知道,更别谈如何下手了!短时间内,我们也就顶多了解到Python是一种胶水语言,其余的一无所知了!
不过,我们最应该感谢北京中谷运维公司的Milo老师,在我们最迷茫的时刻,他要在网上进行授课,正好讲的是Python基础,对我和队友们来说这可是一个福音。于是,我们晚上在他上课的时候一定会到网络教室去听他的课程,渐渐的我们对Python这么语言有了初步的认识,了解到它其实也是一门面向对象的程序设计语言,而且相对于其它诸如Java、C++之类的高级语言,反而代码更简洁、功能更强大!
当我们认识到python可以实现很多强大的功能之后,我们又为到底要用Python语言来做什么样的程序及实现什么样的功能犯了难......
【中】
时间过得好快,转眼间暑假就伴随着期末的结束而来临。我虽然也常与队友不断开小会讨论该做什么样的程序,期间不可避免地会产生一些分歧。我们尝试过各Python可以实现的功能,如web应用、科学计算、网络爬虫、游戏等等都做过,可一直就是没有结果。这时,好不容易盼来学校为我们分配的各个命题的指导老师,令人沮丧的是,指导老师也没有听说过Python这门语言,他只能在我们前进的道路上给我一些方针性的建议,然而在真正的实践开发上却帮不上我们,这就预示着前方的道路该怎么走,还得靠我们自己。
我们怀着忐忑不安的心情正式迈进软件大赛的大门,在山东师范大学举办的一场“齐鲁软件大赛及外语大赛” 启动大会可以说是我们队的转折点,听了专家们的报告演讲使我们心中又重新燃起了希望。
回来之后,我与队友们进行了深刻的总结。原因还在于我们心太浮躁,好高骛远,总幻想着能短时间内能做出功能多么强大的App。于是我们把目标仅仅锁定在基于Python的GUI图形界面程序设计。
定位目标后,由于对GUI还比较陌生,我们决定先不着急写程序代码,先拿出7-10天的时间来学习这方面内容。在这短短的七八天之内,我们又对可以实Python GUI编程的tkinter、wxPython等几个常用的模块进行了学习,不断从论坛、Python专题网站、QQ群等各种途径获取相关资源。在这里我特别想说的是,要想学好编首先必须学好英语,尤其是IT类英语。由于Python这门语言在国内做开发的相对较少,故而相对来说比较精华的教程都是英文版的,这对于英语词汇量掌握程度不高的我们无疑又添了新的麻烦。当然,这也没能阻挡我们前进的脚步,只好硬着头皮继续学习。说实话,参加完大赛我的英语水平也有了明显提高。
经过在网上不断与别人讨论,我们发现PyQt这个模块更适合我们的开发目标,我们又稍稍降低了难度点。
在最终的代码实施的过程中,也使我们真正掌握了Python中面向对象(即一切万物皆对象)的原理。一开始,我们做起来也是极不顺手,毕竟在此之前我们只接触过Java这门程序设计语言,而Java多讲的是控制台编程,而今初次接触GUI设计,技术自然显得就不够娴熟了。
后来,经过不断的探索,GUI编程无非就是一些用图形和控件组合成的WinForm窗体,各方面都准备妥当之后,只要通过相应的技术,把相关的一些控件转换成代码,这样每个控件在整体代码库中就作为一个对象而存在了。
当然,总体程序编写完成之后,就像一件饰品一样只是做出了基本的模型。完美的饰品如果没有后期的精雕细琢是不可以的,还要注意对整个程序的小细节进一步加工,毕竟“细节决定成败”嘛!
【后】
就这样,随着大赛暑期为期一个月的夏令营训练活动的结束,我们也最终顺利地完成了我们的参赛作品。
就在提交参赛作品后不久,我突然想起孟老夫子那句经典的话“天将降大任于斯人也,必先苦其心志……”,当然上天并没有要将多么重大的责任交付与我,但既然让我与Python这门程序语言结缘,我不想让它和我随着这个小小参赛作品的完成就缘分而尽了。要真是这样的话,整个参赛中努力学到的一些关于Python的知识也就付诸东流了!
于是,我又产生了一丝将Python继续学习开发的意念,加之此次参赛作品获奖的好消息更加是我坚定这一信心。
其实,Python之所以能成为一门强大的程序设计语言,是因为它还可以用到更多的领域,它还有更多的知识有待我去研究。譬如说,如前文中我提到的,Python可以通过django、Tornado等模块实现web应用开发,可以编写许多操作系统的维护工具,可以做游戏开发,可以实现3D建模;再往中等层次来说,可以用NumPy 做科学计算,可以做比较神奇网络爬虫、实现网络之间通信等;至于高层次嘛,Python可以与Azure实现云计算、辅助hadoop等做大数据应用开发,编写机器人操作指令程序等等。
Python的强大功能真可谓是数不胜数,GUI设计则为诸多功能的九牛一毛。我愿将本次参赛历程作为人生中的一块奠基石,让其中的酸甜苦辣时时刻刻激励着我,鼓舞着我。我愿坚定信念,也为了缘分,将Python向着更宽更广的领域继续努力下去,永不言弃!