百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

计算机编程入门先学什么最好?_计算机编程入门应该先学什么

yund56 2025-02-25 01:00 19 浏览

看完其他知友的回答,我认为他们的观点过于局限,并没有真正切中问题的要害。

我们不妨换个角度,站在更高一层来看这个问题「计算机编程入门先学什么最好?

计算机入门最应该学的是 Linux,而非任何的编程语言。

这篇文章4600字,有点长,如果你能耐心看完,或许会给你带来更多的思考。

1. 为什么?

任何编程语言都只是一门工具,一门让人能够与计算机“交流”的工具。人学习编程最重要的是要学习解决问题的思想、方法,其次才是使用编程语言解决生活中的问题。

「计算机为什么会诞生?编程语言为什么会诞生?」,归根结底,这些事物的出现只不过是帮助人们更好地解决生活中的问题。你知道世界第一台(电子)计算机发明的原因是什么吗?第一台计算机的诞生是因为「战争」,1943年,二战后期,M 国人在研制武器过程中迫切想要解决「快速得出新武器的射程和检测模拟运算表」这个难题,随后投入建造了第一台电子计算机 ENIAC(埃尼阿克)。

三年后(1946年),ENIAC 建成并投入使用,人们在“计算”领域得到新的突破,这标志着人类文明进程进入了新的阶段,ENIAC 也是人类在电子计算上的首个里程碑,人类就此进入计算机时代。

随着计算机发展,人类对计算机的应用不满足于只将其单纯地用于计算。随着键盘、鼠标、显示屏、操作系统、计算机网络……这些东西的出现与发展,计算机也从「专用」逐渐演进到「通用」,计算机慢慢进入人们的生活。

2. 编程语言的出现

要让计算机为人类工作,必须要将人类的意图告诉计算机,我们不可能直接使用英语、汉语这些自然语言与机器沟通。人们跟 ENIAC “沟通”的方式是人们手工搬动开关和插、拔电缆。虽然计算一个运算表仍旧很费力,但是这远比之前的器械式计算机快了非常多。

人们发现计算机开关的插拔可以抽象成二进制中的“0和1”,随后人们将德国数学家莱布尼兹提出的「二进制计数法」(二进制最早起源可以追溯到中国的《易经》,感兴趣的可以去了解。)引入到计算机当中。计算机拥有了真正意义上的语言——机器语言,也可称二进制语言。

当时的工程师跟计算机交流使用的是一串串「0和1」组成的数,复杂而难学,记忆和排查问题都异常困难。随后出现了相比机器语言更抽象的汇编语言(助记符语言),有了助记符,人类能够更好地记忆与计算机交互的「指令」,汇编语言的出现进一步简化了编程过程,降低了编程难度,此时人们可以更高效地计算机打交道了。

但是,随着计算机架构的不同,使用的汇编指令就会有差异,人们想着能否发明一门「通用的编程语言」呢?随后,高级语言诞生了,高级语言是对汇编语言的再一次抽象,高级语言更方便人们使用,更易于记忆,更通用,人们跟计算机的“沟通”也变得更高效了。

自高级编程语言出现后,这半个多世纪里,世界上的高级编程语言已经有了上百乃至几百种。无论是什么样的高级编程语言,最终都会被编译成机器语言,以此实现人与机器的交互。

由此可见,学习编程语言只不过是让我们更好、更容易地与计算机交流,让计算机帮助我们解决现实中遇到的问题。编程语言只是一门我们与计算机沟通的语言,如同我们跟 M 国人交流,我们需要学习一门共通的语言,可以是中国人学习英语,也可以是 M 国人学习汉语。所以,我们不应该局限于学习什么样的编程语言,如果没有从根本上解决问题,那么问题永远无法被解决。

如果要学习计算机编程入门,最应该学习如何使用计算机的命令。如同图形化编程,将一个个代码块、功能模块拼接起来后可以解决某个问题、闯过某个关卡。同样我们可以使用计算机命令来控制计算机帮助我们完成某些事情,解决某个问题,计算机命令也像编程语言的发展一样,是不断对底层封装、抽象得来的,也是我们与计算机“沟通”的一种方式。

