C vs Rust vs Zig / На каком примере кода вам стало комфортно?
Zig:
123456789101112131415161718192021222324252627282930313233
const std = @import("std");
pub fn main() !void {
var rng = std.rand.DefaultPrng.init(blk: {
var seed: u64 = undefined;
try std.os.getrandom(std.mem.asBytes(&seed));
break :blk seed;
});
var numbers: [15]i32 = undefined;
for (0..numbers.len) |i| {
numbers[i] = rng.random().intRangeAtMost(i32, 0, 100);
}
std.debug.print("{any}\n", .{numbers});
var sum: f32 = 0;
var count: f32 = 0;
for (numbers) |elem| {
if (@rem(elem, 10) == 5) {
sum += @floatFromInt(elem);
count += 1;
}
}
if (count > 0) {
std.debug.print("{d}\n", .{sum / count});
} else {
std.debug.print("none\n", .{});
}
} Rust:
123456789101112131415161718192021222324
use rand::Rng;
fn main() {
let mut rnd_generator = rand::thread_rng();
let numbers: Vec<i32> = (0..15)
.map(|_| rnd_generator.gen_range(0..=100))
.collect();
println!("{:?}", numbers);
let numbers: Vec<i32> = numbers.into_iter()
.filter(|&x| x % 10 == 5)
.collect();
if !numbers.is_empty() {
let sum = numbers.iter().sum::<i32>() as f32;
let len = numbers.len() as f32;
println!("{}", sum / len);
} else {
println!("none");
}
} C:
123456789101112131415161718192021222324252627282930313233343536373839
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUMBERS_SIZE 15
int main(void)
{
size_t count = 0;
float sum = 0;
size_t i;
int numbers[NUMBERS_SIZE];
srand(time(NULL));
for (i = 0; i < NUMBERS_SIZE; ++i)
numbers[i] = rand() % 101; /* 0..=100 */
printf("[");
for (i = 0; i < NUMBERS_SIZE; ++i) {
printf("%d", numbers[i]);
if (i < NUMBERS_SIZE - 1) printf(", ");
}
printf("]\n");
for (i = 0; i < NUMBERS_SIZE; ++i) {
if (numbers[i] % 10 == 5) {
count++;
sum += numbers[i];
}
}
if (count > 0)
printf("%.2f\n", sum / count);
else
printf("none\n");
return 0;
} Задание:
Найдите среднее арифметическое элементов массива, которые оканчиваются на 5.
Массив должен быть образован генератором случайных чисел
Возможный вывод:
[14, 76, 45, 9, 83, 60, 28, 96, 50, 92, 50, 80, 37, 54, 31]
45
Анонимный опрос
Zig
Rust
C
По дате
По рейтингу
C существует более полувека, уступая лишь десятилетие Лиспу и Фортрану.
А новомодным сишкам - без году неделя, и они всегда будут вторичными. Да, в них насандалили фич, они такие супер-удобные, в два-три раза кода можно меньше писать. Но рынок не захватили. Go < 1.5%, Rust < 1%, а про зигу эту и вовсе никто не слышал.
Ваш вопрос несколько некорректный, тем более что код на Rust специально написали в малопонятном для непосвященного стиле.
Видео по теме