5 Compiled Languages for Script Kiddies
Tags: native, system, coding
Published: 2017-09-18 07:02:17

---
title: 5 Compiled Languages for Script Kiddies
description: Native development is more than just C/C++ 
published: true
cover_image: https://thepracticaldev.s3.amazonaws.com/i/wfpjv7c3yai097mpd03y.jpg
tags: native, system, coding
---

If you know me _(which you probably don't since nobody of the people who know me are reading this [just my beloved ones <3])_ you're aware that I'm a script kiddie by heart. ;)

But even I, someone who never really tried native development after leaving high-school, could ignore that much is happening in the native world lately.

For many people, native development or system development, means __C__ or at least __C++__. It's how our ancestors did it! _It's the way of high performance._ __It's the only way.__

But this isn't true for a long time anymore, and it never really was, you just have to think about COBOL.

But somehow it is burned into peoples heads, that you need C/C++ to write software that gets compiled to binaries.

In this article I will try to talk a bit about the current alternatives out there and why they could be interesting for different kind of devs and the problems they're facing.

## Crystal

[The Crystal programming language](https://crystal-lang.org/ ) shares much syntax with Ruby, which makes it more suitable for Ruby devs who want to dive into the native world of development.

It also has static typing and null checks to improve reliability. Also, type inference so you don't have to sacrifice too much of the Ruby feeling when coding.

## Nim

[The Nim programming language](https://nim-lang.org/) is leaning more into the Python direction, syntactical significant white space all the way! It also uses a rather fast garbage collector. This garbage collector is also optional, to make Nim programs integrate more easily with C programs.

It compiles down to C, which then has to be compiled to a binary so it can use many of the optimizations C programs already get.

## Reason/OCaml

[The Reason programming language](https://reasonml.github.io/) tries to be make OCaml more accessible for JavaScript developers.

While the main focus lies on the compilation to JavaScript, it also can compile down to native binaries, like OCaml can.

It's more of a new syntax for OCaml than a complete new language, but that enables it to use the many features OCaml provides, like a garbage collector or a static type system that got refined over many decades.

## Go

[The Go programming languages](https://golang.org/) goal is to be pragmatic and allow for easy parallel running code. It has a garbage collector and static typing.

It seemed to me that it had C devs as target audience, but somehow mostly back-end devs from Node.js, Ruby and Python are using Go to build application servers, so I guess it's good for people coming from scripting languages.

## Rust

[The Rust programming language](https://www.rust-lang.org/en-US/) is a C like language that tries to solve the problem of automatic memory management in a static way instead of using a garbage collector at runtime. This allows Rust programs to be integrated with C code more easily. 

From a difficulty stand-point I'd say Rust is as hard as C for devs coming from a scripting language, but the learning resources are much better, so it's worth a try.

## Conclusion

These are just a few languages that cater to us more _dynamic_ devs, but some even come with fresh ideas and open a world that we didn't knew we could access.

I think some are even an option for C developers that just want to get a bit more syntactical sugar in their code or weed out some bugs they wouldn't have with these new languages.