乘风龙王

Results 9 comments of 乘风龙王

p4语言:https://p4.org https://github.com/p4lang 其编译器用c++写的,编译器中使用的字符类型是`char`,应该不支持统一码标识符。 未测试。

中文命名最大的问题并不是区分xxx,也不是来自于中文本身的语法缺陷。既然中文命名要应用于中文编程,就要解决最严重的重名问题。当全局变量、常量、类成员变量、函数参数、函数局部变量重名的时候,必须加点东西以示区分。类、结构、接口等复合类型也是同样道理。名词单复数也一样。所谓的区分xxx其实都是在为解决重名而服务的。自然语言没有能力解决编程语言中的重名问题,所以才会有各种各样的命名法。英文编程里的各种大小写下划线命名法在区分xxx的同时也解决了重名问题。 而问题的解决方法上面几楼都已经提到了,要么用中文前后缀区分,要么用英文前后缀区分。我个人比较赞同用英文缩写区分,因为我一开始在非中文编程语言尝试中文编程的时候就想到用英文缩写。用英文缩写最大的优点就是可以跟国际接轨,什么C类I接口g全局变量m成员变量都是学微软的那一套,省去了自己从零发明一套命名法的麻烦。 现在看了一些纯中文命名的代码,再结合我以前的经验,感觉纯中文命名最大的问题就是为了区分不同的类型/变量,要在名称里额外添加很多字,字数太多显得啰嗦,看不到重点,代码可读性差,一堆密密麻麻的方块字聚在一起容易引起视觉疲劳。而且纯中文代码在没有语法高亮支持的情况下阅读体验非常糟糕。半中半英可以适当刺激视觉,在阅读代码时还可以忽略的英文部分(或者一扫而过),只看中文部分(只看重点),极大地提高阅读效率。 我认为好的中文命名法,必须具备高输入效率、高可读性、快速取名能力。输入效率的取决于名称长度和输入法的好坏,纯中文的话汉字数量变多会增加键盘击键数,延长打字时间;可读性由命名风格决定,好的命名风格使代码容易阅读;快速取名能力保证了什么名称都能随手拈来,给名称做词性限制反而束手束脚想不出好名称,中文命名好坏快慢更多的取决于个人的语文能力。 顺便说一下,顶楼的实践一文其实是我写的。后来我根据多年的编程经验又写了第二版:https://blog.csdn.net/acebdo/article/details/80554791 这篇文章主要通过一些硬性规定的英文前缀来区分不同分类,每个名称只要1~2个英文字母作为前缀,能在任何场合区分单复数,兼容国际上的一些命名法。我觉得我的这篇文章差不多解决了面向过程编程、面向对象编程、函数式编程等不同编程范式的重名问题。

@absente 我也觉得我的的方案强制加前缀确实很啰嗦,不过代码写多了之后看起来会有一种排版工整的感觉。不知道你们看了我的代码后是什么感觉。 看了你的方案,我也提几个意见: * 因为我已经习惯了用一个字母代表一个单词的缩写,而你这种1~3个字母代表一个单词的方法让我感觉很凌乱。 * 标题的《Python变量命名规范》说明它不具备可以应用于不同编程语言的普遍适用性。 * 我的方案是根据重名频率和使用频率这两方面考虑的,在大部分情况下不会重名时,我会直接收手不会继续细分下去。而你的方案里有一些缩写是不常用的,甚至把指针这种Python里几乎不会出现的东西也添加进去。 * 缩写有冲突,你的方案里的t即代表元祖,也代表列表尾,h也有头和句柄的双重含义。这样子的代码不会引发歧义吗? 谢谢 @nobodxbodon 的邀请,不过我开发的代码库是给我自己用的,发布到github只是为了跟大家分享。重复造轮子是编程界大忌,用中文编程造一些轮子更多的只是推广作用,实际应用价值很小。还不如做点实际项目来得实在。

@nobodxbodon # 信息技术术语国家标准 GB/T 5271.1-2000 信息技术 词汇 第1部分:基本术语 GB/T 5271.2-1988 数据处理词汇 02部分:算术和逻辑运算 GB/T 5271.3-2008 信息技术 词汇 第3部分:设备技术 GB/T 5271.4-2000 信息技术 词汇 第4部分:数据的组织 GB/T 5271.5-2008 信息技术 词汇 第5部分:数据的表示法 GB/T 5271.6-2000 信息技术...

