学习编程需要攻克的8个难关,一旦没有把握好,很可能会失败!

精彩编程与编程技巧-如何使程序不出现在任务列表中... 精彩编程与编程技巧-如何使程序不出现在任务列表中 ... 立即下载

  作为一个C/C++软件开发的老程序员,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来:

  (1)更享受学习经历

  (2)进步更快

  (3)碰到难题更执着,不轻言放弃

  (4)写代码时更独立

  那么,这些障碍究竟是什么呢,我们又该如何攻克它们?我们一起往下看:

                 

1、不知道从什么技术入手

  很多人会问:“我应该先学什么编程语言?”之所以会提出这个问题,是因为他们不知道自己为什么要学习代码。

  一旦你下定决心去完成一个特定的项目,那么从什么语言入手这个问题就变成一件很容易的事情:

  如果你想构建iOS app,那么你需要学习Objective C或Swift。

  如果你想构建Android app,那么你需要学习Java。

  如果你想构建Web app,那么你需要学习JavaScript。

  其实现在我们可以使用JavaScript来创建任何类型的项目——无论是简单的web和移动app,还是高级的硬件项目。大多数行业中都有它的身影:音乐、医疗、游戏、时装。这种语言非常值得学习。

                       

  如果你还是不能确定要选择哪种语言,那么不妨咨询下某个程序员的意见。只要你确定要构建什么项目,那么他就能很快地为你推荐适合你使用的技术。

  另外,知识都是相通的,所以,不要过于拘谨,选择语言这一步骤几乎没什么风险。

2、不正确的学习动机

  在谈及壁垒之前,我想先着重说明学习动机的重要性。不要只是为了编程而学编程,也不要因为听说它很酷,很划得来就来学编程。

  你得因为要解决问题而学习编程,你得因为想要自动化和改善生活而学习编程,你得因为想要构建应用程序以造福社会来学习编程。

  如果你只是喜欢编程,并希望以此作为职业的话,那么在之后的学习过程中,你可能会有一种强烈的冲动想要放弃。这通常发生在事情变得艰难,学习体验变得痛苦的情况下。这时你会告诉自己,你不喜欢编程了,编程操作不适合你,觉得自己天生就成不了程序员。

  这就是为什么你应该考虑围绕着完成项目设置目标的原因。如果你的心里有计划,或者你想要解决更高层次的问题,那么你可以对自己说:“这可能不是一次愉快的经历,但是我真的想要解决这个大问题,所以我一定要克服这个障碍。”

3、不能学以致用,以及责备自己

  选择好技术堆栈之后,刚开始学习理论总是很轻松的,而且网上也有许许多多免费和付费的在线课程。

  很快大多数学习者掌握了理论知识,甚至完全可以自己来解释某个代码片段的工作原理。理论只是概念的有限集合。任何人都可以在几天之内记住它,如果她/他真的想的话。那么,关键的问题是什么?

  学习者碰到的最大问题在于,实际应用理论来解决问题并编写新代码的时候。这中间的差距实际上就是技能空白。

  比如说游泳。你可以阅读大量的技术文章,然后解释得就像一个专业教练。但是,要想实际应用这些理论,就需要大量的实践、斗争和错误——你肯定会吞下大量的水!

  然而更糟糕的是你开始责备自己。或者认为自己不够聪明,或者觉得自己没有天赋。这其实跟聪明天赋没有关系,你只是需要练习技能的过程:

  1.选择一个复杂的项目。理想情况下,这项目得能够激发你的兴趣。

  2.将这个任务分割成既小又独立的任务。例如,“实现登录页面”是一个很大的任务。解决一个任务不应该超过20行左右的代码。下面这些提示有助于成功做到这一点:

  如果你不能解决这个任务,那么进一步将它分割成更小的任务。

  一个任务一次不应该使用太多的理论概念。

  3.一次专注一项任务,而不是并行解决多任务。不要跳到下一个任务,除非你已经彻底测试过当前任务,并确信没有问题。

  如果你不这么做,而此时应用程序又出现了问题,那么你就不知道你正在并行解决的多任务中到底是哪个出了问题,寻找起来就麻烦多了。

  4.确保自己在开始任务之前知道所有必要的理论知识。有时候,你可能不知道需要学习什么理论,这很正常,所以你需要向他人寻求帮助:程序员朋友,导师,或类似StackOverflow的社区。

  5.最后,你解决了任务。在解决任务的过程中,你可能会碰到很多问题,你需要做的就是吸取教训,这也是下面要说的点。

                                   

