您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 业务知识 > 正文

学会这11个主要元知识概念,妈妈再也不用担心我的代码编写啦!

发表于:2019-12-16 作者:读芯术 来源:读芯术

在小芯认识的程序员之中,大部分人都更注重实操实践,对于知识点的学习没有那么在意,虽然那些基础知识常常在编码中发挥不可取代的作用,但还是难以逃脱被人们看轻或忽视的命运。

当然现在也出了很多知识学习,指南指导类的文章或者课程,成为大家“投机取巧”、短时间掌握大量核心知识的“捷径”。

并不是说这种“捷径”不好。

在大多数情况下,有很多指南都是可以参考的,它们能够指导读者学习那些最热门的语言以及最热门的知识,从而使读者成为行业的佼佼者。

尽管这些指南可能有用,但它们仅引导读者获得表面价值。这些指南提供了浅层次的学习路线,如果想要往更深层次发展,还是需要自己去慢慢实践和探索。

因此,小芯今天帮大家整理了能“获得成为一个真正有效的开发人员所需的深度知识“。

但是这些生僻的编程“元”知识,仍需要读者自己去主动潜心钻研。

编程元知识是计算机科学专业毕业生必学的东西,而自学者经常会漏掉这些知识点。编程元知识是查看和编写代码的基础。

图片由Aphinya Dechalert拍摄-这些都是“元”

本文提供一份清单式的指南,好让读者在这些新鲜好奇的知识行囊里进行浏览和挑选。

综合指南(绝大部分与语言无关)

全局图—:Aphinya Dechalert撰写

1. 数组!因为一切都是数据

几乎在每个教程中,都会遇到一个非常简单的数组版本。比如熟知的扁平的一维数组,包含少许元素。但是在现实生活中,还有更多的种类,形状和具有奇异性的数据可以以数组形式呈现。

当涉及到生产级数据集时,多维数组和交错数组是经常使用的类型。如何优化这些数组的结构以供创建和使用,决定着开发人员是否能高效地执行任务。

2. 谈谈算法

每个人都在谈论“算法”,仿佛它是一个被AI唤醒的神秘物体,会给所有人带来厄运。 或许这只是广大民众的一种看法。

在开发人员踏入编程的潮流前,算法只是编程中一系列实现特定结果的可重复规则。

当涉及到算法时,了解排序算法的机制可以帮助开发人员在处理大量数据时保持清醒。

有些时候,面临的是数据和数据处理问题。如果熟悉为特定类型的数据进行设计和测试的方法,那么就能减少对列表的sort()等方法的依赖。

这是因为sort()倾向于运行自己的算法,而该算法可能因绘制引擎而异。当编写自己的算法时,就可以更好地控制通过代码处理的数据的质量和速度。

3. SOLID设计原则

SOLID是编程中五项设计原则的集合。这五项原则是可以实现面向对象编程的模式。

SOLID原则的有用之处在于提升代码灵活性、长期可维护性,以及加强对开发人员间工作完成方式的全面理解。

除了创立健壮的代码之外,SOLID还形成了敏捷软件开发的核心理念。

4. 测试

不要仅仅学习如何测试,更要学会研究测试背后的理论。当进行测试时,开发人员倾向于仅仅关注单元测试,而不去弄清楚整体意识形态的机制,以及它们为什么是代码稳健的基础。

测试分为基于功能的测试和非功能性测试,如性能、安全性、可用性和兼容性测试。这些测试通常具有较低优先级,或者根本未被考虑。

重要的是,测试还能让开发人员运行假设的场景并预先确定数据的形态,以及在开始编码之前预测潜在的问题。

5. 树

有些时候会听到关于“树”的内容。这里的“树”不是指通常生长在泥土中并提供氧气的植物,而是基于关系基础结构——通过节点、叶节点、子节点、父节点和兄弟节点访问,从而构建数据。

