#引语
大家好,我是点滴复读机软件的开发者。
我想从我自己的英语学习经历谈起,总结分享一下这个点滴复读机软件的开发心得。
通过分享,一方面可能对于英语学习者会有所共勉和启发;另一方面,也会为你展示真实的软件开发工作和一个程序员的心路历程。
#我的英语学习经历
与大多数人一样,我是从初中起为了应试教育,而在中国老师的教育下,在汉语环境下开始学习中国式英语的。
回想起来,我初中时的英语启蒙老师,在当时的条件下,算是非常的优秀了,比如:
他会总结英语音节的划分规则和口诀。(要知道当时的教课书上是没有相关内容的);
他会总结考试易错问题点的各种规则和口决,我现在还记得像foot wood took goods cook这些发短音的就是"脚踩木头拿物煮"的口决等;
他会让我们在每次英语课上进行情景对话;
让我们伸出舌头去读"th"这个音;
......
在90年代的偏远山区,这样的英语老师真算是出类拔萃的了。在此特别感谢这位老师。
在这位良师的教导下,我初中英语的应试能力和基础能力相比还算可以吧,英语学习之路有了个良好的开局。
高中阶段,没什么多值得提的,感觉就是初中时学习过一些东西的深化,老师一般般,学习完全是为了应付考试。虽然学习算是跟得上,但也没什么突破进展。
在上大学后,需要准备四六级考试,在英语课堂和各种环境下我也都感觉到了自己的落后欠缺:
不太敢开口说话、听四级听力感觉太快、看英语电影没几句听懂的,典型的聋哑英语。四级考试是必须要过的,而听力成了拦路虎。
为了提高听力,我买了复读机,每天晚上在睡前练习听力。
复读机有个好处是听不懂可以不断重复听,还不会影响他人。夜深人静,心无杂念,躺在床上,真正地用心在听。
渐渐地,感觉听力有了一些起色,起码听过的常用语句再次出现后可以听懂了。
更重要的,在听一些资料的过程中,感觉到了一种英语的美(一些英语学习者应该有同感),从而也产生了兴趣。
晚上睡觉前,使用复读机听英语,从压力变成了了动力,从动力变成了习惯,又从习惯变成了兴趣。
有了这兴趣,学习的效果也更好了,后来通过四级考试,我的听力反而变成了优势项。
在通过四级考试后,由于个人喜欢看一些国外电影和剧,为了更直接地能听懂电影中的英语,我自己还是坚持在睡前练习听力的习惯,一直到毕业工作。
可以说,我的英语学习,由于没有太多"说"的环境,所以"听"占了很大的比重。
而通过"听",也使我巩固了单词语法,提高了听力阅读和写作能力,并培养了英语学习兴趣。
#点滴复读机的开发初衷
我喜欢用复读机听英语。
但是后来,那种传统的磁带式复读机逐渐没落了,许多出版社也不再提供磁带那种东西了。
大家都用上了智能手机,听力资源也变成了mp3格式。
许多人睡觉前都在玩手机了。
而我是一个软件开发工作者,我还喜欢写代码编程序。
我这时候就想,如果在智能手机上实现复读机的功能,不用抱着那个传统的磁带式复读机,随时随地可以学习mp3格式的英语听力,学习英语应该会更方便。
当时在应用市场,也没有找到符合自己期望的复读机软件。而自己刚好又喜欢英语和编程,所以就准备自己动手开发了。
就以喜欢英语和编程为初衷,没有其它经济价值和商业模式的思量,我就开启了点滴复读机软件的开发历程。
目标是开发一个主要用来练习外语听力的复读机软件,以代替传统的磁带式复读机。
#点滴复读机开发历程
说干就干。
一开始自己有点壮志雄心,目标很宏大:
要能支持Windows/Android/iOS/Windows Phone等多个平台;
要能支持自定义加密格式的播放、支持变速播放、支持复读、支持同步和对比等。
但在分析了各平台的差异化情况后,我的结论是要实现以上目标,保持软件最优的一致体验,需要我自己开发一套播放复读引擎才能满足需求。(平台自带的播放引擎有许多限制和差别,不便或不能实现某些特色功能)。
开发一套跨平台的播放复读引擎,任务艰巨。
但我知难而进了,我选择移植性最好的C/C++语言,从跨平台的OS层适配开始编码了。
这真是从头开始,先完成了一个适配各操作系统差异性的底层库,以方便以后多平台的编码工作。(这部分时间差不多1个月)
接下来,进行最主要的播放复读引擎的开发工作,播放复读引擎是对文件进行播放处理和复读控制的核心,相关的逻辑流程重要而复杂。
在软件开发中,架构的设计非常重要,为了做好这个播放复读引擎的设计工作,我比较系统地分析了各平台媒体引擎的技术架构,然后取长补短,自己设计了点滴复读机的播放复读引擎。(这部分分析设计时间差不多2个月)
在设计好以后,接下来就开始编码开发了。
通过Visual Studio开发环境,使用C++语言,在Windows电脑上开始工作了。
由于结构设计合理清楚,对C++语言比较熟悉,在Windows PC上开发调试也很高效,所以整体上开发过程比较顺利,大约3个月时间完成了基本的开发测试工作,并在Android平台移植跑起来了。
以上约半年时间,完成了一个基本的播放复读引擎的设计开发工作,接下来是针对Android系统开发界面部分工作。
我是用Eclipse环境(前几年的主要开发环境,现在主要使用Android Studio了),使用Java语言来进行的Android开发。Java语言通过jni调用上边用C++开发的播放复读引擎。
Android应用开发我也比较熟悉,所以起步是比较顺利的。
但在应用开发中,界面UI设计算是比较麻烦点。我是个完美主义者,总想找到一种最合理美观的方式,所以经常把界面布局优化调整、斟酌再三。
我还花费1200元,找了个比较靠谱的UI设计师,帮点滴复读机设计了软件界面图标。
另外,我还想为学习者提供精品的学习资源下载,所以还买了阿里云服务器(700多元/年),做了服务器侧的一些编程工作。
服务器侧的编程我不熟悉,从头学习了ssh框架,基于Tomcat和MySql数据库,使用MyEclipse开发环境,完成了服务器侧的开发和部署工作。
另外,我还搜集了一些英语听力学习资源,使用一个加密工具加密后上传到服务器。加密工具是我自己用Java语言开发的PC端程序,目的是只能由点滴复读机播放加密后的资源。
所有这些杂七杂八的做完,全部时间差不多也是6个月时间。
也就是说,我用了一年时间,才有了这个软件复读机的雏形。
可能有人觉得不屑,但有一点需要说明,我自己是兼职业余开发的,就是利用一些周末或者晚上零碎的时间来开发点滴复读机。
我个人是在一个IT公司负责软件开发工作,工作内容更多地是负责底层驱动的开发调试等,虽然都是软件开发,一些原理技术是相通的,但本质工作与点滴复读机的技术还是有较大差别,许多方面我都是边学边用。
在这种条件下,我能坚持把点滴复读机软件开发出来,我自己都觉得有点了不起的。如果现在让我重新再来一遍,我都有点惧怕的。
开发完点滴复读机Android版本雏形,进行了一些自测改进后,我就把软件上传到了各Android应用商店。
接下来事情还没结束,不断的有用户给我提出各种建议和bug,我也不断地完善优化它,基本每天晚上都在忙于它。
时间又过去了1年多,发布了10多个版本,点滴复读机也到了2.x稳定版本,我自己比较满意,用户的好评也越来越多。
有许多用户给我反馈,为什么没在苹果手机上也开发点滴复读机,他们喜欢点滴复读机。
由于Android版本已经比较稳定了,我个人也算比较有空了,自己也有意想熟悉iOS平台的开发工作。
所以,我又说干就干了。
我专门买了苹果电脑和手机,安装Xcode开发环境后开始了点滴复读机iOS的开发工作。
我对iOS平台开发不了解,一切从头开始,先学习了iOS开发的最新的Swift语言。(Swift语言是苹果推出的新的编程语言,个人更喜欢用的东西)
接下来就想使用Swift语言在iOS平台开始开发工作,但又发现iOS平台接口及许多示例和教程,都还是Objective-c语言写的,虽然Objective-c语言,是C语方的的扩展,但扩展的东西比较多,导致我看不懂许多代码,所以我又把Objective-c语言进行学习熟悉。
这些语言基础和iOS平台基础的学习,差不多有3个月时间吧。
接下来,把以前的播放复读引擎在iOS平台进行移植,因为已经做好了操作系统的适配,所以移植工作很顺利,差不多一周时间就跑起来,能播放出声音了。
就是说,点滴复读机iOS平台的开发,界面使用Swift或Objective-c语言开发,底层还是复用以前C++语言写的播放复读引擎。
由于有了Android平台的界面设计经验和稳定的播放复读引擎,再加上苹果优秀的Xcode开发环境支持,iOS版本的开发进展比较快。
我个人觉得苹果在某些方面对开发者更友好,开发工作做起来更简单点,比如在苹果系统在开发完成后可以直接在Xcode完成向Appstore的上传等工作,而Android系统,每次新版本开发完成,还要耗时地向各应用市场去上传版本。
差不多两个月时间,我就完成了iOS 1.0版本的开发工作,并上传到了Appstore。
但在把iOS版本上传到Appstore时,我选择了收费选项,为什么呢?
对于点滴复读机安卓版本,除了时间精力,我本身没多少其它的投入,所以软件一直是免费的,前且没有加任何的广告。我主要就当是自用、练练编程能力和为大家服务贡献了。
但为了开发iOS版本,我自己买了苹果电脑和手机,还需要每年向苹果交注册费用等,所以苹果版本我开始选择了收费下载。
但收费也会有相比Android版本更优质服务,比如我在苹果版本中增加歌词编辑、句子收藏复习等功能,是为苹果用户特供的。
(不过,苹果版本为了支持其它国家不同语言种类学习者的需要,没有提供英语学习资源的在线下载。)
当然,Android用户也没有被轻视,近期已经对Android版本界面等地方进行了优化升级,以后也将会有持续的优化。
至此,点滴复读机Android版本和iOS版本算是开发稳定上线了。
总结下来,我单枪匹马、点点滴滴地花了近两年的时间,完成了这些现在回想起都觉得困难而不太可能的工作。
这也是点滴复读机名称的来历,我觉得做任何事情,尤其英语学习,坚持是最主要的。
时间是点点滴滴积累起来的,每天一小步,貌似作用不大,但时间长了,你就会发现质变的。
#点滴复读机的想法
我现在自己也在使用点滴复读机坚持英语学习中。
结合自己的体验和一些用户的建议,我会把点滴复读机不断改进下去,使它成为你练习英语听力的最好的永久伴侣。
但目前点滴复读机相关的工作,都是我一个人在处理,所以某些地方支持不是很到位,比如:
软件版本更新不太及时,一些用户的建议或问题来不及处理;
软件缺乏商业推广,主要是靠口碑宣传,知道的人不算多;
微信公众号,也是不定时的更新部分信息,数量和质量都不佳;
......
这些都希望各位能谅解。
当然,我也很期待能得到各位多方面的支持,包括:
帮忙在微信/微博转发分享,让更多的人认识点滴复读机;
在应用商店和知乎等平台,给点滴复读机好评点赞;
微信赞赏支持(尤其针对免费的Android用户);
......
微信公众号:点滴英语