4、不吸取解决任务中获得的经验教训

  最好的情况是,你解决了任务并且结果证明非常有效。此时,很多人往往就直接开展下一个任务。但是如果你这样做的话,那么你浪费了一个绝佳的学习机会。

  希望你能够用以下问题来挑战自我,帮助自己成长:

  哪些边界情况会导致我的代码失败?即使现在还没有失败,有哪些应用程序状态可能会破坏代码?

  我的代码是否足够整洁?对其他开发人员,甚至是自己而言,代码是否易于理解和改变?因为以后可能需要修复隐藏在这段代码中的问题,或者根据其他产品规格改变代码。

  我的方法是最好的吗?有没有其他选项是我可以选择使用的?各个方案的利弊?这任务是否值得用不同的方式解决?

  此模块与其他模块是如何交互的?是否会对其他模块造成负面影响?是否容易被其他模块影响?

  然而,很多时候,你会进退维谷。

5、你不知道如何处理一个任务

  你不知道从哪里开始?你可能会随机地去尝试,或者从其他地方复制一些你自己也不明白的代码。但是,这是没有帮助的。即使你复制来的代码有效也没用。因为当你今后再一次碰到类似的任务,你依然不能解决。

  如果你想妥善解决任务,那么首先你得知道你为什么卡壳。下面是一些可能的原因:

  1.没有很好地掌握这些理论知识:

  语言语法

  库或API的工作原理,某个具体方法或类的工作原理

  编程范式(例如:异步编程)

  系统运作(例如:HTTP请求是理解Web开发的关键)

  如果是上述情况,那么可以去复习理论知识,如果依然摸不着头脑,也可以去找人寻求帮助。

  2.任务太大了,那就分解为一个个小任务。

  3.也有可能是因为你读得太快,忽略了一些你以为熟悉其实似是而非的概念,所以无法理解任务要求。

                      

6、你知道如何解决任务,但解决方案不管用

  这是编程中最常见的情况,哪怕是那些经验丰富的资深程序员也是如此。你的解决方案之所以不起作用最大的可能是你的代码中存在着bug。

  如何修复?方法是调试代码。这也是作为一个程序员需要学习的最重要的技能之一。这不是可以随便凑合的事,也不是玩幸运猜猜猜游戏。如何寻找bug是有具体步骤的。而且很多书中都有教这个技能。

  不幸的是,这是很多新手程序员失去动力选择放弃的难关。很少有课程会说明调试的重要性。如果你不知道如何正确地调试,那么它就是不可战胜无法攻克的难关。

  很多人担心会花太多时间用于调试代码。这是正常的,在你第一年的编程规划中这是不可避免的。

  甚至,你还得学着去喜欢调试。不妨将此看成是一个机会,一个修复错误提高编程能力的机会。当你解决了一个bug,可以问问自己这个问题:“我为什么会犯这种错误?以后我该如何预防再犯?”

  还有一个好主意是将找到的bug写成编程日记,方便你总结和学习。

7、不知道如何接受帮助

  当我们在学习代码,或调试代码时,可以咨询很多材料:书籍、课程、教程、导师,开发者社区等等。

  在你学习这些资源时最常见的问题是,你并没有完全了解幕后发生了什么事情,也不知道概念是如何融入到更大的蓝图中的。

  例如:你在某个问题上花了10小时,最后终于有人提供一个解决方案,你往往会采取“拿来主义”——采纳解决方案之后就直接跳到一个任务中去。千万别这样做!相反:

  思考自己之前的思维过程。问问自己,做错了什么,对于这个特定的解决方案有哪些是值得你先前的思路借鉴和改进的地方。

  询问他人的思维过程。她/他是如何解决的呢?向对方学习,吸取经验。

  这也是在StackOverflow和谷歌上搜答案的一大缺点:你只知道解决方案,不知道幕后的思考过程。

               