为什么应该学习 Linux 而不是学习 Dos 命令呢?这个是我从通用性和易用性出发,如果感兴趣你也可以去了解 Dos 的命令,Dos 是 Windows 电脑的通用命令。如果你不知道什么是 Linux,那么可以简单跟你科普一下,Linux 几乎构筑了当今整个互联网世界,常见的路由器、智能电器、安卓手机、自动驾驶汽车、通讯系统、操作系统、网站、各种程序应用……无一例外地、或多或少地都使用了 Linux 内核或其衍生的系统。

Linux 命令行是我们与计算机或者说操作系统沟通的一个外壳(Shell),我们将简单易懂的命令输入到 Shell,Shell 会将我们的命令传给操作系统,操作系统与计算机交互后,又会将结果返回到命令行中。Shell 在某种程度上可以看作一个翻译家,帮助我们更好地去使用计算机。使用 Linux 后,你或许会体会到:图形界面能做的,命令行也能做;命令行能做的,图形界面却无能为力。这句话虽不是绝对的正确,但却反映了命令行的精髓和巧妙之处。之前我写过一篇文章谈 GUI 和 CLI, 感兴趣可以读一读:为什么有人坚信人类不可能基于 GUI 的操作方式,发明出比「命令式编辑器」效率更高的开发环境? - 知乎

3. ShellScript 编程语言

当你学习完 Linux 命令,你会接触 Shell 编程,你会想将这些简单而又经常重复使用的命令写到一个文件里,方便下一次使用。ShellScript 脚本编程语言就是由此而来,不知不觉你已经学习了一门编程语言。ShellScript 灵活而简单,只要拥有使用命令行的基础,学习 ShellScript 就是非常简单了。

4. VimScript 编程语言

在学习写 Shell 脚本的过程中,必不可少的工具就是编辑器,通过编辑器编写代码,然后保存成文件。Linux 中可用的命令行编辑器也不少,比如 Vi、Nano、Vim、Emacs、Neovim……

我相信使用 Linux 必定会接触 Vi 编辑器,然后是 Vim 编辑器,再深一点会接触 Neovim。当你认识到 Vim 是「编辑器之神」后,你的编程观念会更近一步。你会发现,编辑器原来也拥有「属于自己的编程语言」。当你想优化 Vim 编辑器的工作流时,你会除了可以使用内置选项、别人编写好的插件外,你还可以使用 VimScript 这个专属于 Vim 编辑器的编程语言,来实现一些自定义功能、逻辑以此来实现一个更加顺手的代码编辑器。

5. Lisp 与 Elisp 编程语言

如果你接触了 Emacs 这个被程序员为「神的编辑器」的强大编辑器,那么你一定会使用 Elisp 这门语言。因为 Elisp 是专属于 Emacs 的编程语言,相信每个入坑 Emacs 的程序员,或多或少就是想品味这个「古老的编程语言」,享受函数式编程的快感,想要使用 Org 这个强大的 Emacs 组件,我当初也是因为这些原因入坑 Emacs。Emacs 强大到无所不能,比如煮咖啡、当作视频播放器、音乐播放器、浏览器、玩游戏……Emacs 与操作系统只是一核之差。因此,许多程序员将 Emacs 戏称为「隐藏在编辑器之中的操作系统」。

Lisp 作为世界上第二古老的高级编程语言,诞生于1958年,世界第一老的高级编程语言 Fortran 只比它老一年而已。这个编程语言如同魔法一般,神奇而强大,在而后的半个多世纪里衍生出了十几种「方言」。

现在看来 Lisp 更像是一个编程语言家族,不断演进而且繁荣。Lisp 这门编程语言与人工智能(Ai)相伴相生,在上世纪60年代起,Lisp 语言就被用于人工智能编程,随后衍生出的多种方言也在某个领域深耕,比如 Emacs Lisp 就是为 Emacs 而生的 Lisp 方言。虽然现在人工智能的主力编程语言是 Python,但是丝毫不影响 Lisp 的历史地位,即便在某些领域默默退出历史舞台,但在另一些领域又再一次熠熠生辉。如果说要评选编程语言中的经典,那么 Lisp 必占一席。

