Skip to content

Instantly share code, notes, and snippets.

@gsrai
Created February 20, 2023 16:25
Show Gist options
  • Save gsrai/0d70725f4eb46374825592c12638f541 to your computer and use it in GitHub Desktop.
Save gsrai/0d70725f4eb46374825592c12638f541 to your computer and use it in GitHub Desktop.
C vs C++ vs Rust (and Clojure, Python & Go)

C vs C++ vs Rust (and Clojure, Python & Go)

source

Original

int calculate(int bottom, int top)
{
    if (top > bottom)
    {
        int sum = 0;
        
        for (int number = bottom; number <= top; number++)
        {
            if (number % 2 == 0)
            {
                sum += number;
            }
        }
        return sum;
    }
    else
    {
        return 0;
    }
}

C

int calculate(int bottom, int top) {
    int sum = 0; 
    if (top > bottom) {
        for (int number = bottom; number <= top; number++) {
            if (number % 2 == 0) {
                sum += number;
            }
        }
    }
    return sum;
}

C++

int calculate(int bottom, int top) {
    if (top > bottom) {
        auto even = [](auto e) { return e % 2 == 0; };
        auto xs = std::views::iota(bottom, top + 1)
                | std::views::filter(even);
        return std::accumulate(xs.begin(), xs.end(), 0);
    }
    return 0;
}

Rust

fn calculate(bottom: i32, top: i32) -> i32 {
    return (bottom..=top).filter(|n| n % 2 == 0).sum()
}

Clojure

(defn calculate [bottom top]
  (->> (range bottom (inc top)) (filter even?) (apply +)))

Python

def calculate(bottom, top):
    return sum(n for n in range(bottom, top + 1) if n % 2 == 0)

Go

func calculate(bottom, top int) (sum int) {
    if top > bottom {
        for number := bottom; number <= top; number++ {
            if number % 2 == 0 {
                sum += number
            }
        }
    }
    return
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment