rust和c++比速度就算了,还要和动态语言python比简洁?
是的,没错,rust和python是两门我最喜欢的编程语言,都有一定的开发经验,我认为rust代码确实有资格比一比简洁度。之前分别用rust和python写了一个网络小工具,最近查看日志发现被nmap疯狂扫描端口,因此想增加一个ip地址白名单功能,就给rust和python程序补上了简单的白名单过滤代码。
功能设计很简单,将许可的ip地址,每个一行,写入到whitelist.txt文本中。程序初始化的时候将文件中的白名单ip地址读到内存中,运行中遇到客户端连接就检查下客户端ip是否在白名单中。
以下分别是在python和rust中的代码实现:
上面是python代码,下面是rust代码,两者设计设计逻辑基本一致,rust只多了一个rwlock读写锁。但是rust的代码总行数比python还要少! 尤其是第一个whitelistget函数,rust严格来说通过函数式编程,一行代码就实现了文件读入、去除空白符、逐行迭代和解锁并保存!
所以rust代码的简洁度绝对不输于python,我重构了之前写的很多python小工具,重构后的rust代码基本上都和python代码差不多甚至更少。
从上面小例子可以看出,python有强大的成员运算符in、三目运算符、海象操作符(assignment express)、with上下文管理,写起代码来随心所欲,又简洁清晰。同样rust,有优雅的函数式编程、威力无穷的迭代器方法,写起来有一点到底一气呵成的快感,但稍微烧脑需要一点构思。
rust和python,是个人认为是写起来最爽,设计最优雅的两门语言。虽然更偏爱rust一点,但是根据场景不同依然会同时使用它们。