易用性设计
开发者的整个工作流进行完整的编程支持
编程接口:易用且高性能的API接口
具有易用的编程接口来支持用户使用高层次语言,如Python实现机器学习算法;
同时也要具备以C和C++为核心的低层次编程接口来帮助框架开发者用C和C++实现大量高性能组件,从而在硬件上高效执行
利用高层次编程语言Python作为面向用户的主要前端语言,而利用C和C++实现高性能后端
PyTorch的Python和C/C++的混合接口 : 主要依赖Pybind11来将底层的大量C和C++函数自动生成对应的Python函数,这一过程一般被称为Python绑定( Binding)
数据抽象-
类似于 LINQ式 的编程抽象
TensorFlow 的数据模块tf.data [murray2021tf],
MindSpore 的数据模块 MindData 等
Spark Flink的易用性
计算图由基本数据结构张量(Tensor)和基本运算单元算子构成
编程范式
函数式编程是一种编程范式 MindSpore选择将函数式和面向对象编程融合
LINQ 语言集成查询
LINQ(Language Integrated Query)是一种用于查询和操作各种数据源的统一查询语言
语言集成查询 (LINQ) 代码 LINQ 是一种用来进行数据访问的编程模型
获取数据源。创建查询。执行查询。
数据源--可查询类型
查询指定要从数据源中检索的信:在 LINQ 中,查询变量本身不执行任何操作并且不返回任何数据
执行查询: 立即执行和延迟执行。
立即执行 Count、Max、Average 和 First 就属于此类查询。
延迟执行 指的是不在代码中声明查询的位置执行运算。 仅当对查询变量进行枚举时才执行运算
延迟执行流式数据
延迟执行非流式数据: 排序或分组等运算均属于此类别。
C# 语言模型
LINQ 通过为各种数据源和数据格式提供一致的 C# 语言模型
查询表达式是以查询语法表示的查询。 查询表达式是一流的语言构造
Python
py-linq py-linq是一个致力于将LINQ功能移植到Python的开源项目 简洁的链式调用,强大的数据过滤和转换能力
Asq is simple implementation of a LINQ-inspired API for Python
C++
Linq库的核心在于其对C++标准的支持,特别是C++ Ranges特性的利用,以及自定义扩展方法的设计。
它巧妙地利用了管道(pipe)操作符|来串连不同的查询操作,使得链式调用成为可能
Cangjie
语法糖--表达式
管道 管道 Pipeline 于管道操作符 |> 的表达式
操作数_operand 操作符_operator
操作符的优先级、结合性以及操作数的求值顺序 操作符重载
顺序表达式 条件表达式 循环表达式
if else
for-in 表达式、while 表达式和 do-while 表达式
控制转移表达式 break、continue return throw
tryExpression
模式匹配表达式(match 表达式) 带 selector 的 match 表达式和不带selector 的 match 表达式 case where
pattern
: constantPattern
| wildcardPattern
| varBindingPattern
| tuplePattern
| typePattern
| enumPattern
;
数值类型转换表达式 this 和 super 表达式 spawn 表达式 括号表达式 类型检查的表达式
算数表达式 关系表达式 位运算表达式
流表达式是包含流操作符的表达式 中缀操作符~>(称为composition) Lambda 表达式
Quote 表达式用于引用代码 宏调用表达式
Java
Java Stream API执行一些常见的集合操作,类似于LINQ的功能
历史
TensorFlow1.0 其代表的编程特点包括计算图(Computational Graphs)、会话(Session)、张量(Tensor)它是一种声明式编程风格
2017年Facebook发布了PyTorch其编程特点为即时执行,它是一种命令式编程风格
2022年PyTorch推出functorch 可与PyTorch模块和PyTorch autograd一起使用
参考
https://learn.microsoft.com/zh-cn/dotnet/csharp/linq/get-started/introduction-to-linq-queries
标签:编程语言,Python,编程,LINQ,查询,C++,易用性,表达式
From: https://www.cnblogs.com/ytwang/p/18584611