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

news2024/11/15 22:30:17

刚开始学习编程的时候,

  • 想写段不报错的代码吧,需要耗时十几分钟到一个小时。
  • 刷一道 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++ 程序则是直接跑在我们的操作系统上的。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/73585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ThreadLocal分析

每个线程都会有属于自己的本地内存,在堆中的变量在被线程使用的时候会被复制一个副本线程的本地内存中,当线程修改了共享变量之后就会通过JMM管理控制写会到主内存中。 很明显,在多线程的场景下,当有多个线程对共享变量进行修改的…

瑞格尔侯爵葡萄酒之城大师班

11月28日,美夏国际酒业携手西班牙瑞格尔侯爵酒庄(Marqus de Riscal)在上海的“苏河江宴”举办了一系列瑞格尔侯爵明星产品的大师班品鉴会。 开场前,一杯清爽的瑞格尔侯爵酒园白葡萄酒(Marqus de Riscal Rueda Verdejo …

大一学生HTML个人网页作业作品——火影忍者动漫7页面带特效带轮播(HTML+CSS+JavaScript)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

深度学习: BatchNormlization论文详细解读

《Batch Normlization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》 论文详细解读&#x1f4a1;目录<center>《Batch Normlization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》 论文详细解读基础知识面…

机器学习11支持向量机SVM(处理线性数据)

文章目录一、什么是支撑向量机&#xff1f;二、Hard Margin SVM思想逻辑推理点到直线的距离&#xff1a;推论&#xff1a;再推&#xff1a;换符号替代&#xff1a;最大化距离&#xff1a;三、Soft Margin SVM和SVM正则化Hard Margin SVM缺点&#xff1a;所以我们必须思考一个机…

YOLO v1

参考 YOLO v1 - 云社区 - 腾讯云 摘要 我们提出了一种新的目标检测方法YOLO。 先前的目标检测工作重新利用分类器来执行检测。 相反&#xff0c;我们将对象检测作为空间分离的边界框和相关类概率的回归问题。 在一次评估中&#xff0c;一个单一的神经网络直接从完整的图像预…

内核态的文件操作函数:filp_open、filp_close、vfs_read、vfs_write、set_fs、get_fs

关于用户态的文件操作函数我们知道有open、read、write这些。但是这些的实现都是依赖于库的实现&#xff0c;但是在内核态是没有库函数可用的。最近做测试&#xff0c;在内核态中&#xff0c;需要学习一下在内核态里面的文件操作函数。分为三对出现。 感谢前辈的优秀文章&…

企业网站怎么建立?【企业网站的建设】

不少的实体企业都会考虑建立一个自己的企业网站&#xff0c;那么在企业网站的建设之前需要做好功课。那么企业网站怎么建立&#xff1f;下面给大家说说大概的流程。 1、申请域名 企业可以申请一个和自己企业名称相关的域名&#xff0c;而且域名尽量不要太长&#xff0c;否则难…

Java学习之多态数组

目录 一、定义 二、举例说明 要求1 父类-Person 子类-Student 子类-Teacher main类 运行结果 要求2 思路分析 main类中的代码 运行结果 一、定义 数组的定义类型为父类类型&#xff0c; 里面保存的实际元素类型为子类类型&#xff08;也可以有父类&#xff09; 二、…

Cat.1无线数据传输终端/Cat.1 DTU/LTE Cat.1 DTU/Cat 1模组功能

LTE Cat.1无线数传终端F2C16将借助成熟的LTE网络以更好的覆盖、更快的速度、更低的延时&#xff0c;完美取代传统2G/3G网络&#xff0c;为中低速率物联网行业提供优质的无线连接服务。 工业级芯片设计&#xff0c;设备稳定联网 ●全工业级芯片设计&#xff0c;宽温宽压&#xf…

「虚拟社交」爆火,资深玩家「当道」

⬆️“政企数智办公行业研究报告及融云新品发布会”明天直播&#xff01; 一切应用都将社交化。关注【融云全球互联网通信云】回复【融云】抽取高颜值大容量高端可乐保温杯哦~ 中国政企数智办公平台行业研究报告 融入社交能力&#xff0c;创造增长奇迹。激活用户在不同场景的社…

6个改善【客户体验】的自动电子邮件营销回复示例

关键词&#xff1a;客户体验、电子邮件营销 电子邮件自动回复器是将跨境电商的客户体验 (CX) 提升到一个新水平的一种方式。为了帮助跨境电商决定应该设置哪种自动电子邮件&#xff0c;我们汇总了对客户体验影响最大的 六个电子邮件自动回复示例。 这里有一些统计数据可以正确看…

国内各行业领域是否能通过与元宇宙和虚拟数字人的结合振兴数藏经济?

在过去几年&#xff0c; NFT和数字藏品已被广泛用于数字经济。 根据中国数字藏品行业协会早在2021年发布的市场发展报告中就指出了当年中国数字藏品市场规模达到2166亿元。 今年&#xff0c;国内元宇宙概念被炒得火热&#xff0c;从故宫博物院联合腾讯、网易等推出「故宫系列」…

关于C++11

文章目录&#x1f60d;C11优势&#x1f60e; 列表初始化&#x1f601;变量类型推导&#x1f44c;为什么需要类型推导&#x1f44d;decltype类型推导&#xff08;了解&#xff09;&#x1f61c;final 与 overridefinal&#x1f91e;override❤️默认成员函数控制&#x1f929;显…

TH10-数据统计与内容审核

TH10-数据统计与内容审核1、用户冻结解冻1.1 用户冻结ManageControllerManageService1.2 用户解冻ManageControllerManageService1.3 查询数据列表UserInfoManageService1.4 探花系统修改UserFreezeService2、数据统计2.1 数据采集2.1.1 部署RabbitMQ2.1.2 消息类型说明2.1.3 实…

使用dd+hexdump命令修改环境变量的值和升级uboot

前言 这篇写的较细&#xff0c;使用dd擦除emmc本来就是比较危险的事情&#xff0c;所以一定要细致。哪里没看明白的&#xff0c;赶紧留言问我&#xff0c;可不能存有侥幸心理。 思路大概就是&#xff1a; 1 先从emmc把数据读出来&#xff0c;放一个镜像文件里&#xff0c;使…

【整理】Python全栈技术学习路线

【整理】Python全栈技术学习路线【阶段一】Python基础Linux【阶段二】多任务编程服务器前端基础【阶段三】数据库mini Web框架【阶段四】Dhango框架美多商城项目【阶段五】DRF框架美多商城后台【阶段六】项目部署Flask框架Hm头条【阶段七】人工智能基础推荐系统基础Hm头条推荐系…

带你了解extern “C“

1.extern “C” 这个语法是c的语法。我们知道在一个.c文件中调用另一个.c中实现的函数是没有任何问题的&#xff0c;一个.cpp文件调用另一个.cpp文件中实现的函数也是没有问题的。但是我们如果想要在一个.cpp文件调用另一个.c文件中实现的函数&#xff0c;或者在一个.c文件中调…

双调序列

目录 双调序列 思路: 代码: 时间复杂度: 总结: 题目链接: 双调序列 题目描述&#xff1a; XJ编程小组的童鞋们经常玩一些智力小游戏&#xff0c;某月某日&#xff0c;小朋友们又发明了一种新的序列&#xff1a;双调序列&#xff0c;所谓的双调呢主要是满足如下条件描述…

TensorFlow之分类模型-2

1 基本概念 2 文本分类与情感分析 获取数据集 加载数据集 训练数据集 性能设置 为了提升训练过程中数据处理的性能&#xff0c;keras技术框架提供数据集缓存的功能&#xff0c;使用缓存可以避免读取磁盘数据集时由于IO消耗太多而出现性能瓶颈的问题&#xff0c;如果数据集…