跳转至

编程学习与应用

观前提示

这篇“经验帖”(可能都不算)来自于一位从未系统学习过编程的业余计算机爱好者,所写均是个人观点、个人经历,故仅供参考(也许没什么价值😂)

我为什么学习编程

最主要的驱动力是兴趣,其次,编程可以帮我做很多事情。在生活的一些方面,我是比较“懒”的,如果遇到重复、单一的工作,我常常就会想办法,在不影响、甚至提高完成质量的条件下简化它。而在涉及计算机的这类工作中,直接让计算机替人作业再合适不过了。

就比如,我曾是团委学生会16级分会组织部的干事,每月要负责汇总19位团支书发来的团日活动情况统计表,也要把“五花八门”的策划书文件名规范化。通过编程,我便把这些重复、单一的工作几乎全部交给了计算机,只有少数无法被程序自动处理的情况才需要手工录入文件名。再举一例,作为数字中南电信校园网用户,原本每次都要先打开浏览器并登录账号才能访问互联网,而通过编程,在Windows中,连接到数字中南电信网无线网络后,无需任何操作即可开始上网,这在很大程度上方便了我的生活。

我是如何学习编程的

大体上来说就是:在学校课堂上学习来入门,在课外自己实践来进步。从我初中开始,信息技术课中就讲授了编程相关的内容,涉及的语言包括Flash ActionScript和Visual BASIC。有了以上的基础,在课余,出于兴趣和解决实际问题的需要,我又自己学习了两个脚本语言:Windows批处理(也就是Windows shell script)和VBScript,并成功通过自己写的程序清除了教室电脑中的一个简单的病毒。而在自己动手去编写程序的过程中,编程思维、编程语言的应用能力等都会得到很大的提升。这就是我学习编程的主要模式。

下面两小节将围绕我自己学习编程的方法并结合个人体会,来给出一些建议:

如何在课堂之外进行编程练习、实践

如果你有意向提升自己的编程能力、想要简化自己的工作与生活、或是单纯的感兴趣,我认为,找到这样的机会并不困难,当然,对课堂内容的掌握应作为基础。找到合适的“课题”之后,将其划为一个个小的待解决问题,核心工作——写代码就可以开始了。你在编程过程中所遇到的个别问题,很可能会超出课堂所学,甚至完全无从下手。这时,直接通过网络搜索“{编程语言名}+{空格}+{具体问题}”即可(如“Python 调用外部命令”,“VB ADODB访问Excel”),通过阅读他人的思路、代码片段,或官方文档,绝大多数问题都可解决。如果你在使用VB、VBA或VB.Net,直接使用IDE中的“对象浏览器”可能就可以找到你所需要属性、方法或对象。

这里举一个简单的例子:我学完《数据库技术与应用》课程之后,在用VBA编写一个能将当前目录下所有Excel表格合并到一个总表的程序时,通过搜索发现,只需更改连接字符串中的Provider字段,就可将课堂上所学的ADODB、ADODC用于连接到Excel文件。这便是对课堂所学的实践应用及拓展练习。

如何在课堂之外“从零开始”学习新的编程语言

①看书、②参加线上/线下培训班或是③直接看视频课、甚至是④直接看官方文档,以上都是可行的。我推荐的是前两种,且对有兴趣、或有一定基础的同学,首推第①种。第③种要看具体情况:如果你希望基本掌握一门编程语言并能自由运用它写出能完成各种工作的程序,那我不推荐;如果你希望“速成”一门编程语言且只用它来完成特定的工作,则我推荐,且胜过第①②种。至于第④种,如果你有足够的兴趣和毅力(加粗的才是重点😆)的话,就已经用不着我推荐了吧。

现在来简要地说说理由:“①看书学习”是我首先推荐的(我就是这样自学的Python),书本所讲的内容相对详细、严谨,如果有不易理解之处还可以很方便地标记、反复阅读。通读一本优秀的教材,脑海中可形成一个完整的框架,方便日后灵活应用。但是,看书学编程的缺点也显而易见,其较为枯燥,遇到问题时可能也找不到他人讨论或解答。“②参加线上/线下培训班”在保留部分①的优点的同时解决了其最明显的两个缺点,故也推荐。而通过“③直接看视频课”,限于视频长度、讲师水平,其内容很难面面俱到,此外这类课程很可能会根据最终目标而选择性的略讲甚至跳过一些基础的部分,以上对于学习一门编程语言都是很不利的。但是,如果你只想用编程来做特定的事情(比如用R语言进行特定类型的统计分析),通过③来“速成”不失为最佳选择。

说点具体的:我的Python学习之路

我是如何入门Python的

