编程入门: 自学编程从哪里开始? [初学参考]

article/2025/9/21 22:33:14

自学编程,先学python、java还是C/C++?

——大四学生对于初学者的一点建议

摘要: 自学编程,先学什么语言呢?实际上,编程能做的事太多了,首先明确自己想要用代码做什么,再明确自己的学习路径、选择起点。

在这里插入图片描述

在这里插入图片描述

高考结束,自己的第一个明确规划就是:学编程。当时不知道编程可以用来做金融决策或科学计算,只是想单纯开发一个“有图形化界面的软件”而已。自然而然,没有任何基础的我也遇到了上面两个同学提出的问题。

大一走了不少弯路,在java、C/C++这两者的门口兜兜转转,也没有什么进步。幸好这世界上有一种叫“数学建模比赛”的东西,为我打开了新世界的大门:几个模型下来,我对自己“写代码的能力”有了不少信心,并且更加关注数据结构这种基础知识,便开始系统学习CS理论。这期间逐渐接触了matlab、汇编、C/C++、java、python、C#、golang、html/css、javascript等等语言(其实语言种类不是重点,重点在于其生态与可用框架)。现在回过头来,跟三年半前的自己和准备自学编程的同学讲一讲心得。

本文的内容概括为两部分:

	1. 编程能帮我们干什么2. 自己要拿编程做什么
  • 一.先知道编程能帮我们干什么

编程,其实已经不仅仅是“编写程序”这么狭义了,通过写代码让计算机帮我们做事都可以看做“编程”。这也是为什么,在注重高效率的今天,社会越来越推崇“少儿编程”与“全民编程”。

并且,现在的语言工具(比如python)已经降低了不少编程工作的复杂度,让我们在不了解编译过程的情况下,也能通过几行简洁的代码很棒地完成工作。

因此,我在这里总结一下,编程能帮我们做什么,已经做这个工作需要懂计算机到什么程度:

  1. 日常办公、处理表格:

我们刷朋友圈时常常见到这种广告:“同事早早下班,工作还被领导表扬,只因为会用python处理excel!”这其实有点瞎扯:一是excel的功能已经够直观便捷、够强大了;二是0基础入门python,肯定要涉及到学习一些数据结构的相关知识,有这个时间,还不如好好看看excel有哪些强大功能。如果你只想用编程处理excel这种办公工作的话:学一学python入门课,再掌握一个类似xlwings的excel处理库就足够了。当然,有这时间,还不如直接学学excel和其中的vba宏。

  1. 科学计算(运筹/机器学习/数值分析):

现在科学计算几乎难以与“编程”二字分家。做科学计算的人都是很聪明、学习能力很强的人,但其编程能力往往参差不齐,我这里划了三个档次:
2.1 不需要太多编程能力,重点在于结果而非编程:
很多朋友只是用用仿真软件、用R语言做做统计分析、用matlab做做拟合,他们的工作重点在于输出的结果,而非“编程”这个过程,那很显然,这类同学只需要懂得声明变量、懂得控制语句、能套用网上的“轮子”、会用plot(X, Y, “o”)这种很直观的函数画画图,就足够啦。这类同学往往是类似物理、管理、社会学这类学科的从业者,都是很聪明能干的人,我认为在过程中学习,多看看前辈们的工作方式与工具,注重文件管理与编程规范(不要乱起文件/变量名字,也不要乱放文件…),学学github检索与使用,熟能生巧就好。
2.2 需要一定编程功底,如CV/NLP等ML/DL/OR从业者:
计算机视觉、自然语言处理、深度学习、机器学习、运筹学、线性求解器、启发式算法…这类研究是一定要拿计算机做实验的,并且用编程实现算法的入门并不简单。一样的算法,编程好的和编程不好的用代码写出来,结果、性能、可移植性、可读性、调参的便捷性可能有天壤之别。这就好比艺术学者,心中的构图都是很美好的、理论知识都是很扎实的,但是最终决定作品效果的却是自己使用画笔的能力。对于这类同学来讲,数学、数据结构是重点中的重点,“会用”python这类语言的同时,最好也掌握一下“面向对象的思想”与“函数式编程”,方便我们阅读框架源码;注重自己的编程习惯,配置一个好点的编辑器,持续学习(比如你了解jupyter notebook的快捷键与自动补全吗),咱也不能一直当个“调包侠”呀。有余力则应该去系统地学学计算机课程。
2.3 大神,从底层开始写算法:
你知道么?我们用python调用的很开心的深度学习框架TensorFlow其实核心都是用c/c++写的哦!不信的话,自己去看源码tensorflow/core/kernels/。为什么用c/c++呢?我估计是为了更好的性能、对计算机算力更充分的利用。我们知道,c/c++是有指针的语言,这增加了编程难度,却也让开发者可以更好地对系统的虚拟空间进行管理。很多主流语言,比如java、python为了降低开发者编程难度,便取消了指针机制。这类人计算机功底必须极其扎实。

  1. 软件工程师/开发者:

