A better Hello World program

The "Hello world" program is usually the first introduction to any programming language. It demonstrates the minimum amount you need to write a C program. It looks like this in the C programming language:

/* hello.c */
#import <stdio.h>

int main(int argc, char *argv[]) {
  printf("Hello, world!");
  return 0;
}

A Hello World program in C. It demonstrates the minimum amount you need to write a C program.

Next: What's wrong with that?

A modern "Hello world"

In more modern languages however, this example isn't as useful anymore. Here's the same example in Python. Notice how it doesn't teach anything other than print.

print "Hello, world!"

A Hello World program in Python. There's barely anything in it!

Next: Let's improve on this.

Improving "Hello world"

"Hello world" in JavaScript

In today's world of more succint programming languages, we need a different "hello world" to demonstrate language features better. Here's what I propose:

function getGreeting(name) {
  return `Hello, ${name}!`
}

const message = getGreeting('world')
console.log(message)

A "better" Hello World program in JavaScript, showing more basic functionality than just printing lines.

How is this better?

This simple example demonstrates a few more things than printing strings, such as:

function getGreeting(name) {
  return /*...*/
}

Functions: How to write a function with an argument, and returning values from functions. Also shows the naming convention for functions (camelCase).

const message = /*...*/

Variables: How to assign variables.

;`Hello, ${name}!`

Strings: Dealing with basic string functions.

Next: Let's look at some more examples.

Example: Go version

I've started writing these kinds of programs for languages that I'm learning. Here's how it'd look like in Go, which I've added to my Go cheatsheet:

// hello.go
package main

import "fmt"

func main() {
  message := getGreeting("world")
  fmt.Println(message)
}

func getGreeting(name string) (string) {
  return "Hello, " + name + "!"
}

Example: Elixir version

Here's an Elixir version, also at the Elixir cheatsheet:

# hello.exs
defmodule Greeter do
  def get_greeting(name) do
    "Hello, " <> name <> "!"
  end
end

message = Greeter.get_greeting("world")
IO.puts message