号称比Python快35000倍的神器Mojo来了,来尝尝鲜

前言

未来很有前途的编程语言:一个是Rust, 另一个可能就是与python语法兼容的Mojo了。Mojo对那些Python开发人员而言,绝对是福音。先来看看Mojo的发明人:

Chris Lattner,这位编译器大神,曾领导了众多大型技术项目。他不仅是 LLVM 项目的主要发起人,还是 Clang 编译器的创作者。同时,他是苹果公司编译器开发团队的首席架构师和苹果新编程语言 Swift 创造者。此外,Chris Lattner 还为 Google Brain 和 TensorFlow 建立和管理了一系列与 AI 相关的编译器、运行时和编程语言团队。

2022 年 1 月,Chris Lattner 和 AI 领域专家 Tim Davis 共同建立了 Modular AI,旨在重建全球 ML 基础设施

而在近日,编译器的大神 Chris Lattner 在社交平台上官宣了一种全新的编程语言:Mojo!注意,搞出这玩意儿的主要目的是重建ML基础设施。说简单点,就是觉得以前的PYTHON性能太差了。

图片

image-20240407212509063

看来,这个性能还真不是盖的。

实作

本文的目的,就是想试一下,看看Mojo的环境是啥样子的。按官方文档上说的,目前在Mac平台(使用苹果芯片)和Linux平台,都能很好的支持。而windows上,在不久的将来,也会推出相应的版本。