前端、后端、PC端、移动端、Web平台、全栈、网络安全、测试、运维、游戏等等,就是我们常说的“程序员”,工种其实太多了!自学编程的孩子如果是想成为这类工程师,那当然需要系统学习软件专业与计算机专业的专业课;但是我们大部分孩子只是想学学计算机,了解一下而已,因此第3条我们不展开讨论。

  1. 其他很有趣的事:

日常生活中我们离不开手机、计算机,因此如果能写个“程序”,让计算机“自动”做一些工作,便蛮有趣的。比如,编程爱好者Sarthak agarwal就写了许多python脚本文件,这其中有用自动下载图片、自动管理文件、自动发邮件的。这里,我不得不点明一个误区:虽然人们常说python很方便、强大,但只会python是远远不够做这些有趣的事的。比如,用python下载图片听起来很美好,但是不懂url、不懂网页布局,怎么可能做到呢?python说白了,只是一个方便的工具而已嘛。
再明确自己要拿编程做什么
编程能做什么,要学到什么程度,其实我在上文说的已经比较明白了。

  • 二.自学编程大概两个阶段:

第一个阶段:
打基础,至少学懂一门语言,推荐拿C/C++入门(为了学到一些指针与面向对象的知识),拿python入门也可,但你会发现面向对象在python教学中可能不被强调,因为python自带的工具已经很强大;不推荐拿java入门,因为java实在是开发者用的语言,其魅力在于接口、程序设计,想拿java入门,不如拿C/C++入门;
编程之理,一通百通。
第二个阶段:
就是多多实践、持续学习,在自己的领域探索下去:
如果你要用搞数据科学、打数据比赛,就去多用熟悉python中的pandas、sklearn库等等;
如果想做线性求解,先找几个简单的java+线性求解器例子动手复现下来,读懂每行代码的作用,在过程中积累;
如果是兴趣驱动,莫不如像我一样,从计算机专业课学起…
etc.
我的计算机自学笔记在:https://github.com/PiperLiu/CS-courses-notes;

转发注: 本文转发时经过了重新整理.
原文: https://piperliu.blog.csdn.net/article/details/103852093?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-5.control


http://chatgpt.dhexx.cn/article/4GgKInvb.shtml

相关文章

想自学编程?这么多编程自学网站,总有一个适合你吧!

小伙伴们周末快乐。 今天分享一波适用于编程开发学习的自学网站,主要涉及编程学习和练手 、 提问交流 、 计算机公开课 、 在线刷题 、以及 问题搜索 等几个方面,希望能有帮助。 C语言网 该网站有很多C语言相关的教程、资源、博客和练手习题&#xff0c…

Proxyee-down – 百度网盘全平台满速下载神器,还带有IDM的全网嗅探功能!(替代PanDownload)

百度云网盘是目前最流行的在线文件分享途径,但它对免费用户的限速实在是严苛,即便是100M的宽带,常常也会遇到仅有几十KB/秒的速度,一个大文件要下载到天荒地老。 知道君曾分享过一些百度云网盘限速的解决办法,比如使用…

http proxy 代理

配合webpack 和 webpack-dev-server处理 安装 // 安装 cnpm html-webpack-plugin --save -D cnpm install webpack webpack-cli webpack-dev-server --save -D新建src文件夹 新建文件 index.html 和 index.js在index.js 发送一个请求 import axios from axiosaxios.get(htt…

Proxyee-down 3.x的下载与安装

本篇博客将持续更新 因为软件的作者MonkeyWei在3.x版本的软件更新中,并未发布3.x版本的exe文件只在github中发布了jar包(需要java环境)笔者本来是想将源代码生成exe文件,方便大家的下载与安装。奈何笔者水平有限,找了…

JS Proxy (代理)

Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。 语法: const p new Proxy(target, handler) 参数: target : 要使用 Proxy 包装的目标对象&…

Vue proxy代理

proxy代理是解决开发环境中的跨域问题,正式环境的跨域需要使用nginx反向代理或者是后端解决 在vue中实现proxy代理的步骤 在vue中使用proxy进行跨域的原理是:将域名发送给本地的服务器(启动vue项目的服务,比如loclahost:8080)&a…

Proxyee-down的下载与安装教程

