编程初学者指南(2023版):零基础小白如何学习编程

您所在的位置:网站首页 养生的手法容易学上手吗 编程初学者指南(2023版):零基础小白如何学习编程

编程初学者指南(2023版):零基础小白如何学习编程

2024-07-12 22:59| 来源: 网络整理| 查看: 265

文章目录 1.写在前面1.1 为什么有这份指南1.2 指南里有什么1.3 关于软件协会1.4 面对人生🍀 对工作:越努力越幸运🍀 对感情:爱得厚重开阔🍀 对他人:保持尊重、友好、真诚和谦逊🍀 对生活:骄傲柔软地活着 2.编程的几个基本概念3.学习编程难吗4.英语和数学不好可以学编程吗4.1 英语不好可以学编程吗4.2 数学不好可以学编程吗 5.我应该要学习很多编程语言吗6.世界上最好的编程语言是什么7.大一上需要去纠结走哪个方向吗8.初次刷题没思路没感觉正常吗9.如果我在写代码时遇到问题怎么办10.学习编程是应该先看书还是先看视频呢11.我是非计算机专业可以学好编程吗12.我认认真真上好学校的课程就够了吗13.关于 C 语言13.1 C 语言的发展史13.2 为什么我推荐先学习 C 学习13.3 学习 C 语言用什么编程工具比较好13.4 推荐的 C 语言学习视频13.5 C 语言学到哪个程度可以开始自己写代码 14.编程学习的心得分享14.1 学会做笔记,有自己的笔记库14.2 代码不要死记硬背,关键在于理解是干嘛的14.3 养成良好的编程习惯🍀 一定要格式化代码🍀 标识符规范命名🍀 学会写注释 14.4 程序是用大脑写的,而不是用手写。14.5 一定要亲自写代码,能听懂与会使用是两码事14.6 有目的地去学习 15.程序员成长的三阶段15.1 第一阶段15.2 第二阶段15.3 第三阶段15.4 程序员出身的大佬 16.计算机基础知识17.在大学16.1 社团&学生会&团委会16.2 编程类比赛16.3 考证16.4 考研与就业 18.编程相关的常见工作岗位18.1 开发类🍀 客户端开发🍀 服务端开发🍀 运维🍀 大数据与人工智能🍀 算法🍀 游戏🍀 数据库🍀 嵌入式🍀 安全 18.2 测试类18.3 非技术类

⭐ 本文已记录在了我的个人博客,欢迎访问:https://www.zhulang.love

1.写在前面 1.1 为什么有这份指南

大部分刚进入大学的小伙伴们应该是第一次接触编程,编程世界广阔而复杂,对于初学者来说,很容易感到迷茫和不知所措。小伙伴们可能会充满许多疑问,例如怎样才能学好编程、编程的学习路线是什么、哪些人适合学习编程、有哪些好的学习方法等等。对此,我在 2022 年为 软件协会 大一成员 初次编写该指南提供帮助。在 2023 年,我在编写的 2022 年指南基础上进行了重新排版与内容优化,为初学者提供更好的学习指引。

1.2 指南里有什么

我在刚上大学时才开始接触编程,关于电脑也只会玩玩 4399,其它一窍不通。因此当时的我也是一名正宗的编程与电脑初学者,刚接触编程的时候也是非常迷茫甚至慌张的。

在这篇指南里,我对当时小白的我遇到的问题进行了解答,并汇总了 2022 年的大一新生遇到的许多疑问的详解。因此,这或许会成为一份不断更新的指南。

当然,这只是一个已经学习了两年编程的学长的经验分享,不是大佬或专家的专业解答,但可能会因此更加易懂与有实际的帮助,让你得到实在的收获。

1.3 关于软件协会

🏠 官网:https://www.csuftsap.cn/

中南林业科技大学软件协会成立于 2018 年,一届又一届的学长学姐都在用他们的努力为其添砖加瓦,他们乐于将自己的经验和知识传承下去,为新一届的成员提供宝贵的指导和鼓励。因此,软件协会的发展是迅速的,离不开历届学长学姐的努力与社团成员的认可支持,从 2018 年只有十几人的小社团发展成了 2022 年吸引了近三百人加入的大社团。

image-20230904222426203

软件协会的优势:

学长学姐学习指导与解疑答惑;

image-20230904224619161

优质资源分享平台;

image-20230904224713672

知识拓展:软协提供的知识拓展大部分都是在学校学习不到的,但却是在实际工作开发中用到的知识与工具。软件协会对大一社团成员的学习规划是在与其他学校同学学习同样知识的基础上进行知识巩固与超前学习;

image-20230904225441866

书籍资源,提供借阅;

image-20230904225331833

丰富多彩的活动:例如暑寒假学习小组、软件开发大赛等等。