所以,如果想品味 Lisp 这门具有一定魔法色彩、古老而繁荣的高级编程语言,推荐你从 Elisp 学起,从使用 Emacs 编辑器开始。当使用了一段时间后你就会慢慢喜欢上 Elisp 这门有趣的编程语言、感受一下跟现代高级编程语言有所区别或者没有的「逆波兰表达式」。

6. Lua 编程语言

如果你更喜欢「现代一点的 Vim」,那么 Neovim 一定不要错过。Neovim 从0.5版本起,官方将 Lua 这门编程语言作为 Neovim 的一等语言,提供丰富的 API 接口。虽然 Neovim 是 Vim 的一个分支,但随着 Neovim 社区不断壮大,Neovim 开始追寻更广阔的天空,既继承了 Vi 和 Vim 优秀的基因,也向着强大、易用、现代化发展。

如果做游戏开发的程序员,一定对 Lua 不陌生,这是一门简单易学、小巧灵活、易扩展的脚本语言。如果想为 Neovim 开发插件,如果想写游戏逻辑,那么你一定会接触和使用 Lua 这门编程语言的。

7. C 编程语言

当然,如果想要深入理解计算机,那么 C 语言是必学的,这是通往计算机世界的必经之路。因为目前市面上绝大多数计算机教材、经典书籍都使用 C/C++ 语言来描述,Linux 内核也是用 C 语言来写的,当你真正想去了解操作系统,了解 Linux 的编程哲学、设计哲学,那么此时就需要一定的 C 语言基础了。当然这一步,一定要放在拥有 Linux 使用经验后,否则你会学得异常吃力。

当你学成了 C 语言后,你会对许多高级编程语言的设计、原理有更深的理解,C 语言当之无愧是你打开编程世界大门的第二把钥匙。有一句话是这样讲的:一生二,二生C,C生万物。万物源于 C,对这样评价,C 语言确实是实至名归。

8. Go 编程语言

有许多编程语言一开始都是由 C 语言写出来的,随后才实现自举,不再依赖于 C 语言,比如我最喜欢的编程语言——Go。如果感兴趣也可以了解一下这门被称为“21世纪的C”的编程语言,我写有一篇文章介绍过,感兴趣可以读一读:同样是巨头的语言,为什么中国是 Go 最热的国家,而 C# 越来越少? - 知乎

9. Rust 编程语言

这是一门跟 C/C++ 比肩的现代的系统级编程语言,这一门语言几乎与 Go 在同一时期诞生。都是新时代的编程语言,它跟 Go 的定位还是不一样的。感兴趣的朋友也可以去了解一下这门语言,这门语言有可能在将来取代 C++ 这门,或许在不久地将来这门语言也会像 C++、Java 一样火气来的,只是时间的问题罢了。如果想学一门比较新的语言,Rust 兴许值得你去投资,它代表了未来的无限可能。

10. 总结

经过我这一番举例说明,你应该明白我为什么推荐你编程入门先学 Linux 了吧。编程语言迟早都会接触,基础的东西才是恒古不变的,如同九层之台起于垒土,掌握了 Linux 命令的使用,学习 ShellScript、C/C++、Java、Python、Go、Lua……众多编程语言都只是水到渠成的事情。当你使用一个 Linux 命令久了,你会思考如果使用其他编程语言要怎么实现这个功能,有了一个靶子,学习编程语言才会有的放矢。

希望这篇我写了半天的文章能给你一些启发,学习编程语言很容易,学习编程的思想才是一直探索的星辰大海。

转载规则:在转载文章上方标注原文链接、原作者,大家可以自由转载。也希望我写了半天的科普内容能被更多人看见。感谢能读到这里的读者,希望我的文章能给你一些启发。


》》》往期回顾:

哪种编程语言学习难度最低? - 知乎

英语不好,想要学习编程,只背编程用到的几个单词可以吗? - 知乎

Go语言如何入门,求入门书籍推荐? - 知乎

编程能够带来食物和水吗? - 知乎

相关推荐

没有获得Windows 10 20H2升级通知,怎样直接升级

微软公司已经正式发布Windows1020H2操作系统,在正常情况下,微软只会首先推送到少量电脑,然后一边推送一边采集遥测数据。收集遥测数据可以确定哪些电脑可以更新,哪些电脑在更新后可能会失败,微...

