当前位置:首页 > 教育 >

学it需要什么基础知识(学it什么是难点)

来源:原点资讯(www.yd166.com)时间:2023-05-05 01:36:10作者:YD166手机阅读>>

学it需要什么基础知识,学it什么是难点(1)

我们都知道,优秀的程序员能够开发出超棒的功能、网站、应用程序等。他们有什么共同点呢?

在我的研究中,他们的共同点不仅仅是精通某门语言或拥有很好的教育背景。真正有才华的程序员对基础知识掌握到炉火纯青的地步。这个基础使他们能创造伟大的东西,提出突破性的想法。

想想金字塔:它的底部非常之大,越往上越小,顶部是尖尖的。编程的基础知识就是金字塔的底部,一切都从那里开始。

那么这些基础知识是什么呢?根据我的经验和我研究过的程序员的背景,我认为编程基础知识有两部分。

超凡的问题解决者

首先,你必须是一个高效的问题解决者。这是一个重要的起点,因为编程就是解决问题。

虽然解决问题的方法有很多,但问题解决流程有几个部分让我印象深刻。超凡的问题解决者会提炼出问题的本质,以便确定他们的总体目标,并有目的地开始处理问题。然后,他们将每个问题分解成小块的、可管理的部分,依次处理每个部分。有时还会实现它的可视化。

这个过程比听起来要难。当我刚开始编程时,我遇到了瓶颈:跟很多人一样,我在学校从来没有学会如何解决问题(这是一种不容易教授的技能)。数学老师给我们布置了一组习题集,然后我们就立即开始做题——这就是我刚开始编程时所做的事情。毫不奇怪,我压根儿不会,连最简单的问题也不知道如何解决。

我开始学习问题解决流程、学习如何高效解决问题,这时,事情开始发生变化。我现在在解决一个问题之前,先分析它的目的。我要感谢George Polya的书《怎样解题 数学思维的新方法》(购买链接:当当丨京东)给我的建议。

我将Polya的一些理念应用到编程中,比如理解问题。Polya 写道:“必须理解问题。”这包括能够“指出问题的主要部分:未知部分、数据和条件”。对于每个问题,我都会拿出一张纸,写下这些问题的答案:我要解决什么问题?(未知部分);我现在拥有什么?(数据);我需要注意哪些限制或细节?(条件)。

上面的几个问题答案似乎是显而易见的,但很容易被忽视。我经常在某个问题上投入数小时,但很久之后才意识到,我忽略了问题陈述中一个小而关键的细节。写下问题的细节让我的思考慢下来,让我能够准确地思考我需要做什么。这是成功的一半。

在此基础上,我会制定一个计划,这也是Polya的另一个建议。它很有意义。我写文章前先写提纲,画家在作画之前先画一幅素描稿,建筑商根据图纸建造房屋……编程也一样。与其急着去做,还不如先思考我要做什么,然后制定一个计划。

做计划的方法很多。

  • 有时我只是简单地用数字列表列出我需要采取的步骤:1. 做AAA;2. 做BBB。

  • 我还会把问题“可视化”:当我学习for循环的时候,我拿出一把杏仁,用这堆杏仁学习迭代。这现在看起来可真够愚蠢的,但它在我初学阶段帮助我思考了这个问题。

  • 我还会画图或者图表。对于递归问题,我会绘制一个图表,说明每次递归调用时发生的情况,直到我理解它为止。

我几乎总是能找到一种方法使问题更易于处理,这就简化了问题,并帮助我发现处理此类问题的模式。

在此之上最重要的是,在解决一个问题之前,先分析它的目的,并在解决问题的过程中始终保持这种目的感。

尽管制定了计划,但问题仍然很难,我仍然会被困住。成为一个伟大的问题解决者需要时间。我仍在为此而努力,我知道这份努力绝对值得。你可以看到不同之处。

当我阅读一个超凡的问题解决者编写的代码时,我能感到他的代码很干净,很容易理解;变量的名称都很好;功能简单明了;每一行代码都有特定的用途,没有多余。代码的清晰性反映了程序员的思想流程:我从头到尾流畅地阅读代码,确切地知道每一行代码的意义。这是超凡的问题解决途径,也是我所追求的。

计算机科学

学习计算机科学是第二个编程基础知识。我最近开始学习计算机科学,我很喜欢它,因为我正在超越表面的层次。例如,当我使用内置函数时,我将“在后台”了解其运行。我还在学习内存和运行时间等等其他主题。简而言之,我正在学习为什么计算机会做它所做的事情。

