学了C语言基本的语法,感觉转化代码的能力还是不强,编程能力到底该怎样提升?

刚开始学习编程的时候,

  • 想写段不报错的代码吧,需要耗时十几分钟到一个小时。
  • 刷一道 Leetcode 上面的算法题呀,需要一个到几个小时。
  • 实现一个稍微复杂点的功能需求,跑通时间无比长。。。

当时,想一夜之前变成写代码的高手。

现在,为什么当时的自己会觉得编程很难?

其实,学习编程的正确方式 和 传统教育的学习方式 是不一样的,甚至是相违背的。

我们从小被教育的绝大部分知识都是通过老师传授,自己记忆,反复刷题来记住的。

而自己动手的部分极少,想想高中的实验那些化学物理实验基本都是老师在讲台上做的。

我们需要做的只是记忆知识点,以及为什么实验会出现这个结果。

我们从小被告知的成功标准就是获得考试中的高分。

可笑的是,这个标准在大学毕业之后立马变成了买车买房,结婚生子。

在我看来,语文是一个还比较有创造力的学科,因为至少还有作文这个领域你是可以自由发挥的。

其他的学科在应试教育下都失去了学科本有的魅力。

而编程,恰好是一个实践性和创造性很强的东西。

需要大量的代码实践。

只有动手写代码了才能知道输出是什么。

同样的需求可以有 1-n 种实现方式,实现方式上又各有自己的优缺点,根据场景的不同需要采用不同的实现方式。

这就和高考考卷只有一个正确答案有很大的区别。。。

所以初学者觉得写代码难,本质上是无法适应 学习模式的改变。

好了,废话说了这么多,其实想表达的只有一个。

要提高自己的编程能力,第一步需要的是转变自己的学习模式。

编程语言

  • 数据结构
  • 算法
  • 系统理解

为了简短起见,就不给大家推荐书籍啦,只会大概讲下。

编程语言

编程语言可以多学几种,切勿将自己局限于一种语言。

最好是一种面向过程,一种面向对象,一种脚本语言。

目前来看市面上主流的主要是 JAVA 和 C++ , GO 语言这几年也比较火,是类 C 的语言,有 C 语言的基础学起来是很快的。

  • Java 是综合能力很强的语言,Java 的生态也非常的强大,企业一般都是基于 Java 生态来快速实现自己的业务需求,Java 的生态也能让你有更多的大局思维。
  • C 语言偏底层,操作系统和很多优秀的组件也都是通过 C 语言实现的。
    学习 C 语言可以更好的了解计算机的底层。
  • C++ 是一门又强大又很难的语言,很多大厂用 C++ 开发核心架构,比如腾讯、百度、谷歌等。

但是,请勿尝试在短时间内学习过多的语言。

不要只关注语言的语法。要专注于语言的范式,其弱点和强项。

了解每种语言适合的位置,语言的生态等。

数据结构

经常会有同学问,这个数据结构的代码是 Java 的还是 C 的还是 C++ 的。

在我看来,数据结构是不分语言的。

在维基百科上面,数据结构的定义如下:

常见的数据结构

  • 堆栈(Stack)
  • 队列(Queue)
  • 数组(Array)
  • 链表(Linked List)
  • 树(Tree)
  • 图(Graph)
  • 堆积(Heap)
  • 散列表(Hash table)

想要提高自己的编程能力,可以

用自己所知道的任何语言来实现数据结构。

了解这些数据结构的基本操作(插入数据,删除数据,随机读写等)的时间复杂度。

了解每个数据结构优点和缺点和适用场景。

算法

同样的,算法也是不区分语言的

好的算法可以最大程度的节省我们的成本和资源。

  • 基本算法
    • 深度优先搜索
    • 广度优先搜索
    • 启发式搜索
    • 遗传算法
    • 枚举
    • 搜索
  • 数据结构的算法
  • 数论与代数算法
  • 图论的算法
  • 哈夫曼编码
    • 树的遍历
    • 最短路径算法
    • 最小生成树算法
    • 最小树形图
    • 网络流算法
    • 匹配算法
    • 分团问题
  • 动态规划

系统理解

我们都知道,程序都是要在一定的环境下才能运行的。

比如,JAVA 程序就是跑在 JVM 上面的,如果你想成为一个优秀的 JAVA 程序员,就避免不了要去了解 JVM。

而 C 程序和 C++ 程序则是直接跑在我们的操作系统上的。

所以我们还必须要去了解操作系统的底层原理和系统编程。

那作为转专业的同学呢,就还需要自己下去多补课,了解计算机组成原理,计算机体系结构等等。

你可能感兴趣的:(java,开发语言,算法,程序员,学习)