程序代码图片(代码图片居中)

Jakt是一种内存安全的系统编程语言,目前可以转译成C++。该编程语言正在开发当中,其目标是实现内存安全代码可读性、开发者效率、可执行性能和趣味性。

发布没几天,Jakt编程语言在GitHub上已收获了779的Star量。

程序代码图片(代码图片居中)

用法

jakt file.jakt
clang++ -std=c++20 -Iruntime -Wno-user-defined-literals build/file.cpp

内存安全

为了实现内存安全,Jakt编程语言采用了以下策略:

  • 自动引用计数
  • 强型式
  • 边界检查
  • 安全模式中没有原始指针

数学安全

  • 整数溢出(包括signed和unsigned)是一种运行时错误。
  • 数值不会自动强制为int。所有强制转换(cast)都必须是显式的。

对于需要静默整数溢出(silent integer overflow)的情况,一些显式函数可以提供此功能。

代码可读性

更多的时间花在读代码而非写代码上。基于此,Jakt更看重代码的可读性。

函数调用

当调用一个函数时,必须在传递每个参数(argument)时明确指出它的名称。

rect.set_size(width: 640, height: 480)

结构和类

Jakt中主要有两种方式来声明结构,分别是struct和class

struct的基本语法如下所示。

struct Point {
    x: i64
    y: i64
}

Jakt中的structs具有值语义(value semantics):

  • 包含一个struct的变量始终拥有该struct的唯一实例。
  • 复制一个struct实例往往创建一个深层复制。
let a = Point(x: 10, y: 5)
let b = a
// "b" is a deep copy of "a", they do not refer to the same Point

Jakt为structs生成一个默认构造函数,它按名称获取所有字段。对于上面的Point struct,如下代码所示。

Point(x: i64, y: i64)

默认情况下,struct members是公开的。

class包括基本类支持、默认私有的members等。class的基本语法与struct相似,如下所示。

class Size {
    width: i64
    height: i64

    public function area(this) => this.width * this.height
}

Jakt中的类具有引用语义(reference semantics):

  • 复制一个class实例(也称为「对象」)会复制对其的引用。
  • 默认情况下,所有对象都进行引用计数。这样可确保删除对象后不会被访问。

默认情况下,类members是私有的。

项目地址:https://github.com/SerenityOS/jakt#the-jakt-programming-language

开源协议:BSD 2-Clause license

    
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 cloud@ksuyun.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.daxuejiayuan.com/24159.html