了解这个原因可以增加我的背景知识,让我更有见识,这样,我在写代码时会更加深思熟虑。例如,现在我对运行时间有了一些了解,我将选择使用二分查找,而不是循环访问列表中的每个元素。

它还丰富了我对核心编程概念运行的理解。例如,我正在处理一个递归问题,但没有得到预期的解决。经过仔细检查,我明白了其中的原因:它与调用堆栈的执行有关。而就在几个月前,我几乎完全不会意识到这一点。

以及使用“类”(class)。我在“类”上挣扎了很长一段时间,不敢用它。我知道怎么写,但不确定什么时候以及为什么要用它。我创建实例和调用方法,当我了解到这时我的计算机内部实际发生了什么时,这种情况发生了变化。当我有了一些背景后,我终于知道怎么用“类”了。在递归和类上,计算机科学填补了我知识的空白。

很多时候,基础知识被抛到了一边。进步很可能非常慢:当有所选择时,人们倾向于选择更“有趣”的方法来解决问题,这是一个耻辱。掌握基础知识的程序员似乎对编程充满信心:他们知道自己如此选择的方式和原因——这还可以改进他们的工作,提高他们的认可度。

此外,扎实的基础知识使学习新的语言和技术变得更容易。例如,花时间真正理解一种语言的核心概念,如迭代、递归和抽象,将有助于另一种语言的学习。简单地说,掌握了基础知识,就会有很多收获,而且几乎没有什么损失。

CIO之家 www.ciozj.com 微信公众号:imciow

栏目热文

自学编程有出路吗(什么人不适合学数控)

自学编程有出路吗(什么人不适合学数控)

有小伙伴跟我说,他想自学编程,从他的话里行间,我了解到他是零基础,想学Java,但是又不知道怎么学,打算自学又不知道从何...

2023-05-05 01:19:57查看全文 >>

学it要学什么内容(it自学学什么)

学it要学什么内容(it自学学什么)

当前计算机相关专业不断扩展,除了传统的计算机科学与技术、软件工程、物联网等专业之外,近些年还陆续新增了网络空间安全、大数...

2023-05-05 01:37:38查看全文 >>

it行业现状分析(it行业35岁以后出路)

it行业现状分析(it行业35岁以后出路)

“如果程序写错了,编译器会告诉你这个程序是不对的,有明确的YES or NO。但做商业决策的过程中,其实没有完全0和1的...

2023-05-05 01:18:32查看全文 >>

初中学历学编程有出路吗(初中毕业学编程有前途吗)

初中学历学编程有出路吗(初中毕业学编程有前途吗)

季羽没想到,儿子的初三会这么煎熬。每天一早,她目送儿子出门,前一天的作业,还是没有做完。对很多中考生爸妈来说,剩下的两个...

2023-05-05 01:18:59查看全文 >>

自学it该怎样入门

自学it该怎样入门

0基础学IT有哪些步骤?最近一段时间,看到很多朋友想转换行业,其中大部分朋友将目标投向了IT行业,由于之前根本没有接触过...

2023-05-05 02:03:44查看全文 >>

学习it高级有什么条件

学习it高级有什么条件

软件开发是一个跨度很大的技术工作。程序员有时候要学会多门语言。像python、C、C 、Java、Ruby等等。一个高...

2023-05-05 01:34:38查看全文 >>

学习it应具备什么条件(自学it需要哪些能力)

学习it应具备什么条件(自学it需要哪些能力)

想学计算机的人太多,但在ChatGpt出来之后,想学计算机专业你需要慎重,因为计算机自己会写计算机代码了。不过计算机专业...

2023-05-05 01:17:06查看全文 >>

it行业零基础要学多久(it入行得多久)

it行业零基础要学多久(it入行得多久)

  一般至少需要半年到一年左右,具体的学习时间根据大家的基础情况、学习方式和发展目标而定。例如作为0基础的小白,想要进入...

2023-05-05 01:31:29查看全文 >>

it需要什么条件才能学

it需要什么条件才能学

  如今市面上对于it编程技术开发技术人才的需求不断增加,而且各方面给出的待遇也相当不错,有不少人都把目光聚集到了这个行...

2023-05-05 01:48:22查看全文 >>

it要什么学历才能入门(自学it有什么条件)

it要什么学历才能入门(自学it有什么条件)

学习IT并不一定需要特定的学历基础,但是一些基础知识可能会对理解和学习IT相关的主题有所帮助。IT 也是一个很宽的范畴,...

2023-05-05 01:31:39查看全文 >>

文档排行