计算机专业丨学完一年编程还是不会写代码,问题到底出在哪?

计算机专业丨学完一年编程还是不会写代码,问题到底出在哪?

这几年的教学工作做下来,发现无论是计算机专业的学生,还是把编程作为公修课的其他专业学生,很多人内心都有一个灵魂拷问——为什么我认真听课,认真看书书,几个月甚至一年下来但还是写不好代码?!

为什么学了很久很久编程,还是只会写一些简单的算法题?

为什么学了几个月编程,还是写不出哪怕100行的小项目?

为什么好不容易坚持看完了语法,却发现内容全没记住?

我是不是天生和编程无缘,写不出代码是不是就必须放弃编程?

以上现象你中招了吗?

不要怕,你不是一个人,我刚学编程那会儿也是这样的。不仅是我,我相信还有很多同学是这样,那到底是什么神秘的力量在阻止我们学会编程呢?又该如何打破这个魔咒呢?

实际上,学习编程,对大多数非计算机专业的人来说,就是在当前这个时代,获得一种直觉——在学习、工作、生活中碰到问题时,可以大概的判断这个问题或想法是否可以交给计算机解决,并在这个过程中逐渐建立一个看待世界的新维度、新视角。

因此,我们要降低对编程的要求,我们不能要求自己做到像专业的程序员那样从无到有从零到一百的去搭建一个完整的项目,这不符合我们跨专业学编程的初衷,就像你学数学,学化学,学物理,但你并不会做个数学家化学家物理学家。

我们的目标是能将问题从编程的角度建模,并且能利用网络资源,开源代码等快速找到需要的模型,进行修改和调试,然后解决自己的某个小问题,这就足够了。

我们从小到大的学习都是学习知识,流程一般是课前看书预习,上课听讲,下课做作业,然后复习考试。但是学手艺可不是这么学的。回忆你小时候学游泳,学乐器,学开车。需要记忆知识体系掌握各类原理和知识点之后再开始练习吗?显然不是这样的。

教练是不是就强调一点:别废话,练就完了!

回归到线上编程本身的职能定位,不管是当前主流的录播模式,还是各类花哨的互动网课,又或是实时直播的方式,其实本质上都无法构成学习编程的全部客观要素。这是因为任何课堂本质上,终归都是一种入门方式和辅助手段。而我们想要真正掌握一个技能掌握一门手艺,都是要通过反复的练习、实践,不断的反馈迭代,才能越来越熟练,最终完全掌握。正如格拉德威尔所说,“1万小时的锤炼是从平凡变成大师的必要条件”。

就像开车和学英语一样,你想要熟练掌握,就要在学的时候放弃速成的想法,慢慢来才是最快的。编程和其他技能类似,唯有更多的练习,才能让你形成思维习惯,掌握各类建模的套路,甚至变成条件反射和肌肉记忆。

编程和投资理财一样,期待收获和成长时,要时刻提醒自己铭记复利思维:不怕进步小,就怕停下脚。这也是所有“手艺”学习的通用思维。持续的使用和持续的思考,会让你对这个陌生领域的理解逐渐加深,会把散落的知识点逐渐在练习的过程中,织结成网,最终融会贯通顺手拈来。开始也许每天的进步很小,小到你自己很难察觉到。但是这个时候只要咬牙坚持住,假以时日,你就会收获复利带给你的成果。

当然练习也要遵循一定的技巧和规律,不能毫无计划,也不要冲动盲目。那么该如何进行有效的学习和练习呢?

现在这个知识爆炸的时代,任何领域都有大量的资料,也有大量的前人做的很好的基础工作,甚至是伟大的成果。那么我们如何进行更有效率的学习呢,我认为坚持三个不要:

不要学什么都先买本教材,试图系统的从头读到尾。特别是在编程领域,最好的资料莫过于官方的文档,最全面也最权威,而且在持续的更新。但即便是官方文档,我们也没有必要从头到尾顺序阅读,你会发现你读着读着,前面读过的内容居然又更新了,气人不气人,永远读不完。正确的方法是当做工具来用,当做字典来用。互联网和搜索引擎就是你的脑力补充,在这个信息爆炸的时代,掌握如何检索知识远比如何记忆知识重要的多。

不要过于“勤奋”,什么都自己从头开始搞。互联网的红利之一,就是共享和迭代。我们要善于利用互联网上大量的开源项目,大量的共享代码。站在别人的肩膀上,总不会太矮。同时我还建议大家也积极共享自己的成果,除了可以给别人提供便利,也可以收获大家的反馈,进而提升自己的能力。

想明白这些之后呢,问题就变得简单了,具体到跨界学编程这个领域,我总结出来以下几个小技巧,大家可以参考一下。

