前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rust语言尝鲜

Rust语言尝鲜

作者头像
fem178
发布2022-08-29 12:11:13
3840
发布2022-08-29 12:11:13
举报

首先,还是要吹捧一下这个编程语言。语法很严谨,Rust语言号称只要编译通过就不会崩溃(内存安全)。不像C++那种,概念混乱,连Bjarne Stroustrup都曾开玩笑说自己已经搞不懂C++了。而且一个报错信息就一万多行,然后必须是大师级的程序员,精通 Intel规范的汇编语言的那种C++程序员,才能搞清楚什么地方出了问题。个人认为Rust对于程序员的综合素质要求,是低于C++的。所以笔者决定将Rust作为首选。

下面牛刀小试一把。以函数式编程方式,计算数值积分。以定积分

为例。该积分精确值为-6.75.如果将积分区间500等分,计算结果为-6.723,相对误差为0.4%。Python以及C++编程实现点击这里:

函数式编程计算数值积分

Rust代码

代码语言:javascript
复制
fn main() {
    let  steps = 500; // 区间500等分
    let a:f64 = 0.0;
    let b:f64 = 3.0;
    let dx = (b-a)/(steps as f64); //每个区间长度,注意整型变量显式转化成浮点型
    let f = | x:f64 | {
    x*x*x - 6.0*x
    }; //闭包,相当于匿名函数,这里定义的是被积函数

    let sub_area = | x:f64 | {
        f(x)*dx
    };//一个子区间的面积,还调用了被积函数

    let  res = (0..steps).map(|x| ( (x as f64)+1.0 )*dx ).map(|x| sub_area(x) ).sum::<f64>();
    println!("结果为:{}", res)

}

程序中计算res的部分相当于C++里面的管道操作符。将{0,1,2,3,4,5,...,500}通过第一个map映射成每一个子区间中点,而第二个map就是通过子区间中点计算每一个子区间的面积。最后通过sum()函数累加起来。

Python入门容易,想要提高却很难。有一些机器学习的Python代码,很难理解。在学习一些底层语言比如C++,Rust之后,再去思考,就会容易一些了。

比如下面的问题:

代码语言:javascript
复制
use std::io::stdin;
fn main() {
    println!("What is 3+2? Type your answer and press enter.");
    let mut input = String::new();//字符串变量
    stdin()
    .read_line(&mut input)
    .expect("Unable to read standard input");
    if input == "5" {
        println!("Correct!");
    } else {
        println!("Incorrect!");
    }
}

键盘输入5,并由input接收,正常情况下input == "5"没毛病。可最后却输出"Incorrect!",为什么?原来我们在输入时按了enter键,\n意味着换行。

代码语言:javascript
复制
use std::io::stdin;
fn main() {
    println!("What is 3+2? Type your answer and press enter.");
    let mut input = String::new();//字符串变量
    stdin()
    .read_line(&mut input)
    .expect("Unable to read standard input");
    if input.trim() == "5" {
        println!("Correct!");
    } else {
        println!("Incorrect!");
    }
}

用trim方法将input多余的去掉,最后输出"Correct!"

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数值分析与有限元编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档