我这里就试着在Mac上安装一下Mojo最基本的环境:(参照https://docs.modular.com/mojo/manual/get-started/ 上边说的步骤)

1、环境安装

1. 安装modular命令行工具:
curl -s https://get.modular.com | sh -

output ......
==> Installing modularml/packages/modular
==> Caveats
The Modular tool expects or will create a MODULAR_HOME directory.
This defaults to `~/.modular`. You can create your own, and if you do,
please add `MODULAR_HOME=/path/to/your/dir` to your environment.
==> Summary
🍺  /opt/homebrew/Cellar/modular/0.7.0: 6 files, 61.3MB, built in 4 seconds
==> Running `brew cleanup modular`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
Removing: /opt/homebrew/Cellar/modular/0.6.0... (6 files, 61MB)
Removing: /Users/*****/Library/Caches/Homebrew/modular--0.6.0.tar.gz... (16.4MB)
==> Caveats
==> modular
The Modular tool expects or will create a MODULAR_HOME directory.
This defaults to `~/.modular`. You can create your own, and if you do,
please add `MODULAR_HOME=/path/to/your/dir` to your environment.

最后可以看到,装上的是0.7.0

接着:

2. 进行Modular帐户签名:// 你可以提前注册一个帐户 或直接使用 google account

modular auth

o complete auth, open this web page:
https://developer.modular.com/device?userCode=<usercode>

Verify using this code:
<usercode>

Waiting for confirmation...

然后,我们开始安装Mojo SDK

3. modular install mojo
# Found release for https://packages.modular.com/mojo @ 24.2.0-c2427bc5-release
# Downloading archive: packages/24.2.0-c2427bc5-release/mojo-arm64-apple-darwin22.6.0-24.2.0-c2427bc5-release-11-0.tar.gz
Downloading  ..............
4. 设置环境变量
我们看看zsh里头如何设置:

MOJO_PATH=$(modular config mojo.path) \
  && echo 'export MODULAR_HOME="'$HOME'/.modular"' >> ~/.zshrc \
  && echo 'export PATH="'$MOJO_PATH'/bin:$PATH"' >> ~/.zshrc \
  && source ~/.zshrc

2、试运行

检查下mojo的版本:

mojo mojo --version
mojo 24.2.0 (c2427bc5)
2.1、REPL解释执行代码

直接像python那样执行一行代码

mojo
Type `:quit` to exit the REPL and `:mojo help` for further assistance.
  1> print("Hello, world!") 
  2.  
Hello, world!
  2>  
2.2、执行一个Mojo文件

我们建一个非常简单的hello.mojo源程序文件,内容如下:

fn main():
    print("Hello, world!")

直接执行,使用命令:

mojo hello.mojo
结果如下:
Hello, world!
2.3、编译成可执行文件

上边是直接执行,也可以将其编译成可执行文件(这块儿是比原生python不太一样的地方)

mojo build hello.mojo
-- 经此一步,会在当前目录生成可执行文件
mojo build hello.mojo
ls
demo       hello      hello.mojo

接着,可以直接执行二进制可执行文件:

./hello
Hello, world!

你也可以直接clone出:git clone https://github.com/modularml/mojo.git, 里边有相当多的例子。

在示例里,有一个:deviceinfo.mojo.  mojo/examples下边。

mojo deviceinfo.mojo
System information: 
    OS             :  macOS
    CPU            :  apple-m1
    Arch           :  arm64-apple-darwin23.4.0
    Physical Cores :  10
    Logical Cores  :  10
    CPU Features   :  neon Apple M1

很有意思。

这些示例,确实可以供我们好好学习和练习一下。

3、在线试验

除了上边的仓库代码可以自己拿来参考和练习,也可以访问:https://docs.modular.com/mojo/playground

在上边你可以直接在线试验Mojo的基本编译功能。

小结

因为Mojo的目标非常明确,就是朝着性能而来的。一些不在乎性能的场合,python仍然会大规模使用。在一些性能比较关键的地方,Mojo必然会慢慢用上。相信,随着它不断地往前推出,一些相关的db访问的库陆续应该变得可用。我们翘首以待。

对于Rust和Mojo,两种编程语言(环境)都是值得期待的。它们两个在AI上边(都在同时发力)应该大有可为。

参考

1、https://www.fast.ai/posts/2023-05-03-mojo-launch.html
2、https://www.modular.com/mojo
3、https://blog.csdn.net/csdnnews/article/details/130497989
4、https://zhuanlan.zhihu.com/p/655157566

我是【Sean】,  欢迎大家长按关注公众号:数据库杂记。
 

图片

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

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

相关文章

python 初级笔记3 python的内置容器

一、列表list 列表是包含0个或多个元素的有序序列&#xff0c;属于序列类型 &#xff0c;列表可以进行元素增加、删除、替 换、查找等操作。列表没有长度限制&#xff0c;元素类型可以不同,不需要预定义长度。 列表类型用中括号([])表示,也可以通过 list(x)函数将集合或字符…

Linux配置本地yum源,高效便捷,2024Linux运维者真的太难了

6.修改yum配置 备份你的原镜像文件&#xff0c;以免出错后可以恢复 mkdir /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/ 7.添加一个新的yum源配置文件 vi /etc/yum.repos.d/dvd.repo 添加&#xff1a; [RHEL] nameRHEL7 b…

java调用c++,使用clion进行JNI开发,ddl包生成以及so包生成

java调用c&#xff0c;使用clion进行JNI开发&#xff0c;ddl包生成以及so包生成 java基础代码生成C头部文件使用clion写C实现代码cmke打包构建使用java调用C执行linux环境下产生CPP的so包 java基础代码 先写好对应的基础代码&#xff0c;先不管static加载的ddl文件&#xff0c…

配置vscode用于STM32编译,Debug,github上传拉取

配置环境参考&#xff1a; Docs 用cubemx配置工程文件&#xff0c;用VScode打开工程文件。 编译的时候会有如下报错&#xff1a; vscode出现process_begin :CreateProcess failed 系统找不到指定文件 解决方案&#xff1a;在你的makefile中加上SHELLcmd.exe就可以了 参考…

软考高级架构师:DNS 概念和查询方式

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

约跑小程序源码(asp.net+vue+element++uniapp+sqlserver)

开发语言&#xff1a;c# 框架&#xff1a;后端 asp.net mvc pc管理页面&#xff1a;vueelement 数据库&#xff1a;sqlserver 开发软件&#xff1a;eclipse/myeclipse/idea 浏览器&#xff1a;谷歌浏览器 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X …

qt环境搭建-镜像源安装Qt Creator(5.15.2)以及配置环境变量

前言&#xff1a; 版本&#xff1a;5.15.2 镜像源&#xff1a;ustc与清华 纯小白&#xff0c;找了半天的镜像源安装qtcreator&#xff0c;搞了半天结果安装的是最新的&#xff0c;太新的对小白很不友好&#xff0c;bug比较多&#xff0c;支持的系统也不全&#xff0c;口碑不…

【使用flex两端对齐加margin-right】

解决办法众多&#xff1a;https://cloud.tencent.com/developer/article/1516801 <div class"job_tabs_content"><div class"job_tab_item"></div><div class"job_tab_item"></div><div class"job_tab_i…

RabbitMQ Docker 安装与应用

1.官方镜像 该镜像包含用户操作界面 2.Docker运行&#xff0c;并设置开机自启动 docker run -d --restartalways --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.10-management 默认登录账户和密码 guest 3、使用 队列和交换机绑定

2024年妈妈杯数学建模MathorCup数学建模思路B题思路解析+参考成品

1 赛题思路 (赛题出来以后第一时间在群内分享&#xff0c;点击下方群名片即可加群) 2 比赛日期和时间 报名截止时间&#xff1a;2024年4月11日&#xff08;周四&#xff09;12:00 比赛开始时间&#xff1a;2024年4月12日&#xff08;周五&#xff09;8:00 比赛结束时间&…

Linux从入门到精通 --- 4(上).快捷键、软件安装、systemctl、软链接、日期和时区、IP地址

文章目录 第四章(上)&#xff1a;4.1 快捷键4.1.1 ctrl c 强制停止4.1.2 ctrl d 退出4.1.3 history4.1.4 历史命令搜索4.1.5 光速移动快捷键4.1.6 清屏 4.2 软件安装4.2.1 yum4.2.2 apt 4.3 systemctl4.4 软链接4.4.1 ln 4.5 日期和时区4.5.1 date命令4.5.2 date进行日期加减…

鸿蒙学习记录

问题小测记录 总结链接&#xff1a;小测总结 学习笔记&#xff1a;鸿蒙开发学习记录 1、 main_pages.json存放页面page路径配置信息。 2、在stage模型中&#xff0c;下列配置文件属于AppScope文件夹的是&#xff1f; app.json5 3、module.json5配置文件中&#xff0c;包含…

Stm32 HAL库 访问内部flash空间

Stm32 HAL库 访问内部flash空间 代码的部分串口配置申明文件main函数 在一些时候&#xff0c;需要存储一些数据&#xff0c;但是又不想接外部的flash&#xff0c;那我们可以知道&#xff0c;其实还有内部的flash可以使用&#xff0c; 需要注意的是内部flash&#xff0c;读写次数…

2024/4/1—力扣—BiNode

代码实现&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/void convertBiNode_pro(struct TreeNode *root, struct TreeNode **p) {if (root) {convertBiNode_pro(roo…

数据恢复与数据取证的便携工具:PC-3000 Portable III

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、前沿专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复同行&#xff0c;提供实验室建设方案&#xff0c;包含数据恢复与数据取证硬件…

GaN肖特基势垒二极管(SBD)的多阴极应用建模与参数提取

GaN Schottky Barrier Diode (SBD) Modeling and Parameter Extraction for Multicathode Application&#xff08;TED 24年&#xff09; 摘要 本文提出了一种适用于多阴极应用的紧凑型可扩展GaN肖特基二极管大信号模型。详细给出了外在和内在模型参数的可扩展规则。实验和理…

Java常用API_正则表达式_字符串的替换和截取方法——小练习

我将通过一个练习题来展示这两个方法 练习题&#xff1a; 有一段字符串&#xff1a;小张qwertyuiop123小李asdfghjkl456小王 要求1&#xff1a;把字符串中三个姓名之间的字母替换成vs 要求2&#xff1a;把字符串中的三个姓名切割出来 编写代码&#xff1a; public class Tes…

NRP-Z11罗德与施瓦茨NRP-Z11功率探头

181/2461/8938产品概述&#xff1a; R&S NRP-Z11、R&S NRP-Z21、R&S NRP-Z22、R&S NRP-Z23 和 R&S NRP-Z24 功率传感器将多路径架构、多二极管技术和同步扫描多通道测量系统融合为独特的高性能概念。多路径架构意味着组合两个或三个二极管检波器以获得调制…

Mysql--select语句

1.SQL概述 1.1SQL分类 SQL语言在功能上主要分为如下3大类&#xff1a; DDL&#xff08;Data Definition Languages、数据定义语言&#xff09;: 这些语句定义了不同的数据库、表、视图、索 引等数据库对象&#xff0c;还可以用来创建、删除、修改数据库和数据表的结构。 主要…

性能分析--内存知识

内存相关知识 计算机中与CPU进行数据交换的桥梁。内存的速度&#xff0c;比CPU的速度要慢很多。比磁盘速度要快很多。内存中存放数据&#xff0c;一旦断电就会消失。linux系统的 /proc路径下的文件&#xff0c;都是内存文件。内存大小&#xff0c;一般 是GB为单位。 现在都操作…