首页 > 编程语言 >如何自学编程?如何少走弯路?

如何自学编程?如何少走弯路?

时间:2024-02-03 19:55:29浏览次数:32  
标签:Python 编程 学生 学习 如何 XX 开发者 少走弯路

如果耐心读完本文,对您学习编程大有帮助

明白学习编程的思维,可以少走很多弯路

对于所有编程学习者,尤其是零基础的同学们,在学习的初期,一定要给自己做一个思想上的转变。

在我的编程学习理论中,这个思想的转变至关重要,什么时候你把这个思维转换过来了,你就是真正上道的那一天。

这个思维转换就是:

不要把自己当学生,而是要把自己当开发者。

不同的身份认同感,最后会导致不同的行为模式,而这行为模式,会对你的编程学习造成非常大的影响。

区别一:记笔记 VS 写技术文章

学生有一个特点,就是他们喜欢记笔记,但是开发者不怎么记笔记,而是会把自己学会的东西写成技术文章、教程的形式发表在技术博客或者知乎等网站上。

一个很有名的学习法叫做费曼学习法,这个学习方法简单地说,就是在学完一个东西之后,去给别人讲明白,注意,是讲给别人听,当你写成文章发表在网上的时候,你自然会去用更通俗的语言,更清晰的逻辑去讲述这个事物背后的逻辑,这个过程,是对自己学习的一个检验,也是加深映像,整理思路的重要过程。

那么如果你是去记笔记的话,很有可能,你不会去试图讲清楚这个东西,而是倾向于去照抄,或是不完全照抄,以 “提纲” 或是 “知识点” 的形式抄在本子上,说句实话,照抄的笔记,真的没用,因为现在搜索引擎的能力已经可以让你把大多数东西快速找到,你为什么还要照抄到笔记本上呢?

从功利的角度考虑,技术文章的写作,别人可以直接访问,也可以逐渐累积你的影响力,一个好的个人技术博客,会给你的简历加分很多,而一个厚厚的笔记本,没有人会管你记了什么。

区别二:以学会 XX 为目标 VS 以做出 XX 为目标

你会发现,学生思维里面有一个重要的特点,就是他们总是特别关注自己 “学会了什么”,不仅如此,他给自己定的目标,定的计划,永远都是” 学会 XX 书第 XX 章内容 “。

学生永远在准备,而开发者早已动手。

如果你还在上学,学生思维是 “这个学期我要学会 XX 课程”,而开发者思维是 “这个学期我要做出 XX”。

如果学 Python,学生思维会拿起一本教材,开始从头到尾看,我不知道你们发现没有,几乎所有那种编程语言教材,长得都差不多,上来先是基本的语法,基本的整型变量,浮点型变量之类的,然后伴随着几个小的教学例子。

比如,开发者学 Python,他第一步绝对不是去书店买教材,而是先去了解,Python 适合做什么,然后他了解到,Python 适合做爬虫数据分析AI还能很轻松地搭建 Web 后端,之后他逛了一下午 Github,看了看那些 Python 高星项目都是做啥的,于是他给自己定下了这个目标:

半年时间内,我要用 Python 和 Python 周边的库搭建出一个网站,这个网站服务端运用爬虫技术爬取一些数据,可以提供知乎粉丝性别比例分析功能。

再来看学生继续看书,一个个的知识点去记忆,拿着他的小本本去总结知识点,而开发者上官网简单的看了下 Reference Doc 的简单交互式语法教程后,便马上开始了边做边学的过程,有了一个实际的项目目标,朝着这个目标走,不断地发现自己不会这,不会那,然后有目的性的去补足知识,他了解到了 beatuiful soup 作为爬虫主库,flask 作为后端 web 服务主库,然后会去看一些简单的教程,在这个过程中,基础语法得到了熟练,也训练了工程能力。

学生的成就感来源于学会了什么,开发者的成就感来源于做出来什么

开发者很功利,他们深知他们学会的所有东西都是为了开发出伟大的产品而服务的,所以他们绝对不会出现 “在学一个东西,但是也不知道学这个用来干嘛” 的窘境。

区别四:线性学习 VS 递归学习

学生喜欢线性的学习,因为线性的学习(拿本教材从头到尾慢慢看)正是符合了他们对确定性的追求,可惜这违背了学习的本来面目

开发者知道,人脑最不擅长的就是线性枚举,即便我们认识几千个汉字,但是我们无法去线性地去将所有认识的汉字枚举出来,我们的大脑,本就不是用来进行线性思考的,而复杂度上了一定程度的知识,线性的掌握,基本不可能。

有难度的知识,往往是这样的:为了搞懂 A,而去学 B,为了学会 B,而去学 C,这叫递归学习,递归虽深,但有回溯,它最终会回溯到我们的起点。

所以开发者的学习更偏向于递归式的学习,而且可能会以一个知识点为起点,去完成树状知识外围的遍历。(有点像搜索引擎的爬虫)

知识是树状结构,或者网状结构

当我们试图遍历一个树的时候,最简单直接的方式就是递归 , 如果你非要去” 线性” 的学,那就你是把编程学习当成了链表,还是 “单向” 的,这种算法怎么可能用来遍历树呢?

区别五:拿会 XX 定义自己 VS 拿 XX 项目作者定义自己

inus 从来不说自己精通 c 语言,与其说他不需要,不如说他不关心,因为他是 linux 和 git 的作者.

