首页 > 其他分享 >[240801] 类 C 语言 C3 是一种进化,而不是一场革命 | 趣文: find + mkdir 是图灵完备

[240801] 类 C 语言 C3 是一种进化,而不是一场革命 | 趣文: find + mkdir 是图灵完备

时间:2024-08-01 15:58:59浏览次数:18  
标签:mkdir 趣文 240801 hello 模块 C3 world find

目录

类 C 语言 C3 是一种进化,而不是一场革命

C3 是基于 C 的编程语言,它是 C 的一种演变,其目标是在尽可能保留 C 相同语法情况下进行改进。

C3 编程语言特征

  1. 完全兼容 C ABI :
    C3 完全与 C ABI 兼容,用户可以轻松的在同一项目中混合使用 C 和 C3 两种编程语言。
  2. 模块系统 :
    C3 将函数、类型、变量和宏分组到称为模块的命名空间中。在构建时,任何 C3 文件都必须以 module 关键字开头,指定模块名。编译单个文件时,不需要指定模块,模块名假定为文件名,转换为小写,并将任何无效字符替换为下划线"_"。
  3. 泛型模块 :
    泛型模块是参数化模块,允许为任意类型提供功能。
  4. 语义宏系统 :
    C3 的宏功能涵盖了多种结构:宏(在调用时以 @ 前缀)、泛型函数、泛型模块、编译时变量(以 $ 前缀)、宏编译时执行(使用 i f 、 if、 if、for、 f o r e a c h 、 foreach、 foreach、switch)和属性。
  5. 一流 SIMD 向量类型 :
    C3 支持向量类型的声明,向量与数组类似,但具有附加功能。
  6. 使用切片安全地访问数组 :
    C3 提供内置数组、切片数组
  7. 除上述特征外还有 合约式设计、零开销错误处理、结构体子类型、易于使用的内联汇编、跨平台标准库,包括动态容器和字符串、LLVM 后端 等。详情参考官方说明

C3 设计原则

  • 过程式“完成任务”类型的语言。
  • 尽量接近 C,只改动真正必要的部分。
  • 兼容 C ABI,且与 C 有出色的集成。
  • C 程序员应该能轻松学习 C3。
  • 数据是惰性的。
  • 避免“过度的创意”和“多即是好”的谬论。
  • 在有很大价值的地方引入一些更高层次的便利性。

安装 C3 编程语言

第一个 C3 项目

  1. 创建一个新项目,目录结构如图所示。目录具体作用参考 C3 官网
c3c init <project-name>

在这里插入图片描述

  1. 新建文件 hello_world.c3 编写第一个程序 “Hello World”
module hello_world;
import std::io;

fn void main()
{
    io::printn("Hello, World!");
}
  1. 编译并运行代码
c3c compile hello_world.c3
./hello_world
  1. 运行结果: 终端将输出 “Hello, World”
$ c3c compile-run hello_world.c3
> Program linked to executable 'hello_world'.
> Launching hello_world...
> Hello, World

来源:

  • https://c3-lang.org/
  • https://github.com/c3lang/c3c

趣文:find + mkdir 是图灵完备

文章证明了仅使用 GNU 的 findmkdir 命令的系统是图灵完备的。

证明思路:

  1. 构造循环: 利用 find 递归查找目录并使用 mkdir 创建子目录,实现无限循环或有限次数的循环。
  2. 实现 FizzBuzz: 利用 find-regex 选项过滤文件名,结合循环实现 FizzBuzz 问题,展示条件分支能力。
  3. 实现 Rule 110: 将一维细胞自动机 Rule 110 的状态编码为文件路径,利用 findmkdir 模拟状态演化规则,证明其图灵完备性。

结论:

findmkdir 的组合可以实现循环、条件分支和任意复杂度的计算,满足图灵完备性的要求。

其他:

  • 代码实现依赖于 GNU 工具的特定行为,可能不适用于其他版本。
  • 文件路径长度限制可能影响可计算问题的规模,但文中代码已尽量避免直接传递过长的文件路径。

来源:

  • https://ogiekako.vercel.app/blog/find_mkdir_tc

