作为一个数学专业的学生,我是怎么看待编程的?

1.概况

博主的专业是数学与应用数学,简称应数。虽然后面跟了个应用数学,但是这个专业应该是本科阶段最接近数学的专业了。我认为这个专业使我具有如下的几个优势:

  1. 数学的学习使我具有较强的思维能力。编程本质上就是通过写代码的方式来解决实际的问题,而解决问题时,清晰的思路显得尤为重要。数学,比起其他学科,会更加抽象一些,对我锻炼思维能力颇有助益。
  2. 很多编程时遇到的实际问题,最终都可以转换成类似的数学问题。应数专业有一门必修课,叫做数学模型,讲述的是如何用抽象的数学符号、数学式子、图形等刻画客观世界的本质,从而转换成数学问题,最终用数学方法解决问题。而解决这些数学问题时,如果计算量较大,最终还是要使用编程的方式来解决。
  3. 学习数学使我养成了勤动手,爱分析和计算的好习惯。由于很多数学问题非常抽象,推理的过程很长,同时也有一定的计算量,这使得我必须勤于动手,通过纸笔画图、分析、计算。编程时,我也会先画图分析,写出程序的基本框架和流程,再动手敲代码,这使得我在编程的过程中事半功倍。

2.我为什么喜欢编程?

事情还得从我上中学讲起。当时,我父亲着力把我往数学方面去培养,他给我买了很多数学的科普书籍,比如《数学花园漫游记》《数学与哲学》《数学家的眼光》等等,试图培养我对数学的兴趣。他认为我天生就是一个学数学的料(至今我仍然不知道他为啥这么认为),这也是我后面专业报了数学的一个重要原因。但这些数学的书籍在讲述数学世界的美的同时,经常提到计算机的概念,这反而提起了我对计算机的兴趣,对编程的兴趣。

除此之外,我作为一个走读生,并没有受到学校太大的限制,并且让我很早就接触到了计算机。那是我上高中的时候,我父亲给我买了一个笔记本电脑。当然,他的初衷是让我利用计算机学习课程,比如一些网课,还有查阅资料、记电子笔记等等。但是对于一个几乎从来没有接触过电脑的中学生来说,这是个非常新奇的事物。中学阶段,课业压力重,学校的事情大部分都千篇一律,没有什么变化。所以,哪怕是一台小小的笔记本电脑,我也会在无聊的时候乱折腾。

这“折腾”起来就不得了了,很多事情我现在想起来都觉得很有意思。我喜欢往电脑上装各种软件,看看有什么奇怪的功能,然后再卸载掉。我也会进到系统的设置里面,胡乱捣鼓各种设置。我还会上网冲浪,看看网络上有什么新奇、有意思的东西。我还学会了用U盘重装系统,当我感到电脑已经被我搞的一团糟的时候,就把系统重装了。如此种种,让我认识到了计算机世界的神奇。

我在课余,还有一个重要爱好,就是下棋。这个棋就包括中国象棋、围棋还有五子棋等等,这些棋类我都会买几本书来系统学习,这就导致我的水平比普通人高出一点,已经在我生活的圈子里找不到对手了。那就只能到网络上和网友下棋,或者是跟电脑软件下棋。在我跟电脑软件下棋的时候,一旦把难度系数调高,就会感受到非常强的压迫感,无论如何都很难赢电脑,这又激发了我对棋软的兴趣,甚至去买一些付费软件(水平比免费软件要高出一大截)来测试,比如让两个软件互相下棋。不过更令我感兴趣的是,这些软件到底是如何计算的,为什么能做到每一步棋都如此稳、准、狠,令人摸不着头脑的同时又无懈可击。

在我买的棋类书籍中,有一两本书,是专门讲解人工智能如何下棋的。在计算机的世界中,一切都是数值的运算。以中国象棋为例,棋软会定义每个棋子的价值、棋子的位置带来的威胁度、棋子能走的位置是否通畅等等,并通过一些算法,计算出当前局面的分数,并不断用类似穷举的方式去推演接下来可能的走法。这些观点非常吸引当时对计算机还一无所知的我。

其实,我不知道这里面究竟哪件事是导火索,让我从此无可挽救的喜欢上编程。或许,计算机作为新兴的事物,本身就具有极强的魅力,所以喜欢上她并不需要理由。不过,中学期间并没有太多时间系统学习编程,具体的学习还是得等到上大学之后。

3.学习编程时,我会怎么做?

上了大学之后,我就可以发挥出我较强的自学能力这个优势了。我学习编程的主要途径就是阅读大佬的书籍,以及大量的练习。我想,这两件事情大家都会去做,而且应该也能做的挺不错。不过我想说的是另外两件事,那就是:

  1. 学习编程不只是编程,还要多去学习数学和英语。
  2. 学习编程,更重要的是编程的思维,画图+总结梳理是非常重要的。

cowthink

3.1 数学和英语的重要性