8、不去应用你学到的理论

  这篇文章也是理论知识,除非你能够学以致用,否则它是不会发挥一丝一毫作用的——多多应用,直到它变成潜意思的例行程序。

  编程其实就是通过形成良好的习惯来帮助你解决各种问题的过程。

       学习C/C++编程,想进一步提升自己的学习能力与编程技能,欢迎关注博主微信公众号:C语言编程学习基地。一起来成长!

光纤接口类型与应用场景全解析 本文全面解析了光纤接口的类型与应用场景,详细介绍了SC、LC、FC和ST等主流光纤接口的特点及适用环境。从数据中心的高密度布线到工业环境的极端条件,提供了专业的接口选型指南和实战经验,帮助读者根据具体需求选择最合适的光纤接口方案。 阅读详情

相关推荐

泛微OA与金蝶云星空审批流程对接实战:从报销单到采购合同的完整指南

本文详细介绍了泛微OA与金蝶云星空审批流程的深度集成方案,涵盖从报销单到采购合同的完整对接指南。通过API层面的无缝连接,实现流程自动化、数据同源和权限联动,显著提升企业业务效率。文章还提供了环境配置、数据映射、接口安全等实用技巧,助力企业轻松完成系统对接。

weixin_29268637的博客 245

编程究竟难在哪里?

你学了很多语法,很多 API,但是当给你一个实际问题,让你通过编程实现,不是简单地罗列 API 即可完成,而是需要你对问题进行分析,理清解决问题的逻辑,然后再通过各种算法、数据结构和 API 等进行编程实现。当你解决了思路构建的难点,解决了一个问题,但是你是否使用的最好的方法,这就是所谓的做出来容易,做好难。写的程序能够解决问题且没有 bug 是基本要求。这里的做好不是指功能正确,而是写的程序容易理解,能够很容易让其他接手的程序员(水平不差)看懂为什么这么写。正确是怎么写不会挖坑害的人,怎么写能让别人。

程序员小麦的博客 1134

零基础也能懂的Arduino ESP32离线安装包图文教程

手把手教你完成Arduino ESP32离线安装包的配置,无需联网也能快速搭建开发环境,适合初学者和网络受限用户,轻松实现arduino esp32离线安装包部署。

weixin_36213081的博客 2669

程序员学习时需要攻克的八种状态

在参加iOS开发培训学习编程的过程中大多数人遇见过类似的问题bug,但是这些通常很好解决,解决之后那么好处立马就来;更享受学习经历;进步更快;碰到难题更执着;不轻言放弃写代码时更独立等等。   那么,这些障碍究竟是什么呢,我们又该如何攻克它们?   1.不正确的学习动机   在谈及壁垒之前,我想先着重说明学习动机的重要性。不要只是为了编程而学编程,也不要因为听说它很酷

ccnanxi的博客 757

【可信数据空间-部署方案】

此部署架构体现了以下几个核心原则:去中心化: 数据存储和处理完全分布在各个参与者端,运营方只提供核心的协调和信任基础设施。安全边界清晰: 通过VPC、DMZ、防火墙、K8s命名空间等技术,在每个层级都建立了严格的安全边界。高可用与弹性: 所有关键服务均以集群方式部署,避免单点故障,并能根据负载动态伸缩。云原生: 全面采用容器化和Kubernetes编排,简化部署、管理和运维复杂度。合规性: 架构设计天然满足数据驻留要求(数据留在企业本地),并为所有操作提供不可篡改的审计追踪能力。

u014716614的博客 771

MPU6050运动中断唤醒STM32低功耗休眠模式实战

本文详细介绍了如何使用MPU6050运动中断唤醒STM32低功耗休眠模式的实战方案。通过配置MPU6050的运动检测中断作为STM32的唤醒源,实现设备在静止时进入低功耗Stop模式,运动时快速唤醒,大幅延长电池续航。涵盖硬件连接、软件配置、参数调试等关键步骤,并提供实际应用案例和优化建议。

rgv23456789的博客 703

自学编程有哪些困难和障碍?

