"叔叔建议我远离 Python,从汇编语言学起......"
整理 | 郑丽媛出品 | 程序人生(ID:coder_life)
作为一门面向机器的程序设计语言,汇编语言固然十分精细,但对于程序员而言却不太友好——不好记忆,里面也没有指针的概念,所有的变量、函数都由栈或堆上的偏移地址所代替。与高级编程语言相比,汇编在可读性、开发效率和可移植性上显然存在不足。
所以,我们自然觉得:都 2022 年了,在众多高级编程语言的包围下,还会有人将汇编作为程序员入门的第一个编程语言吗?
有的,前阵子一位 Reddit 用户(以下用“小 R”代称)就发帖称:“我的叔叔,一位前程序员,建议我从汇编语言学起……”
建议原因:应该先敲下最难的“钉子”
小 R 表示,TA 最近对学习编程有点兴趣,因此找了之前做程序员的叔叔,想问问有啥入门建议,结果 TA 叔叔开口就是:“一定要远离那些简单的高级编程语言,如 Python 或 Ruby。”
叔叔对小 R 解释道,当年他第一次学习基础代码时,一度认为自己是个天才,因为他几天内就很好地掌握了新技能。直到后来他又接触到了 C 语言,才完全颠覆了他的自我认知——他被“狠狠”难住了一段时间,而且之前掌握的那些基础技能在学习 C 语言上完全没用。
“简单的编程语言显然不会教你任何关于编程和计算机究竟是如何工作的知识。你现在还年轻,有一个能吸收很多知识的‘海绵大脑’,还有许多互联网指南可参考,你应该先敲下最难的‘钉子’,把汇编或者 C 作为第一门语言,以便之后对任何事情都可以轻松学习。”
(图片下载自视觉中国)
不必对高级编程语言避之不及
显然,小 R 叔叔的这番言论跟现实中大多程序员的选择相悖,小 R 也因此茫然地将问题抛给了广大网友:“你们对此的看法是什么?”
部分网友认为,能说出这种观点的“叔叔”肯定是大龄程序员:
“他告诉你要以一种他自己都没尝试过的方式去做,而这个观点仿佛来自 30-40 年前。”
“你叔叔太老派了。如果他是在 1980 年之前毕业的,那可以理解,毕竟汇编在当时很常见。但到 1990 年以后,已经逐渐有更多的选择了。”
有网友调侃道,这种学习方法太过于“追本溯源”了:
“这感觉就像是说,在你开车之前,你首先要知道它的每一个部分是如何工作的。”
“既然这样,那就先学半导体物理,然后学晶体管,然后是 CMOS 逻辑,然后是逻辑门,然后是数字电路,然后是计算机构成,这样更能彰显你叔叔的‘厉害’。”
话虽如此,但每一门编程语言能流传至今,必定有其的意义,汇编也是如此,现在操作系统中依旧还有汇编的身影。被许多程序员厌恶的汇编语言,更适用于底层硬件,如单片机、工业控制、实时控制等,它更为精简,运行效率也更高。
两年前,曾有一位学过汇编的程序员分享道:
”我也学过汇编,做一个程序要写好多条命令,而且思路要清晰,对程序员智商要求非常高。我以前单位有几个八十年代大学毕业的程序员,智商真的是非常高。现在的编程真的很傻瓜化,从没学过编程的短期内也能很快自学编程。“
平心而论,学好汇编确实能深入理解计算机底层原理,但这并不意味着就一定要对高级编程语言避之不及——如今,高级编程语言的开发效率、适用范围都远超过汇编,更符合现在企业所追求的高效。
最后引用一位网友的建议:“如果你想成为编译器开发者或硬件工程师这类人,你可以好好学汇编;但如果你只是从事软件开发,最多根据自身能力适当了解一下汇编即可。”
那么,作为程序员的你,接触并学习的第一门编程语言是什么呢?
参考链接:https://www.reddit.com/r/learnprogramming/comments/wedgo2/my_uncle_a_former_programmer_has_recommended_that/
END
官方站点:www.linuxprobe.com
Linux命令大全:www.linuxcool.com
刘遄老师QQ:5604241
Linux技术交流群:3762708
(新群,火热加群中……)
想要学习Linux系统的读者可以点击"阅读原文"按钮来了解书籍《Linux就该这么学》,同时也非常适合专业的运维人员阅读,成为辅助您工作的高价值工具书!
微信扫码关注该文公众号作者