作为一个数学系的学生,我想说的是,数学确实对编程有很大的帮助。我也结识了一些学习编程的朋友,根据我的观察,由于我对数学有自己的一些理解,在解决一些编程问题时会有不同的角度,这尤其体现在某些算法问题上。不过,更重要的还是学习数学对一个人思维的锻炼,我发现,数学学的好的同学,抽象思维的能力比普通人要强得多。数学是需要花专门的时间去学习的,不过网络上有很多免费的课程,市面上也有很多相关的教材,多去看看大佬是如何分析和思考问题的,反过来也会对编程有所帮助。

至于英语,我想不必多说。学习编程时,免不了要去看英文文档,如果看不懂的话,会走非常多的弯路。不过我认为,英语不用去专门花额外的时间去学,在看英文文档的同时,去查一查不认识的词就行了。我自认为英语学的还可以,所以需要查询的词汇比较少,如果你英语基础比较薄弱,那就多查查就行了。在技术文档里,很多词汇都会反复使用,所以到后面熟练了,感觉会比一开始好很多。

3.2 画图+梳理总结

画图!画图!画图!

写程序之前,请先画图,梳理清楚你想写什么,流程是怎么样,然后再动手去写代码。不然,很有可能是一波操作猛如虎,调bug调一上午。

举个数学中的例子,有时候你会觉得某些概念或者定理非常抽象,这个时候厉害点的老师就会告诉你,应该数形结合。而编程,很多时候也是有些抽象的,但是很少会像数学那么抽象。数学中有些定理实在是过于抽象,由于我水平不太够,实在是无法通过画图的方式来表述。但是编程中很多看似非常复杂的问题,一旦用图来表示,就会变得清晰明了,从而被解决。

当然,在梳理总结知识点的时候,也可以通过画图的方式。如果你觉得你没法准确的通过画图来表述某个知识点,那很有可能是因为你学的不够扎实。

总结

说一千道一万,关键还是要去付诸行动,比如每天抽出2~3个小时来学习编程,周末全天时间都来学习编程。我学习编程的目标还是为了更好的武装自己,既然有兴趣,又能在某个领域做出自己的贡献,何乐而不为呢。其实,我也没有想好未来要去哪家IT公司,但不管是去哪里,能充分发挥出我的价值,我就满意了。

本篇博客主要是讲下我对编程的一些看法,方便你更好的了解我。由于主要是发表一些看法,我也没有举一些具体的例子,如果想要和我一起学习编程,建议你去阅读下我其他的博客,我会尽量做到日更。

另外,如果对我有什么建议,可以直接在评论区提出,非常感谢大家。
cowsay

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大数据Flink进阶(八):Apache Flink架构介绍

Apache Flink架构介绍 一、Flink组件栈 在Flink的整个软件架构体系中,同样遵循这分层的架构设计理念,在降低系统耦合度的同时,也为上层用户构建Flink应用提供了丰富且友好的接口。

山东大学机器学习大作业

数据处理与可视化这里是DLRM模型数据集预处理模块:args.ln_emb ln_emb.tolist() m_spa args.arch_sparse_feature_sizeln_emb np.asarray(ln_emb)num_fea ln_emb.size 1 # num sparse num dense featuresm_den_out ln_bot[ln_bot.size - 1]Sparse fea 26, D…

Java设计模式-3、单例模式

单例模式 单例模式属于创建型模式,⼀个单例类在任何情况下都只存在⼀个实例, 构造⽅法必须是私有的、由⾃⼰创建⼀个静态变量存储实例,对外提供⼀ 个静态公有⽅法获取实例。 优点是内存中只有⼀个实例,减少了开销,尤…

代码随想录|day26|回溯算法part03● 39. 组合总和● 40.组合总和II● 131.分割回文串

今天的练习基本就是回溯法组合问题,这一节只要看labuladong即可。 组合问题: 39. 组合总和---------------------形式三,元素无重可复选 链接:代码随想录 一次对,同样在进入下次循环时,注意startindex是从j…

欧莱雅校招负责人张泽宇:拥抱Z世代,探索新玩法

作为校招HR,你在雇主品牌创新实践的路上做过什么尝试? 2020年,欧莱雅正式推出了全新的雇主品牌价值主张 —— 敢为敢超越,就是欧莱雅(Freedom to go beyond, thats the beauty of L’ORAL),鼓励…

使用ChatGPT进行AI对话

1.ChatGPT简介 ChatGPT是美国人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具,使用了Transformer神经网络架构,也是GPT-3.5架构,这是一种用于处理序列数据的模型,拥有语言理解和文本生成能力&#xff0c…

C/C++ 日期 时间 函数总结

使用C标准库 有四个与时间相关的类型&#xff1a;clock_t、time_t、size_t 和 tm。类型 clock_t、size_t 和 time_t 能够把系统时间和日期表示为某种整数 头文件 #include <time.h> #include <stdio.h> tm 结构: struct tm {int tm_sec; // 秒&#xff0c;…

隐私计算-TEE执行环境

一、TEE 的定义 论述完 TEE 的概念后&#xff0c;接下来进一步解析 TEE 的深层定义。目前对于 TEE 的定义有很多种形式&#xff0c;针对于不同的安全性需求和平台&#xff0c;TEE 的定义也不尽相同&#xff0c;但在所有 TEE 的定义中都会包含两个最关键的点&#xff1a;独立执…

