#引語
大家好,我是點滴復讀機軟件的開發者。
我想從我自己的英語學習經歷談起,總結分享一下這個點滴復讀機軟件的開發心得。
通過分享,一方面可能對于英語學習者會有所共勉和啟發;另一方面,也會為你展示真實的軟件開發工作和一個程序員的心路歷程。
#我的英語學習經歷
與大多數人一樣,我是從初中起為了應試教育,而在中國老師的教育下,在漢語環境下開始學習中國式英語的。
回想起來,我初中時的英語啟蒙老師,在當時的條件下,算是非常的優秀了,比如:
他會總結英語音節的劃分規則和口訣。(要知道當時的教課書上是沒有相關內容的);
他會總結考試易錯問題點的各種規則和口決,我現在還記得像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用戶);
......
微信公眾號:點滴英語