重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C、Java、Python、Rust、Go……数不过来的各种语言已经让程序员们眼花缭乱了,现在冒出了的K语言是何方神圣?
创新互联专注于贵德企业网站建设,响应式网站开发,商城网站建设。贵德网站建设公司,为贵德等地区提供建站服务。全流程按需定制,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
根据官方描述:K 是一个专注于效率的开源编程语言,它可以帮你轻松构建跨平台软件。通过精心设计的语法规则,这门语言可以有效降低读写负担,让你能够把真正的注意力放在解决问题上。
目前 K 支持编译到 C#/Go/JavaScript/Kotlin
· 容易分辨、现代化的语法。(作者表示借鉴了Go语言的不少语法)
· 自动管理内存。
· 泛型。
· 多范式编程。
· 跨平台。
· Unicode。
· 多后端,支持 C#/Go/JavaScript/Kotlin。
· 即将支持LLVM。
其实这个项目最早发布于2018年3月份,只不过版本号一直在beta中。
but!该语言的开发者是国人!!中国平安的区块链架构师。
你可以在某乎找到作者本人
根据作者的回答,k语言的语法并非向自然语言靠拢,而是向数学语言靠拢。所以语法上会用符号代替其他语言常见的"关键词",举个例子。
布尔判断,在常见的语言中是这样的:
var B = false;if(B) {......} else {......}
k语言的表现形式是这样的:
B: false? B {......} _ {......}
我们来看一下官方的while循环示例代码:
用符号的形式,省略了很多关键词的输入。
这种形式虽然简洁,不过,仁者见仁,大量的符号可能削弱了代码的可读性。
作者很用心的在编写这门语言,从他的开源项目中,可以看到很多配套内容了。
例如如何用k语言实现LeetCode,以及vscode中k语言插件等等。
另外,编程语言不重要,重要的还是程序员自身解决问题的思路和能力。所以不要看到有新语言就害怕学习,能力够用,就不需要切换语言。
TinyGo是一个为微控制器、WebAssembly(Wasm)和命令行工具等小型场景设计的Go语言编译器。TinyGo重用了Go语言工具和LLVM使用的库,以编译用Go语言编写的程序。目前,该项目在GitHub上已经积累了10.1k的Star。
如下为一个示例程序,当运行在任何支持的带板载LED的主板上时,则会点亮内置LED。
上述程序可以在单片机、Adafruit ItsyBitsy M0微控制器或任何支持的带内置LED的板上进行编译和不需要修改的运行,只要设置正确的TinyGo编译器目标即可。例如,设置如下目标可以编译和点亮 单片机。
项目概述
TinyGo项目旨在将Go语言引入到具有单进程或核心的微控制器和小系统。TinyGo类似于emgo,但主要的区别在于作者想要保留Go内存模型。另一个区别在于TinyGo在内部使用LLVM,因而可以获得更小更高效的代码以及更高的灵活性。
创建TinyGo项目的初衷是,如果Python可以在微控制器上运行,Go语言当然也应该能够在更低级微设备上运行。
支持设备
你可以为微控制器、WebAssembly和Linux编译TinyGo程序。目前,TinyGo支持以下85种微处理器板。
更多技术细节请参阅原项目。
go语言的字符串是UTF-8编码的、不可改变的字节序列。
要修改字符串,只能以原串为基础,创建一个新串。下面的图中是一个参考示例,提供了以原串为蓝本,创建新串的两种方法。
代码
输出
应用于搭建 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。
Go 是谷歌的编程语言,而不是社区的。在这位博主看来,虽然 Go 语言拥有一个贡献者社区,但是它并不是社区的项目,只是谷歌的一个项目。所以只要是谷歌反对的东西,没有人可以把这个东西加到 Go 语言中。
InfoQ 记者也第一时间联系了《Go 并发编程实战》作者、前轻松筹大数据负责人郝林,他的观点是:Go 语言是大家的,只有伪爱好者才会谈舍弃。在郝林看来,Go 语言官方团队在谷歌内部实属一个很小的团队,但其成员几乎个个都是技术大神。
很多社区成员为 Go 语言贡献了很多重要并且有价值的东西,这些从贡献者和提交者的多样性就可以看出来。但谷歌作为整个 Go 社区的守门人,它独自决定什么东西可以被 Go 语言接受,什么不能被接受。
在 Go 语言模块系统上发生的一件事情,谷歌 Go 语言核心团队的一名成员放弃了由外部 Go 社区开发的一个模块系统,因为它使用了另一种不同的模型。Go 语言拥有一个贡献者社区,但是它并不是一个社区项目。