谈谈分布式一致性机制

分布式中一致性是非常重要的&#xff0c;分为弱一致性和强一致性。 现在主流的一致性协议一般都选择的是弱一致性的特殊版本&#xff1a;最终一致性。下面就从分布式系统的基本原则讲起&#xff0c;再整理一些遵循这些原则的协议或者机制&#xff0c;争取通俗易懂。 但是要真…

【通过代理监听UIScrollView的滚动事件 Objective-C语言】

一、输出,当UIScrollView滚动的时候,实时输出当前UIScrollView滚动的位置, 1.用代理实现吧, contentOffset,代表偏移吧,我需要你当UIScrollView滚动的时候,实时输出UIScrollView滚动的位置, 2.第一,我们如何获得UIScrollView滚动的位置呢,contentOffset,是不是就是…

【创作赢红包】LeetCode:232. 用栈实现队列

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; &#x1f33b;算法&#xff0c;不如说它是一种思考方式&#x1f340;算法专栏&#xff1a; &#x1f449;&#x1f3fb;123 一、&#x1f331;232. 用栈实现队列 题目描述&#xff1a;请你仅使用两个栈实现先入先出队…

【论文速递】ACL 2022 - 查询和抽取:将事件抽取细化为面向类型的二元解码

【论文速递】ACL 2022 - 查询和抽取&#xff1a;将事件抽取细化为面向类型的二元解码 【论文原文】&#xff1a;Query and Extract: Refining Event Extraction as Type-oriented Binary Decoding 【作者信息】&#xff1a;Wang, Sijia and Yu, Mo and Chang, Shiyu and Sun,…

IP地址规划方法

一、IP地址规划的基本步骤&#xff1a; &#xff08;1&#xff09;判断用户对网络以及主机数的需求&#xff1b; &#xff08;2&#xff09;计算满足用户需要的基本网络地址结构&#xff1b; &#xff08;3&#xff09;计算地址掩码&#xff1b; &#xff08;4&#xff09;…

React Three Fiber动画入门

使用静态对象和形状构建 3D 场景非常酷&#xff0c;但是当你可以使用动画使场景栩栩如生时&#xff0c;它会更酷。 在 3D 世界中&#xff0c;有一个称为角色装配的过程&#xff0c;它允许你创建称为骨架的特殊对象&#xff0c;其作用类似于骨骼和关节系统。 这些骨架连接到一块…

2023-03-24:音视频mp3和h264混合(muxer)编码为mp4,用go语言编写。

2023-03-24&#xff1a;音视频mp3和h264混合&#xff08;muxer&#xff09;编码为mp4&#xff0c;用go语言编写。 答案2023-03-24&#xff1a; 这是一个使用FFmpeg库将MP3和H.264混合编码为MP4的Go语言程序。程序的大体过程如下&#xff1a; 1.设置FFmpeg库路径和环境变量。…

ChatGPT来了,让我们快速做个AI应用

你好&#xff0c;我是徐文浩。 过去的两讲&#xff0c;我带着你通过OpenAI提供的Embedding接口&#xff0c;完成了文本分类的功能。那么&#xff0c;这一讲里&#xff0c;我们重新回到Completion接口。而且这一讲里&#xff0c;我们还会快速搭建出一个有界面的聊天机器人来给你…

五分钟了解支付、交易、清算、银行等专业名词的含义?

五分钟了解支付、交易、清算、银行等专业名词的含义&#xff1f;1. 支付类名词01 支付应用02 支付场景03 交易类型04 支付类型&#xff08;按通道类型&#xff09;05 支付类型&#xff08;按业务双方类型&#xff09;06 支付方式07 支付产品08 收银台类型09 支付通道10 通道类型…

Unity Avatar Cover System - 如何实现一个Avatar角色的智能掩体系统

文章目录简介变量说明实现动画准备动画状态机State 状态NoneStand To CoverIs CoveringCover To Stand高度适配高度检测脚部IK简介 本文介绍如何在Unity中实现一个Avatar角色的智能掩体系统&#xff0c;效果如图所示&#xff1a; 初版1.0.0代码已上传至SKFramework框架Package…

【Nginx】Nginx的学习(3.Nginx命令和nginx配置文件)

1. Nginx命令 1.1 启动nginx systemctl start nginx1.2 停止nginx systemctl stop nginx1.3 重载nginx # 重新加载配置文件 systemctl reload nginx1.4 查看nginx服务端口 netstat -anpl | grep nginx1.5 查看nginx进程 ps aux | grep nginx2. nginx的配置文件 2.1 查看…

git拉取github上的项目

git拉取github上的项目测试创建bash公钥&#xff0c;拉取代码1.先创建github账号和项目&#xff1b;系统安装git程序2.先配置ssh公钥,为了避免每次远程访问需要输密码&#xff0c;将使用ssh登陆。ssh应该与本机信息绑定&#xff0c;查看自己电脑 C:\Users\lenovo\.ssh 目录下是…