经常遇到的问题 有计算机基础的朋友 对于有计算机基础的朋友来说,自学相对来说较容易,唯一一个难点就是选择什么编程语言而已,因为不同的编程语言未来的前途不一样,下面我分别来进行讲解。 JavaScript系列,JavaScript系列目前比较火,从前端到后端,到APP都有涉及,不过这个系列的知识点比较多,比如JavaScript、HTML、CSS、React和Vue等等应该都是必须要会的,并且有些企业目前用uniapp和RN来开发APP,自然这些知识也是需要学习的,当然,这个系列的工作岗位比较多,不过这

IT1124的博客 2628

openlayers全面教程306+【目录】

vue+openlayers系列教程旨在为开发者提供简单快捷的示例。在每一个示例中,解释相应的API知识点。

大剑师兰特的GIS世界 2万+

转载:从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议

从面试官角度观察到的程序员技能瓶颈,同时给出突破瓶颈的建议 我在做技术面试官的时候,面试对象大多数是初级开发和高级开发,偶尔也会面试架构师。我发现,IT人的工资固然和相关技术的使用年限有关,但如果候选人的技能无法跨越到更高层次的话,他们的收入也就会停留在当前级别,哪怕工资年限再多,也无法提升工资水平。 比如,我就面试过不少工作了5,6年的程序员,他们的技能也就停留在增删改查阶段,那么只能领到初级程...

70大盗 1285

基于聚类特征工程的水果销量预测:聚类算法对比与多模型评估

水果销量预测研究:聚类分群与多模型对比 摘要 本研究提出了一种融合聚类分析与机器学习的水果销量预测方法。基于包含12个维度的销售数据集,首先采用K-Means、BIRCH和DBSCAN三种聚类算法对水果品类进行分群,通过轮廓系数等指标评估显示BIRCH算法表现最优(0.387)。随后针对不同群组构建差异化特征工程,并比较XGBoost、LightGBM和LSTM三种预测模型性能。实验结果表明:基于聚类特征工程的LightGBM模型预测效果最佳(RMSE=2.34,R²=0.87).

huanghm88的专栏 137

i茅台最新任务python脚本

从固定的 `header_context` 生成HTTP请求头,并加入用户的`userId`、`MT-Token`等动态信息,以模仿真实的请求。- 发送预约请求,提交商品和门店的参数,如 `sessionId`、`shopId`、`itemId` 等。- 定时任务:通过 `cron` 表达式 `0 0 9/21 * * *`,表示每月的9日和21日的0点执行。- `login`:使用验证码进行登录,并返回 `token` 和 `userId`。- 获取北京时间当天0点的时间戳,作为预约请求的时间参数。

三维点云技术探索 981

程序员丨学习编程需要攻克 8 个壁垒,解决后编程能力显著提升!

作为一个C/C++开发的一个过来人,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。进行一番小小的观察总结之后发现,大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来: (1)更享受学习经历 (2)进步更快 (3)碰到难题更执着,不轻言放弃 (4)写代码时更独立 那么,这些障碍究竟是什么呢,我们又该如何攻克它们? 1、不正确的学习动机 在谈及壁垒之前,我想...

每日分享程序员技巧 505

RSL-RL:开源人形机器人强化学习控制研究库

摘要:RSL-RL是一款专为机器人领域设计的开源强化学习库,其核心特点是紧凑性、可修改性和高性能。该库聚焦PPO和BC两大主流算法,并整合了对称性增强、好奇心驱动等机器人专用技术。通过纯GPU训练优化,RSL-RL在大型仿真中展现出卓越的吞吐性能,已成功应用于腿足运动控制、全身协调等多个机器人研究场景。其轻量级架构包含运行器、算法和网络三个可独立修改的组件,支持TensorBoard等主流日志工具。该框架特别适合需要快速原型开发的机器人研究者,但不适用于通用机器学习基准测试。开源地址:https://git

2506_90492529的博客 1674

程序员丨学习编程需要攻克这 8 个壁垒,解决后编程能力显著提升!

作为一个C/C++开发的一个过来人,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。进行一番小小的观察总结之后发现,大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来:   (1)更享受学习经历   (2)进步更快   (3)碰到难题更执着,不轻言放弃   (4)写代码时更独立 那么,这些障碍究竟是什么呢,我们又该如何攻克它们? 1、不正确的...