我开始学习Python是个意外(?),是从有神经生物学的那个学期开始的(??怎么不直接说2018年大三上学期),当时在京东自营买课本,为了凑够99包邮😂,才搭了一本《Python编程:从入门到实践》。拿到书后随便翻了翻觉得还挺有意思,就开始利用课余时间~和部分神经生物学课堂时间~🙊(???这是错误的示范)阅读它。

言归正传,我正是通过读《Python编程:从入门到实践》这本书来学习的Python。这本书写得非常详细,从如何在不同操作系统中安装Python、配置编辑器等都有讲解,只不过我并没有按它的来。我在自己安装Python后最终选择了已经有所了解的Visual Studio Code作为了编辑器。在阅读过程中,书上所写的示例代码和练习题,我几乎全部都要自己敲了一遍。到了11月初,我完成了本书基础部分的阅读。再后来,因课余时间有限,我便没有继续学习。事实上,直到2021年,这本书后面的实践部分我依然没看。因为我觉得,至少是在目前,那些内容对于我作用不大。而我的第一次Python编程“实战”,从目标到战略,均是由自己规划的。

我的第一个Python项目

当时是2018年12月,如果想要乘坐的火车没有余票,对于不希望借助第三方平台代购票的我来说,唯一的做法就是每隔一段时间手动打开12306APP查看是否有票。在学习了Python之后,鉴于Python具有跨平台的特性,我觉得,是时候做出改变了。

2019年1月,在回家的高铁上,我的第一个Python项目规划完成,命名为“Trainmon”,要实现的目标:“设计一个可在Android手机上运行的Python程序:按给定间隔检查指定火车车次在指定区间内指定坐席是否有余票,并在有余票时进行提醒”。在规划文档中,我预估了所需技术栈,详细列出了要实现的功能及程序要分为几个模块,也计划好了程序要如何与用户交互及各个命令行参数的名称。

按照规划好的框架,2019年1月16日,编程工作开始有序进行:完成核心功能耗时2天,完善计划中的其他功能耗时3天……最终成功赶在购买返校车票之前,写出了个能运行的“开发版”。最令我兴奋地是,借助那个“满是Bug”的开发版程序,我成功在第一时间(并不是起售时间,起售时车票常常会瞬间售罄,我似乎从没买到过)买到了车票。

再之后,便是漫长的完善、优化、维护了。这期间,我通过网络学到了很多新内容:从最基本的如何读命令行参数、如何在Linux终端中输出带颜色的字符,到一些Python标准库的使用、在Python中使用多线程等。我甚至觉得,完成这个项目后,才算真正入门Python。

再后来,这个项目的维护一直持续到了2019年4月29日。当时12306官方已推出“候补购票”功能,我这个小程序便失去了价值,我也就没有了继续维护它的动力。到2019年12月10日,由于12306的接口更新,这个程序已经不能用了,而我也在修复进行到一半时,没兴趣继续写了,“TODO: ……”便成了开发日志的最后一行。

我对一些问题的看法

要不要学习编程?

如果这个问题令你十分纠结,那我建议:不要学了,至少是在目前阶段。你可能对编程没有兴趣,或是想不到编程有什么用,抑或是两者均有。这种情况下就算是硬着头皮去学,也很难学好,不如等到发现有必要学习,或学习目标明确时再开始。(PS. 不如先把Office学好再考虑这个)

而如果你觉得自己可能对编程感兴趣、但不知道学了有什么用,则我建议:立刻开始!开卷有益,就算是之后没有了兴趣、又或因其他没能坚持,你的所学也已经给你带来了很多积极的影响,说不定还能在某天发挥重大作用。(PS. 那些发现有必要学的人,不用我提醒了吧?)

作为临床专业的同学,要不要学习R语言?

🤔,这其实和上一条问题类似,只是相对明确了些、范围小了些。作为2016级临五的同学,反正我是没学,现在2021年了,就我自己而言,我依然认为没必要学。在我看来,用于统计的话,SPSS已经足够了,甚至于,对于一般的参数估计、假设检验等,直接用Excel分析可能效率更高些;如果是用于作图,使用一些较R语言学习曲线更短、操作更方便的GUI的软件显然更合适些。编程语言的优势在于极高的自由度、方便的批量处理以及高级运算(这是我自己想的名词,它大概指深度学习之类的事情吧),作为非统计专业人员,这些似乎没什么意义。(PS. 对于R语言,它还有个优势是免费,这个我就不再解释了)

写这个经验帖的人:你这么喜欢计算机,为什么要来学医?

(😄,问得好!)我来看看,今天是2021年2月22日星期一,到目前为止,我依然觉得报考临床医学专业,是最错误的决定。我总是想,如果当初学了理、工或是计算机,过得肯定比现在好,虽说现在过得也算不错吧。

16级临五 赵臣轩