IS guide:Eric Steven Raymond in《How To Become A Hacker》
Learn how to program.This, of course, is the fundamental hacking skill. If you don't know any computer languages, I recommend starting with Python. It is cleanly designed, well documented, and relatively kind to beginners.
Despite being a good first language, it is not just a toy; it is very
powerful and flexible and well suited for large projects. I have
written a more detailed evaluation of Python. Good tutorials are
available at the Python web site; there's an excellent third-party one at Computer Science
Circles.I used to recommend Java as a good language to learn early, but
this
critique has changed my mind (search for “The Pitfalls of
Java as a First Programming Language” within it). A hacker
cannot, as they devastatingly put it “approach problem-solving
like a plumber in a hardware store”; you have to know what the
components actually do. Now I think it is
probably best to learn C and Lisp first, then Java.There is perhaps a more general point here. If a language does too
much for you, it may be simultaneously a good tool for production and
a bad one for learning. It's not only languages that have this
problem; web application frameworks like RubyOnRails, CakePHP, Django
may make it too easy to reach a superficial sort of understanding that
will leave you without resources when you have to tackle a hard
problem, or even just debug the solution to an easy one.If you get into serious programming, you will have to learn C,
the core language of Unix. C++ is very closely related to C; if you
know one, learning the other will not be difficult. Neither language
is a good one to try learning as your first, however. And, actually,
the more you can avoid programming in C the more productive you will
be.C is very efficient, and very sparing of your machine's
resources. Unfortunately, C gets that efficiency by requiring you to
do a lot of low-level management of resources (like memory) by hand.
All that low-level code is complex and bug-prone, and will soak up
huge amounts of your time on debugging. With today's machines as
powerful as they are, this is usually a bad tradeoff — it's smarter
to use a language that uses the machine's time less efficiently, but
your time much more efficiently. Thus, Python.Other languages of particular importance to hackers include
Perl and LISP. Perl is worth
learning for practical reasons; it's very widely used for active web
pages and system administration, so that even if you never write Perl
you should learn to read it. Many people use Perl in the way I
suggest you should use Python, to avoid C programming on jobs that
don't require C's machine efficiency. You will need to be able
to understand their code.LISP is worth learning for a different reason — the
profound enlightenment experience you will have when you finally get
it. That experience will make you a better programmer for the rest of
your days, even if you never actually use LISP itself a lot. (You can
get some beginning experience with LISP fairly easily by writing and
modifying editing modes for the Emacs text editor, or Script-Fu
plugins for the GIMP.)It's best, actually, to learn all five of Python, C/C++, Java,
Perl, and LISP. Besides being the most important hacking languages,
they represent very different approaches to programming, and each will
educate you in valuable ways.But be aware that you won't reach the skill level of a hacker or
even merely a programmer simply by accumulating languages — you
need to learn how to think about programming problems in a general
way, independent of any one language. To be a real hacker, you need
to get to the point where you can learn a new language in days by
relating what's in the manual to what you already know. This means
you should learn several very different languages.I can't give complete instructions on how to learn to program
here — it's a complex skill. But I can tell you that books and
courses won't do it — many, maybe most of the best
hackers are self-taught. You can learn language features — bits of
knowledge — from books, but the mind-set that makes that knowledge
into living skill can be learned only by practice and apprenticeship.
What will do it is (a) reading code and (b)
writing code.Peter Norvig, who is one of Google's top hackers and the
co-author of the most widely used textbook on AI, has written an
excellent essay called Teach Yourself Programming in
Ten Years. His "recipe for programming success" is worth
careful attention.Learning to program is like learning to write good natural language.
The best way to do it is to read some stuff written by masters of the
form, write some things yourself, read a lot more, write a little
more, read a lot more, write some more ... and repeat until your
writing begins to develop the kind of strength and economy you see in
your models.I have had more to say about this learning process in
How To Learn Hacking. It's a
simple set of instructions, but not an easy one.Finding good code to read used to be hard, because there were few
large programs available in source for fledgeling hackers to read and
tinker with. This has changed dramatically; open-source software,
programming tools, and operating systems (all built by hackers) are
now widely available. Which brings me neatly to our next topic...
links:https://www.zhihu.com/question/49294784/answer/116311732
IS guide:Eric Steven Raymond in《How To Become A Hacker》的更多相关文章
- 《C#本质论(第4版)》
<C#本质论(第4版)> 基本信息 作者: (美)Mark Michaelis Eric Lippert 译者: 周靖 出版社:人民邮电出版社 ISBN:9787115336750 ...
- 《OSPF和IS-IS详解》一1.5 ARPANET内的路由选择
本节书摘来异步社区<OSPF和IS-IS详解>一书中的第1章,第1.5节,作者: [美]Jeff Doyle 译者: 孙余强 责编: 傅道坤,更多章节内容可以访问云栖社区"异步社 ...
- 《JavaScript设计模式与开发实践》整理
最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...
- 《LoadRunner12七天速成宝典》来了
看到自己的新书又要发行了,算算从09年第一本书开始,不知不觉已经是第四本书了(帮朋友合写的书不算),每次写完之后都会说太累了,不想再写了,但是却又次次反悔,吞下食言的苦果.如果非要说第四本书的感受,那 ...
- 《连载 | 物联网框架ServerSuperIO教程》2.服务实例的配置参数说明
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制 一.综述 SuperIO(SIO)定位 ...
- 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 5.轮询通讯模式开发及注意事项。附:网友制作的类库说明(CHM)
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- 《连载 | 物联网框架ServerSuperIO教程》- 6.并发通讯模式开发及注意事项
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
随机推荐
- Geoserver2.15.1 配置自带 GeoWebCache 插件发布 ArcGIS Server 瓦片(附配置好的 Geoserver2.15.1 下载)
之前写过一篇关于 Geoserver2.8.5 版本的部署配置发布 ArcGIS Server 瓦片点击查看,那是下载 Geoserver2.8.5 源码编译,重新打包 jar 来部署配置思路的,版本 ...
- HDU 1808 Halloween treats
Every year there is the same problem at Halloween: Each neighbour is only willing to give a certain ...
- 关于直线,V形线,Z形线,M形线分割平面的总结
一:N条直线分割平面 假设,x条线能将平面分为f(x)份,这对于份f(n) 第n条线,和其他n-1条线都有交点时,增加量最大,为n; 则: f(n)=f(n-1)+n; 有f(0)=1:得到:n 条直 ...
- 洛谷 题解 P5015 【标题统计】 NOIP2018 普及组 T1
没有人用 scanf("%c", &ch) != EOF 吗? scanf 和 EOF 会伤心的. 思路:逐个读入字符,遇到EOF中止,对于每个读入的字符进行判断. 附上考 ...
- Mysql双活方案
#### 说明 Mysql主主互备即为两个mysql的互为备份机 ##### Windows下安装步骤(Linux下步骤类似,基本就是装上mysql,然后修改配置来完成主从的设置) - step1 ...
- 基于 HTML5 + WebGL 的 3D 太阳系系统
前言 近年来随着引力波的发现.黑洞照片的拍摄.火星上存在水的证据发现等科学上的突破,以及文学影视作品中诸如<三体>.<流浪地球>.<星际穿越>等的传播普及,宇宙空间 ...
- Vue项目中实现用户登录及token验证
学习博客:https://www.cnblogs.com/web-record/p/9876916.html
- 对 HTML 语义化的理解
简述一下你对 HTML 语义化的理解? 用正确的标签做正确的事情. html 语义化让页面的内容结构化,结构更清晰,便于对浏览器.搜索引擎解析; 即使在没有样式 CSS 情况下也以一种文档格式显示,并 ...
- java开发必学知识:动态代理
目录 1. 引言 2. 代理模式及静态代理 2.1 代理模式说明 2.2 静态代理 2.3 静态代理局限性 3. 动态代理 3.1 JAVA反射机制 3.2 JDK动态代理 3.2.1 JDK动态代理 ...
- 《Java基础知识》Java锁详解(volatile,synchronized等)
volatile: 让变量每次在使用的时候,都从主存中取. volatile具有synchronized关键字的“可见性”,但是没有synchronized关键字的“并发正确性”,也就是说不保证线程执 ...