只有不断的投入思考,练习才有意义。你快速进步的过程,不是复制代码,而是不断的自己去解决问题,直到调试完成,得到你想要的结果。

3、使用目标驱动的方法,采取验证学习的策略。把教材和官方资料当做字典,看书查资料是辅助,动手才是主动。极端一点,甚至可以除了必要的文档,其他一律不看。先把编程的基础语法都亲自动手逐一完成一遍,最简单的办法就是看一个知识点之后马上去验证。验证不是指看着示例代码敲一遍,而是跟实战一样的,自己设想一个用到这个知识点的问题场景,然后试着修改示例代码去解决自己的提问。

日常教学中,时不时会有同学绝望的给我说,“无论如何努力,一写代码就头大,一看程序就懵圈,实在是没办法,可能是和编程天生八字不合......”那是不是不写代码真的就得放弃编程了呢?答案是否定的。

《ComputationalThinking》作者就曾倡议,计算机科学的教授应当为大学新生开一门称为“怎么像计算机科学家一样思维”的课,面向非专业的,而不仅仅是计算机科学专业的学生。因此事实上,写代码只是一种向计算机传达信息的方法,而真正重要的,不是代码如何写,而是你是否具备“编程思维”。

举个简单的例子,如果你不会开车,是不是就不能从北京到上海了呢?显然不是,只要你知道从北京到上海是有路的,是可以跑汽车的,你即便不会开车,也可以让别人开车载你去,对不对?真正可怕的,不是不会开车,而是你不知道有车,不知道有路,不知道从北京到上海有多少种可达途径——即不知道这个问题的数据结构和算法思维。

然而面对一些复杂的问题的时候,我们就需要主动的,有意识的去培养和应用自己的编程思维,计算思维,从而能够将复杂问题进行有效的拆分,降维,从容有序的去解决。正如《写给所有人的编程思维》一书中所说,编程的核心,不是编程语言,也不是语法,甚至不是算法或数据结构本身。而是如何分解问题,从中发现规律,建立解决问题的模型,映射到合适的数据结构和算法上,然后才能写程序实现。

也就是说,写代码是最后一步,也是最没有技术含量的一步,重要是前面的思考和建模的过程。

希望对大家有帮助!最后回归正题,还是那句老话,愿大家能耐得住寂寞,最终如愿进入你理想中的大厂。

如果你想在大学期间更好的提升你的编程核心能力(内功)不妨从现在开始!

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!大家也要把握住大学的时光,抓住成长的每一次机会哦~