linus 这个程序员之神就是一个典型的开发者思维的人.

我希望所有计算机专业的同学们,等你们毕业了之后,你的 github 应该是绿油油的,而不是贫瘠的一片白.

我希望你们用你们的简历里写的是” 用 c 语言实现了一个 XX 引擎,github 链接 github.com/xxxxxx “,而不是” 精通 c 语言 “.

我希望学生们明白,任何一个像样子的项目,制作周期至少是按月计,你的大学有四年时间,哪怕一个项目做一年,你也能拿出两三个好项目,不一定有多少 star, 但是要完整,文档,测试,一应俱全.

我希望学生们知道,做项目和写课后习题不一样,课后习题一个小时,而项目是长期不断努力,不断学习突破的过程,需要你每天都搞,善始善终,最终拿出成果来.

我希望学生们明白,这个世界衡量一个人的成就,从来都是” 他做了什么”, 而不是” 他学会了什么”, 不要总用修炼内功去感动自己,必要时,也请你为开源世界贡献一点自己的力量.

我希望学生们明白,考上 985, 拿奖学金,这都不叫成就,因为和别人没关系 , 只有真正影响到别人的东西,让这个世界变得更好的东西,才是值得去” 秀” 的.

最后送给学生们一句话:

愿你早日忘记学生的身份,以开发者的姿态,面对这个世界。

作者:牛岱
链接:www.zhihu.com/question/39431192/an...
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:Python,编程,学生,学习,如何,XX,开发者,少走弯路
From: https://www.cnblogs.com/wjdzh/p/18005119

相关文章

  • 新手如何快速学习爬虫逆向?-->>爬虫之js逆向百例
    《个人练习》各位爬虫逆友如有需要请及时留言或者加vx:wzwzwz0613该案例只对学习js逆向的爬虫逆友提供技术交流,请勿进行商业交易,谢谢!技术交流群v+:......
  • 游戏被DDOS攻击无法访问时该如何处理
    游戏行业随着时代的发展有着突飞猛进的变化,尤其是互联网时代智能手机的普及,让游戏行业发展上了一个新的台阶。因为游戏带来的巨大利润,游戏行业一直是DDoS攻击的首选目标。DDoS是DistributedDenialofService的缩写,即分布式拒绝服务。简单来说是向服务器同时发布大量请求,让被攻击......
  • c++20模块化编程与传统区别
    传统:main.cpp+a.cpp(存放定义)+a.h(存放声明)c++20:main.cpp+a.cppm(存放定义,在定义前面写export即可)模块化编程好处:不再需要修改了函数到对应修改声明,两头跑编译更快,模块只在修改后才重新编译模块化编程举例://my_module.cppmimport<iostream>;exportm......
  • Java套接字编程学习
    一、前言Java套接字编程用于不同JRE上运行的应用程序之间进行通信,可以是面向连接或无连接的。Socket类和ServerSocket类用于面向连接的套接字编程,DatagramSocket类和DatagramPacket类用于无连接的套接字编程。我们需要根据服务器IP地址和端口号来区分套接字。Socket类用于客户端和......
  • 如何在 JavaScript 中验证 URL
    如何在JavaScript中验证URL统一资源定位符URL(UniformResourceLocator)引导你进入互联网上的一个页面或文件。URL是互联网上事物的地址。所有有效的URL都遵循某些模式。因此,如果你知道这些模式,你就可以在你的程序中确定一个URL是否有效,并给出反馈、抛出一个错误,等等。......
  • 如何运行vue项目
    如何运行vue项目1、首先,将项目里的“node_modules”文件夹删除,这是vue项目的依赖包。因为“node_modules”文件夹太大,一般不会打包上传到svn、git上的,所以没有这个文件夹就不用删。2、删除package-lock.json。package-lock.json记录了整个node_moudles文件夹的树状结构,还记录......
  • EasyCVR视频融合平台如何助力执法记录仪高效使用
    旭帆科技的EasyCVR平台可接入的设备除了常见的智能分析网关与摄像头以外,还可通过GB28181协议接入执法记录仪,实现对执法过程的全称监控与录像,并对执法轨迹与路径进行调阅回看。那么,如何做到执法记录仪高效使用呢?由于执法记录仪支持GB28181协议,所以需要使用GB28181注册到EasyCVR......
  • 使用到UDP协议的情况下该如何防护
    一、UDP协议概述UDP(UserDatagramProtocol,用户数据报协议)是TCP/IP协议栈中的一种无连接的传输协议,能够提供面向事务的简单不可靠数据传输服务。1.UDP的应用场景由于缺乏可靠性且属于非连接导向协议,基于UDP协议的应用一般必须允许一定量的丢包、出错和复制粘贴。与TCP协议不同,UDP协......
  • synchronized【如何保证原子性、可见性、有序性】【如何实现原子性 原理解析】【什么
    @TOC转自极客时间如何解决可见性问题?同步原理剖析什么是Monitor?什么是锁优化?......
  • 软件缺陷指的是什么?如何进行缺陷的生命周期管理?
    前言大家好,我是chowley,最近在复习软件测试方面知识,欢迎大家观看我QALog系列的博客今天来介绍软件缺陷及其生命周期管理。在软件开发的复杂过程中,不可避免地会出现各种问题和错误,这些问题被统称为软件缺陷。本文将深入解析软件缺陷的定义以及如何进行缺陷的生命周期管理,请大家做好......