如果使用过HTML,就会听说过DOM树。那是一种树的类型。二叉树是每个节点都有两个子节点连接的树,它创建了一个可以追溯到最顶端的金字塔样式图。

但是,树的意义远不止这些,它还与性能、处理数据以及如何快速检索数据有关。

6. 动态编程

动态编程是一种通过递归方式,将复杂问题分解为可能的最小子问题,来解决复杂问题的方法。这是一种编程技术,可用于多个学科,而不仅限于代码。

动态编程的关键点在于,它对递归的使用意味着一个问题只会被解决一次,并且可以优化工作负载,而不是根据特定的重复算法来组合事物。

最初,因为很像算法,动态编程的概念可能会让人困惑。但是动态编程和算法有着显著的不同,有着不同的机制原理,从长远来看,学习动态编程可以帮助开发人员成为一个更好的程序员。

7. 散列表 (Hash Table)?(与土豆煎饼 (Hashbrowns) 无关)

程序以一种易于访问和理解的方式组织大量数据。散列表是存储和检索数据的另一种方法。

当涉及大型数据集(有数百万个的数据点)并且需要快速检索数据时,散列表是常见的选择。但同时散列表也能对本地应用程序存储中较小的数据集进行设计,以提高效率并对特定集进行分类。

8. 二分搜索法

又回到了另一个与数据相关的话题。二分搜索是一个值得探索的重要话题,因为它与性能有关。

为了使二分搜索工作正常进行,必须要对需搜索的数据集进行预排序,以使算法能够快速遍历每个数据点并确定是否匹配。

关于二分搜索,有多种方法能够实现它,通常是算法和递归的混合。二分搜索的思想可以应用于不同的语言,它更多的是一种基于数学推理的技巧,而不是实际的代码。

9. 认真对待进程、线程和并发

当开始关注进程、线程和并发时,这意味着已经开始深入编程了。

然而,因为进程、线程和并发主要面向后端开发人员,但作为一个前端开发人员,可能从未遇到过这些问题,但对它们的工作原理有所了解仍然是一件好事。因为这有助于全面了解计算机的工作原理,以及代码是如何作为人类、绘制引擎/解释引擎和机器之间的通信桥梁进行工作的。

了解这些概念还能帮助你了解储存系统的工作方式以及编写的代码对性能的影响。

10. 链表

除非使用C ++或Python,否则不太可能会运用到链表。虽然链表看起来与数组十分相似,但是链表有着不同于数组的特定优点和缺点。

如果开始深入研究数据是如何以链表的形式显示的,就会发现它非常适用于大型数据集工作,因为它的容量是无限的。

如果数据过于庞大,最终需要调整数组的大小。而链表可以保持数据之间的“链接”。

11. 设计模式的艺术

一切都可以归结为一个模式。后退一步,着眼全局,并确定以前是否遇到相同问题,然后设计模式就得以实现了。

如果可能的话,则推荐使用设计模式来节省时间,防止潜在的问题进一步发展,并为代码编写过程创建标准。

虽然设计模式看起来是一个需要学习的大领域,但它也会带来良好的投资回报,因为实际上减少了将来由于结构缺乏或结构较弱而可能从代码中出现的百搭码文的数量。

在某种意义上,设计模式就好比一个预先设计的蓝图,有助于在不断的实践应用中保持代码的可读性和可理解性。

结语

编程不仅仅是学习一门语言的工作原理。语言、框架、库背后还隐藏着机制和技巧。

希望这份元知识指南能让大家对编码有更为全面的了解,并且不局限于……嗯,代码本身。

If else 语句会使很多刚入门的程序员感到困惑,但掌握if else 语句也是证明知识积累与应用达到新高度的标志。

不必完全理解所有的内容,但这些知识点可以有助于未来的程序编写。

知道或至少了解上述主题如何发挥作用并融入全局,将有助于加快编码过程,并提高所创建代码的潜在健壮性,以防出现残缺和衰退。

加油,各位机智的天才程序员们!