zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    日志分析zz
    通过一个非法的指针或者NULL指针调用成员函数会发生什么?
    Android应用程序进程启动过程的源代码分析
    Android应用程序消息处理机制(Looper、Handler)分析
    Android应用程序绑定服务(bindService)的过程源代码分析
    Android系统进程Zygote启动过程的源代码分析
    Android应用程序注册广播接收器(registerReceiver)的过程分析
    Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析
    Android系统默认Home应用程序(Launcher)的启动过程源代码分析
    Android应用程序安装过程源代码分析
  • 原文地址:https://www.cnblogs.com/enomothem/p/11748021.html
Copyright © 2011-2022 走看看