image-20230904225209146

1.4 面对人生 🍀 对工作:越努力越幸运

很多有所建树的人在分享自己过往的时候,一般都会说自己是个幸运的人,但其实很多的运气都是来源于他前期的准备和努力的工作,所以如果我们经常在说自己运气不够好的时候,需要想想自己是否真的努力过了,因果关系要弄清楚,不是运气来了你再去努力,而是越努力的人往往才会有好运气。

🍀 对感情:爱得厚重开阔

如果你是正在恋爱的人,别在意有没有海誓山盟,也别去期待感情一定会开花结果。重要的从来都不是把注意力放在不切实际的远处,而是把信念放在心中,好好珍惜此刻的拥有。除非结果真的发生,不然永远没人知道会发生什么。当你不再期待结果,结果才会真的发生。所以,放轻松,把念力放在心里,它会领着你去往你该去的地方。你呀,别管那个地方在哪里。

如果你是已经分手的人,愿你们在分开过后的漫长岁月里,偶尔也能怀念起彼此,心生欢喜和美好;愿你们在无法重来的未可知的将来里,因为已经足够幸福,而不再彼此想起;愿已经深爱过的你,能在人生的别处得到眷顾。

如果你是单恋的人,希望无论对方给你的回应是什么,你都能从这样的一段关系中得到比你孤独一人时更多的快乐。

如果你是被真心喜欢的人,希望无论对方是不是真的符合你的择偶标准,你都能在被真心对待的时间里善待那个人。

最后,我们谁都无法被所有人喜欢,遇见能看到你的美好并爱上这种美好的人,本来就不容易,本来就值得我们感恩和珍惜,不是吗?

🍀 对他人:保持尊重、友好、真诚和谦逊

我们应该真正地把低调平和当成我们做人做事的习惯,我们要对周围的人,无论强者还是弱者,都同样地给予尊重和真诚。没有人会是常胜将军,也没有人会永远都是被同情的弱者。如果你今天站在了相对较高的位置,那么你就应该拿出你强者的姿态,这种姿态不是高高在上也不是恶语相向,强者的姿态应该是“以弱者的姿态,做出强者的举动”。

如果有一天你不小心滑落到了低点,你希望别人用怎样的目光看待你,你希望别人用怎样的态度与你交往。那么,就应用你希望别人对待你的方式去对待你身边的每一个人。

🍀 对生活:骄傲柔软地活着

希望没有被这个世界温柔对待的我们,能默默地在自己的身体里创造出更多更多平和的力量;

希望我们都能成为,站在人生低处的时候不心灰意冷不焦躁抱怨,能够勇敢地掸掉泥土从头再来的人;

希望我们都能成为抵达人生高处的时候也会收起尖锐与刻薄,懂得宽宏与分享的可爱的人。

希望我们能骄傲地活着,不畏惧任何困苦和折磨;

希望我们能柔软地活着,不刺痛任何难堪和脆弱。

2.编程的几个基本概念

我们通过有固定格式和固定词汇的“语言”来控制他人,让他人为我们做事情。语言有很多种,包括汉语、英语、法语、韩语等,虽然他们的词汇和格式都不一样,但是可以达到同样的目的,我们可以选择任意一种语言去控制他人。

同样,我们也可以通过“语言”来控制计算机,让计算机为我们做事情,这样的语言就叫做 编程语言(Programming Language)。

编程语言是用来控制计算机的一系列指令(Instruction),它有固定的格式和词汇(不同编程语言的格式和词汇不一样),必须遵守,否则就会出错,达不到我们的目的。

可以将不同的编程语言比喻成各国语言,为了表达同一个意思,可能使用不同的语句。例如,表达“我爱你”的意思:

汉语:我爱你。英语:I love you.C 编程语言:printf("我爱你");C++ 编程语言:cout 先生成六位随机数 String code = RandomUtil.randomNumbers(6); // 关于恶意并发的问题,在短信云平台已经自动做了处理,这里就无需处理 // 5.先存储到 redis,附带验证次数,初始化为0 redisCacheUtils.setCacheObject(key,code+",0",RedisConstants.LOGIN_USER_CODE_TTL); // 6.发送短信到手机 boolean result = aliSmsTemplateUtils.sendLoginCode(phone,code); //boolean result = txSmsTemplateUtils.sendLoginCode(phone, code); if(!result){ // 6.1 发送失败,则移除 redis 中的验证码缓存信息,并返回 redisCacheUtils.deleteObject(key + phone); return Result.error(HttpStatus.HTTP_INTERNAL_ERROR.getCode(),HttpStatus.HTTP_INTERNAL_ERROR.getValue()); } // 6.2 发送成功 return Result.ok();

当然,你也可能会看到一些有趣的注释:

