君子性非异也,善假于物也!bash亦如此。
昨晚今早的世界杯甚是精彩,深夜醒来就不断看手机直播,早上起来水没喝一口就开始欣赏英格兰和意大利的对决,太TM精彩,最终孕育罗马文化,埃特鲁里亚文化的意大利获取胜利,我甚是欢喜,紧接着观摩下一场比赛,本田圭佑的进球甚是鬼斧神工,本来想加班的,却研究起了复杂六度分割网络,有点乱,但是还是在下午的时候悟出了一点什么。小小睡在旁,心里想着怎么把bash组织成一棵树,因为我实在不想也没有能力使用Python来创建所谓的高级的数据结构,比如树。
       树,一个人类的常规组织形式,一个将近一万年为人类所用的数据类型,如今被映射进计算机数据结构的时候被赋予了独特的地位,二叉树,堆,AVL树,红黑树,256叉树,Radix树,...不一而足,几乎所有的编程语言都内置了这些树的数据结构类型,即便不是如此,也会有很多狂热的开发人员组建一系列的所谓库来实现这些树的接口。但是除了一种语言,即Shell,对于LInux而言就是bash(我从来不用其它的shell,虽然历史渊源深厚,但历史不是现实,这是理解历史的好处...),为什么没有人开发Linux的树型数据结构呢?...shell是一种粘合语言,不是一种实现逻辑的语言,这也许就是根本??如果世界杯解说员在解说西班牙VS荷兰对决的时候,在荷兰进球前一直倾向于西班牙会赢,无异于低水平的赌博,实际上当我说没有人实现bash版本的树型数据结构的时候,造就有人发在了github上了,只是我这个傻BI没有找到而已,所以我不再按照长平之战的原则来评论此事,我只是试着去做,因为如果我做不到,将是我工作的重大失职,就如同西班牙球员将球送进自己的球门一样...bash为何没有简单的办法实现树型结构,甚至没有实现任何的数据结构,原因在于,它不需要!
       君子善假于物也,bash本身没有tree的语义,但是UNIX的文件系统正是tree组织的,而bash操作UNIX目录/文件简直就是如鱼得水,我突然想到了Linux内核的make menuconfig是怎么找到那么多的config的,事实上不需要一个统一的congifg,只需要各个文件目录自己构建自己的config项就可以了,make的时候自然会遍历文件系统,然后取出config项目,仅此而已,Linux的诸如make menuconfig命令不需要自己实现一套遍历目录的算法。如果我想实现一个树型的操作序列,比如在ECC算法下的TLS分别用SM1和SM4来进行对称加密,使用ECC或者SM2进行认证(即所谓的算法套间,cipher-suit),怎么办?按照传统的编程语言,我要内建一个struct,实现一个树,但是,但是现代的复杂问题已经不允许你去编写和编译所谓的结构体了(关键在于编译),问题的根本在于你是在想用这些语言解决你的问题(去年我..一个表,我过不去的坎)还是你想研究编程语言本身,如果是后者,请略过此文,但如果不是,我觉得C/C++/Java已经不适合了,Python,Perl,Bash更合适,因为这些语言可以让你不必去思想如何构建一棵树的问题,以Python为例,不必多说,我懂得没你多,但是以bash为例呢?由于没有什么库可以使用,你瞬间呆住了!...我一直以来也是这样考虑的,,但突然,我不这么认为了,我觉得bash能够利用的库(Library)不是没有,而是很多,多到什么程度?答案是整个系统!
       Linux的目录系统是一个树型结构,bash可以很好的利用它!bash虽然没有内建任何结构,但是却可以利用所有的其它结构。Linux内核的设计者已经想到了这一点,看一下sysfs和procfs吧,当你使用cat/echo等命令来操作的时候,是不是觉得比自己写代码更轻松些呢(虽然少了自己炫技巧的机会...)?不要把文件系统当作一个龌龊的IPC机制,实际上你可以变通,你可以将内存的好几G,比如1G全部构建一个ramfs,然后在里面尽情搞文件操作吧,不会有任何性能损失,记住,文件IO只是一个接口而已(请别跟我扯系统调用会影响效率,也许可以使用mmap...书看多了,课上傻了...)!文件接口是一个非常猛的东西,它可以内建你无法实现的数据结构,比如树。我没有必在脚本内部维护一棵树,我只需要建立一个树型的文件目录系统即可,然后利用丰富的文件系统IO命令来蹂躏它,如果你不想让我的额外文件系统污染你那纯洁的文件系统,我就建立一个ramfs,我只是将内存格式化了而已!
       bash不是编程语言,然而它又是所有的编程语言,它可以粘合所有的语言写成的逻辑,其内恰性远远超过诸如Python,Perl,PHP之类的语言,它是UNIX内建的!bash,它实际上就是UNIX本身的编程语言,UNIX本身就是一个库!我不是反对现代软件工程,我只是觉得在某些领域,某些地方,某些日常事务,软件工程确实走偏了方向。
       大师出手的时候不知道自己用的招数的名字,我在想,那些所谓精通设计模式的人们,你们可曾知道,你们比设计模式领域的大师更猛,因为当这些大师在做一个系统的时候,实在不知道自己在使用什么模式,但是你可能更知道。突然想到了《依天屠龙记》中张三丰问张无忌,直到张无忌的功夫口诀全部忘记之后,才允许其出战,精髓所在!
      花式足球竞赛进行中,高手都是一帮跳街舞的人,技术太TMD炫了,但在世界杯中除了C罗几乎没有人炫花式技巧,于是我曾经想,花式足球不实用,只适合表演,可是看了世界杯大牌明星这些人的花式足球表演后,我知道了,有些技巧只适合炫技,但是精髓并不包含在所谓的能炫的技巧中。

