---------副标题 <依据基本原理构建现代计算机:从与非门到俄罗斯方块>
自认为文采不好,本不想写什么。工作这几年,已经发现,编程其实还是需要天赋的吧。我依旧很菜。先说我写本文的目的,后面再啰嗦废话,以便您决定想不想接着阅读。
本文内容一:
我英语很菜,但很多技术确实国外的比较先进。我有个建议,我们是否可以在这里进行一些国外网站学习的技术交流。由先学习的人,带动后学的人,少走一些坑,加快学习进度,尽快的解答学习疑问。
本文内容二:
啰嗦上班这些年的小领悟。
开始内容一:
我是电子通信专业,误打误撞的当了程序员。仅仅是简单的学过C语言而已,微机原理还是选修课,基本不知道程序的运行原理,就开始写代码了。现在想回头系统学学,发现https://www.coursera.org/网站的课程有一门《Nand To Tetris》特别好,是国外大学的两个教授讲解的,针对计算机0基础的人开设的,你学习这门课程,可以啥也不会,只是会简单操作计算机即可。
该课程分上下期两期,上期(Part1)讲解了从与非门到汇编语言的过程,一共是六周,大概每周需要花费5--10小时学习,下期(Part2)部分是从汇编语言讲解到你编写出来一个俄罗斯方块程序。都是免费的课程,并且这个课程目前已经被好多国外大学当成学校课程了。
如果你想要学习证书(可以关联领英,找工作使用)就需要交199人民币或者49美元,购买课程。(但好像网站又不支持中国付款方式,好尴尬,我目前年龄已大,不需要这个证书了,我就没交钱,只是学习)(交钱和不交钱的差别,就是交钱的可以提交作业,然后被打分,获取证书,作业有时是同学之间互相批改,可以学习借鉴。不交钱就是作业自己检查,自己确认正确与否。)
我只是在学习这个课程,所以给你推荐这个课程,当然你也可以看看这个网址的其他课程,感觉都不错吧。
废话先这么多,我想说的是课程特别好,但难点是:
一、有时需要翻墙,网络不稳定,我用电信网可以播放,移动(移动,电信,联动的移动)网稍稍差一些,有时需要翻墙才能看。
二、视频是英语的,有些有中文字幕,有些没有,但英文字幕目前是都有的,并且有字幕的文本文件,都是同步的,看不懂的话,可以先翻译一遍字幕文本,然后再去看视频,我之前是这么干的,但目前发现我可以直接看视频跟下来了。可以不用事先翻译字幕,再看视频了。
三、目前不支持支付宝微信等方式,我是没付款的,可以看所有课程,可以做作业,唯一不能就是,作业没人给打分。
四、学习过程中有一些问题,在论坛提问都是英语,搜索,解答都比较费劲。
但我想说的是国外的课程有些确实写的很体系,很好,可能学一门,能解决之前很久的困惑。我们在学习国外课程中,很多坑可能都是自己一步一步踩出来的。我想在最代码实现一个国内论坛功能。来解答这种课程学习过程中的疑问。我这篇博客,就想当成《Nand To Tetris》这么课程的学习交流,我已经学习完第一周课程,正在向后推进,如果你也感兴趣,想学习的话,可以和我交流,我们共同努力。可以将学习中遇到的问题,评论此博客下,积少成多。可能我们就慢慢的将学习中的困难都标记出来的。这样别的同学再学习时候就会省不少事。再次强调,个人认为,这个课程《Nand To Tetris》是真的好。关键是免费。免费。免费。
下面是我简单粘贴的该课程网站,粘贴过来的介绍,我感觉特别适合想了解计算机原理的人,想学习系统内核的人。当成一个入门的课程。从网址拷贝的课程信息如下
课程信息
你将完成的是:
在本课程中, 你将从最底层开始, 构建一个现代计算机系统。 我们将这段激动人心的路程划分成六个需要上交的项目作业, 从构造基本的逻辑门到完成一个功能完全的通用目的计算机。 你将通过一种直接而有效的方式来完成学习,即了解计算机是如何工作的以及他们是如何被设计出来的。
你需要准备的是:
这是一门自包含的课程:所有需要用来完成课程以及构建一台计算机的知识都会包含你的学习经历中。 所以, 我们预设学习者没有学过任何计算机科学及电子工程学, 并欢迎所有层次的学习者。 你不需要任何实际的材料, 你将使用基于软件的硬件模拟器在自己的个人电脑上构建一台计算机, 就像在真正的工业界中, 计算机也是被工程师在电脑上设计构建的。 在你注册这门课程后, 硬件模拟器及其他配套软件将会免费提供。
课程组成:
这门课程包含六个模块, 每个模块包括一系列的视频课程以及一个项目作业。 每个模块大概需要花费两到三个小时来观看视频课程, 以及五到十个小时来完成项目作业。 整个课程将在六周内完成, 不过你也可以根据需要自己把握进度。 谷歌搜索“nand2tetris” 会出现一个与这门课程有关的TED演讲。
关于 以项目为中心的课程:
以项目为中心的课程是被设计来帮助你完成一个有意义的实际项目, 期间会有你的指导者以及一个有着共同目标的学习者的社区来提供指导和建议。 通过活学活用你学习到的新概念, 你将会更有效地掌握课程的内容; 这也是你将你学习到的技能用来改进你的生活或职业生涯的一个开始。 当你完成课程时, 你将完成一个可以引以为豪的用来使用或者分享的项目。
本文内容二:
本人出身还好(985,211通信专业小硕一枚,但感觉我给学校丢脸了,毕业5年了。混的很差 ),毕业后其实仅仅懂一点点信号处理,通信原理,数字电路等知识,编程基础仅仅是C语言必修,微机原理选修。没有学习过计算机底层的什么原理了。
毕业那年运气好,赶上大公司扩招,去了通信软件的大公司,当年本科同学都去了各地的移动、联通、电信,或者各个通信设计院。我误打误撞的去通信公司当了程序员。到公司报道后,师傅扔给我一本java开发原理,让大概2周看完(实际其实也就看了前几章节),
然后就开始上手学习公司java代码了。我就是这么误打误撞的干了编程了,真的没有基础啊。大公司代码都是每人一个模块,其实可能我的模块多线程都很少用,只是对不同的数据,进行不同的处理而已(数据量大,很多重复性劳动)。在大公司待了2年多,
技术上其实没有太大进步,仅仅是java简单代码,虽然是java后端,但我不懂struts2,hibernate和spring三大框架,那都是别人搭建好的,编译也是统一有人负责的,我只是简单java代码,然后会svn,能上传上去就行了。由于数据量大,还经常加班,
也基本没怎么学习深入技术(可能也是自己懒吧),就这么浑浑噩噩的2年多,一看不行了,房价太高,跳槽,回老家二线城市,小公司,啥都干,web前端,tomcat,数据库,C语言,python,等等等。这时才真的感受到技术储备的匮乏。连linux都不会用。同时二线城市收入低,也使人懒惰。
但不学又不行。开始强迫自己学习。这时也才深深的感受到,学习过源码的人,是多么的厉害,特别特别羡慕那些有计算机深厚基础的人,就像你做数学题一样,有计算机底层基础的人,是知道一个现象的本质,能从本质找到发生现象的原因。
同时也是在这时,发现国外的好多资料,比国内的完善。也开始培养git,懂得在github(其实oschina开源中国也不错,但可能git之前名气大吧,我就用了git)上进行学习。也想给自己开一个个人主页(可能也是懒,想想而已,一直也没弄,关键是没文采)。但国外的资料就是英语要求高些。
我现在觉着这篇博客写的烂糟糟的,主旨是希望大家能对国外技术资料有一个交流的平台(平台是中文的)。今天下午睡多了,本想学习《Nand To Tetris》第二周教程的,但看牛哥朋友圈能用牛币换书了。把书换上,谢谢牛哥。顺便写了点感慨。同时也建议大家,有些,有些,呵呵真的可以看点国外资料的。像这篇https://github.com/Avik-Jain/100-Days-Of-ML-Code,是用100天学习机器语言编程的,(我跟了几天没跟下来,因为我目前用不到机器编程,但课程真的很好。也是0基础开始的,但对数学可能有些要求,哈哈,推荐给大家吧,但我懒了,我承认。)
连总结都算不上。有时自己也知道很多东西,其实看源码能解答很多困惑,但自己是真的看不进去。努力培养吧。羡慕牛人。互勉吧。
如果你也学习了《Nand To Tetris》,如果你有什么困惑,可以留言交流,我们共同努力,虽然可能我也解答不上。但万一我知道呢。加油,祝愿大家和自己2019更加顺利吧