致力于C语言C++知识分享! 484

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

攻克日语学习难关十大原则

 日记分类  日语单词(13) 学习日记(12) みんなの日本語(9) 视频(7) 日本文化(5) 文法(4) 日语 音乐(3) 映画(3) 日本語 副詞(2) 私日记(2) 日本ニュース(1) 生活课(1) 摄影(1)

技术就是个纸老虎---为之,则难者亦易矣;不为,则易者亦难矣。 965

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

学编程需要攻克的8个障碍!

1、不正确的学习动机在谈及壁垒之前,我想先着重说明学习动机的重要性。不要只是为了编程而学编程,也不要因为听说它很酷,很划得来就来学编程。你得因为要解决问题而学习编程,你得因为想要自动化和改善生活而学习编程,你得因为想要构建应用程序以造福社会来学习编程。如果你只是喜欢编程,并希望以此作为职业的话,那么在之后的学习过程中,你可能会有一种强烈的冲动想要放弃。这通常发生在事情变得艰难,学习体验变得痛苦的情...

乞力马扎罗的雪CYF的博客 2024

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

程序员学习编程需要攻克的8个障碍

作为一个JavaScript Web开发课程的导师,我看到过很多新手程序员满怀热情投入到学习中来,却总是处处碰壁。 大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来: 更享受学习经历 进步更快 碰到难题更执着,不轻言放弃 写代码时更独立 那么,这些障碍究竟是什么呢,我们又该如何攻克它们? 1.不正确的学习动机 在谈及壁垒之前,我想先着重说明学习动

拥抱变化 1871

攻克 Remix 初始化难关:Git 仓库创建失败的 5 大终极解决方案

Remix 框架作为现代 Web 开发的利器,在项目初始化过程中偶尔会遇到 Git 仓库创建失败的问题。本文将为你提供 5 个快速有效的解决方案,让你轻松解决这一常见难题。 ## 🔍 为什么 Remix 项目会遭遇 Git 初始化失败? 在开始使用 Remix 构建现代、弹性的用户体验时,项目初始化是第一步。但有时 `git init` 命令会因为各种原因无法正常执行,导致整个项目创建流程中

gitblog_00388的博客 510

攻克英语发音难关:Earthworm第47课音频加载失败的深度修复方案

你是否也曾在使用Earthworm学习英语时遇到发音功能失效的问题?当点击播放按钮却听不到任何声音,不仅打断学习节奏,更影响语言输入的完整性。本文将以第47课为例,从问题定位到代码修复,手把手教你解决这一常见痛点,让发音功能恢复如初。 ## 问题现象与影响范围 在Earthworm项目的第47课学习过程中,多位用户反馈单词发音功能异常:点击发音按钮后无音频输出,控制台显示404错误。通过错误追...

gitblog_00520的博客 370

攻克日语难关的十大原则

攻克日语难关的十大原则

张晶亮的专栏 741

从挫败到精通:三步克服编程学习的难关

面对编程学习的挫折感,如何调整心态、改进学习方法并从成功经验中汲取力量?本文揭示了从挫败到精通的秘诀,帮助你重拾信心,优化学习策略,并在编程之旅中取得显著进步。

weixin_67239318的博客 851

Python 攻克移动开发失败!

整理 | 郑丽媛出品 | 优快云(ID:优快云news)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置...

优快云资讯 1万+

攻克VeraCrypt编译难关:Linux平台8大常见错误修复指南

你是否在Linux上编译VeraCrypt时遭遇过"wxWidgets未找到"或"权限被拒绝"的报错?本文基于官方编译脚本[src/Build/build_veracrypt_linux.sh](https://link.gitcode.com/i/fe1884dac14812484da01cc057afca84)和中文开发文档[doc/html/zh-cn/CompilingGuidelineL...

gitblog_00472的博客 725
上一篇: 面试分享:那些年我经历过的一些面试,以及得到的一些面试心得!
下一篇: C++编程笔记:C++用new与不用new创建对象的区别
CodingPs
博客等级 码龄7年 182粉丝 253原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值