怎样钻研编程题(编程的学习方法)

怎样钻研编程题(编程的学习方法)(1)

什么是学习

我认为所谓学习就是获取知识的过程

所谓知识,就是能反复使用,完成我们在新的场景下的任务.

比如说你知道了明天会出太阳就不是知识,因为你不能利用它来判断后天出不出太阳

但是你知道了太阳东升西落这就是知识,因为你可以用它来判断今后每一次有太阳都必然是东升西落

那么我们是怎么知道太阳东升西落这个规律的呢?

一是有我们相信的人告诉我们,我们会比较容易接受

二是我们多次观察这个规律都是成立的,我们就很自然形成这种认知

需要注意的是错误的认知也是知识

比如地心说在很长一段时间内都是真理一般的知识

因为人们经过长时间观察发现太阳月亮星星就是围绕地球转

直到新的观察研究表明了日心说在当前人类的认知来说更正确

这也形成了新的推翻原有知识的真理般的新知识

所有的知识都有一定的试用范围和试用时间,有的很长,有的很短

简单说知识就是规律,是在有限的条件下起作用的规律

.

但是知识的学习方法需要和知识的种类相匹配,

理解类的知识: 比如一个数学公式,如果你不能理解它是怎么推导出来的,哪怕你做一万道相关的题目也是很难在遇到新的题目时熟练应用改公式结局

运动类知识: 比如游泳,教练给你说了怎么躺平在水面,怎么划水,怎么蹬腿,你只要不下水,不坚持锻炼形成肌肉记忆,你就不可能学会

.

编程属于什么类型的知识呢?

我个人觉得是理解类的,但是呢对细节要求很高,比如python错了一个缩进,整个程序就完全地错了

针对初学者需要大量的编码练习,初学者肯定都遇到过看别人敲代码运行一气呵成,自己动手却总是这儿错那儿不对,大都是因为细节导致

我自己刚开始学编程的时候就有一个比较呆的错误: 写c语言的print(0), 我写成了print(o), 然后一直编译不通过, 有没有小伙伴第一时间没看出问题在哪儿的?评论区告诉我,O(∩_∩)O哈哈~

.

学习过程中除了多练习解决细节易出错的问题之外

一定要把核心的东西掌握牢靠,不要急着追求什么效果,什么图云,各种图表之类的,看起来好看,NB,其实就是调用别人的函数,你照着教程做出来了,并不代表你编程能力提升了,都是花架子

那么什么是核心的东西呢?

我总结如下(可能遗漏,后续更新笔记补充):

了解计算机基本组成,包括冯诺依曼体系结构等

了解程序从编写代码,调试代码,编译执行或者解释执行的过程

基本概念: 变量,函数,三大控制流程(顺序,分支,循环),函数调用,递归调用等等

充分理解分解与抽象的概念,并且熟练使用

深刻理解代码是为了业务实现(现在的需求,未来可能的需求)而服务的,在此基础上才能够很好地理解如何设计系统,如何设计代码,所有的设计原则以及设计模式都是服务于业务变更和代码复用的(这一点已经属于较高要求了,对于初学者能有这个概念就好,很多工作三五年的依然做不好,需要不断理解和训练)

.

资源推荐

最好的学习资源是官方文档,但是考虑到新手在实际操作中面对着很多的细节问题,还是推荐大家寻找讲得比较细致的培训视频入门,遇到视频中也没有提到的问题,可以搜索解决或者找有经验的人指点一二,不然一个很小的问题可能卡几天

最好的资源获取渠道是搜索引擎: google > bing > baidu: 最好搞一个梯子,很多时候能减少安装软件或者程序库的时间和烦恼

B站,youtube也是一个不错的资源获取途径

Bob大叔的书都非常非常给力: <<代码整洁之道>><<架构整洁之道>>: 架构整洁之道,看着是和架构相关的,其实是打通了架构和代码设计的,对我影响非常大

对于能用烂代码实现功能,但是想要提升代码能力的还可以看看 <<代码大全>><<重构:改善既有代码>>

.

编程语言推荐

首先要明白编程语言分为强类型语言和弱类型语言

相对来说强类型语言可以在编译时发现更多问题,让程序在运行中出问题的概率更小一点,所以强类型语言在大一些的项目,尤其是多人参与的项目中用得更多一点

弱类型语言相对来说写起来更灵活,变量的类型自动转换更方便,写起来通常更快

建议最晚工作后一定是要两种类型的都熟悉至少一门语言

.

说回语言选择:

选择的依据是你的目标岗位是什么(当然其实初学者学啥都行,掌握核心概念后,学什么语言都是几天的事)

说一些我了解的岗位,遗漏的大家在评论区问,我再补充

后端开发: 总的来说更推荐强类型语言

golang(推荐): 强类型,我最近三年主要使用的语言,现在很多大公司和创业公司都在使用,整体趋势十分好,在并发编程上独树一帜,对于并发要求高的程序,用得很多,写起来是最舒服的

java(推荐): 强类型,岗位多,当然学习的人也多,国内大大小小的公司用的很多,我个人自己自学写过,不喜欢,但其实是一个中规中矩的语言

c#(不是很推荐): 强类型,我的入门语言用了差不多五年,学起来简单,写起业务来是最舒服的,因为国内优秀的公司用的少,大部分是中小公司用来做内部系统,工资相对goalng/java不给力

c/c : 强类型,了解不是很多,大概知道,做更底层的东西用得多,应用系统开发上来说,需要自己管理内存,是一个写出的程序可以很高效,但是写的不好很容易爆炸. 当然其实c语言作为入门是非常好的,难度比较大,但是理解了c语言的指针,非常有用,很多东西都变得清晰了

PHP(可以但不推荐): 弱类型,世界上最好的语言(这是一个梗),一个很古老的语言,以前互联网都用LAMP(linux Apache Mysql PHP)

python/nodejs(不推荐): 都是弱类型语言,虽然说都能做,但是不推荐

.

其它岗位

web前端开发(经常被简化成前端开发): javascript(简称js) html css react/vue

Android开发: java 或者 scala

IOS开发: swift

运维: bash golang(因为golang编译出来是单个可执行文件,所以现在运维用的多)

测试: js, 不管是压力测试,还是自动化测试都好用

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页