未来的编程将会是什么样子?从面向对象转为面向业务数据!!

自 20 世纪 40 年代以来,编程并没有发生根本性的变化。大多数语言仍然遵循冯·诺依曼范式:编写顺序指令并修改内存中的数据。我们来看一个简单的例子:

ini 复制代码
total = 0
for number in range(1, 6):
    total += number
print(total)  # Outputs: 15

是不是很简单,很熟悉?但有一个问题。现代计算机的速度不再像以前那么快了。相反,它们拥有越来越多的核心,而我们传统的编程模型并不擅长高效地处理多核。

多核挑战

我们尝试使用并发编程工具。以 Go 的 goroutines 为例:

go 复制代码
package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    numbers := []int{1, 2, 3, 4, 5}

    for _, n := range numbers {
        wg.Add(1)
        go func(x int) {
            defer wg.Done()
            fmt.Printf("Processing %d\n", x)
        }(n)
    }

    wg.Wait()
    fmt.Println("All done!")
}

这些解决方案确实有效,但它们也带来了诸如竞争条件、死锁和复杂的状态管理等问题。我们构建的范式并非为并行执行而设计,而且控制流语言本身就难以可视化。

新的解题思路:数据流编程

如果我们能用不同的方式编写程序会怎么样?想象一下,把你的程序描述成一个由独立节点组成的网络,这些节点之间相互传递数据------没有共享状态,只有数据在系统中流动:

  • 默认情况下,所有内容并行运行
  • 数据不可变,可防止竞争条件
  • 程序结构反映数据流
  • 跨多核自然扩展

进入 Nevalang

Nevalang正是这样做的。它是一门围绕数据流构建的现代语言,它将程序视为消息传递图,而不是指令序列:

arduino 复制代码
import { fmt }

def Main(start any) (stop any) {
    for_print For{Print}
    wait Wait
    ---
    :start -> 1..5 -> for_print -> wait -> :stop
}

这里我们定义了一个Main接收start信号和发送stop信号的组件。它有两个节点:(for_print一个For包含Print的节点)和wait。启动时,它会创建一个包含 1-5 的数字流,通过 打印每个数字for_print,等待完成,然后发送stop信号。

可视化:

Nevalang 代表了编程的根本转变,它采用了一种自然适合并行性和可视化的范式,而不是对抗传统的编程限制。

在 GitHub 上试用 Nevalang

编程的未来或许与过去截然不同。随着硬件的不断发展,我们的编程模型也需要随之演进。Nevalang 为我们展现了这种未来令人兴奋的可能性。

提示:Nevalang 目前处于开发阶段,尚未达到生产环境要求。他们正在寻找贡献者和早期采用者。感兴趣的小伙伴,快去加入吧!


这是一个由一小群爱好者维护的雄心勃勃的项目。您的加入将体现您的兴趣,并激励我们继续前行。


相关推荐
ly768916 分钟前
MySQL 自增主键耗尽:从原理到应急恢复
数据库·mysql·innodb·故障恢复·自增主键·主键设计
文人sec24 分钟前
MySQL主库出问题了,从库怎么办?备库为什么会延迟好几个小时?
android·数据库·mysql
砚底藏山河1 小时前
【量化纯GET实战 #23】多股票相关性:用收益率看板块联动
java·数据库·python·金融·数据分析
Java小白笔记2 小时前
MySQL 8.0 常用内置函数用例
数据库·mysql·mybatis
ZGG0032 小时前
MySQL 索引详解:B+ 树、聚簇索引与最左前缀
java·数据库·mysql
她的男孩2 小时前
一个开源低代码框架的协作 SPI 是怎么设计的 ForgeAdmin 拆解 + 实战接入新平台
后端·算法·架构
勿忘,瞬间2 小时前
Mybatis高阶
java·数据库·mybatis
智碳能碳管理平台3 小时前
企业能碳管理系统的月度锁账、防篡改与留痕怎么架构
架构·github·能碳管理系统·智碳能碳管理平台·企业能碳管理系统·绿色工厂申报saas·能碳管理平台
运维行者_3 小时前
ISP 企业级带宽计费怎么做?网络流量计费的 6 大核心能力
运维·服务器·网络·数据库·支持向量机·接口隔离原则
奇树谦3 小时前
PCB生产制造全流程详解:从开料、钻孔、沉铜到检测、包装
网络·数据库·制造