前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一周极客热文:200 行 C 代码编写你的第一个垃圾收集器

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

作者头像
钱曙光
发布2018-02-02 11:50:29
7890
发布2018-02-02 11:50:29
举报
文章被收录于专栏:钱曙光的专栏钱曙光的专栏
http://img.my.csdn.net/uploads/201312/23/1387780156_5497.jpg
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 安装时并未给出提示,婚后却多了岳父岳母两个插件,系统性能看起来一天不如一天。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-12-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、 关于程序员的59条搞笑但却真实无比的编程语录
  • 3、 PHP3小时光速入门
  • 4、 15分钟学会使用Git和远程代码库
  • 5、 Java百问
  • 6、 一名靠谱的JavaScript程序员应备的素质
  • 7、 10大怪异的编程语言
  • 8、 趣文:如果老婆和女朋友她们是程序
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档