拾起一点Python

这是我第一个系统学习的语言,不记得为什么后来没再用。那时候刚刚出现的3.0完全没普及。本文以Python3初学者的角度,看看语言层面有什么好玩的东西。

Print

我的第一个学习资料中,作者使用了大量的print语句log调试。2.x版的print语句(不是函数)简直太方便。我不是很理解3.x版的print函数价值在哪,难道是直接回调?

P.S. 甚至Scala都开始去除部分括号。

运算符

python的运算符比常规语言多一点,而且令人印象深刻。

  • 常规运算,+ – * / %
  • 地板除,//;乘方,**
  • 交互模式下有_,上一次输出的字符。
  • 赋值,=。可以多重赋值,比如交换变量。Go也学会了这一招。
    a = 1
    b = 2
    a, b = b, a
    

Continue reading 拾起一点Python

Linux命令/程序-备忘录

Linux系统作为日常使用问题还是很多的,所以开篇博文记录一下。

常用命令

这些命令事关生存,理论上不会忘。但还是列一些出来。

  • 手册: man, info
  • 文件目录: ls, cd, mkdir, touch, mv, rm
  • 权限: chmod, chown, chgrp
  • 读操作: cat, less, more, head, more
  • *写*操作: tee,echo
  • 时间: date, cal
  • 进程:ps, kill
  • 网络状态: ip, ifconfig, netstat
  • 关机重启: shutdown, poweroff, halt, reboot
  • 系统状态: top, free, uptime, vmstat, df, du
  • 清屏:clear

Continue reading Linux命令/程序-备忘录

抽象价值之简述

我在《实现drop函数》最后写下:

抽象的价值是否就在于将问题映射到更简单的解空间?

这只是一个Shower Thought。但可以就其展开谈一些有趣的事。

首先,抽象这个词在中英文语境的含义不一样。其次,抽象的概念本身就很难解释(一不小心就递归了:-p)。本文是完全从编程者的角度探讨的。

辞源

抽象的英文是abstract,看词根就是牵拉的意思。15世纪艺术届大量使用abstract表示分离现实物质的行为。比如说抽象画,它的一大要素就是去除事物的外在特征。可能是同期艺术界千奇百怪的作品被冠名“抽象”,让这个词有了“高深”或“难以理解”的含义。

中文的抽象一词源头已经不可考,但它的含义已经被各种后现代艺术,娱乐作品转义了不知道多少次。工程上所谓的抽象出现不超过200年。 Continue reading 抽象价值之简述

现代C++神器之variant

看过这两年的Cppcon都应该对variant印象深刻。这个东东不算新,2002年就有了boost::variant

说到variant就得提enumunionunion对非C系编程者可能有点陌生。按照当代角度,enum和union很大一部分作用在于缩减定义域。举例如下:

//choose one implementation below
enum OneTwoTree { ONE, TWO, TREE };
//
union OneTwoTree {
  int ONE;
  int TWO;
  int TREE;
};
//
void foo(OneTwoTree ott);

这里用OneTwoTree限制了相关领域的类型范围,比如说调用foo(4)时编译器就会报错。 Continue reading 现代C++神器之variant