小学生如何成为一名黑客(如何成为一名黑客?怎么从0开始学)

275 篇文章 10 订阅

为什么要写这篇文章?

当我十三岁开始上高中的时候,我读了ESR写的这篇博客文章:如何成为一名黑客(http://www.catb.org/~esr/faqs/hacker-howto.html)。这篇文章让我了解了程序员们一起在互联网上构建东西的社区,这让我很兴奋。我试着开始着手安装Fedora Core 4,最终安装成功了Ubuntu 6.06,通过这一过程,我自己学到了很多关于故障排除的知识,并且努力尝试着让系统真正工作起来。这个过程对于培养帮助我获得现在这份工作的技能至关重要。我读了关于Python的书,写了一些小程序,然后决定学习计算机科学,了解计算机是如何工作的。在我不确定自己将来想做什么的时候,这对我来说是一个相当有影响力的文章。

在布法罗郊区长大的我,在纽约可能感到相当孤独。虽然我很幸运,我父亲在大学里因为好玩而编写了一个Apple II程序(所以我应该有一些编程背景/黑客精神),但他对更现代的软件开发知之甚少。我喜欢电脑,也喜欢玩电脑,但我不知道什么是计算机可以做到的,甚至不知道在哪里可以了解

16年后,我想写我自己的版本的《如何成为一名黑客》,来对ESR的原著进行补充,这一定是件很有趣的事。我想在这篇文章加入那些我在13岁时想读到的一些东西,并且重点

要学习的东西有很多

记得在刚开始的时候,我读过一些文章和书,但对其中的很多行业术语不甚理解 - 这很正常。随着你接触到了

每个人都会在某个时候第一次学到一些东西,然后这些东西就会慢慢地积累起来,直到你掌握了那些基本知识为止。我记得一开始我不懂任何细节(比如:我不知道如何在终端中输入命令来运行它们,或者cd代表“change directory”)。你从接触中获得这些知识,你玩得越多,你接触得就越多,你积累的知识和经验也就越多。如果你有幸生活在一个地区有一群对软件感兴趣的人,你就能够更快地学习。

不要害怕你不理解的事情

学习一些复杂的新事物开始时往往会感到困难 - 如果感觉很容易,那么它可能是你已经知道的东西,或者它可能不是真正考验你的知识(阅读如何解决一个物理问题并认为“它很合理”,比你自己用刚刚学会的工具解决一个问题要容易得多)。感觉吃力是个好现象 - 这意味着你真的在学习,集中精力一直坚持做下去,当你感觉变好的时候你的学习就会变得更容易。

我认为,一个新人在这方面甚至有一点优势:当你积累了一点经验后,只做你已经知道怎么做的事情,而不是学习新的东西,会让你感觉容易和舒适。这会导致你陷入一个停滞期,在那里你只是重复做你已经知道怎么做的事情,就像一个人只能用吉他弹一首歌,并且他总是弹同一首歌一样。对于一个新人来说,一切都很难,但这样做不应该是一个新人真正的选择。

第一次学习一些复杂的东西应该会感觉有点痛苦 - 你应该习惯这种感觉,因为这是件好事,意味着你在成长。不要因此觉得自己不够聪明而被吓跑了。因为有太多东西要学,有太多不同的途径要走(仅就计算机科学来说,就有很多东西,像计算机图形学、计算机安全、机器学习、算法、移动、网络、基础设施等等分支),所以有一个让自己成长并走出舒适区去学习新事物的心态是至关重要的。

学习编程 - 边做边学

仅仅通过阅读一本关于编程的书来学习编程,就像仅仅通过阅读一本关于跳伞的书来学习跳伞一样。你可能需要读一本书(而且在开始的时候你需要用它作为一个起点),但是除非你同时也在写一些小程序,否则你从中得到的有限。木匠通过建造东西来使技术变得更熟练,作家通过撰写文章来使文笔变得更优美,而程序员则通过编写代码来提高编码水平。这并不意味着你不应该读书,也不意味着一本好书不能给你带来价值。但是仅仅这样做会很容易让你陷入一个误区:你只是在那里读关于编程的书而不是自己做任何事情,会让你觉得读起来容易,做起来也容易。然而,当你真正开始编程的时候,你会发现凭空想象出来一些程序是很困难的。

我同意ESR的观点,Python是一种很好的作为编程起点的语言,而且有一个很好的学习网站,名为苦学Python,专门针对初学者,并在教学过程中使用一些练习。

一开始,你会觉得语法很难理解,当你开始学习的时候,很多时间都花在了语法上。因为每种编程语言都有不同的语法,它们看起来非常不同。当你开始掌握语法后,你

在掌握了一门编程语言的语法并且能够编写简单的程序之后,学习数据结构是最重要的下一步。Cracking the Coding Interview这本书对一些核心的数据结构有很详细的描述(并且还附带有一些示例问题)。令人困惑的是,不同的语言在实现相同的数据结构时往往有不同的名称(比如,Python称哈希表(hash table)为‘字典( dictionary)’),但大多数语言都会实现一些核心数据结构,即使它们都有一个不同的名称。

故障排除或调试也是一项核心编程技能 - 大多数编程时间实际上都是在调试,因此,如果你喜欢调试代码,这可能是一个好现象。当你不得不到处搜索以试图理解某件事情,或者当你正在阅读的文档不起作用,或者当你在环境中遇到一些意外错误时,不要气馁 ,记住这是正常的,而且这也不是你能力低下的反映。

大多数软件都不工作,而且经常有未记录的error、bug和一些难以纠正的琐碎问题。例如,Github上的大多数开源项目都有某种构建系统,用于处理将软件配置为运行的问题。这将执行诸如拉入依赖项(需要与之配合工作的其他代码)之类的操作,以及执行任何必要的命令来实际运行它。如果你要在Github上下载一个有趣的项目并尝试运行它,你可能会在这个过程中遇到很多意外的错误,而这些错误通常没有文档记录。

运行时遇到这些错误并且将问题解决是很正常的事情,经验丰富的程序员也必须处理这些问题(如果幸运的话,我们以前也见过这种类型的问题)。我见过有人遇到这样的错误,并且认为自己做错了什么,但实际上错不是你,而是编程就是这样的过程。围绕着构建系统并试图使其更好,有很多相互竞争的工具甚至行业(这可能会使初学者更加困惑,因为没有真正的标准化,并且配置软件使之运行的正确方法也因为编程环境和语言的不同而各不相同)。

计算机实际上是如何工作的?

我记得那时我很沮丧,因为我很难找到关于计算机实际工作方式的信息。我能找到的关于计算机的一切都是用毫无用处的过于简单的类比(比如,磁盘是“存放文件的柜子”),我找不到任何我可以阅读并且帮助我真正理解计算机是如何工作的,并且如果把我转移到过去,我就能真正解释如何构建出一个计算机的东西。这些是比软件更具体的电子或计算机工程,它们在帮助理解硬件方面仍然有很多价值(这很有趣!)。

我愿意推荐的最好的书是Charles Petzold撰写的《Code》。它引导你从电子位开始,一直到布尔逻辑和电路设计的历史,再到简单电路的实际图形,以及如何将位存储在内存中。这是知识依照发现的历史背景一步步地介绍给你,直到构建出一个真正的小CPU。Charles Petzold还学习了一些汇编和基本的计算机图形学。他是一个逻辑非常清楚的作家和老师,所以这本书的细节具备令人惊讶的可读性。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

三、精品Python学习书籍

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
在这里插入图片描述

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

六、Python练习题

检查学习结果。
在这里插入图片描述

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

Python资料、技术、课程、解答、咨询也可以直接点击下面名片,添加官方客服斯琪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值