Blog

Blog

PHODAL

黑客文化 何处的中国计算机文化(二)

黑客的含义

(PS:此节可参考阮一峰关于黑客的含义:http://www.ruanyifeng.com/blog/2011/04/on_hacker.html,至于其由来我们也可以由此断定是在国外。)

简单的说引用,引自最后一个真正的黑客&自由软件创始人Richard Stallman的话,出于某个兴趣,解决某个难题,不管他有用没用,这就是黑客。(原文:Playfully doing somethingdifficult, whether useful or not, that is hacking.)。

引用《黑客与画家》中阮一峰的序,hack作为名词,在字典中的解释是砍(木头),相对地对于这个团体——60年代初,麻省理工学院(MIT)有一个学生团体,叫做“铁路模型技术俱乐部”(Tech ModelRailroad Club,简称TMRC),他们把难题的解决方法称为hack。因而相对于他们而言,解决一个计算机难题,就类似于在砍下一棵大树。那么,这个过程就是hacking,而这些人就是hacker。因而,由此为起点,hack还有一个引申义,指对某个程序或设备进行修改,使其完成不可用的功能(或者禁止外部使用者接触到的功能)。在这种意义上,hacking可以与盗窃信息、信用卡欺诈或其他计算机犯罪联系一起,这也是后来“黑客”(hacker)被当作计算机入侵者的称呼的原因。

黑客,不仅是第一流能力象征,也包含着追求解决问题过程中产生的精神愉悦或享受。也就是说,从一开始黑客是由精神追求而起的。依据RMS(Richard Matthew Stallman)的说法,黑客行为应该包含以下三个特别,也是黑客世界的价值观。

1.    好玩(playful)

        这我们可以从另一个著名的黑客Linus Torvalds(Linux内核的创作者)的传记中可以体现出来,还包括其名字《Just for fun》。没错,hacking是一个享受的过 程,精神上的享受,而非为更多的由物质出发。

2.    高智商(cleverness)

3.    探索精神(exploration)

那么,剩下的更多的也可以由上述的链接去了解,当然也就没有必要Ctrl+V,对于原文由于是采用CC BY-NC-ND 3.0(详情可参考:http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh)就不多述,不值得不一题的是这种协议就类似于我们可以对我们所说的每个句子保持所有权一样。也因此,我们采用更自由的引用。

有这样一群人大声嚷嚷着自己是黑客,但他们却不是。他们(主要是正值青春的少年)是一些蓄意破坏计算机和电话系统的人。真正的黑客把这些人叫做“骇客“(cracker),并不屑与之为伍。(引自Eric S. Raymond——关于如何成为黑客一文:http://catb.org/~esr/faqs/hacker-howto.html#skills1

所以,最后我们可以对此做简单的区分:

黑客搞建设,骇客搞破坏。

这也就足以让我们理解为什么GNU的创始人Richard Stallman被称为“最后一个真正黑客的原因“。以及为什么另外一个著名的黑客是Linus的原因了。因而,我们就明白了事实上,黑客是解决问题,建设事物,同时他们崇尚自由和无私的双向帮助。当然了,成为一名黑客不能是只为被承认为黑客,而是有其更多的意义所在,比如:

1.       写开源代码、软件

2.       帮助测试并调试开源代码、软件

3.       公布有用的信息

4.       帮助维护基础设计的运转

5.       为黑客文化本身服务

关于此可以参考:http://www.aka.org.cn/Docs/hacker-howto_2001.html。而我们又可以明显的发现在能力上黑客与骇客有着很多的区别。根源上的区别导致了,在实际上的区别。换句话说,黑客是那些创造了骇客工具的人。因而,也就是可以解释为什么那些安全破坏份子,只会入侵,只会使用别人的工具等等,除了给杀毒软件产商带来巨大的利益以外,没有给计算机技术带来真正的发展,反而也引起了人们的恐慌。因而,与此相比,黑客需要真正的能力。简要的可以将此概括为:

1.       编程能力

2.       系统管理

3.       设计

这样的定义再适合不过了,自然而然的也就足以区分建设者和破坏者的区别了。这和熟悉使用某些软件或者正在入侵的时候,不要随意离开你的电脑等等的可不一样。

编程能力在几个之中是不可或缺的,也就是为什么事实上当程序员发展到一定的阶段时,就可以有足够的实力来影响计算机技术的发展。编程对于一个黑客的重要性,或者说对一个程序员的重要性是无可取代的,当一个程序员不再编程时,那么他也就不再是一个程序员。无论何时编程是黑客最基本的技能。

良好的设计能力对于一个黑客是不可或缺的,当然并非指如何设计,而指的是如何整体构思,因而也就类似于蓝图本身的存在一样。事实上程序设计也是设计的一个分支,于此,我们发现两者有着如此多的相似之处。正如黑客与画家一样,两者也有诸多的相同点。比如,良好的构思能力,以及其的意义。在多数情况下,我们所做的事情就应该如同画画一般,目的明确,又有着良好的风格,以至于别人一看就会发现这是我们的风格一样。

而对系统的管理对于一个黑客来说也是至关重要的,对于一个系统的了解程度。会因此而有助于我们对下一个系统的了解程度。比如,我们在Linux上所习惯的命令,大部分可以在Mac OSX上使用,通过借助mac port等软件,也可以自由的使用。因而对于一个黑客而言,会使用类Unix,比如Linux是相当重要的,能写出能让人读懂的程序比只写出程序本身更重要,这也就是解释为什么写开源软件的时候要求要更高。

当然了,Eric S. Raymond也给出了基本黑客技能:

1. 学习如何编程

2. 得到一个开放源代码的Unix并学会使用、运行它。

3. 学会如何使用WWW和写HTML

4. 如果你不懂实用性的英语,学习吧。

关于最后一点就没有必要更多的解释,大多数软件的文档都只有英文版的,如果将大量时间花在等中文版上面,那么我们就会因此浪费更多的时间。同时,对于某个名牌大学(清华)出版社的书,我甚是不喜欢(如果按照某人的说法,可能是考不上)。当然了,主要原因是,翻译出来的书——计算机书大多数在翻译上有问题,而且自己出的改编自国外的,都将笔墨浪费了诸多不可用的东西上。且说翻译,不得不指责没有多少的责任心的存在,也就点到为止吧。

Linux的重要性对于一个黑客而言是很重要的,诸多Ubuntu等操作系统,没有必要将时间花费在讨论系统上,当然了准确的说法是Ubuntu GNU/Linux系统,Linux是只是内核,而GNU构成了建筑层上层,不过Linux是核心,构成了整个系统的要素。直接使用一个现有的操作系统是比较简单的,当然了我们也可以疯狂一笔,当然了这也是一种不错的体验,至少在我看来,完成之后我们就有一个自己的操作系统,也就是Linux from Scratch,简称LFS,详情:www.linuxfromscratch.org/lfs/

而后在此之上,我们就可以搭建自己的博客,构建自己的平台。因此,学会如何使用WWW和写HTLM自然的也不在话下了。这就是另一世界的黑客——极客。

最后也就是关于编程的篇章,再次重复的原因是编程对于黑客的重要性。那么,就因此而再度引用了:

如果你还不会任何编程语言,我建议你从Python开始。它设计清晰,文档齐全,合适初学者入门。它是一门很好的入门语言,并且不仅仅只是个玩具;它非常强大、灵活,也适合做大型项目。我有一篇 Python评价详细说明这点。好的 教程 可以在Python网站得到。(译者:比较好的中文Python站点可能是http://pythonrecord.51.net。)

Java也是好的入门语言。它比Python难得多,但是生成的代码速度也快得多。 它同时也是一种优秀的计算机语言,不止是用来入门。

但是注意,如果你只会一两门语言,你将不会达到黑客所要求的技术水平,甚至也不能达到一个程序员的水平——你需要学会如何以抽象的方式思考编程问题,独立于任何语言。要做一名真正的黑客,你需要学会在几天内通过一些手册,结合你现在所知,迅速掌握一门新语言。这意味着你应该学会几种截然不同的语言。

如果要做一些重要的编程工作,你将不得不学习C语言,Unix的核心语言。 C++与C非常其他类似;如果你了解其中一种,学习另一种应该不难。但这两种都不适合编程入门者学习。而且事实上,你越避免用C编程,你的工作效率会越高。

C非常有效率,节约你的机器资源。不幸的是,C的高效是通过你手动做很多底层的管理 (如内存)来达到的。底层代码都是复杂极易出现bug的,会使你花极多的时间调试。如今的机器速度如此之快,这通常是得不偿失——比较明智的做法是使用一种运行较慢、较低效率,但大幅节省你的时间的语言。因此,选择Python。

其他对黑客而言比较重要的语言包括 Perl和 LISP。 Perl实用,值得一学;它被广泛用于动态网页和系统管理, 因此即便你从不用Perl写程序,至少也应该学会看。许多人使用Perl的理由和我建议你使用Python的理由一样,都是为了避免用C完成那些不需要C高效率的工作。你会需要理解那些工作的代码的。

LISP值得学习的理由不同——最终掌握了它时你会得到丰富的启迪和经验。 这些经验会使你在以后的日子里成为一个更好的程序员,即使你实际上很少使用LISP本身。

当然,实际上你最好五种都会(Python,Java,C/C++,Perl和LISP)。除了是最重要的黑客语言外,它们还代表了截然不同的编程思路和方法,每种都会让你受益非浅。


黑客文化是一种奉献文化,比如我们证明了8位的MCU上面可以跑Linux,那么我们将此分享出来http://dmitry.co/index.php?p=./04.Thoughts/07.%20Linux%20on%208bit这也是一种奉献。


或许您还需要下面的文章:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806

新书《前端架构:从入门到微前端》

《前端架构:从入门到微前端》是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。

前端架构包含以下五部分内容:

  • 设计:讲述了架构设计的模式,以及设计和制定前端工作流。
  • 基础:通过深入构建系统、单页面应用原理、前端知识体系等,来构建出完整的前端应用架构体系。
  • 实施:通过与代码结构的方式,介绍如何在企业级应用中实施组件化架构、设计系统和前后端分离架构。
  • 微前端:引入6种微前端的概念,以及如何划分、设计微前端应用,并展示了如何实现这6种微前端架构。
  • 演进:提出更新、迁移、重构、重写、重新架构等架构演进方式,来帮助开发人员更好地设计演进式架构。
comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签