不想让人随便卸载你安装的程序,用这四招,他将无计可施

Windows10不提供设置删除应用程序限制的功能,有几种间接方法可以防止用户删除操作系统中的程序和游戏。一、WindowsInstaller服务使用Windows工具,可以部分限制用户的权限。如...

一文看懂苹果全球开发者大会 五大系统全面升级

来源:环球网【环球网智能报道记者张阳】北京时间6月23日凌晨1点,苹果全球开发者大会(WWDC2020)如期举行,还是那个熟悉的乔布斯剧院,依旧是高水准的视频展示,但是这届WWDC,却是苹果历史...

无需等待微软分批推送,23H2可借助注册表快速获取Win11 24H2更新

IT之家10月15日消息,Windows1124H2正在分批推送,但由于存在多种Bug,微软已经开始放缓其推送节奏。WindowsLatest发现,Windows1123H2...

办公小技巧:剑走偏锋 PPT中打造动态图表

年底到了少不了又要制作各种总结报表,为了让自己的报表与众不同,我们可以借助PowerPoint动画组件+报表的方式,打造出更为出彩的动态图表。下面以PowerPoint2016为例,介绍如何使用三维...

文档表格 版本差异何在

在办公过程中,对文档或表格的修改是司空见惯的事。那么,一份文档做了内容改动,如何知道差异在哪里?一份表格改动部分数据,如何知道哪些有所变动?不要说审阅和修订功能,因为不是所有人都会用这些功能来标注的,...

Excel VBA自制日历组件16色可选 完美替代VBA日期控件

本日期组件可跟随单元格跟随窗体中ActiveX文本框组合框控件16种配色可选私信回复880日历可体验效果使用说明1打开自己需要应用日历面板的Excel表,注意必须是启用VBA的格式2在...

如何从交互角度读懂产品需求文档

作为设计师,理解产品经理提供的需求文档是交互设计工作的重要前提与起点,然而对于很多设计师来说,需求文档内容通常非常复杂,设计师们需要花费大量时间去消化、理解和归纳。本文作者结合公司示例,分析设计师如何...

植入让文档变得更强大

有效地利用文档置入技术,会让我们的常用文档功能变得更加强大,实现更加高效或有趣的应用。1.写字板文档嵌入其他文档有时,我们要组织一个大型的文档,但是这些文档的内容可能来自于不同种类的文档编辑器,比如...

Office 2016滚动文本框 顺手就来

【电脑报在线】如果一页PPT内容较多无法在完全显示,就需要用到滚动文本框,在PPT2016中借助控件即可快速制作滚动文本框。在“告诉我你想要做什么”输入“文本框控件”,在搜索结果点击“文本框(Acti...

Axure的多状态复选树

本文将详细介绍如何在Axure中实现一种增强型的多状态复选树组件,它不仅支持全选、半选和未选等状态,还具备动态加载、关键字筛选等高级功能。多状态复选树(Multi-StateCheckboxTre...

办公小技巧:PPT中控件图表巧联动

在利用PPT进行图表演示时,操作者有可能要与图表进行交互联动,比如通过输入数据来预测产品的生产情况等,这时就需要用到“开发工具”中的控件了。几个控件配合几句VBA代码,就可以轻松实现上述交互联动效果(...

用好插件——找回火狐的旧功能

现在的软件,特别是浏览器类软件,更新换代速度都很快,而且无论是外观界面还是系统组件都会有较大的变化,这样会让很多朋友无所适从。以大家常用的火狐浏览器为例,它就已经升级到了最新的35版,而且在新版中对很...

重新认识控件(二)

图片和文字,都是一种数据形式。我平时对文本框的录入,报错和提交的设计比较多。最近涉及到图片控件的设计,细细琢磨一下,这玩意还有一些平时没太注意的细节点,感觉对于其他控件的设计有指导意义,特此总结一下传...

JSA宏教程——在文档中添加复合框控件

上一期,我们初步认识了控件Control,本节我们将继续控件的相关内容。这几期我们将逐一介绍相关控制。本节先介绍复合框(也叫组合框)Combobox。复合框的作用复合框就是一个下拉选项框,一次显示一个...