// 老板要求在这里让非 VIP 的用户卡顿一下,这样用户才有充值 VIP 的欲望,说白了,得加钱使用才不卡。 // 如果已经是 VIP 的用户,那么就该 if 语句不成立,就不会卡顿,业务继续执行 if(user.isVip == false){ Thread.sleep(10000) // 单位是 ms,这里卡顿 10 s } 14.4 程序是用大脑写的,而不是用手写。

简单的说:做事之前,要先过遍脑子。

用大脑写代码的意思就是程序应该是在脑袋里成型的。首先,即便是上边那些混乱的写法,也肯定要过大脑的,毕竟不经过大脑,你其实很难下意识打出一行代码的,但问题就是经过大脑的部分实在太少了,每次就那么几行上下文。真正高级的做法是,你能够在脑袋里把整套代码的流程推导一遍,让程序在你的大脑里运行一遍,这时候你会发现写下来会是非常轻松的体力活。有那么一些程序员几乎不加班,但是效率还是很高,那就是因为他们其实无时无刻都能在大脑里写程序。成为一个高级程序最重要的就是要有在大脑里完整的写完一段代码的能力。

如果接受了大脑写代码的说法,那么你会得到一个非常有意思的结论:用的哪种编程语言并不重要,重要的是思想。

14.5 一定要亲自写代码,能听懂与会使用是两码事

纸上得来终觉浅,绝知此事要躬行。

很多学习编程的人在学会某个知识点或者听懂某个算法后就说自己懂了,却没有去上机实验是非常不可取的。有的东西思想其实很简单,但用代码实现起来可能会让你无所适从,可你却没有去实操就不知道有这些问题,这是非常致命的。代码是敲出来的,不要眼高手低。简单的不屑于敲,难的又敲不出来,是一件很尴尬的事情。

代码是一切的基石,看看我们软件界的先辈们吧。Dennis M. Ritchie 决定创造一门“看上去很好”的语言时,如果只是站在高处呐喊,这门语言是划时代的,它有多么优秀,但不去实现,又有何用呢?没有 Dennis M. Ritchie 的亲自编码实现,C 语言不可能诞生,UNIX 操作系统也不可能诞生。Linux 在聚拢成千上万的开源狂热者对它进行开发和扩展之前,如果没有 Linus Torvalds 的编码实现,仅凭他高声呐喊“我要创造一个划时代的操作系统”,有用吗?一切的一切都是以编码实现为前提的,代码是我们前进的基石。这是一个英雄辈出的年代,我们每个人都希望自己被顶礼膜拜,可是这需要资本和实力,而我们的实力体现了我们处理技术问题的能力。

无论你将来的职业发展方向是架构师、设计师、分析师、管理者,还是其他职位,只要还与软件打交道,就有必要打好能亲手写出一手好代码的技术基础。

一个程序员,如果没有亲手写过几万行代码,没有做过几个好的项目,不能说是一个合格的程序员。

14.6 有目的地去学习

一定一定不要跟着学校课程的安排进度来学习,在大学你拥有足够的自由空间去做你想做的事情。

如果你对充满创意和视觉效果的网页设计感兴趣,那么你应该深入了解前端开发的相关知识。前端技术涉及网页的外观、交互和用户体验,让你能够创造出花里胡哨而又令人印象深刻的网页;

如果你对未来从事游戏开发充满期待,那么你应该深入学习 C/C++ 基础,为自己打下坚实的编程基础。接着,你可以探索适用于游戏开发的 C# 语言,将 unity 作为游戏引擎,并深入研究游戏设计原理;

如果你想在大四实习的时候进大厂,那么大二大三请开始去了解大厂对实习生的要求,比如需要 Linux 基础,那就把需要有一台 Linux 服务器,把使用命令模式当成一种习惯;

如果你希望工作 5 年后成为一名架构师,请去了解架构师需要的基本技能,在平时工作时尝试着不同服务架构的搭建;

如果你希望以后可以自己出去创业,那在你具备一定技能时,就多出去走走与人交流,去了解一个完整的项目需要有哪些环节,需要与哪些人员沟通,出了问题需要准备哪些预案。

15.程序员成长的三阶段 15.1 第一阶段

学会了一门编程语言的基本语法,对一些高级概念有了一定理解,比如指针、面向对象、多线程等等。此外已经学会了基本的数据库操作,增删改查运用娴熟,自我感觉已经掌握了该语言的全部精髓,比较喜欢追求最近流行的新技术,工作中的所有需求习惯通过添加 if else for 来实现,一切以功能实现为目的,比较少的考虑性能方面,注释文档一般能不写就不写,编程习惯如变量的命名还没有自己的风格。

15.2 第二阶段

