您现在的位置是:网站首页>技术百科技术百科

什么是编程?怎样学编程?

小大寒2024-01-01[技术百科]博学多闻

什么是编程?怎样学编程?本文介绍了量子算法与编程的关键内容,包括量子软件开发环境、经典量子算法(如Deutsch-Josza、Grover、QAOA、VQE和Shor分解算法),并辅以代码示例说明其实现与应用。‌

什么是编程?怎样学编程?

什么是编程?我该怎样做才能学会编程?

想学编程的人首先会问自己上面这两个问题,我们逐一来看:

什么是编程?

所谓编程,就是指编写计算机代码或者编写程序代码的简称。

请注意,计算机可以是:手机、笔记本电脑、平板电脑、台式机、冰箱洗衣机电饭煲的控制板、超级计算机等等。 你应该发现了,计算机是个统称。

什么是计算机代码或程序代码?

计算机代码或程序代码是一组构建计算机程序的指令,即计算机所执行的命令。

程序代码是计算机设备上运行的软件部分之一,另一部分为数据。编程是通过编写代码来告诉计算机执行特定任务的过程。它是一种将人类的想法和问题转化为计算机可以理解和执行的指令的方式。

编程的核心在于解决问题和自动化任务。

编程是与计算机对话的过程,它不仅是一种技能,更是一种思维方式。 通过编程,你可以将自己的创意变为现实,解决生活中的各种问题。

简化的编程定义

请看一个更简洁的等式:

程序 = 算法 + 数据

这里,算法可以用“逻辑”替换,算法就是逻辑;数据也可以用“信息”替换,数据就是信息。

因此,编程就是:

  • 先编写逻辑
  • 然后处理信息
  • 最终处理结果为我所用,服务于我

到这里,你可能又迷茫了:

  • 怎么编写逻辑呢?
  • 处理什么信息呢?
  • 最终结果我怎么用呢?

解决迷茫的三步

  1. 怎么编写逻辑? 很简单,学习一门合适的编程语言即可。
  2. 处理什么信息? 在学习编程的过程中自能知晓。
  3. 最终结果我怎么用? 学会某种编程语言后自然形成的能力。

我该怎么做才能学会编程?

很明显,学编程首先要学编程语言。那么,编程语言有哪些呢?

截至2024年,TIOBE排行榜前20的编程语言是:

  • Python
  • C++
  • Java
  • C
  • C#
  • JavaScript
  • Go
  • Fortran
  • Visual Basic
  • SQL
  • Delphi/Object Pascal
  • PHP
  • MATLAB
  • Rust
  • Swift
  • Scratch
  • Ruby
  • R
  • Assembly Language
  • Kotlin

这是完整的 TIOBE排行榜

这么多的编程语言,该学哪种呢?先不要急,等看完这篇文章,你自然就知道如何选了。

学会编程的价值

我们先要明白一个事儿,学会编程可以为个人生活和职业发展带来巨大的变化和无限可能。以下是学会编程后可以做的事情,以及它们带来的价值:


1. 开发软件和应用

  • 桌面应用程序:创建日常工具,比如文本编辑器、计算器、游戏等。
  • 移动应用:开发运行在Android或iOS设备上的App,如社交媒体应用、购物平台等。
  • Web开发:创建功能强大的动态网站或Web应用程序(如博客、在线商店)。

价值:实现创意,开发自己的产品,并可能通过销售或发布免费工具影响他人。

2. 自动化日常任务

  • 脚本编写:编写脚本自动执行繁琐的任务,如文件整理、数据清洗等。
  • 网络爬虫:抓取网页上的数据,用于分析或研究。
  • 批量处理数据:自动生成报告、转换文件格式、统计分析。

价值:节省时间,提高效率,让生活更简单。

3. 进入热门科技领域

  • 人工智能与机器学习:编写算法,训练模型,解决预测问题或开发智能系统。
  • 数据科学:分析和可视化数据,洞察趋势,为决策提供支持。
  • 区块链:创建智能合约,开发加密货币相关技术。
  • 物联网(IoT):为智能设备开发软件,实现互联互通。

价值:进入高薪和前沿科技领域,成为创新的推动者。

4. 创造游戏

  • 开发2D或3D游戏,比如平台跳跃、射击游戏等。
  • 学习游戏引擎(如Unity、Unreal Engine),创建沉浸式体验。

价值:通过游戏表达创意,并可能将爱好转化为职业。

5. 自由职业与创业

  • 自由接单:为客户开发网站、应用程序或提供技术解决方案。
  • 创业:通过开发独特的产品或平台,创建自己的公司。