网络在大部分人看来只是电脑插网线上网、手机连WIFI上网,就没了。很容易想得跟拧水龙头出水一样简单,然而网络实际上是很复杂的。 比如纯理论的内容可以出一系列比字典还厚的书: ![o1cn011m9jvmizzjluu0u_ 2455124912 jpg_430x430q90](https://user-images.githubusercontent.com/17311509/51071288-97864300-1689-11e9-9393-0b6d49c9f8bd.jpg) 如果是实际操作,可以出更多的书: ![tb21hlzdxzqk1rjszfvxxcb7vxa_ 708307132-0-item_pic jpg_430x430q90](https://user-images.githubusercontent.com/17311509/51071292-b1c02100-1689-11e9-8dc6-50668f446aee.jpg) 这只是路由方面的内容,其他的还有交换、无线、语音、安全、等。 上面的书籍也只是简单的配置、排错手册,如果要具体问题具体分析,还可以出书: ![tb2clegaaowbunjssppxxxpgpxa_ 2145487409-0-item_pic jpg_430x430q90](https://user-images.githubusercontent.com/17311509/51071324-27c48800-168a-11e9-8a4c-439f3d49c2d3.jpg) 一个路由协议的排错内容一本书,谁受得了。 如果真的要用到实际生产环境,要看网络规模。如果是网吧环境,一个人就能管好整个网吧网络,不需要用这工具。如果是运营商级别的,我一个人永远也写不完。我目前管着一个大型企业的一堆乱七八糟网,最多写一个只能看看的自动巡检工具,没法写出自动配置、排错的功能。

用的最多的日常操作就是查看设备信息、检查设备状态,而这些操作已经有网管软件做出来了。现有的网管软件使用简单网络管理协议(SNMP)来控制网络设备,这种协议的缺点就是能读写的内容取决于网络设备的开放程度,不够开放的话只能读到设备型号、接口状态、CPU使用率等基本信息,以及控制接口开关等常见操作。而我的脚本采用仿人工敲命令的方式来控制网络设备,理论上只要拥有最高权限,什么操作都能实现。 要说使用价值,能取代SNMP做一些SNMP做不到的事情就是这个脚本最有价值的地方。 至于常用操作,我已经写了一些实现了。 我打算在月底继续发表文章,内容就写如何获取网络设备的各种信息,以及如何解析字符串分析数据。

> 我是看了你喷forward过来的,现在我急需要用一个工具落地对网络设备批量命令的场景,就像ansible对linux。请问到底选哪个? 看你的需求了。如果想要类似ansible的工具,可以试试[nornir](https://github.com/nornir-automation/nornir)。如果想低级一点,手动发送命令交互的那种,可以试试[netmiko](https://github.com/ktbyers/netmiko)。 如果你想忽略网络设备差异,想要相同的代码作用于所有的网络设备,可以试试我写的[网络设备脚本](https://github.com/cflw/network_device_script)。不过我写的玩意不是很成熟,玩玩还行,大规模刷配置就算了。

目前存在的问题: # 重构过于频繁,难以全面测试 网络设备脚本一直做着大大小小的重构。随着代码越写越多,每次重构不可能兼顾到所有的代码,必然会出现部分代码不能运行的情况。而且网络设备脚本的测试极度依赖于真实设备,很难保证所有代码都能正常运行。 # 连接层很难跨平台,依赖的第三方库太多 网络设备脚本根据不同的连接方式使用不同的库,有些库只能用于特定操作系统,全部安装的话跨平台是个问题。用户并不会用到所有的连接方式,不需要全部安装。只能根据用户意愿让他们自己手动安装想要的连接库。 # 没有文档 没时间写文档

> 嗯,不知有没有可能提取出一部分比较稳定、易于测试又有普遍适用意义的功能... 也许可行,不过我最近都很忙,工作时间没空摸鱼写代码,发表文章的频率也降低了不少,发布到pypi什么的过一段时间再试试吧。