新型开发语言的试用感受-仓颉语言发布之际

经常听一些媒体介绍一些新型的开发语言,所以最近心血来潮,安装了几种感受了一些。

先看名气,如ziglang,网址为:Home ⚡Zig Programming Language 号称是可以取代C语言的一门新语言,其实我主要是受下面这篇文章的影响:Zig 编写的“全家桶” JavaScript 运行时 Bun,性能完爆 Node.js 和 Deno - OSCHINA - 中文开源技术交流社区

Bun是一个要取代大名鼎鼎Node.js的东西,Bun牛啊。而Bun是Zig语言编写的。那看看Zig语言。发现Zig语言还没有发正式版本,截至到2024.07.03,其最新版本还是0.13.0。然后想着写一个TCP的服务程序吧,发现如果用Zig语言自己的标准库中的网络发现,不太好精细的控制socket的特性,如果用Zig语言的C语言接口,发现经常要转换数据类型,虽然Zig语言可以直接使用C语言的结构体,但这种结构体与Zig语言原生的结构体是不兼容的,折腾了半天,发现如果真要写一个高性能的网络程序,还是等Zig语言的标准库成熟之后再说吧,当前还是直接用C语言来写比较方便。

从功能上看,Zig语言今后是有可能取代C语言的,但当前还没有到稳定版本,取代的路还漫漫长。

又看看了北欧大神奥丁语言Odin:Overview | Odin Programming Language

看了看Odin语言,其与golang比较类似,但语法比golang更灵活,这个语言感觉是golang的兄弟,不过我没有更仔细的尝试。

然后又看了看号称是比Python快68000倍的mojo语言,发现其现在主攻方向是AI, 其提供的一键安装的脚本只有 Ubuntu 20.04/22.04 LTS,不支持其它发行版本的Linux,感觉有点low啊。这个语言是由 LLVM 和 Swift 编程语言的联合创始人 Chris Lattner 创办的,名气大,易用性需要改进,成熟度还不够。

在github上还发现了另一款号称可以取代Python语言的语言:

GitHub - exaloop/codon: A high-performance, zero-overhead, extensible Python compiler using LLVM

Codon的运行速度确实比Python快很多,但目前Python很多的库还没有移植过来,估计成熟度还不如mojo语言,但一键安装包没有象mojo语言那样只能在Ubuntu 20.04/22.04上安装,只要下载下来通用的Linux安装跑,就可以跑。

对于初学者,不管是mojo还是Codon取代python看起来还有点早,当前还是把Python学好比较实在。

之前一直喜爱lua语言,还发现一块可以编译成独立程序的lua语言:

Nelua

nelua语言与lua一样小巧,这个语言粗粗试了试,感觉比较值得今后进一步研究。

还发现两款号称试better C的语言:

GitHub - c2lang/c2compiler: the c2 programming language

C3 | An evolution, not a revolution

c2lang语言自己编译安装比较顺利。而C3语言只提供了debian12的安装包,自行在Rocky Linux 9下没有编译通过,应该试LLVM的静态链接的问题。C3语言是受C2启发,做了更多的功能,但感觉上C2的功能很多时候也够用了,他们最大的特点是去掉了C语言的头文件,有了包管理的功能,直接导入import 源码文件可以使用别的包中的函数了。

当然还有比较小众的语言NIM语言:

https://nim-lang.org/

目前nim语言的最新版本为2.0.6,nim语言虽然小众,但是已经是一个比较成熟的语言了。

其实还有一个不算是新语言的D语言:

Home - D Programming Language

对于一些想找一个能取代C/C++语言人来说,不如试试D语言。D语言非常成熟,文档也很全。

而谷歌发布号称要取代C++的语言carbon:

https://github.com/carbon-language/carbon-lang

这个语言还处于非常的早期,基本没有试用的必要。

有人问我咋还不说说最近媒体上火的仓颉语言:

华为自研编程语言“仓颉”来了!鸿蒙应用开发新语言,性能优于 Java、Go、Swift_编程语言_Tina_InfoQ精选文章