Proxyee-down是monkeyWie在Github上的一个开源项目,向作者致敬。 最新版的Proxyee-down为3.12(2018.10更新),因为作者在3.x后的版本中并未发布exe版本,只发布了jar包 所以我们需要在计算机中安装Java环境才能使用Prox…

Proxyee Down简介

以前写过一篇用Proxyee下载百度网盘大文件的文章,后来一直没在用过,现在发现Proxyee出了新版,功能也增加了,所以重新来介绍一下。现在它的Github地址也变了,现在的地址是:https://github.com/proxyee-down-…

C语言 ~运算和运算

读CH378的一些源码&#xff0c;里面有用&~和&两种运算&#xff0c;这里记录一下这两种运算的结果 程序源码 /* C语言测试程序 */#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdint.h>int main() {uint16_t m 10…

c语言中!与~的区别

编译器信息还不知道怎么看。 在我电脑和手机的GCC环境中 !: 代表值得取反&#xff0c;对于整形变量&#xff0c;只要不为0&#xff0c;使用 ! 取反都是0&#xff0c;0取反就是1。就像 bool 只有真假一样。 ~: 代表位的取反&#xff0c;对于整形变量&#xff0c;对每一个二进制…

C语言标识符之——“~“

"~" : 对一个数的二进制按位取反 例如&#xff1a; a 0时&#xff0c;~a -1&#xff1b; a的原码 &#xff1a;00000000000000000000000000000000 ~a的补码 &#xff1a;11111111 11111111 11111111 11111111 - 补码 ~a的反码 &#xff1a;11111111111111111…

情人节必备表白代码

效果图 放大后满满的"我爱你"! 代码 pip3 install Pillow #安装依赖包Pillowfrom PIL import Image, ImageDraw, ImageFont import sys #判断参数个数&#xff0c;可以不要 import os #判断文件是否存在&#xff0c;可以不要image_path "test.jpg" fo…

520之表白代码

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/qq_42680327 今天是一个好日子,2019年5月20日,表白的最佳时机,今天突然之间闲来无事,写了个告白程序,或许是内心的躁动吧,自己虽然是用不上了,但是还是希望与众多的单身族分享一下。废话不…

520表白代码

女朋友生日快乐代码—>>>html生日快乐代码 html表白代码大全—>>>html表白代码大全 个人主页地址&#xff1a;皮小孩的个人主页 很多朋友想几个代码组合在一起&#xff0c;于是我做了这个效果。中间是爱心包围的照片&#xff08;照片可以换多张&#xff09;…

高端表白vbs

高端表白VBS 这个表白vbs可以生成心形&#xff0c;没有套路可以放心使用。 代码如下&#xff1a; Set Seven WScript.CreateObject("WScript.Shell") msgbox"我爱你&#xff01;" seven.Run "notepad",3 WScript.Sleep 1000 seven.SendKeys &…

vbs表白文件

看抖音上什么vbs停火&#xff0c;就自己稍微看了看&#xff0c;万一以后又用了。。。。。&#xff0c;都知道怎么用吧&#xff0c;把下面代码粘贴复制到新建的txt文件里&#xff0c;然后更改后缀名为vbs&#xff0c;之后点击就可以了&#xff0c;效果自己试&#xff08;表白必备…

中国十大可行性研究报告公司

可行性研究报告是从事一种经济活动&#xff08;投资&#xff09;之前&#xff0c;双方要从经济、技术、生产、供销直到社会各种环境、法律等各种因素进行具体调查、研究、分析&#xff0c;确定有利和不利的因素、项目是否可行&#xff0c;估计成功率大小、经济效益和社会效果程…

软件工程可行性研究报告

实验的背景与要求 图书馆图书借阅管理系统的开发背景介绍&#xff1a;早期的学校图书馆使用传统的卡片来管理所有的图书和读者信息&#xff0c;随着计算机对管理工作的逐步普及&#xff0c;需要开发一套图书馆图书借阅信息管理系统&#xff0c;使用计算机来对图书馆的图书借阅情…

可行性研究、需求分析

可行性研究 五个方面讨论&#xff1a;1.经济可行性 2.技术可行性 3.操作可行性 4.法律可行性 5.时间可行性 问题的识别&#xff1a;了解已解决的问题&#xff0c;这些问题是如何提出的&#xff1b;如何解决才能满足要求&#xff1b;了解问题结构。 市场调查&#xff1a;了解…

可行性研究报告模板

表格版 可行性研究报告的表格版如下&#xff1a; 文档版 参考了&#xff1a;https://blog.csdn.net/topz_share/article/details/117381322 &#xff0c;如有侵权&#xff0c;请联系本人删除&#xff01; 什么是可行性研究报告&#xff1f; 可行性分析报告&#xff1a;说明…