{ 编码 }

  • 并发的艺术-1:起源

    | /

    并发的概念充斥在各种各样的程序设计书籍中,甚至有许多专门教授利用某一门编程语言进行并发编程的书籍。然而在我看来,并发确是高于语言的通用概念,本文就作为并发系列的第一篇,阐述我对于并发的理解,希望能和各位看官碰撞出思想的火花。

  • glibc源码分析-1:构建过程

    | /

    简介

    glibc(GNU C Library)是Linux采用的C语言运行库,它提供了ISO C11/POSIX.1-2008等标准定义的一系列API,几乎被所有应用所引用。阅读其源码能够提升对计算机底层组件的认知层次,修炼内功。

    不同于python这类解释型语言可以直接在解释器中运行程序,C作为编译型语言需要将源码编译链接成机器码后才能执行(关于编译链接的具体机制可以参看我之前写的介绍文章:理解C语言-3:编译链接)。在glibc这样的超大型项目中,编译过程尤为复杂:不仅需要考虑不同平台间的不同配置项,还需要通过awk/sed等文本处理程序生成各种项目依赖文件。如果贸然扎进源码分析某个模块,很容易陷入不知道某个具体符号来自哪里的困境,铩羽而归。

    GNU Make负责完成如此负责的编译,本文就通过分析Make的调试信息,解析编译glibc的具体过程,引出glibc源代码的目录结构,为后续分析glibc中的具体模块打下基础。

  • 理解C语言-1:内存数据对象

    | /

    初衷

    市面上介绍C语言的书很多,但是大都是从语法和实践入手,以传授”怎么做”或者”怎么做好”为根本目标。俗话说授人以鱼不如授人以渔,虽然我不是C语言的设计者,但是却渴望从”为什么”切入,顺藤摸瓜理顺C语言为什么长成这样。

    其次,C语言是现代计算机语言的鼻祖,也是绝大多数高级语言编译器或解释器的实现语言,理解C的设计理念,对于学习各类现代高级语言一定会有所帮助。

    废话不多,让我们从内存数据对象入手拆解C语言吧。

  • 编程语言杂想-通识

    | /

    为了使文章更有针对性,先抛出本系列文章想解决的问题:
    作为一名程序猿,如何快速学习并掌握一门新兴的计算机语言?

    本文作为系列第一篇,专注于解释我理解中计算机语言的通用知识。