我的建议是再等等吧,其实很多人都不知到,华为最厉害的不是技术而是营销。目前仓颉语言没有开源,目前的消息是“华为计划将仓颉编程语言开源”。你看看国外的开源开发语言的搞法,都是发布的时候就开源出来了。不要让自己过早的成为小白鼠(当然最后可能还是小白鼠)。

其实国人做的比较好的开源语言是易语言:

易语言汉语编程官方站

易语言开发windows GUI程序是一把好手,只是可惜被杀毒软件厂家给整死了。

其实国人开发的开源语言值得关注的还有go+语言:

GoPlus - The Go+ language for engineering, STEM education, and data science

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初阶数据结构 二叉树常用函数(二)

函数一 求二叉树第K层的节点个数 还是一样 我们假设 K就是等于一 如果说是一个空数的话就返回0 如果说有值的话就返回一个1就可以 假设这个这层既不为空 又不是第K层的话 那么就说明第K层肯定是子树下面 那么就说明是左右子树的第(K-1)层 那么只将…

谷哥剪映助手使用教程-剪映自动化批量视频剪辑软件-批量混剪素材替换

谷哥剪映助手是一款提高视频剪辑效率的软件,很多人问具体怎么使用,我会抽点时间把各个功能拆分开来,一个个介绍。 一、按组精准替换素材 该功能可以按组精确替换图片或视频素材,如果你草稿里只有一个素材需要替换,请…

【算法笔记自学】第 8 章 提高篇(2)——搜索专题

8.1深度优先搜索&#xff08;DFS&#xff09; #include <cstdio>const int MAXN 5; int n, m, maze[MAXN][MAXN]; bool visited[MAXN][MAXN] {false}; int counter 0;const int MAXD 4; int dx[MAXD] {0, 0, 1, -1}; int dy[MAXD] {1, -1, 0, 0};bool isValid(int …

docker中实现多机redis主从集群

redis主从集群是每个使用redis的小伙伴都必需知道的&#xff0c;那如何在docker中快速配置呢&#xff1f;这篇来教你快速上手&#xff0c;跟着复制完全就能用&#xff01;&#xff01; 1. 前置准备 1.1 docker安装 以防有小伙伴没预先安装docker&#xff0c;这里提供安装步骤…

驾校管理系统设计

驾校管理系统设计旨在提高驾校运营效率、学员管理、教练安排、考试预约、财务结算等方面的能力。以下是一个基本的设计框架&#xff0c;包括关键模块和数据表设计&#xff1a; 1. 系统架构设计 前端界面&#xff1a;提供给学员、教练和管理员使用的Web界面或移动应用&#xf…

CGAL计算凸包(OSG进行可视化)

目录 一、什么是凸包 二、运行步骤 1、安装依赖项 2、编译osg库 3、运行代码 4、运行截图 一、什么是凸包 凸包是计算几何中的一个基本概念,用来描述一个点集的最小凸包围形。具体来说,给定一个点集,凸包是包含该点集的最小凸多边形或凸多面体。 二维凸包:在二维平面…

# 三 JS的流程控制和函数

