programming-languages - 学习计算机和编程

标签 programming-languages hardware history

关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。












想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




什么是学习计算机和计算机编程工作原理的好方法?

例如,您是否建议先学习电路的工作原理,然后是汇编语言,然后是高级语言?

最佳答案

我决定在 15 岁时就这样做,并且一直坚持下去——嗯,永远。

在我的电脑附带的书上学习了基本编程(第一本 trs-80 附带了一本几乎适合任何年龄段的好书,不确定从那以后我是否认为这是一本很好的初学者书)。

通过从 z-80 CPU 数据手册手动编码 CPU 指令来学习汇编和二进制。从中了解了有关寄存器以及 CPU 如何运行的所有信息。在学校我们的 DEC PDP-11 上也弄乱了组装(只是喜欢它使用 Base 8 而不是 Hex 的事实,因为字大小不同)

了解汇编对我在 C 方面的第一份工作有很大帮助。我当时不了解 C,但是在从汇编访问基本变量时学到了指针的概念,所以真的没有太多惊喜。习惯语法异常是唯一困难的部分(例如,for 循环不同于其他任何东西,一开始让我很恼火)

参加了一些电子类(class),并特别关注门和触发器。仍然无法弄清楚如何从一堆门和触发器到 CPU,这需要学习时序。

了解了海军中的计时信号(将它们整合在一起的关键部分)——他们的类(class)之一涉及对基本上是爆炸 CPU 的盒子进行故障排除。您可以对任何晶体管进行操作,一直到通过拨动开关插入 CPU 指令并让 CPU 执行它们(100 字节内存)。他们可以破坏任何晶体管,而您必须能够找到它。 (在训练之外,每当您遇到任何问题时,您只需交换卡片,直到它起作用为止)。

编辑:顺便说一下,这门课最好的部分是一本 50 页的原理图书,大约有一张 table 的 2/3 大小,里面有那个东西的每个部分都被绘制出来。研究了每一寸,直到我“明白”了每一根线的作用(至少在逻辑层面上——忘记电源的东西)。

找了一份组装 PC 的工作(因为在那之前我不太习惯插入内存、更换卡和硬盘驱动器、交换电源,......)

在金融、数据库和我能找到的任何领域工作。每当我接受一份工作时,一个重要的考虑因素是我能从中学到多少。试图专注于学习商业实践和工具。在我花了很多时间在客户网站上的工作。

那是我职业生涯的前 15 年,最后 10 年可能是理解更高层次设计(专注于 OOD)、学习从谁在阅读或使用你的代码(而不是仅仅让你的代码)的角度思考的更困难的任务。代码解决问题),并更多地思考如何通过与他人的互动来提高他人的工作效率。

我想很大一部分只是从不害怕跳进去。我从来没有看着电脑做某事并说“男孩,我永远不能让它这样做”。如果有人需要什么,我就去做。

了解所有这些事情是如何产生的历史(学校版本和谁发明了什么)对我来说完全无关紧要。我在这里和那里收集点点滴滴,但在大多数情况下,我只关心它是如何工作的。我专注于适用于我工作的设计模式和书籍,那些我还不能应用的我试图理解,所以我知道什么时候应该应用它们,等等。

该死,这听起来太像一些计算机精神病患者的简历了。对不起。

关于programming-languages - 学习计算机和编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/486165/

相关文章:

language-agnostic - 关闭值与上下文

caching - 脏缓存行和页面驱逐

windows - WMI 处理器类型

javascript - React Redux 历史错误 - TypeError : (0 , _history2.default) is not a function

c - 如何在各种编码中统一检测整数的符号位(1's complement, 2' 的补码,符号大小)?

api - 可以使用哪些编程语言在黑莓中进行开发?

C编程问题无关变量在使用STRCPY后被覆盖

compiler-construction - 有没有办法创建在硬件中实现的高级语言解释器?

java - 支持 150MB/秒恒速文件写入的硬件解决方案?

linux - 命令历史和多个终端的使用