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

news2024/9/23 19:23:48

目录

    • 类 C 语言 C3 是一种进化,而不是一场革命
      • C3 编程语言特征
      • C3 设计原则
      • 安装 C3 编程语言
      • 第一个 C3 项目
    • 趣文:find + mkdir 是图灵完备

类 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、 iffor、 f o r e a c h 、 foreach、 foreachswitch)和属性。
  5. 一流 SIMD 向量类型 :
    C3 支持向量类型的声明,向量与数组类似,但具有附加功能。
  6. 使用切片安全地访问数组 :
    C3 提供内置数组、切片数组
  7. 除上述特征外还有 合约式设计、零开销错误处理、结构体子类型、易于使用的内联汇编、跨平台标准库,包括动态容器和字符串、LLVM 后端 等。详情参考官方说明

C3 设计原则

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

安装 C3 编程语言

  • C3 提供各平台预编译二进制包。可以直接到 C3 官网下载界面 或者 C3 github release 下载对应系统的二进制包并解压即可。更多安装方式请查看 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 最新用法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1966594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024最新全开源付费进群系统源码二开修复版 支持易支付

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 全开源付费进群系统源码&#xff0c;开源无加密无授权&#xff0c;优化电脑端访问布局&#xff0c;支持dai理&#xff0c;对接易支付通道&#xff0c;dai理可以配置自己易支付接口&am…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第四篇 嵌入式Linux系统移植篇-第七十二章 内核配置屏幕驱动

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

ChatGPT:数据库不符合第二范式示例

ChatGPT&#xff1a;数据库不符合第二范式示例 这张图片为什么不符合数据库第二范式 这个表格不符合数据库第二范式&#xff08;2NF&#xff09;的原因如下&#xff1a; 1. 数据库第二范式&#xff08;2NF&#xff09;定义 第二范式要求一个数据库表格在满足第一范式&#xf…

【Hot100】LeetCode—169. 多数元素

目录 题目1- 思路2- 实现⭐169. 多数元素——题解思路 3- ACM 实现 题目 原题连接&#xff1a;169. 多数元素 1- 思路 定义两个变量 一个是 count&#xff1a;维护当前元素的出现次数一个是 ret &#xff1a;维护当前元素 思路 遍历整个数组**①如果 count 0 **&#xff…

了解对称加密与密钥协商技术

1.对称加密算法 加密的理论基础是替代和换位。替代主要用于扰乱&#xff0c;使用不同的位、字符或字符分组来替换原来的位、字符或字符分组。换位主要用于扩散&#xff0c;并不使用不同的文本来替换原来的文本&#xff0c;而是对原有的值进行置换&#xff0c;即重新排列原来的位…

Django开发企业官网

1.在本地创建一个website的文件夹&#xff0c;在vc里面打开文件夹 2.创建虚拟环境和安装django 终端执行命令 python -m venv venv&#xff08;创建一个虚拟文件名字叫venv&#xff09; venv\Scripts\activate(启动虚拟环境) pip install django&#xff08;安装django&#x…

CRC的手算过程——MODBUS

软件计算结果&#xff1a; 原理参考下面的文章&#xff1a; https://www.cnblogs.com/esestt/archive/2007/08/09/848856.html https://blog.csdn.net/weixin_44256803/article/details/105805628 https://blog.csdn.net/d_leo/article/details/73572373 手算过程如下&#x…

Day27 | 贪心算法 452. 用最少数量的箭引爆气球 435. 无重叠区间 763.划分字母区间

语言 Java 452. 用最少数量的箭引爆气球 用最少数量的箭引爆气球 题目 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐…

MATLAB(3)训练模型

前言 在MATLAB中训练模型通常涉及到选择一个合适的机器学习算法或深度学习框架&#xff0c;并准备相应的数据集。这里我将给出一个使用MATLAB的机器学习工具箱来训练一个简单的分类模型的示例代码。我们将使用逻辑回归&#xff08;Logistic Regression&#xff09;来分类一个简…

OpenCV 图像处理 轮廓检测基本原理

文章目录 基本原理关键函数和参数注意事项 示例代码示例效果代码详解findContours 函数原型findContours函数变体 基本原理 轮廓发现是图像处理中的一个重要步骤&#xff0c;用于检测物体的边界和形状。 图像预处理&#xff1a; 轮廓发现通常在灰度图像上进行。因此&#xff0…

