计算机编程入门先学什么最好(如何学习电脑编程入门)
看完其他知友的回答,我认为他们的观点过于局限,并没有真正切中问题的要害。
我们不妨换个角度,站在更高一层来看这个问题「计算机编程入门先学什么最好?」
计算机入门最应该学的是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,感兴趣可以读一读:
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戏称为「隐藏在编辑器之中的操作系统」。
Spacemacs
Lisp作为世界上第二古老的高级编程语言,诞生于1958年,世界第一老的高级编程语言Fortran只比它老一年而已。这个编程语言如同魔法一般,神奇而强大,在而后的半个多世纪里衍生出了十几种「方言」。
现在看来Lisp更像是一个编程语言家族,不断演进而且繁荣。Lisp这门编程语言与人工智能(Ai)相伴相生,在上世纪60年代起,Lisp语言就被用于人工智能编程,随后衍生出的多种方言也在某个领域深耕,比如EmacsLisp就是为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语言如何入门,求入门书籍推荐?-知乎
编程能够带来食物和水吗?-知乎
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。