价值:实现财务自由,拓展职业选择。

6. 进入技术行业

  • 软件工程师
  • 数据分析师
  • 系统管理员
  • 人工智能研究员

价值:获得技术行业的高薪职位和广阔发展空间。

7. 开发个人兴趣项目

  • 工具开发:编写工具改善自己的生活,如记账工具、健身追踪器。
  • 硬件编程:与树莓派、Arduino等硬件结合,开发机器人、智能家居设备。
  • 创意作品:比如通过代码生成艺术作品或音乐。

价值:满足兴趣,培养创造力和成就感。

8. 学习计算机科学的核心概念

  • 掌握算法和数据结构,理解问题求解的底层逻辑。
  • 理解现代技术的工作原理,比如互联网如何运行、操作系统如何管理资源。

价值:形成系统化思维方式,解决复杂问题。

9. 帮助他人

  • 为朋友或家人提供技术支持,例如修复电脑问题、开发小工具。
  • 参与开源项目,为技术社区贡献自己的力量。

价值:与他人分享知识和技术,提升自己的成就感和影响力。

10. 探索跨学科应用

  • 科学计算:用编程进行物理、化学、生物学等学科的建模和仿真。
  • 教育技术:开发学习工具、电子课件,提高教育质量。
  • 艺术和设计:通过代码生成动态艺术作品或视觉特效。

价值:扩展知识边界,推动多领域融合创新。

11. 提高自身思维能力

  • 逻辑思维:编程需要设计清晰的步骤,提升解决问题的能力。
  • 批判性思维:在程序调试中发现问题,分析原因,改进解决方案。
  • 系统化思维:编程教会如何将大问题分解为小问题并逐步解决。

价值:在生活和工作中更加高效地解决复杂问题。

12. 增强竞争力

  • 编程技能在各行业中需求旺盛,无论是传统行业数字化转型还是科技行业的扩展。
  • 通过编程技能开辟新的职业路径,比如跨界进入产品经理、数据分析等岗位。

价值:在竞争激烈的职场中脱颖而出。

总结就是

学会编程后,你可以做从小型工具开发到改变世界的大项目的各种事情。无论你是出于兴趣、职业发展,还是为了解决具体问题,编程都为你提供了一个强大且灵活的工具。它是一项能够终身受益的技能。

如何学会编程

现在,你应该已经比较深入地明白了什么是编程,同时也清楚了编程的意义。

接下来要解决的问题

接下来,我们先讨论开篇提到的第二个问题:我该怎样做才能学会编程?

这个讨论分两步:

  • 第一步:如何选择编程语言?
  • 第二步:如何做才能学会选定的编程语言?

理解“电子助理”概念

在分析这两步之前,最好先理解一个关键概念:电子助理

我定义电子助理为:

利用自己掌握的信息技术和计算机设备,为自己打造的一个独属于自己的智慧助手,服务于自己。

为了更好地理解电子助理,我们用一个比喻来说明:

假设场景

假如你是一个大老板,你需要多个秘书分别帮你处理不同领域的很多工作和事情,从而释放你的大部分精力和时间,让你可以享受生活的闲暇时光。

现实中,这些秘书通常是真实的自然人。

如何应用编程打造电子助理

现在假设你的日常工作和生活中,有许多需要每天或定期完成的重复性任务,这些任务占用了你大量的时间和精力。然而,这时你还不是大老板,请不起秘书,也无法让他人代劳,该怎么办呢?

别忘了,你可是学会了编程的人!只要不是耕地、除草、收麦子、搬砖头、垒墙等体力活儿,大多数任务都可以通过编写程序来解决。你写的程序就像是你的秘书,能够帮你完成这些重复性任务,释放你的精力和时间。

电子助理的优势

如果你担心程序被别人获取,不用担心,加密即可,这样只有你自己知道密码。

  • 这些程序就是你的专属秘书,别人拿了也无用,更不会泄密。
  • 将这些程序放在笔记本电脑上,它就是一个强大的家庭电子助理。
  • 将程序放在手机上,它就成为了一个随身电子助理。

而且,电脑和手机可以实现的功能远超普通人的想象,你的专属电子助理自然也会有许多妙用。

另一个比喻

如果还是不清楚电子助理的意思,我们换个说法:

你应该听说过修仙、玄幻或者科技小说中的一些概念吧?像“身外化身”、“傀儡”或者“虚空投影”。

没错,电子助理的功能和这些概念类似,都是一种智慧化、辅助型的存在。

总结

