打印
[其它应用]

(转)如何学好编程的一些心得

[复制链接]
2123|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
两只袜子|  楼主 | 2023-5-15 10:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
对于这个话题,有很多人都做出了比较系统的回答,以及介绍了各种比较系统的学习步骤和方法。但是对于很多初学者来说看完这样的回答后难免会有一种感觉,就是原来学这个比想象中的更复杂。
类似的问题或者疑问还有很多,比如#如何学好C语言,#如何学好python,如何学好C++等等。下面就根据我个人学习经历去分享一下我的学习方法,看看能不能在其中能有所收获,去获得自己的学习方法。
大学时期专业课程有几门是编程语言,有C语言,JAVA,Android。C语言在语法上算是最简单和最基础的一门编程语言。学习起来也是比较快的一门。因为自己的英文能力不好所以在编程这方面学的也比较慢,就更不用说JAVA跟Android这个两门编程语言了。那时候的自己也常常会想如何去学好编程,但是直到毕业从学校出来找工作也没有找到答案,导致在找实习单位的时候面试了十几家公司都没有一家公司肯收。编程语言只掌握了一些连皮毛都不算的知识点,所以这方面的工作也就不用看了。最终把自己的薪资降到最低才有一家公司肯收留。不过也算是幸运的,因为进入这家公司后都不算忙,也不用经常加班,所以就有更多自己的业余时间。
刚进公司那会自己的工作内容是一些硬件开发的琐碎事情,比如PCB焊接,组装,PCB调试,PCB画板之类的事情。后来因为工作需要自己也接触到C语言编程这一块的工作内容,开始是功能程序调试(无非就是参数修改之类),到程序移植(把这个功能移植到另外一个项目上),再到根据自己想要实现的功能去编写代码。其实这个算是我的C语言编程学习的进阶路径了。
在C语言的学习过程中还在JAVA编程语言中学到了一些编程上的语法,比如C语言中的函数,还有编程语言的代码块布局等等。业余时间比较多,某天在宿舍看到学校发的那本《JAVA从入门到精通》的书籍看了一下书上的内容就好奇上面配套的程序的运行结果,于是就把程序搬到电脑上面去运行跑起来。
从开始的运行,到改成自己想要的功能,再到编写自己想要的功能。过程跟C语言的学习是一样的。JAVA的程序编写软件一般都比C语言的编写软件功能更好用。函数,变量的跳转,编写程序时回车的自动排版,很多时候C语言的编写软件都不够完善,所以我是在JAVA编程中学的这方面内容。公司项目中有用到WIFI模块和GSM模块,而这两种模块都是用的是TCP协议去进行数据的交互。刚好JAVA那本书上有TCP通讯的例子于是就拿那个例子来改成自己的调试软件,用来接收数据。数据发送的格式是使用JSON格式,所以学了JSON格式报文的解释和打包。
例子中没有用到多线程,连接的设备只有一个,这个肯定不满足,所以就去找多线程方面的知识来学,学会多线程方面的知识后就把多线程加到TCP的例子上去就实现了一个服务端可以连接多个客户端。客户端发上来的数据想保存下来一开始想的是把数据保存到文本,所以学会了JAVA读写文件。感觉这样不好,数据查看起来不方便,所以就学了SQL server,虽然只是学了最基本的创建字段,数据读写等等,但是这些已经满足了自己的需求。
后来因为觉得SQL server安装麻烦,维护麻烦。有时候都不知道是什么情况就蹦了。所以就改用MySQL来保存数据。在安装方面在linux系统几乎都是一键安装,比起SQL server数据库使用起来方便太多。
调试软件开始只是远程TCP调试,当然会想着弄一下直接连接的上位机软件。找一下JAVA的串口通讯的例子,然后改成自己想要的功能。所以后来就用JAVA写了好几个串口调试助手。在JAVA写调试软件界面一开始并不觉得有多麻烦,反正就是不停的修改运行修改再运行。
在后来的某一天看到同事在用C#编写测试软件,一开始就觉得修改窗口控件很快,不是像JAVA那样调试,所以自己也安装了VS开始接触C#。接触C#之后就像是开启了新的编程大门。因为可以把软件窗体设计得很漂亮很复杂,但是代码却不复杂,过程也不复杂。所以之后的上位机软件几乎都是使用C#编程语言去编写。在使用C#编写上位机的过程中学了串口通讯、TCP、USB、各种算法、表格、SQLite数据库(一开始也是想使用MySQL但是很多时候都是需要多台机器,所以后来选择了SQLite数据库,一个轻量级的本地数据库)。其实这些知识都是项目需要才主动去学。
有一次在公司的项目工作分配中,当时的项目自己没得选。有一个在Linux平台上面开发软件的项目落到自己手上。开发软件用的是QT,而编程语言是自己还没有接触过的C++。接到项目的时候因为自己没有搞过所以没有信心,但是分配到自己手上没办法只能硬着头皮上,QT上有着自己的一套框架,刚开始的时候看不懂,也不知道从哪开始修改,只好买书来学经过几天的摸索搞懂整个框架就开始写功能跟需求。经过几周的时间总算是完成了软件的所需功能的开发。同时也接触到了LINUX内核编译,驱动编写。Linux系统修改和移植等等。
总而言之。我在编程方面的学习很多时候都是因为项目需要推动我去学习新的知识点。并不是我真的是因为想学。我觉得如果想学好一门编程语言不妨先想一想能不能用编程语言去实现自己想要的一种功能或者需要。一种功能的实现往往包含着其他新的知识点。每当你实现一个功能的时候大脑中的多巴胺会使你变得快乐以及使你拥有满满的成就感,这种感觉会让你之前的学习和努力都是值得的,还会推动你继续往前走。
当你在实现功能的时候遇到问题或者困难时不必慌张,需要耐心去找各种办法去把问题解决,在这个过程中能学到的了解的知识会更多。这样的学习是有目的的学习。如果你只是因为学而去学,其实这种学是一种漫无目的的学,这种学有时候就算学会了也会觉得无用武之地,久而久之学会的也会忘记。

使用特权

评论回复
沙发
chenqianqian| | 2023-6-11 19:49 | 只看该作者
多看书,勤思考,多练手。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2038

主题

7364

帖子

10

粉丝