科研经历——8/1——第一次审稿教程

文章目录 引言正文审稿通知审核论文界面Add reviewRequest view 评审结果 总结 引言 头一次被ICONIP选做审稿人&#xff0c;我还是听懵的&#xff0c;毕竟我也是主要的提交者之一&#xff0c;居然让我审人家的的文章&#xff0c;还是挺懵的&#xff01;不过&#xff0c;还是很…

【吊打面试官系列-Dubbo面试题】Dubbo 和 Dubbox 之间的区别?

大家好&#xff0c;我是锋哥。今天分享关于 【Dubbo 和 Dubbox 之间的区别&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Dubbo 和 Dubbox 之间的区别&#xff1f; Dubbo 和 Dubbox 是两个在 Java 开发领域中使用的 RPC 框架。它们之间的关系比较复杂&#x…

HT for Web 轻松构建组态拓扑结构

在现代的数据可视化和网络管理中&#xff0c;拓扑图是一种非常重要的工具。它可以直观地展示节点(Node)和节点之间的关系(Edge)。无论是在 2D 还是 3D 环境中&#xff0c;拓扑图都可以帮助我们更好地理解和管理复杂的系统。 然而&#xff0c;由于这些拓扑图通常极为复杂&#…

JAVA(多线程)day 7.31

ok了家人们今天学习多线程&#xff0c; 一.多线程相关概念 1.1 并行与并发 并行&#xff1a;在同一时刻&#xff0c;有多个任务在多个 CPU 上同时执行。 并发&#xff1a;在同一时刻&#xff0c;有多个任务在单个 CPU 上交替执行。 1.2 多线程 cpu同时执行多个程序。 好处…

Mix、Lab是一种生活状态#Mixlab夏日T恤

shadow&#xff1a;这款怎么样&#xff1f; 混合实验家 千*然 15:53&#xff1a; " 夸夸&#xff0c;帅爆 logo很有细胞活力啊&#xff01; 再开个白款&#xff0c;夏天凉快&#xff01;大T&#xff0c;冲&#xff01; ” shadow: 往常都是孵化社区成员的项目&#xff0c…

非线性面板数据实证模型及 Stata 具体操作步骤

目录 一、引言 二、文献综述 三、理论原理 四、实证模型 五、稳健性检验 六、程序代码及解释 一、引言 在当今的经济和社会研究中&#xff0c;非线性面板数据模型的应用日益广泛。这类模型能够更好地捕捉数据中的复杂关系&#xff0c;为研究者提供更深入和准确的分析结果。…

json-server(快速搭建本地 RESTful API 的工具)

json-server 是什么? Json-server 是一个零代码快速搭建本地 RESTful API 的工具。它使用 JSON 文件作为数据源,并提供了一组简单的路由和端点,可以模拟后端服务器的行为。 github地址:GitHub - typicode/json-server: Get a full fake REST API with zero coding in less…

VS code-解决云服务器重装镜像后vs code无法连接的问题

问题描述&#xff1a;从centos换到ubantu后&#xff0c;xshell能直接连接上&#xff08;没有更改ssh配置信息&#xff09;&#xff0c;但是vscode连不上&#xff08;配置文件因为端口号和ip是一样的&#xff0c;也没法改&#xff09; 解决办法&#xff1a; 找到vs code config…

从DevOps到DevSecOps是怎样之中转变?

DevSecOps是DevOps实践的自然演进&#xff0c;其重点是将安全集成到软件开发和部署流程中。在DevOps和DevSecOps发展之前&#xff0c;企业通常在在软件部署前进行集中的安全测试&#xff0c;导致安全介入严重滞后&#xff0c;漏洞分风险无法及时修复&#xff0c;影响上线交付。…

MGTR-250M 以电折水设备-助力取水计量监测体系建设

一体式以电折水智能终端通过高度集成化设计&#xff0c;巧妙融合了空气开关、开关电源、隔离变压器、接触器、智能电表、RTU、4G通信模块、定位模块等八大核心功能&#xff0c;不仅展现了经济高效和智能运维的双重优势&#xff0c;更以其超强的安全防护能力确保了使用的高度安全…