至此,终于解释清楚了什么是电子助理。学会编程后,打造自己的电子助理,不仅可以极大地提高效率,还能为生活和工作带来诸多便利。

如何选择编程语言?

信息技术发展至今,掌握任意一门编程语言,都可以发展的很好,都可以成为一名优秀的软件工程师。

作为一个零基础的小白,该选择哪门编程语言学习呢?

截至2024年,TIOBE排行榜前20的编程语言是(从高到低):Python,C++,Java, C, C#, JavaScript, Go, Fortran, Visual Basic, SQL, Delphi/Object Pascal, PHP, MATLAB, Rust, Swift, Scratch, Ruby, R, Assembly Language, Kotlin。完整排行榜请参考 TIOBE排行榜

面对这么多的编程语言,零基础的你肯定不知道怎么选。选前三名的一个吗?先别急着下结论,可以从以下三个角度考量一门编程语言:

  • 编程语言寿命长短:是否会被快速淘汰?例如,某些语言能存活几十年,这样的选择更稳妥。
  • 入行难易程度:能否快速找到程序员的工作?
  • 学习曲线:学习是否容易,上手是否快速?

推荐编程语言及特点

语言 应用领域强项 特点
C语言 系统级开发:操作系统、嵌入式系统、驱动程序
底层开发:编译器、内核、硬件接口
性能要求高的程序:如数据库引擎、实时系统
嵌入式设备:如单片机、微控制器
性能优异:接近底层硬件,提供高效性能
资源占用少:适用于有限资源环境
跨平台性强:代码易移植
简单灵活:但容易引入低级错误
C++ 游戏开发:Unreal Engine、Unity部分功能
高性能计算:图形处理、科学计算、金融系统
桌面软件:浏览器、图形工具核心部分
网络和通信:分布式系统、服务器端应用
面向对象与底层操作结合
性能优异:与C语言相当但更高级
丰富的库和框架:如STL、Boost
学习复杂:曲线陡峭,维护成本高
Python Web开发:Django、Flask框架
数据分析与科学计算:NumPy、Pandas
机器学习与人工智能:TensorFlow、PyTorch
自动化与脚本编写、爬虫开发、教育领域
易学易用:语法简洁,代码可读性强
跨平台性强:运行环境广泛
社区丰富:第三方库覆盖广
执行效率较低:不适合高性能场景
Go 云计算与分布式系统:Kubernetes、Docker
微服务架构:gRPC、RESTful API开发
高性能网络服务:代理服务器、负载均衡器
DevOps工具:自动化运维
并发能力强:原生支持goroutine
编译型语言:高效性能与快速编译结合
简单高效:语法简洁,偏向工程实践
生态年轻:库和框架较少

适合零基础小白的选择

语言 选择理由
C语言 简单易学,后续学习其他语言更容易
寿命长,与信息技术同寿
入行容易,工作机会多
开发电子助手较麻烦
C++ 学习门槛高,但能吃一辈子
寿命长,与信息技术同寿
找工作极容易,岗位选择广泛
开发电子助手较容易
Python 简单易学,语法友好
寿命长,与信息技术同寿
工作机会多,入行门槛低
开发电子助手最容易
Go 简单易学,语法高效
寿命长,与信息技术同寿
找工作容易,高并发支持强
开发电子助手较容易

选择语言时,还要看你喜欢的领域和环境,例如金融领域、游戏领域或嵌入式领域的人各有特点。

如何选择和学习编程语言

我们逐一来看:

Java语言

人数太多,门槛太低,太容易学习,对初级人员来说,就业市场太饱和太不容易。开发电子助理远不如Python、Go方便。那么,你学了Java,你感觉性价比高吗?如果有一天你成为了程序员,需要你学Java,因为你会 C语言、C++、Python、Go 这四个语言中的任何一个,学Java是分分钟的事儿。

C#, Visual Basic

对初级人员来说,就业范围太狭窄,技术很容易淘汰。而且,全世界用一套技术,微软自己用一套技术,你一个程序员,一大半的时间都在不停地跟着微软频繁的变换和学习,值得么?你有多少时间呢?

Rust

这门语言的出现和应用都很晚,Rust具备的优点其他语言(C语言、C++、Python、Go 和其他很多)都具备而且其他语言更好,Rust语言的缺点其他语言都不具备。那么,为什么要选这类语言呢?据我个人经历而言,用这类语言的公司有两个尴尬的原因:

  1. 数年前数字货币和区块链技术火热时,一部分创业公司采用Rust语言开发的开源项目做自己的链、做自己的数字货币。
  2. 很多创业公司或者各种类型的技术领导为了立威选Rust,因为其他语言大家都很熟悉,而Rust大家在一个起跑线,或者比技术领导起跑线晚,于是就各种吹Rust好。