bash组织成树型数据结构相关推荐

  1. R语言ggplot2可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram)

    R语言ggplot2可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Hierarchical Dendrogram) 目录

  2. Python使用matplotlib可视化树状图、层次聚类系统树图、树状图根据给定的距离度量将相似点分组在一起、并根据点的相似性将它们组织成树状图链接起来(Dendrogram)

    Python使用matplotlib可视化树状图.层次聚类系统树图.树状图根据给定的距离度量将相似点分组在一起.并根据点的相似性将它们组织成树状图链接起来(Dendrogram) 目录

  3. 递归算法在生成树型结构中,几乎完全属于无稽的算法

    想想N年前,还为自己写的递归生成树感到小小的骄傲.如今看来,其实在生成树型结构时,基本不可能采用这样的算法. 原因:层(次)数据比较庞大时,递归检索所有数据绝对耗时耗资源.甚至在数据过大时死机,不管你 ...

  4. vant树型菜单多级_无限层级菜单—左右值树型数据结构

    在上一篇博客中,我提到了后台菜单的问题.其实我不想写,因为比较久了,都差不多忘了,只记得当时理解得很痛苦. 下面这个菜单是一个多层级菜单的,在 计算机中心 菜单下,有6个子菜单,在子菜单 微信管理 下 ...

  5. 山东大学计算机科学与技术学院程序设计思维与实践作业 week10-树型数据结构及其应用

    山东大学计算机科学与技术学院程序设计思维与实践作业 山大程序设计思维与实践作业 sdu程序设计思维与实践 山东大学程序设计思维实践作业H10 山大程序设计思维实践作业H10 山东大学程序设计思维与实践 ...

  6. python数据结构教程_利用Python演示数型数据结构的教程

    使用 Python 内建的defaultdict方法可以轻松定义一个树的数据结构. 简单的说树也可以是一个字典数据结构 def tree(): return defaultdict(tree) 这就是 ...

  7. 十年码农讲解Linux型内核,操作系统 --- 虚拟文件系统

    1.虚拟文件系统的分层结构 上层:虚拟文件系统 底层:特定文件系统模块,例如:网络文件系统(nfs.smb)等其他类型文件系统 虚拟文件系统的目的:将接口暴露给用户,屏蔽底层文件系统的差异性,它是对所 ...

  8. linux虚拟文件系统浅析

    linux虚拟文件系统浅析 虚拟文件系统(VFS) 在我看来, "虚拟"二字主要有两层含义: 1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细 ...

  9. (转)linux内核虚拟文件系统浅析

    转自http://hi.baidu.com/_kouu/item/4e9db87580328244ef1e53d0 ###### 虚拟文件系统(VFS) 在我看来, "虚拟"二字主 ...

最新文章

  1. mysql分表方法-----MRG_MyISAM引擎分表法
  2. 漫步者蓝牙只有一边有声音_漫步者Dreampods新品体验,蓝牙耳机黑科技来了
  3. KindEditor 4 输入框限定字数
  4. commons.apache
  5. python贪吃蛇小游戏_python开发贪吃蛇小游戏
  6. 量子计算机九章能否预测未来,张礼立 : 中国 “九章”量子计算机到底厉害在哪?...
  7. 基于用户滚动应用CSS
  8. Android 数据库加密
  9. 大数据shipin教程_大数据视频教程百度网盘下载
  10. 显微镜下的大明内容_《显微镜下的大明》读后感
  11. Tiny6410 初体验
  12. #今日论文推荐#罗格斯大学王灏:保持孩子般的好奇心
  13. 游戏底特律:变人Loading动画效果实现
  14. 单片机万年历c语言程序设计,基于AT89C51单片机的多功能
  15. 如何在电脑/手机上将JPEG图片保存为PDF?
  16. Metis异常检测算法源码概要
  17. PayPal/Stripe/Square轮询收单系统 stripe paymentlink支付模式
  18. 有宠商城Android端
  19. 多線程之WaitFor
  20. 一篇不错的文章--项目开发经验谈之:设计失败的挫败感

热门文章

  1. [201903][Spring Boot 编程思想][核心篇][小马哥][著]
  2. mongodb——查询文档内部属性以及数组
  3. 这 7个 AI 写作助手,太实用了
  4. 怎么开发一个自助打印机小程序
  5. 5分钟商学院-个人篇-逻辑思维
  6. 索尼笔记本怎么从u盘启动
  7. 第二十六讲项目1-投票表决器
  8. 前端css解决背景图、图片自适应的问题【通用】
  9. Python3实现批量重命名文件(获取文件名、后缀名)
  10. [思索] 我追捧的偶像 -- 王垠