我应该学习汇编语言还是C,以了解“真实编程”的工作原理?

问题描述 投票:2回答:11

我是一位主要使用Ruby和C#进行工作的Web开发人员。

我想学习一种低级语言,所以我看起来不像我(计算机科学专家)老板的蠢蠢蛋。

我已经听到很多纯粹的嗡嗡声,关于汇编语言是学习计算机实际工作方式的唯一方法,但是另一方面,C可能作为一种语言有用,而不仅仅是理论上。

所以我的问题是..

学习C会教给我足够的计算机科学理论/低级编程,以使其看起来不像是普通的花花公子(完整的工具吗?]

谢谢!

丹尼尔


谢谢你们!

一些非常好的答案,

我认为我将学习C只是为了掌握内存管理,但是我认为您的权利,而且我会更好地学习更多我使用的语言!

我是一个主要使用Ruby和C#进行工作的Web开发人员。我想学习一种低级语言,所以我看起来不像我(计算机科学专家)老板的蠢蠢欲动。我听过很多关于...

c assembly computer-science theory low-level
11个回答
11
投票

首先学习实际的理论。如果您无法对C进行有意义的学习,那么学习C的语法就没有任何意义。在对算法和数据结构的工作方式有了扎实的了解之后,这些知识将适用于您可能会使用的大多数语言。

如果您打算使用C#和Ruby进行工作,那么仅出于此目的,我认为学习汇编程序并不重要。


0
投票
嗯,“ Real Programming”不是指特定的语言或低级语言。在我看来,“真正的编程”是分析任务,确定解决方案的最佳方法,然后将该方法放入一组简单的步骤中,然后根据需要进行修改和编辑,直至实现目标的过程。因此,语言并不重要,这全都在思考过程中。此外,高级语言没有任何问题,我一直都在使用python并喜欢它。但是,学习低级语言实际上可以真正帮助您开发理解程序和计算机。会建议使用c,因为它是c#和c ++的来源,并为理解这两种语言提供了基础。

0
投票
我想学习一种低级语言,所以我看起来不像我(计算机科学专家)老板的蠢蠢蛋。

3
投票

学习C是否能教给我足够的知识计算机科学理论/低级编程看起来不常见dandy(完整工具)?


2
投票

学习C语言将为您获取所需的所有信息,并能够在合理的时间内完成任务。

[我建议您用C做一些有意义的项目,然后用一个汇编方言来做一两个,也许是为了一个微控制器或专门研究SSE / MMX。


2
投票

最后,所有内容都归结为操作码,寄存器和寻址模式,而C绝对不会教您什么。但是,汇编器与平台紧密耦合。当您在Sparc或PA-RISC机器上工作时,学习如何在x86上编写汇编程序不会有太大帮助。

C真的不会教您太多其他语言从理论上讲的东西。关于C的事情是,除了裸露的指针和字节流之外,它没有提供许多工具或抽象。您必须滚动所有自己的容器(列表,堆栈,队列等),如果希望它们是通用的,则必须弄清楚如何将需要类型识别的代码(赋值和比较)与通用算法。您必须管理自己的内存。文本处理非常麻烦(C甚至不提供专用的字符串类型)。


1
投票
我认为不具备Assembler的知识可以使您成为更好的Ruby / C#程序员。

您可以像使用磁化针向磁盘写入一样低的级别,但是如果您的程序不起作用或不安全,那么您将无法获得任何收益。

学习“新”语言的语法不会帮助您获得更多有关编程深度的知识。


1
投票
实际编程与特定的低级编程语言无关。要了解计算机的工作原理,知道一些CPU指令以及硬件如何处理它们也很不错。

要成为一名优秀的程序员,除了要编程硬件外,绝对没有必要知道硬件的工作原理。


1
投票
如果这是老板不当傻子的标准,我不会担心在那个老板面前看起来像个傻子。

如果您想学习计算机科学,C和Assembler不是最好的语言。如您所知Ruby和C#,我想您知道一些面向对象的知识。


1
投票
“真正的编程”在每种语言中的工作原理都相同,这就是您应该真正担心的。话虽这么说,用C编写东西是非常有用的练习/

学习C不一定会教给您太多有关计算机如何工作的知识,但是考虑到它仍然是系统编程的首选语言,因此它是一扇通向科学的好门。

当然,学习ASM也很有用,但是如果您想将其应用到工作中,可能就不需要它了。但是,它可能会教给您一些有用的概念,或者至少可以帮助您更好地了解CLR的工作原理(或通常来说,字节码编译和字节码编译的代码是如何工作的)。也许您可以尝试为较旧/较简单的平台学习ASM;仍然有沉重的Atari 2600场景,并且由于平台的固有局限性,他们为挤压游戏中的某些额外功能所做的一些黑客工作相当出色。现代的x86_64架构非常复杂,有些毛茸茸,尽管这更多是个人观点,而不是实际事实。学习使用微控制器也可能会完成工作,但要警告许多(大多数?)使用的是哈佛架构(即独立的程序和数据存储器),该架构不同于典型的通用CPU。


1
投票
首先问你的老板,而不是完全按照他告诉你的话,最后再问一遍,以获取反馈并复习你将要做的练习。按指示行动。重复直到他说“你现在比我更了解”。这是利用您真正有运气的真正专家的专业技能的更有效方法,并将永远留下极其积极的印象。与您在业余时间独自学习C或汇编程序一样困难。
© www.soinside.com 2019 - 2024. All rights reserved.