三 JS的流程控制和函数 3.1 JS分支结构 if结构 这里的if结构几乎和JAVA中的一样,需要注意的是 if()中的非空字符串会被认为是trueif()中的非零数字会被认为是true 代码 if(false){// 非空字符串 if判断为trueconsole.log(true) }else{console.log(false) } if(){// 长度为0…

昇思MindSpore学习笔记4-03生成式--Diffusion扩散模型

摘要&#xff1a; 记录昇思MindSpore AI框架使用DDPM模型给图像数据正向逐步添加噪声&#xff0c;反向逐步去除噪声的工作原理和实际使用方法、步骤。 一、概念 1. 扩散模型Diffusion Models DDPM(denoising diffusion probabilistic model) &#xff08;无&#xff09;条件…

数据库系统原理练习 | 作业1-第1章绪论(附答案)

整理自博主本科《数据库系统原理》专业课完成的课后作业&#xff0c;以便各位学习数据库系统概论的小伙伴们参考、学习。 *文中若存在书写不合理的地方&#xff0c;欢迎各位斧正。 专业课本&#xff1a; 目录 一、选择题 二&#xff1a;简答题 三&#xff1a;综合题 一、选择…

【数据库】MySQL基本操作语句

目录 一、SQL语句 1.1 SQL分类 1.2 SQL语言规范 1.3 数据库对象与命名 1.3.1 数据库的组件(对象)&#xff1a; 1.3.2 命名规则&#xff1a; 1.4 SQL语句分类 二、基本命令 2.1 查看帮助信息 2.2 查看支持的字符集 2.3 查看默认使用的字符集 2.4 修改默认字符集 2.5…

Camera Raw:编辑 - 校准

Camera Raw “编辑”模块中的校准 Calibration面板设计初衷是校准相机所采集的 R、G、B 色彩信息&#xff0c;使相机的 RGB 色域范围尽可能与标准 RGB 色域范围重合。不过&#xff0c;现在多用于创意调色。通过调整红、绿、蓝三个原色的色相和饱和度&#xff0c;以及阴影的色调…

HTTP长连接

长连接优点 HTTP为什么要开启长连接呢? 主要是为了节省建立的时间,请求可以复用同一条TCP链路,不用重复进行三握+四挥 如果没有长连接,每次请求都做三握+四挥 如果有长链接,在一个 TCP 连接中可以持续发送多份数据而不会断开连接,即请求可以复用TCP链路 长连接缺点 …

数字信号处理及MATLAB仿真(3)——量化的其他概念

上回书说到AD转换的两个步骤——量化与采样两个步骤。现在更加深入的去了解以下对应的概念。学无止境&#xff0c;要不断地努力才有好的收获。万丈高楼平地起&#xff0c;唯有打好基础&#xff0c;才能踏实前行。 不说了&#xff0c;今天咱们继续说说这两个步骤&#xff0c;首先…

归并排序的实现(递归与非递归)

概念 基本思想&#xff1a;归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使…

一篇文章搞懂qt图形视图框架setRect和setPos函数的意义

setRect()函数 三个坐标系我就不多说了&#xff0c;view原点默认在左上角&#xff0c;scene和item的原点默认都在中心位置。 注意&#xff1a;此函数并不能设置一个item的位置&#xff0c;我的理解是当一个item调用该函数时&#xff0c;会构建一个一个item的坐标系&#xff0c…

秋招提前批面试经验分享(下)

⭐️感谢点开文章&#x1f44b;&#xff0c;欢迎来到我的微信公众号&#xff01;我是恒心&#x1f60a; 一位热爱技术分享的博主。如果觉得本文能帮到您&#xff0c;劳烦点个赞、在看支持一下哈&#x1f44d;&#xff01; ⭐️我叫恒心&#xff0c;一名喜欢书写博客的研究生在读…

vue3+antd 实现点击按钮弹出对话框

格式1&#xff1a;确认对话框 按钮&#xff1a; 点击按钮之后&#xff1a; 完整代码&#xff1a; <template><div><a-button click"showConfirm">Confirm</a-button></div> </template> <script setup> import {Mod…

关于Web开发的详细介绍

目录 一、什么是Web&#xff1f; 二、Web网站的工作流程和开发模式 &#xff08;1&#xff09;简单介绍 &#xff08;2&#xff09;工作流程 1、第一步 2、第二步 &#xff08;3&#xff09;Web网站的开发模式 1、前后端分离开发模式 ​编辑2、混合开发模式 三、开发W…

DPDK源码分析之(1)libmbuf模块

DPDK源码分析之(1)libmbuf模块 Author&#xff1a;OnceDay Date&#xff1a;2024年7月2日 漫漫长路&#xff0c;有人对你笑过嘛… 全系列文档可参考专栏&#xff1a;源码分析_Once-Day的博客-CSDN博客 参考文档&#xff1a; DPDK downloadGetting Started Guide for Linux…

业界数据架构的演变

目录 一、概述 二、业务处理-单体架构 三、业务处理-微服务架构 四、数据分析-大数据Lambda架构 五、数据分析-Kappa架构 六、数据分析-LambdaKappa混合架构 七、湖仓一体架构 一、概述 近年来随着越来越多的大数据技术被开源&#xff0c;例如&#xff1a;HDFS、Spark等…