
Mojo
文章平均质量分 92
名本无名
生物信息工程师,日常工作: Python 和 R 数据处理、分析及可视化等。还有其他。。。
展开
-
网络爬虫 —— XPath 与 CSSSelect
超文本标记语言(HTML)和可扩展标记语言(XML)是两种结构相似的标记语言,其中HTML主要用于展示数据,专注于数据的外观,且标签固定;而XML主要被设计用于传输和携带数据信息,专注于数据的内容,没有预定义的标签,需要自行定义。这两种标记语言所定义的内容结构是大致相同的,都是以一种树结构的形式存储。例如,对于XML文件,我们可以简单具有自我描述性的语法来定义数据原创 2024-06-17 11:31:29 · 1209 阅读 · 0 评论 -
Mojo —— 版本更新 v24.4
Mojov24.4于2024-06-07更新,主要更新了改进了def的性能并更容易使用继续围绕类型统一标准库API改进了许多集合类型改进了Dict的插入性能新的替代了早期(不太可靠的)@unroll装饰器下面我们介绍一下具体做了哪些更新。原创 2024-06-10 20:30:35 · 953 阅读 · 0 评论 -
Mojo 学习 —— 导入外部函数
Mojo支持从动态链接库中导入函数,可以很方便地使用其他编程语言来对Mojo功能进行扩展。这一功能主要通过sys标准库中的ffi模块中的结构体和函数实现的。原创 2024-06-07 17:49:05 · 947 阅读 · 0 评论 -
Mojo 学习 —— buffer
我们接下去学习内置的buffer包,这个模块主要是对指针进行封装,其底层还是对指针进行操作。它还提供了一种NDBuffer类,可以将指针封装为多维数据,便于以矩阵的方式访问数据。还有一个需要注意的是,内置的reduction模块提供的聚集函数都是基于buffer类型的。所以还是有必要学习一下buffer模块的使用。buffer包中包含两个模块buffer:实现了Buffer类list:提供处理静态和可变列表的实用程序。原创 2024-06-06 18:47:30 · 1107 阅读 · 1 评论 -
Mojo 学习 —— 并行化
Mojo标准库algorithm模块中提供了很多并行化操作函数。包括functionalmemory这些函数可以直接从algorithm中导入,例如我们首先定义一个矩阵结构,用于后续并行化分析然后定义一个基准测试函数(矩阵乘法),用于测试不同版本的函数执行效率的区别。使用嵌套循环计算矩阵乘法以Python的计算结果为基准,测试Mojo运行结果。原创 2024-05-24 09:39:04 · 721 阅读 · 0 评论 -
Mojo 学习 ——指针
这一节我们学习一下Mojo内存管理模块,这个包里面包含4个子模块。包括memoryreferenceReferenceunsafe。原创 2024-05-23 09:25:04 · 1393 阅读 · 0 评论 -
Mojo 学习 —— SIMD
SIMD(单指令多数据)是一种处理器技术,它允许您一次对整个操作数集执行操作。为了支持高性能的数字处理,Mojo专门定义了SIMD结构体,并为其添加了很多操作函数及方法。Mojo使用SIMD类型作为其数字类型的基础。一个SIMD对象表示一个由硬件向量元素支持的小的向量,也就是一个固定大小的值数组,可以放入处理器的寄存器中。原创 2024-05-22 09:26:34 · 1339 阅读 · 0 评论 -
Mojo 学习 —— 内置结构与函数
学习完Mojo基本语法之后,我们接着学习Mojo标准库的使用。首先 介绍一些Mojo中的内置结构与函数。原创 2024-05-21 09:10:35 · 1182 阅读 · 0 评论 -
Mojo 学习 —— 与 Python 交互
为了使Mojo成为Python的超集,必须保证能与现有的Python程序兼容。Python使用者应能很快入手Mojo,并能够使用Python软件包生态系统。但是,Mojo仍处于早期开发阶段,许多功能尚未实现。目前还不能在Mojo中编写在Python代码。也还没有搭建好自己的软件包生态系统。作为一个替代方案,Mojo允许您导入Python模块,并调用Python函数,与Python对象交互。Mojo使用标准解释器(CPython)运行Python代码,可与现有的Python代码完美兼容。原创 2024-05-20 10:18:21 · 1104 阅读 · 0 评论 -
Mojo 学习 —— 装饰器
Mojo装饰器是一个高阶函数,用于修改或扩展结构体、函数或其他代码。你只需在代码(如结构体)上方添加装饰器(如@value),而无需实际调用高阶函数。然后,Mojo编译器会在编译时使用装饰器函数来修改代码。目前还不支持创建自定义装饰器。原创 2024-05-19 19:05:51 · 1118 阅读 · 0 评论 -
Mojo 学习 —— 参数化:编译时元编程
所谓元编程,即编写可以生成或修改其他代码的代码。Python的装饰器、元类就是一种元编程。虽然非常灵活且高效,但由于它们是动态的,会带来更多的运行时开销。而其他语言有静态或编译时元编程特性,比如C预处理器宏和C++模板。这些功能存在一些局限性,且难以使用。Mojo为了提供功能强大、易于使用且运行成本为零的元编程。它添加了编译时参数(parameter),通过在编译时解析参数(类似于程序运行时解析的函数参数(argument)),使其在运行时是为常量,提高运行效率。不同于其他语言,在Mojo种。原创 2024-05-18 11:13:11 · 1100 阅读 · 0 评论 -
Mojo 学习 —— 特性(trait)
特性(trait)是一个类型必须要实现的一组要求。你可以把它看成是一种契约:符合特性的类型必须保证实现了该特性的所有功能。特性类似于和。原创 2024-05-17 09:04:52 · 738 阅读 · 0 评论 -
Mojo 学习 —— 值的生命周期
前面介绍了如何使用Mojo的所有权模型来构建高性能的代码,而无需手动管理内存。然而,Mojo是为系统编程而设计的,而系统编程通常需要对自定义数据类型进行手动内存管理。所以,Mojo也提供了自定义内存管理机制。再次强调Mojo没有引用计数器和垃圾回收器。标准库中的所有数据类型(如BoolInt和String)都是以结构体的形式实现的。所以你自定义的结构体和他们没什么区别。原创 2024-05-16 09:19:55 · 1000 阅读 · 0 评论 -
测序数据处理 —— 数据下载
如果是我们自己测的数据,一般公司提供的文件是压缩后的数据,后缀为fastq.gz或fq.gz。但如果我们想要使用别人上传到SRA或EBI数据库中的测序数据,则需要使用专门的下载软件把这些数据下载到本地。原创 2024-05-15 09:41:34 · 688 阅读 · 0 评论 -
Mojo 学习 —— 值的所有权
一般来说,所有编程语言都以相同的方式使用调用栈:当调用一个函数时,编译器会在栈上分配一个内存块,其大小等于需要存储的执行逻辑和固定大小的局部数据值;当调用另一个函数时,其数据以同样的方式被添加到栈的顶部;当一个函数执行完毕后,栈中的所有数据都会被销毁,这快内存就可以供其他代码使用了。请注意,栈中只存储 “固定大小的局部数据值”,而那些运行时会发生变化的动态值则存储在堆中堆是一个更大的内存区域,允许在运行时进行动态的内存访问。原创 2024-05-15 09:40:06 · 789 阅读 · 0 评论 -
Mojo 学习 —— 结构体
但是,由于该结构体没有构造函数,所以无法用其来实例化对象。类似于Python,我们可以定义一个__init__构造函数请注意,__init__方法的第一个参数是inout self,声明了self是一个可变引用self必须是第一个参数,它引用了当前的结构体实例。在调用构造函数时,你无需为self传递值,Mojo会自动将其传递进来。__init__方法是许多预定义的特殊方法之一,Mojo中有许多与Python的class中一样的用双下划线开头和结尾的特殊方法,像__str__和__repr__等。原创 2024-05-14 09:26:37 · 436 阅读 · 0 评论 -
Mojo 学习 —— 函数
之前的介绍中提到,Mojo可以使用fn和def来定义函数,但它们有不同的默认行为def和fn都很好用,并不存在优劣之分。至于使用哪种风格最适合特定任务,则取决于个人喜好。定义在结构体中的函数称为方法,功能和函数是一样的,只是不同的叫法。原创 2024-05-13 09:24:08 · 1224 阅读 · 0 评论 -
Mojo 学习 —— 数据类型
Mojo中的所有值都有相关的数据类型,大多数类型都是由结构体定义的命名类型。之所以这么说,是因为类型由类型的名称而不是结构决定的NoneTypeNoneMojo自带的标准库提供了大量有用的类型和实用功能,每个标准库类型的定义都与用户定义的类型一样,甚至包括Int和String这样的基本类型。最常见的类型是内置类型,这些类型无需导入就可使用,包括数值、字符串、布尔值等类型。标准库还包含许多其他类型,可以根据需要导入,包括集合类型、与文件系统交互和获取系统信息的实用程序等。原创 2024-05-12 11:45:01 · 355 阅读 · 0 评论 -
Mojo 学习 —— 基本语法
Mojo首先是为高性能系统编程而设计的,它具有强大的类型检查、内存安全、新一代编译器技术等特性。因此,Mojo与C++和Rust等语言有很多共同之处。我觉得它很多地方更像rust一点,例如它没有继承,但是可以用特性(trait)来实现相同的功能。文档中也提到了,Mojo是一种年轻的语言,有许多特性还不完整。目前并不适合初学者,即使是这个基础部分的介绍也需要一些编程经验。^v^原创 2024-05-12 11:44:21 · 1288 阅读 · 0 评论 -
Mojo 学习 —— 环境配置
Mojo是一种专为人工智能开发而设计的现代编程语言。它集成了Python的易用性和C语言的性能,旨在弥补人工智能软件开发研究与生产之间的差距。反正我看他们说的是天花乱坠,是Python的几千几万倍,号称要 “与Python一样易于使用,但与Rust一样强大和快速。那我就来简单的学习一下吧,跟着Mojito一起学起来。原创 2024-05-12 11:43:10 · 526 阅读 · 0 评论