Java作业1-01:谈谈你过去学习编程语言的方法、经验和教训

一、学过的编程语言

我大学专业是生物信息学,学院给我们安排了很多编程语言课,首先回顾一下我所学过的编程语言。

大一下学了C++编程语言与Linux操作系统的一些基本操作,大二上学了数据结构与算法(C++版),把大一下学的C++学习的更加深入了一些。

大二下有生物统计这门课,所以就选修了R语言编程,在做项目中把R语言熟悉了一遍,大二下还选修了数据库原理这门课,学习了SQL语言。

大三上选修了Python这门课,系统地学习了Python的语法与面向对象的思想以及自己实现一个类;此外我们还有一门必修课,叫生物信息学原理,需要动手编写代码实现全局序列比对、局部序列不对、mRNA序列翻译成蛋白序列等任务,我就用C++做了这些任务,相当于把C++复习了一遍。

大三下选修了“基于Linux的web开发”这门课,学习了HTMLCSSPHPJavaScript等前端后端语言,此外大三下我还选修了“R在下一代测序中的应用”这门课,主要是用R语言中的systemPipeR这个包来做RNA-seqChIP-seq等组学分析。

目前大四上,正在学习Java,可以说学习的编程语言算多的了。

一个最深的感触就是,编程语言学多了以后就会有一种融会贯通的感觉,并且也更能理解面向对象编程与面向过程编程之间的差别了;此外我还可以用Python、Shell与R语言来做一些项目中遇到的小问题,就是当我遇到一个问题的时候(可能是文本匹配,数字处理等),我会下意识去想这个问题怎么用Python实现,怎么用R实现,目前也用Python写了一些比较实用的函数,学会了怎么在代码中引入自己写的模块(函数)。

二、学习方法

1 练

学编程最主要、最快速的方法就是动手写代码。
我会在老师每节课讲完以后先过一遍老师的课件,先看懂理论部分,然后看书上的代码,尽量看懂,如果我觉得这一个代码我看不懂或者我想验证一下我的猜想,我就会打开IDE来练习,多次调试代码,直到自己搞懂了这部分代码。

2 在实战中学习

回顾一下我所学过的编程语言,我发现我所学习的每一门语言都在不同的课程上进行了实战使用。

  1. 学习了R语言,做生物统计项目的时候就用了R语言,并且大三下学习的“R在下一代测序中的应用”这门课中也使用了R语言
  2. 学习了C++,在学数据结构的时候就使用C++动手编写了队列、栈、二叉树等数据结构与排序等算法,在学习生物信息学原理的时候又使用C++编写了序列比对等程序;
  3. 学习了Linux(Shell),在与导师做项目的时候(需要在Linux服务器上跑程序)就把Shell给仔细地温习了一遍,积累了很多可以方便自己学习和项目的经验;
  4. 学习了Python,就在做项目的时候用到了Python(做的项目是深度学习),并且一直使用至今,现在已经可以用Python来解决日常生活中的一点需求了。

三、经验和教训

经验真的是很多了,这里就说一下我最受用的三点经验吧

1 分步调试好再运行

分步调试的意思是指,当你要写一个程序完成一个特定的任务的时候,先想清楚这个任务可以分成几个大的步骤,当用编程语言实现每一个步骤的时候,要仔细的调试好每一个步骤,保证每一个步骤运行起来没有bug,得到的结果也是自己期望的,而不是一气呵成写完左右的步骤,最后一运行全是bug。

我的一个编程习惯:当我想测试一个想法的时候,比如读取某个文件绘制一个散点图(绘制散点图只是一个大任务中的一小步)我就会打开jupyter notebook来一步一步地运行绘图代码,直到这个代码没有问题了,我才会把这部分代码放到我的主文件中。

2 调试经验

通过输出语句定位报错代码。当运行程序出错的时候,如果不能通过报错信息找到错误的地方,就可以在程序的不同地方(你认为可能出错的地方)加入几个输出语句,如果某条语句正确输出了而后一条语句没有输出,那可以确定是这条语句的前面出了错误,通过这样不断地加入输出语句就可以来缩小报错代码的范围,直至找到它!

3 编程经验

要有模块化思想

具体来说,就是当遇到一个任务的时候,要学会将这个任务拆分成几个不同的、独立的但又互相连接的子任务,然后按照子任务的逻辑顺序挨个实现这些子任务。

其实要做到这一点很不容易,需要从整体的大框架上去思考自己的任务,也许你的代码要经历好多次修改才可以变得高度结构化,不过这是必经之路,只有反复审视并优化自己的代码,才能够写出简洁、模块化程度高的代码。

End

以上是我自己学习编程3年来的一点愚见,以后再思考出其他经验和教训后再来补充。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值