无定义。

顺便用这个问题来回答一下这个问题(linux/sem.h和sys/sem.h有什么区别? - in nek 的回答)下有人问我的问题:什么叫基于语义来进行编程?

其实这句话完整说应该是:要基于“自然语义”来进行编程。

我是软件架构师,我考虑的问题大部分时候是让自己的软件活得更久。软件面对各种各样的变化,软件换场景了,硬件升级了,操作系统升级了,换操作系统类型了,换开发库了,换数据库了……不一而足,怎么样让软件活下来?我的方法是,“基于语义进行编程”。

语义是一句话的自然的,表面的意思。大部分软件,都是解决人的问题,所以它的接口发展受人的思维所控制,这种接口上的控制,进一步会控制到内部的数据流,脱离人的思维去构造人脑逻辑之外的计算机逻辑,会增加接口发展的风险,会很快造成构架的破坏。

另一方面说,现在的计算机编程,通常都是要采用敏捷迭代的方式完成的。所以,一个定义(变量,函数)的含义,是这个定义的名称(以及其自然语义)决定的,而不是这个定义当前如何使用决定的。我的log函数现在实现成了printf,不表示你可以用printf来代替log,因为这个函数未来可以变更为写入数据库。

推广开去,比如现实中,一个网卡有一个mac,有两个mac的叫聚合,在OS的自然定义中,人们认为两个mac聚合是两张网卡的聚合。但你非要作死,在定义网卡的时候,非要用一个数组来放多个mac,后面配合的时候,网卡子系统不修理你,外部互联的子系统也会修理你,因为没有人会按你这样的考虑来构造其他系统,你就死得很快。

你要写日志,就用log()函数,你要打印输出,就用printf函数,你不能用printf来写日志,我知道你也能跑,但printf的语义不是日志,到你真要打印的时候,这两个函数会给你带来麻烦,你更不要用assert()等来当作日志输出(临时程序我不管,我说的是严肃的程序),这就叫基于语义编程,而不是基于逻辑(能跑)来编程。

有人问我malloc(0)返回什么,我说你去查手册,他说,他不用查,他试过了,是一个非0的指针,我说So what?你在几个平台上验证过?你看看man,人家是这样说的:

If size is 0, then malloc() returns either NULL, or a unique pointer value that can later be successfully passed to free()

你要基于这个来写程序,这样的程序才能活得长远。

理解这一点,也许更容易理解我前面的“无定义”是什么意思了。

python以追加方式打开文件 线程安全吗_多线程追加文件,不加锁,会出现什么情况 ?...相关推荐

  1. python以读写方式打开文件_python读写文件操作详细介绍【传智播客】

    Python文件的打开或创建可以使用函数open().该函数可以指定处理模式,设置打开的文件为只读.只写或可读写状态.open()的声明如下所示. open(file, mode='r', buffe ...

  2. python以读写方式打开文件_python 文件读写with open模式r,r+,w,w+,a,a+的区别

    原博文 2020-07-31 17:49 − 模式可做操作若文件不存在是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追 ...

  3. python以只读方式打开文本文件的参数_open(test.txt, 'r+')是以只读模式打开test.txt文件_学小易找答案...

    [填空题]动机:动机是指个体通过艰苦努力实现_____的愿望,而这种努力又能满足____的某种需要. [单选题]觉新曾经对( )很感兴趣,打算毕业后到有名的大学里去继续研究. [单选题]车票内金额不足 ...

  4. python以只读方式打开文本文件的参数_python:文件操作

    打开文件时模式字符的含义: 字符 含义 "r" 以只读方式打开(默认) "w" 以只写方式打开,若要打开的文件存在,则删除原文件内容.如果不存在,则创建改文件并 ...

  5. python以读写方式打开文件_python文件读写

    打开文件 file_object = open(file_name, access_mode='r', buffering=-1) 功能:打开一个文件,返回一个文件对象. 参数:file_name 文 ...

  6. python以写模式打开录入_Python的学习(六)—-文件和输入输出处理 | 学步园

    Python中的文件和输入输出处理 1. 文件对象的概念 文件对象不仅可以用来访问普通的磁盘文件,还可以访问任何其他类型抽象层面上的文件. 例如实时地"打开一个URL"来读取Web ...

  7. 如何打开sln文件并显示窗口_在.sln文件中设置Visual Studio默认启动项目的简单方法...

    昨天在一台电脑上用git新签出一个项目进行build,却出现一堆编译错误,而在原先的开发机上build无任何错误.对比分析后发现,开发机上VS的启动项目(startup project)与这台电脑上的 ...

  8. catia保存成stp文件时部件丢失_在线教学文件同步神器——坚果云

    教师在线办公期间,有教研组.备课组资源共享与协同办公的需求.在此推荐一款应用--坚果云[1],可以实现市面上绝大部分设备间的文件共享和同步,极高地提高在文件管理方面的效率. 推荐指数:★★★★★ ↓教 ...

  9. java复制文件拒绝访问权限_无法复制文件,拒绝访问路径

    回答(30) 2 years ago 我通过从bin文件夹中删除有争议的文件并重建项目来解决这个问题 . 2 years ago 只需确保该文件夹不是只读文件并重建解决方案 2 years ago 我 ...

最新文章

  1. monkey学习总结笔记
  2. python程序员脱单攻略_作为一只程序员,如何脱单?
  3. BookStack在线文档管理系统 v2.9
  4. 在ASP.NET中对于SESSION的简略说明
  5. [转]在SSIS中,使用“包配置”时的常见错误与解析
  6. [PyTorch] 深度学习框架PyTorch中的概念和函数
  7. Cisco交换机下载IOS
  8. js中最重要的是:原型对象 普通对象和函数对象 构造函数
  9. 深度思考:广州互联网气氛为何远远落后于北京
  10. 实例教学!12种透明背景的万能设计方法
  11. Error: Incorrect contents fetched, please reload.
  12. 移动最快apn服务器,中国移动修改APN为CMTDS提高4G网速
  13. String字符串的相关语法及JPI
  14. 好家伙,这几个隐藏功能,太香了
  15. 利用Grafana为你的Loki添加告警
  16. 小蓝本 第一本 《因式分解技巧》 第七章 综合运用 笔记 (第七天)
  17. VDI 虚拟桌面基础架构(VDI,Virtual Desktop Infrastructure)
  18. Android备份到电脑,用 TWRP「一键 Ghost」你的 Android 手机,还能备份到电脑
  19. win7我的文档里.android是什么文件夹,[转载]移动Win7用户文件夹(我的文档)默认位置至D盘...
  20. web端自动化测试框架之selenium4从入门到项目实战-3- unittest使用

热门文章

  1. Field 'CID' doesn't have a default value
  2. 程序员面试题之从字节截断谈起
  3. 剔除数组中的相同元素
  4. 验证文件路径的正则表达式(支持网络路径)
  5. mac android mtp,果粉也用安卓!MacBook连接安卓机最好的工具
  6. graphql java demo_GraphQL学习,Java简单实现
  7. PAT 乙级1005
  8. python多大学_用Python看看你的大学A4纸还剩多少!
  9. 层间距离对ct图像的影响_CT专业知识掌握基础、了解原理
  10. 跨越DDD从理论到工程落地的鸿沟