THE END
1.终于有大牛把《数据结构与算法》讲透了,附源码笔记这份PDF阅读体验肯定是要比公众号和各大的博客平台的文章要好的。PDF内容为纯手打! 话不多说,先看目录 需要完整版笔记的老铁点此获取 下面简单介绍一下八大基础排序和基础的数据结构,每种排序的思想和基础的讲解和源码在PDF里边有。 数据结构与算法学习文档及笔记 https://zhuanlan.zhihu.com/p/567419989
2.数据结构和算法一定要背算法的代码嘛但是如果一个人自己跑几个模型例子就声称自己可以做算法并且十分反感写代码的话,那他在算法领域也不会有很好的发展。 除非,你是一个算法造诣非常高的天才并且能够胜任算法科学家的人。 否则,请不要欺骗自己,认真培养你的算法能力和工程能力,毕竟你的目标还是一个合格的算法工程师。 https://blog.csdn.net/weixin_39967405/article/details/111279063
3.算法一定要用计算机程序实现吗?程序必须用规定的程序设计语言来写,而算法很随意。一个算法可以用不同的编程语言编写出不同的程序。程序并不都满足算法所要求的特征,例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。程序=数据结构+算法。数据结构与算法要通过程序的实现,才能由计算机系统来执行。所以,并不是所有的https://zhidao.baidu.com/question/2149819650965762628.html
4.30了,程序员中的老司机们,30后的路该开向哪里?擅长什么,不要放弃。擅长工程,就不要眼红人家搞算法的。坚持到底,路才能更宽,走得更远。 左:打工赚钱? 右:创业冒险? 当技术积累到一定程度的时候,大部分人都会技痒难耐,考虑创业。原因有几个: 给别人写代码,期权从几千股到几万股, 比例从毫不知情到万分之几、千分之几就不错了。自我感觉很好,但并不是https://36kr.com/p/1721857474561
5.GitHubCoding4Real/leetcodePDF版本:「代码随想录」算法精讲 PDF 版本。 最强八股文::代码随想录知识星球精华PDF 刷题顺序: README已经将刷题顺序排好了,按照顺序一道一道刷就可以。 学习社区: 一起学习打卡/面试技巧/如何选择offer/大厂内推/职场规则/简历修改/技术分享/程序人生。欢迎加入「代码随想录」知识星球。 https://github.com/Coding4Real/leetcode-master
6.探秘写了一百万行代码是什么体验?腾讯云开发者社区探秘| 写了一百万行代码是什么体验? 搞程序的累计写到一百万行代码到底是什么体验呢? 如果一百万是标量的话,来和大家研究一下这个数据,假设最好的情况,一天100行高质量代码,一年36500,100/3.65=27年多。即便从20岁开始编码,要到50岁左右方可完成。但实际上关于平均代码量的问题,即便把所有工作日都算上,大概也https://cloud.tencent.com/developer/article/1085550
7.编程中,有哪些好的习惯从一开始就值得坚持?只有先做到这一点,你才能把代码写简单,才能让人一眼看出意图、明显没有缺陷。 把很简单的程序搞复杂、搞的没人能懂,这很简单——不妨搜一下“C 语言混乱代码大赛”。 但把很复杂的功能写简单、写的让人一眼看懂、而且很确定“这里明显没有错误”,反而需要极深的功底。 https://maimai.cn/article/detail?fid=1704779105&efid=OhUNp8oeLY-b-crWXJxV2w
8.从事程序员14年,我总结了8条宝贵的编程实战经验优设网快速获得精准反馈:开发者每次调整代码后,能通过自动化测试快速获得结果反馈; 零成本试错:写出的代码语法有错误、逻辑有问题,没有任何不良后果,心理负担小。 不过,屏幕前的你很可能觉得我在说些废话。 “不然呢?解算法题、写小脚本,不就是这样的体验吗?有啥特别值得说的?”你很可能会继续补充道,“你知道我们公司https://www.uisdc.com/8-programming-experience
9.求职求助面试java岗用c++写代码可以吗本人一直是用c++写算法题的,但之后找工作估计是java后端,所以突然想到了这个问题o(╥﹏╥)o0 收藏分享 回复讨论接收动态 共4 个回复最热小约翰可汗 来自湖北 2024-04-15 可以但没必要,建议不要这样,可能面试官当场不介意你这么搞,能做出算法题特别是高难度一些的就证明你很优秀。但是吧面试官可能会觉得你Java基础https://leetcode.cn/circle/discuss/4L2prB/
10.代码规范指南java,代码规范说明(8).不允许把多个短语句写在一行中,即一行只写一条语句。 (9).函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。 注:如果大家有兴趣可以到安安DIY创作室博客,有相关说明性的文章和解释。 2、注解 Java 的语法与 C++ 及为相似,那么,你知道 Java 的注释有几种吗?是两种? http://www.cxhlcq.com/article/heoges.html
11.php学习心得范文(通用14篇)搞清楚HTML和PHP的概念,那么PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算 一加一等于几,然后在浏览器输出,不要觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一个。 https://www.yjbys.com/edu/PHP/471525.html
12.入行14年,我还是觉得编程很难:给大项目写代码没意思还危险1写代码很简单,但写好代码很难 编程曾经是一项门槛很高的专业技能。从前,一个普通人想学编程,最常见的做法就是通过教材和书本学习。不过大部分编程专业书,十分艰深晦涩,对于初学者来说很不友好。因此不少人在尝到编程的乐趣前,就早早地半途而废。 但如今,学编程正在https://www.elecfans.com/d/2016881.html
13.多吹牛,少写代码–四火的唠叨可是,这真的 “正确” 吗? 来看看所谓的软件工程师的基础素质里面,写代码占了多大的比重?沟通、合作、学习,问题分析、解决,系统设计、算法,代码实现、测试、ops……到底有多少部分是 “写代码” 的? 如果我们把写代码看做软件的具体实现,那么,为了能写代码,有很多工作要做;而在写代码之后,也有很多工作要做。https://www.raychase.net/6634/
14.几个对程序员的误解,害人不浅!51CTO博客进了公司后我才发现,真正写代码的时间很少,像前期的需求评审、跟产品 Battle 啊、方案设计、技术选型啊、沟通、资源协调更重要,也往往更花时间。在你想清楚要不要写代码、怎么写代码后,再去写代码,那时你会发现只不过是一种翻译工具而已。 而且就我观察下来,一般职级越高、工资越高、能力越强的人,写的代码反而https://blog.51cto.com/u_13626762/5377111
15.学图论,你真的了解最短路吗?这就好比是走迷宫,你沿着一条路要一直走,直到遇到死胡同才返回 通常采用邻接矩阵存储,有权无权都可以处理,可以处理负边权,但不能处理负环 简单来说就是从一个点出发,递归+回溯遍历每一条与它相连的边,到达每个点,更新最短路 虽然代码很好写,但是极容易超时,请谨慎食用此算法 https://www.luogu.com.cn/blog/FrozaFerrari/xue-tu-lun-ni-zhen-di-liao-xie-zui-duan-lu-ma-post