返回 登录
23

一周极客热文:200 行 C 代码编写你的第一个垃圾收集器

http://img.my.csdn.net/uploads/201312/23/1387780156_5497.jpg

一名程序员在许多事物缠身,心里烦乱的情况下如何排解呢?Google Dart团队的一名工程师通过编写一个“垃圾收集器”来调整自己,而且起到了一个非常好的效果,但是,他只用了200行C 语言代码,大家不妨来学一下,大概有如下几点:

  1. 精简、复用、再复用
  2. 标记并清理
  3. 对象对
  4. 小虚拟机
  5. 标记
  6. 清理

你成功了!如果你全部照做了,那你现在已经得到了一个简单的垃圾收集算法的句柄。如果你想看完整的代码,在这里

你可以在这上面做一大堆的优化(像在GC和程序设计语言这些事情中,90%的努力都在优化上),但它的核心代码可是真正的GC。

由于篇幅限制,请阅读原文查看要点详情。

下面就来一起看下上周极客头条上热门的文章吧!

1、 关于程序员的59条搞笑但却真实无比的编程语录

  1. 一个好的程序员是那种过单行线马路都要往两边看的人。(Doug Linder)
  2. 程序有问题时不要担心。如果所有东西都没问题,你就失业了。(软件工程的Mosher定律)
  3. 程序员的麻烦在于,你无法弄清他在捣腾什么,当你最终弄明白时,也许已经晚了。(超级计算机之父Seymour Cray)
  4. 我想大部分人都知道通常一个程序员会具有的美德。当然了,有三种:懒惰,暴躁,傲慢。(Perl语言发明者Larry Wall)
  5. 编程时要保持这种心态:就好象将来要维护你这些代码的人是一位残暴的精神病患者,而且他知道你住在哪。(Martin Golding)
  6. 一个人写的烂软件将会给另一个人带来一份全职工作。(Jessica Gaston)

更多语录请点击小标题查看。

3、 PHP3小时光速入门

困难不困难是相对的,搞科学的人都是搞了一辈子都可能没有结果。学习语言,可以短时间内学习。学编程,一点都不难!没试过你怎知道,赶紧点击小标题去看看吧!

4、 15分钟学会使用Git和远程代码库

Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内。

工作步骤——以下的步骤,通常能帮作者独自在一台或多台机器上做项目。

  1. 创建一个远程的空代码库(在BitBucket上)
  2. 在本地代码库添加一个项目
  3. 在分支上开发新功能
  4. a) 保留新功能 或者 b) 丢弃它们
  5. 也许,回到某个早先的时间点
  6. 将本地代码库推送到远程代码库
  7. 在另一台机器上取得远程代码库

5、 Java百问

下面是一些常见的理解性问题,每一个问题尽量用图或代码去描述。带着问题去看有图的内容是一种娱乐和消遣。包括基本语法、数组、集合类、泛型、面向对象、垃圾回收、异常控制、输入输出和内存。

  1. 从Hello World中你可以学到什么?
  2. 如何创建自己的库?
  3. 类如何初始化?
  4. 包和路径
  5. 图说Java
  6. 数组10大常用方法
  7. String常见10大问题

原文有百来个干货问题,欢迎点击小标题查看。

6、 一名靠谱的JavaScript程序员应备的素质

这篇文章写于2010年,作者工作在Cloudera期间,当时node.js还没有流行,很多人还瞧不上javascript这门简陋的脚本,文章提出应该重视JavaScript,并提出成为一名靠谱前端工程应具备哪些能力。虽然年代似乎已经有些遥远,但文中的一些观点但现在仍然适用。

  1. 你需要知道HTML
  2. 你需要了解CSS
  3. 你需要了解浏览器
  4. 我提过JavaScript吗?
  5. 你需要有像样的设计能力(design)
  6. 你需要对服务器端非常自信
  7. 然后还有许多其他的东西你需要掌握

7、 10大怪异的编程语言

人们都认为编程语言很容易使用和学习。编程语言应该给你提供数据结构让你来解决实际问题,它们的语法也应清晰明了,容易理解且执行速度快,没有任何bug。但有时候编程语言设计者们会创建一些违背这些原则的语言,要么供研究使用要么纯属娱乐。下面是10种最怪异的最不切实际的编程语言。

包括:LOLCODE、Glass、Brainfuck、Chicken、Whitespace、///、Befunge、Piet、Malbolge和English。

荣誉提名: JavaScript——Javascript是如今最受欢迎的编程语言,但受欢迎带来的副作用就是该语言自身的每处特性,无论该语言多美妙,还是每天给成千上万的程序员带来了bug,这使得JS也列在这里。

包含在这份列表中的这些深奥的语言,给大家提供了一种提出和验证新思想的方法。有时候这些想法会影响整个工业界。但是它们中的大部分都是不切实际的且深奥、范围狭窄的,你刚刚只学了其中的10种,但实际上有几百种。.

8、 趣文:如果老婆和女朋友她们是程序

去年,作者的一位朋友和他的 GirlFriend 6.0 升级到 Wife 1.0 (也就是他们步入婚姻殿堂了)。婚后他发现,结婚就是只留给其他应用少量系统资源,自己却狂占内存的进程。老婆还要生成子进程(Child Processes),子进程会在将来消耗更多的资源。虽然产品说明书或手册里没有提及这种现象,但大家都知道这些都源于自然规律。

不只如此, Wife 1.0 在安装时设置了开机启动,监测所有系统活动。朋友发现许多应用,比如,扑克之夜、啤酒狂欢、午夜酒吧 已经无法在系统上运行了,每次运行,系统就会崩溃。

Wife 1.0 安装时并未给出提示,婚后却多了岳父岳母两个插件,系统性能看起来一天不如一天。

关于我们:

极客头条是CSDN推出的精品内容发掘平台,在这里可以发现、分享值得你关注的极客新闻。

如果你看到优秀的文章想分享,请点这里:【分享到极客头条】,或者直接在新浪微博@极客头条

评论