更多内容请查阅 : blog-240801


关注微信官方公众号 : oh my x

获取开源软件和 x-cmd 最新用法

标签:mkdir,趣文,240801,hello,模块,C3,world,find
From: https://blog.csdn.net/edwinjhlee/article/details/140843603

相关文章

  • 每天学一个 Linux 命令(16):mkdir
    命令简介mkdir命令用于创建新目录。创建目录时,如果目录名前没有指定路径,那么就直接在当前工作目录下创建新的目录。如指定了路径,那么就会在这个指定的目录下创建一个新目录。创建目录是需要注意,你所创建的目录名与当前目录下的文件名没有重名,如果有重名,系统会出现如下的提示,无......
  • 创建vue2项目执行npm install -g @vue/cli报错 no such file or directory, mkdir '\
    第一步:查看默认全局安装路径。指令:npmconfiggetprefix我这里路径npmconfiggetprefixE:\NVM\nvm\node_global第二步:不存在这个路劲进行更换npmconfigsetprefix"D:\Develop\nodejs"nodejs里面有node_cachenode_globalnode_modules这些文件npmconfiggetpre......
  • mkdir命令Linux新建文件夹
    大家好,下面给大家介绍一下Linux中新建文件夹的命令,他一般用三种方法,1、先cd进入需要创建文件夹的路径,输入命令mkdirabc这里的abc表示新建的文件夹名称.2、直接在任意目录输入详细路径创建文件夹mkdir/home/bin/abc这里表示在home下的bin文件夹下创建abc文件夹.3.-p,带上这......
  • 云计算02笔记---远程连接服务ssh 以及cp mv rm cd mkdir echo 等Linux常用命令
    远程连接服务ssh语法格式:ssh用户名@ip地址【-p指定端口号】例如:[email protected]默认端口号:22修改端口号:vim/etc/ssh/sshd_config编辑其中一行#port22改为port2222删去了注释符号#且改变端口号拷贝命令cpcp位置1位置2从位置1复制到位置......
  • ls-du-mkdir-touch-ln-cp
    lsls[选项][文件或目录…]-l已长格式显示文件和目录列表ll=ls-l[root@localhostlist]#ll总用量4drwxr-xr-x9rootroot693月2813:58aadrwxr-xr-x9rootroot693月2813:58bbdrwxr-xr-x9rootroot693月2813:58cc-rw-r--r--1......
  • MAC DOCKER Zookeeper 启动报错 mkdir /host_mnt/private/var/db/timezone/tz: operat
    在Mac电脑上启动Zookeeper和kafka的docker容器时报错一开始我的语句是这样的dockerpullwurstmeister/zookeeperdockerrun-d--restart=always--log-driverjson-file--log-optmax-size=100m--log-optmax-file=2--namezookeeper-p2181:2181-v/etc/localtime:/et......
  • Linux 中 mkdir -p选项
     001、测试1[root@pc1test1]#ls[root@pc1test1]#mkdira/b/c##mkdir创建连续目录,失败mkdir:cannotcreatedirectory‘a/b/c’:Nosuchfileordirectory[root@pc1test1]#ls[root@pc1test1]#mkdir-pa/b/c##增加-p选项,表示传递......
  • Error: EPERM: operation not permitted, mkdir 'F:\'——因权限不够报错
      我的报错内容如上图在网上找了很多解决办法,如下:下面的方案我都试过了,最终是成功了方案一:以管理员身份运行 方案二:重新配置环境变量将npm安装的全局模块所在的路径,以及缓存cache的路径放在其他目录中【试了,再执行方案一成功了】因为我没有截图,把我搜到的解决方法链......
  • mkdir
    mkdir用来创建目录补充说明mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下......
  • mkdir命令
    mkdir命令创建目录文件语法格式:mkdir参数目录名常用参数-m创建目录的同时设置权限-v显示执行过程详细信息-p递归创建多级目录-z设置目录安全上下文参考示例建立一个目录文件[root@liuwei~]#mkdirdemo创建一个目录文件并设置700权限,不让除所有主以......