JavaScript

很火,很流行,需求量也大,但门槛低,竞争大,几乎有互联网存在的地方就有它。但我还是不推荐,因为你学了这个,开发电子助理不可能,更没法直接去工作。想要找工作,你得再学习HTML、CSS,以及一些框架:Vue.js、React、Angular、NodeJs 等等,然后才能去找工作。而且前端开发框架每过几年出一款,你学得过来吗?

其他语言

类似原因,比如Object-C语言,也就是苹果系的技术,现在已经跌出前20。回想一下十年前,IOS开发是如何的不可一世,那时它是高薪的代名词。

汇编语言 (ASM)

汇编语言出现在排行榜前20以内,但为什么不推荐?这个问题我们后面会分析。

如何选择编程语言

到这里,你已经知道了如何选择编程语言。接下来我们看第二步:如何做才能学会选定的编程语言?很简单,请看下表:

语言 学习资料 硬件 学习方法 适用群体
C语言 C Primer Plus(第6版)中文版
作者: 普拉达 (Stephen Prata)
ISBN: 9787115390592
书:纸质版
电脑:笔记本台式机均可
  1. 从书的封面开始,一字不漏地看。
  2. 按小节学习,理解80%。
  3. 抄写代码,编译运行,理解清楚。
  4. 遇到问题查资料和看视频。
  5. 更详细的步骤在表后。
迷茫困惑的编程初学者
具备初中以上文化水平
C++ C++ Primer Plus(第6版中文版)
作者: 史蒂芬·普拉达(Stephen Prata)
ISBN: 9787115521644
同上 同上 同上
Python Python编程(第3版)
作者: 埃里克•马瑟斯(Eric Matthes)
ISBN: 9787115613639
同上 同上 同上
Go Go程序设计语言
作者: 艾伦 A. A. 多诺万
ISBN: 9787111558422
同上 同上 同上
Linux系统基础 (shell应用) Linux命令行与shell脚本编程大全(第4版)
作者: 理查德·布卢姆 / 克里斯蒂娜·布雷斯纳汉
ISBN: 9787115592514
同上 同上 同上
Linux系统高级开发 UNIX环境高级编程(第3版)
作者: 史蒂文斯 / 拉戈
ISBN: 9787115352118
同上 同上 熟悉C语言,有Linux基础

学习方法:

  1. 第一步:从书的封面开始,一字不漏的按顺序看,看到第一章的开始处停下。

  2. 第二步:从第一章开始,以小节为单位,先看懂该小节,以理解80%为好,请注意:不要做课后题,忽略即可。

  3. 第三步:将该小节的程序代码对着书抄写一遍,然后编译通过,运行正确,并理解清楚。

  4. 第四步:开始下一小节。

  5. 第五步:在上面四步过程中,会遇到很多问题,要学会各种查资料,
    如:https://chat.deepseek.com/https://www.baidu.com/https://www.google.com/chatgpt.com,文心一言,kimi,豆包,等等。

  6. 第六步:学习中遇到的问题要平常心对待,要百折不挠,要持之以恒。

  7. 第七步:如果通过前面六步,你还是迷茫,比如,你学到 C 语言的 `char类型数组和null字符` 这一小节,就是不懂,那么可以在 https://www.bilibili.com/ 上面搜索视频学习,输入 ` C 语言的 char类型数组和null字符`,回车,
    然后会有大量的针对这个知识点的视频,随便找几个视频听,直到你听懂了为止。
    如果听了三个以上视频还是不懂,再回头看书,如此反复,直到看懂。

Linux的重要性

什么?怎么又多出了Linux,这是什么情况?

原因如下:

  1. 不会Linux,你学会的编程语言将发挥不出十分之一的用途,完全丧失进阶的可能性。
  2. 能在Linux环境编程,就可以在其他操作系统环境下编程,包括Windows和Mac。

编程学习之路

现在你明白了吧,当说到一个人会编程的时候,潜在的意思是,这个会编程的人,起码具备两方面的条件:

  • 第一,会一门编程语言;
  • 第二,懂得编程环境(也就是能在某种操作系统的环境下进行编写代码,运行代码)。

二者缺一不可。

请记住,一个只懂得编程语言语法的人不懂编程环境,他写的代码将没有太大的意义。

什么是编程?如何学会编程?

我们已经分析清楚了开篇的两个问题:什么是编程?我该怎样做才能学会编程?

