为什么有的人学了那么久编程还是只会写“Hello World”?

  • 日期:07-20
  • 点击:(854)

永盈会开户注册

几天前,我收到了公众背景的读者留言。他有很多学习材料,但他不知道该学什么,也不知道从哪里开始。他只会写一个Hello World很长一段时间。

ca63d61acf7a4907a2ca5248594ed218

为什么有些人长时间学习编程,或者他们只会写一些简单的算法问题?我已经编程了几个月,还没有编写一个超过100行的小项目。读完书后,我发现以前的内容完全被遗忘了。我相信很多学习编程的学生都想做一个项目,比如可以使用的软件。然而,许多人完成它,并且总是编写控制台程序,而不是动态计划或贪婪。你有没有招募过上述现象?不要害怕,你并不孤单。我当时刚学过编程。不仅是我,我相信还有很多学生都是这样的。什么看不见的力量阻止我们学习编程?我总结了以下原因。如果您被招募,您可以考虑解决方案。

先问问大家一个问题,如果你已经学过编程,你有没有刷过OJ(OJ指的是在线编程练习)。

我相信大多数人都有刷问题的经验,或者现在正试图开始提问。

我曾经是,在我闲置时,我迫不及待地打开一些刷牙网站继续刷我的问题。今天我正计划明天进行动态规划和刷最短路线.对于AC问题,我忘了有一天吃饭。

直到有一天,我突然发现了一个问题 - 我为什么要刷问题?

我不知道你要做什么。

提高编程技巧?

如果是这样,那么问题就来了.

可以刷牙来提高编程技巧吗?

如果你可以的话。

然后问题又来了.

什么是编程能力?

你可能会说,“你会刷!”

哦!突然意识到原来的刷牙问题是提高编程能力,编程能力提高后更容易刷问题.

这似乎是一个没有解决方案的问题.

我不知道你是否有任何高意见。如果是的话,请留言告诉我,谢谢!头脑风暴。

昨天,一位读者让我在公共号码的背景下提问。我想她(是的,姐姐)可能遇到了我过去遇到的问题 - 每天一个问题。她还问我是否需要更多问题,好像她不知道为什么要刷问题,但这是一个日常问题.

03807fbcd66346218aca3f61704b2216

好的,让我谈谈我对画笔的理解。

学习任何技能,无论是因为爱好,是为了从中获得乐趣,还是为了提高自己。

学习编程,刷问题必须是,但绝不能盲目刷。

第一步是将学习算法和数据结构理论转化为实践并加强知识。

Brushing帮助我们将抽象算法转换为具体的代码实现,让我们理解原理。

例如,如果您使用C ++,Java或Python实现9个主要算法,您将了解原理,然后您不必继续刷相同类型的问题。

我们需要开发自己的技术选择功能和程序选择功能,特别是:

当面对实际的业务和需求时,您需要知道在什么情况下使用哪些数据结构和算法,然后通过查询或调优库来使用这些算法。

技术是服务业务,编程是解决问题。

当然,以上言论是我自己的理解,你可以有不同的意见,但我不接受反驳。

第二步是在寻找面试时向面试官写出各种算法。

要求找工作是可以理解的。就像高考一样,我们需要一个选拔机制。面试中的手写代码过程可以直接反映一个人的代码能力。为了得到一个好的报价,你必须提出问题。我在我的工作中寻找的系列文章中也提到过。感兴趣的学生可以查看。这里没有更多的例程。

以上两点是我自己的“刷问题”。当我在大学时,我致力于在这两个时期刷问题。我会在其他时间做其他事情。你在做什么?我们稍后会继续讨论。

总而言之,无论是编程还是其他任何主题,我们都必须理解自己学习的意义。如果只是因为公众,但我们不知道为什么要这样做,那么我们必须首先弄清楚为什么要这样做。否则,很多时候它正在做无用的工作。

死亡原则是什么?

举个简单的例子。

如果您已经学习了树或图的遍历算法,则必须知道最基本的两种遍历方法:

DFS和BFS实际上是深度优先遍历和广度优先遍历。

我不明白,我会简要解释一下。以最简单的二叉树为例,下面是二叉树。

cb59ed837bac4aefad6b6ba44f00b3d1

如果要遍历A点的所有点。

深度优先遍历是“不要撞到南墙而不回头”。从A点到结束,它将返回。在发现新的道路后,它将继续下降,因此遍历顺序为:A-B-D-E-C-F-G。

宽度优先遍历是“首先遍历前一层然后向下一层”,因此遍历顺序为:A-B-C-D-E-F-G。

那么问题来了,死亡原则和二叉树的遍历有关系吗?

我不想说你,关系很大.

我们将二叉树与知识体系进行比较。

第一级A代表您学到的所有专业知识。

第二级代表大学本科水平的各种科目。例如,B可能是Python课程,C可能是算法和数据结构,当然还有很多其他科目,如高数字,英语等,我不会逐一列出它们。

我想问你一个问题。如果你在二级挂几门课,你能毕业吗?

看来我不能毕业了。

现在假设一个同学的二级课程已通过毕业课程,他将进入研究生阶段。

此时他将选择“方向”继续“学习”。

请注意上面的粗体字。

本科阶段是对“面子”的教育,教给每个人;

研究生阶段是对“分数”的教育。这是在初步了解本科专业整个系统后做出的选择。他可以选择追求自己的利益。

因此,如果他选择B方向,他将继续克服D和E.

就像学习编程一样,第二层就像你绝对想学习的编程语言,算法,数据结构等,学习它们就可以编写一个可靠的程序。

未来的第三层是机器学习,人工智能或建筑方向,图像处理等知识,您可能会在研究生层面关注这些知识。

“死亡原则”的定义逐渐明确:

我们不希望胡同变成黑色。当我们开始学习编程时,我们必须更多地了解不同学科之间的联系。

人的精力有限。如果你在课堂上这样做,有三个缺点:

你可能无法长时间写出一个体面的节目,你的信心受到了打击;

你可能会做很多无用的工作。有些学科需要其他学科的知识,只需一门课就可以浪费时间;

你可能陷入制造轮子的陷阱。

吃一个胖子的贪婪也是阻碍每个人学习编程的绊脚石。

或者例如:

当我们学习框架或学习项目时,我们可以在文档或课程描述中写下“在学习本课程之前,您需要了解Java,数据结构,数据库,操作系统等”。

但你绝对不是全体会议,我该怎么办?立即放开这个项目来研究上述课程?

这是“吃一口胖子”的典型表现。当我们做这个项目时,不要害怕它不会,也不会。不要先去谷歌百度检查,或者直接参考别人的代码,然后自己写下问题,然后再深入了解。

当你成功完成第一个项目时,我们会非常鼓励你做第二个和第三个项目,然后再开始。

一切都很难。

“发现问题,解决问题”的学习路径。最后:不要放弃!

最后,如果你想成为一名优秀的程序员,最重要的是尽可能地提高你的编程技巧和编程思维,而不是考虑如何改进,最好现在就开始大脑,如果是C的话你对/C ++感兴趣,你可以添加杨军.569,268,376,(发送学习资料)我不怕从头开始,恐怕我永远不会开始。

d60e89a08e1c43deaeda087ee71787d4