学习计算机和计算机编程如何工作的好方法是什么?
例如,您是否建议学习电路如何工作,然后学习汇编语言,然后学习更高级别的语言?
建立一个.改进它.用它.编程吧.安装不同的操作系统.读那些大肥书.问很多问题.去获得CS学位.不要停止学习.
我建议计算机工程学士学位.
当我15岁的时候,我决定做到这一点,并且只是为了 - 嗯,永远.
我已经学会了计算机附带的书籍的基础(第一部 - 80年代出版了一本几乎适用于任何年龄的好书,不知道我从那时起就认为它是一本优秀的初学者书).
通过手工编写来自z-80 CPU数据手册的CPU指令学习汇编和二进制.了解寄存器以及CPU如何操作.在学校的DEC PDP-11上也装配了组装(由于字大小的不同,我很喜欢使用Base 8而不是Hex的事实)
知道汇编对我在C的第一份工作有很大帮助.我当时并不知道C,但是在从汇编中访问基本变量时已经掌握了指针的概念,所以真的没有太多意外.习惯于语法异常是唯一困难的部分(例如,for循环与其他任何东西都不同,并且最初让我很烦)
参加了一些电子课程并特别关注门和人字拖.仍然无法弄清楚如何从一堆门和触发器到达CPU,这需要了解时间.
了解海军的时间信号(将它们组合在一起的一个关键部分) - 他们的一个类别涉及对基本上是爆炸CPU的盒子进行故障排除.您可以对任何晶体管进行操作,并一直向上插入CPU指令,通过切换开关并让CPU执行它们(100字节存储器).他们可以打破任何晶体管,你必须能够找到它.(在你遇到麻烦的时候进行外部训练,你只需交换牌直到它起作用).
编辑:顺便说一句,本课程的最佳部分是50页的原理图书,大约是书桌大小的2/3,其中每个部分都有图表.研究了每一寸,直到我"得到"每根电线做了什么(至少在逻辑电平上 - 忘记电源的东西)..
找到一份组装电脑的工作(因为在那之前我不太舒服地插入内存,更换卡和硬盘,交换电源......)
在金融,数据库以及我能找到的任何领域找到工作.每当我找到一份工作时,一个重要的考虑因素是我从中学到了多少.试图专注于学习商业实践和工具.我花了很多时间在客户网站上找工作.
那是我职业生涯的前15年,最后10年是理解更高层次设计(专注于OOD)可能更困难的任务,学习思考谁在阅读或使用你的代码(而不仅仅是让你的代码解决问题)并通过如何与他们互动来提高其他人的工作效率.
我想很大一部分就是从不害怕跳进来.我从来没有看过电脑做某事并且说"男孩,我永远无法做到这一点".如果有人需要什么,我就是这么做的.
了解所有这些事情(学校版本以及为谁发明了什么)的历史对我来说是完全无关紧要的.我在这里和那里捡点零碎,但在大多数情况下我只关心它是如何工作的.我专注于适用于我的工作的设计模式和书籍,我不能应用但我试图理解,所以我知道什么时候应该应用它们等等.
该死的,这开始听起来像一些计算机精神病患者的简历.抱歉.
我会说,从编程开始,然后去模拟器,然后是架构.是的,与历史相反.
一门好的语言会教你如何与电脑互动.构建自己的模拟器将教你如何从软件方面工作硬件.构建计算机完成方程式.
如果你从硬件开始,它编程无助于编程可以帮助你学习硬件.
好吧,首先我认为你没有足够的时间学习一切......
首先,你需要学习很多数学,包括数论和逻辑.
然后你需要学习计算理论,并阅读哥德尔,冯诺依曼和图灵的作品.
了解Herman Hollerith和IBM以及Jacquard-loom技术在数字计算中的应用.
然后,您需要学习电学,了解三极管/晶体管的工作原理.这将使您了解计算机处理器的工作原理.
您还应该阅读Colossus,这是在第二次世界大战期间用来破解德国代码的机电计算机
然后,您需要选择一个硬件架构.如果您真的想了解,请找一个带有简单指令集的旧集成电路.或者从现代芯片开始学习装配.
了解程序集如何写入机器代码.
为更高级别的语言构建编译器.我会推荐像LISP这样简单的东西,因为你不必担心复杂的解析.
学习FORTRAN.而不是现代的一个.四会很好.获得一个真正体验历史的穿孔读卡器.
学习Smalltalk以了解面向对象的编程
将CLOS添加到LISP编译器.
实现自己的操作系统
实现自己的文件系统
如果你真的想了解现代硬盘和内存芯片是如何工作的话,那就获得量子物理学位(即自旋电子学,微量处理器的量子限制)
这应该会让你在学习一切方面有一个良好的开端.
从0开始.
掌握了之后,继续前进到1.