慢慢感觉到了优化的重要性,开始在第一阶段的基础上了解一些设计模式、算法、数据库优化,有了写注释和文档的习惯,对一些框架会去查找源代码,看看其写法及实现方式。技术上会经常去翻阅海外的技术博客及官方文档。会经常在一些博客论坛总结自己的技术,也会用 Github 分享自己的小项目。

15.3 第三阶段

已经可以独立带领团队,对项目已经有自己的整体规划,在业务需求出来后能全盘考虑,技术上不追求新潮了,而是根据业务制定出合适稳定的技术方案。对一些有并发需求的业务有相应的预案,对不合理的需求会提出自己的观点,寻求最佳解决方案。

15.4 程序员出身的大佬

当然除了这三个阶段外,很多开发者会跳出这个圈子,以自己的技术特长及社会资源打造自己的事业。比如以下几位大佬都是程序员出身:

扎克伯格:社交网站 Facebook(脸书)的创始人兼首席执行官。

image-20230901015312439

周鸿祎:360 公司创始人、董事长兼 CEO。

image-20230901015256421

雷军:小米科技有限责任公司董事长兼首席执行官,北京金山软件有限公司董事长,小米智能技术有限公司法定代表人、执行董事、经理 。

image-20230901015242523

张小龙:腾讯公司高级副总裁、Foxmail 创始人、微信创始人。

image-20230901015223776

张一鸣:字节跳动创始人,旗下产品有 抖音、今日头条、西瓜视频 等。

image-20230901015148521

16.计算机基础知识

计算机俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算、逻辑计算,还具有存储记忆功能。

计算机由 硬件 与 软件 组成:

硬件:看得见摸得着的物理部件;软件:可以指挥硬件工作的指令。

软件的分类:

系统软件:Windows、Linux、Android、Harmony(鸿蒙) 等;应用软件:微信、QQ、王者荣耀、哔哩哔哩 等。

整体图示:

image-20230416190922129

17.在大学 16.1 社团&学生会&团委会

我个人是推荐参加的,但建议只参加 1 ~ 2 个社团, 参加娱乐性质的社团要把握好度,留下更多的时间给自己成长。

16.2 编程类比赛

如果有机会可以参加一些编程类的比赛,建议在大一下参加蓝桥杯,大二参加服务外包创新大赛、计算机程序设计大赛。

关于 ACM 算法竞赛:计算机界奥林匹克,门槛很高,含金量也非常非常高,需要付出长时间准备,适合于有较强数理基础的同学参加。

当然,对大部分人而言,我都不建议将精力全部投入到比赛中。比赛提升的是算法和代码能力,但是找工作需要的是综合技术实力。获奖是锦上添花,只有你技术满足要求了,获奖才是被认可的。

16.3 考证 证是否需要计算机二级不需要软考不需要四级必须过六级能过则过驾照可以有 16.4 考研与就业 要点考研就业学历有一定优势,在看中学历的企业中优势明显三年工作经验技术经验学校难学到实战经验,发论文为主,实战较少,技术很难成长三年企业级实践开发经验经济花钱上学,经济很难独立挣钱工作,经济积累眼界好的导师带着可以拓宽学术眼界围绕公司业务的学习和成长,好的公司全是优秀的同事一起进步,拓展行业眼界。成长读研孤独,磨练心性在公司的推动下,技术成长更多。机会失败错过秋招机会(1年的代价)工作不合适可以选择合适的成功率考研成功率较低工作灵活性更高年龄研究生毕业后,年纪不小。考虑成家立业,压力大奋斗时间更长,机会更多未来工作寿命更长,工作稳定性更高学历低,面临失业,青春饭 18.编程相关的常见工作岗位 18.1 开发类 🍀 客户端开发 Windows C++ 客户端开发工程师Windows C# 客户端开发工程师ios 开发工程师Web 前端工程师微信小程序工程师Android 开发工程师 🍀 服务端开发 C++ 后台开发工程师Java 后台开发工程师Python 开发工程师PHP 开发工程师 🍀 运维 运维工程师运维开发工程师系统开发工程师 🍀 大数据与人工智能 数据挖掘工程师自然语言处理工程师智能驾驶系统工程师人工智能算法工程师语音/图像识别工程师 🍀 算法 算法工程师数据挖掘工程师 🍀 游戏 C++ 游戏客户端研发工程师Unity 3D 研发工程师C++ 游戏引擎研发工程师C++ 游戏服务器研发工程师 🍀 数据库 数据库研发工程师DBA 数据库管理员 🍀 嵌入式 嵌入式 C 开发工程师驱动开发工程师 🍀 安全 网络安全工程师 18.2 测试类 测试工程师测试开发工程师 18.3 非技术类 产品经理产品运营产品销售(售前工程师、售后工程师)技术支持


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3