看到这里,其实你已经可以着手去学习编程了,而且一定能学会。但是我建议你接着看。

技术变现的思考

现在假设你已经会编程了,你是不是觉得,我马上就可以踏入软件研发领域,然后干出一番事业。

但是实际上,你可能会觉得自己腰缠万贯却不知道怎么花?也有种武侠片中身负绝世内力却不知道如何出招过招的无奈?也就是——我该用编程技术去做啥?

这中间还有一个技术变现的问题。请注意:这里的“现”不单单指代现金,更指代技术落地,也就是技术转化为实践,技术转化为生产力。

四种常见学习者类型

能把这篇文章看到这里的人,大概有以下四种类型:

  1. 已经自学过编程,但还是学不会,学得很郁闷很迷茫;
  2. 尝试过一些方法,没学会;
  3. 已经学会了一种或多种编程语言(不限于C, C++, Python, Go),但还是很迷茫,不知道能干什么,不知道怎么干;
  4. 零基础准备学编程的人。

针对不同类型的建议

如果你属于前两个类型,应该换个思路了。应该考虑寻找一位技术过硬,经验丰富的专业人员,然后让他带你入门,进而快速提升。

如果你属于第三个类型,可以按着学习方法,搜索:“我会Go编程,能做什么呢?” 如果各种查资料后,还是迷茫。这时候要知道:明明已经学会了编程语言,但还不能变现,是因为你只是具备了编程的技术,这只是起点。

如果属于第四个类型,不建议尝试前三种类型的经历,建议直接一步到位:寻找一位技术过硬,经验丰富的专业人员,然后让他带你入门,进而快速提升。

很明显,写这篇文字的我,就是一名技术过硬的很专业的人。

我是从一个非计算机专业背景转型到程序员的,如果你有兴趣,可以稍微看看下面我的大概履历。

我的个人经历

从大学毕业到今天,编程十几年了。从刚入行的小菜鸟程序员,在工作中一步步积累,从初级程序员慢慢变成高级程序员(叫架构师或者资深技术专家也行)。

思绪突然飞到了大学。当时的我怎么也想不到,非计算机专业的我,当时最怕的是计算机课程,最讨厌编程(没办法,大学有编程公共课)。毕业后竟然干了IT,并且成为了高级软件开发工程师。不得不感叹,人生真是神奇啊。

我的研发领域:Linux应用类服务软件开发(包括但不限于:汽车,金融,互联网,无人机,机器人,游戏),Linux内核开发(包括但是不限于x86、arm体系结构的内核裁减类定制化开发);大型互联网服务的分布式、微服务、集群等类型的架构和开发;当然,还有其他类开发,这里省略。

我的开发语言:C语言,C++,Python,Go,当然还有其他的开发语言;

我业余时间做的兼职:接开发类私活儿,帮企业面试挑选技术人员,与头部IT教育平台合作讲课,担任IT私人工作室培训讲师。

这些兼职的活儿,除了接开发软件的私活儿一直都有做,其他的都是从2020年初开始慢慢搞起来的,那时候新冠肆虐,公司要求在家办公,而且公司那阶段业务惨淡,没什么开发任务,那时候很多公司开始拓展线上途径,这也为程序员兼职创造了机会。

那段时间我上网活跃的时间多了,网上认识了好多其他行业的网友,跟不同行业的网友互动的多了,发现,哇塞,原来我一直埋头钻研技术,居然没注意到,网上竟然那么多人想学编程,而随着编程领域的技术日新月盛, 特别是互联网兴起后,要想进入软件研发领域闯荡, 所需要的知识储备越来越多,所能屏蔽和剔除无用信息的干扰越来越难,当编程初学者想要自学编程技术时, 难免会走很多弯路. 有许多人学了几年编程, 还是没能入门, 还是不明白编程到底能做什么? 其实这些问题产生的根本原因是: 学习方式不正确。因此根据这种情况,我开办了自己的编程学习组, 让想学编程的初学者通过少量的金钱就可以学到正确的编程学习方法。

2018年8月份第一次教高考后的学生零基础编程,到后来2020年初开始与各种IT培训机构合作, 包含了各种形式的编程讲课教学,至今六七年的时间。在这几年的编程教学辅导过程中, 积累了很多经验, 在辅导的过程中,让大量初学者明白如何提升自我编程素养,如何掌握正确且自主的学习方法。

好了,看到这里,如果你有兴趣,请看一下我的 基础编程学习组 了解详情

阅读完毕,很棒哦!

文章评论

站点信息

  • 网站地址:www.xiaodahan.com
  • 我的QQ: 3306916637