凤谷行窝
  • 主页
  • 归档
  • 关于
  • 类目
  • 标签
  • English

    { 编码 }

  • 并发的艺术-2:函数式编程

    2018-10-08 |
    • { 编码 }
    • { 沉思 }
    • { 并发 }
    • { 并行 }
    • { 函数式 }
    /
    • { 魔术 }
    • { 编码 }
    • { 并发 }

    在起源中,简单讨论了并发相关的各种概念,这一篇我们换个出发点,从函数式编程出发,找到它们之间的交点。

    Read On »
  • 并发的艺术-1:起源

    2018-10-01 |
    • { 编码 }
    • { 沉思 }
    • { 并发 }
    • { 并行 }
    /
    • { 魔术 }
    • { 编码 }
    • { 并发 }

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

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

    2018-04-07 |
    • { 编码 }
    • { 沉思 }
    • { C语言 }
    • { glibc }
    • { 构建过程 }
    • { GNU make }
    • { 构建glibc }
    /
    • { 魔术 }
    • { 编码 }
    • { C语言 }
    • { glibc }

    简介

    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中的具体模块打下基础。

    Read On »
  • 理解C语言-3:编译链接

    2018-03-31 |
    • { 编码 }
    • { 沉思 }
    • { C语言 }
    • { 编译 }
    • { 链接 }
    • { 加载 }
    • { 符号表 }
    • { 可重定位格式 }
    • { ELF }
    /
    • { 魔术 }
    • { 编码 }
    • { C语言 }

    简介

    上一篇介绍了C语言如何通过语句操作数据。本篇依旧贯彻解决”为什么”的原则,以终为始,从操作系统执行程序所需的内存布局入手,反推在源代码和最终可执行文件之间,编译和链接子系统需要做哪些工作。

    Read On »
  • 理解C语言-2:指令执行

    2018-03-24 |
    • { 编码 }
    • { 沉思 }
    • { C语言 }
    • { 指令执行 }
    • { 指令式编程 }
    • { 操作符 }
    • { 操作数 }
    • { 表达式 }
    • { 语句 }
    • { 控制流 }
    • { 函数 }
    • { 调用约定 }
    • { 活动记录 }
    /
    • { 魔术 }
    • { 编码 }
    • { C语言 }

    简介

    上一篇主要描述了C语言如何将待处理的数据建模成变量。有了变量,接下来需要拆解的就是如何使用他们。

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

    2018-03-17 |
    • { 编码 }
    • { 沉思 }
    • { C语言 }
    • { 内存数据对象 }
    • { 变量 }
    /
    • { 魔术 }
    • { 编码 }
    • { C语言 }

    初衷

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

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

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

    Read On »
  • 编程语言杂想-通识

    2018-03-10 |
    • { 编码 }
    • { 沉思 }
    /
    • { 魔术 }
    • { 编码 }

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

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

    Read On »
  • Logo小海龟,冲冲冲

    2017-09-23 |
    • { 无锡 }
    • { logo }
    • { 小海龟 }
    • { 编码 }
    • { python3 }
    • { 七巧板 }
    /
    • { 翡翠梦境 }
    • { 编码 }

    我承认我激动了,居然刚发现python从2.5版本开始就自带了turtle这个模块。一见到这个久违了的名字,记忆就像一双大手,把我一下拽回那个属于童年的翡翠梦境。

    本文就带各位看官在梦境中走一遭,示范如何使用python3提供的turtle模块进行七巧板拼图。

    Read On »
© 2019 - 2025 Arthur Qin
Powered by Hexo, Theme Authored by nameoverflow.