Introduction to Programming Languages: What are the Goals?

Introduction to Programming Languages: What are the Goals?
Photo by Florian Olivo / Unsplash

In this current day and age, where anything and everything can be and eventually will be completely digitalized, programming languages stand as the foundational tools for enabling developers to bring ideas to life. This blog delves into the goals of various programming languages, exploring what makes them unique in that regard and why they serve that distinct purpose in the field of software development.

The Early Pioneers: Assembly and Fortran

It all started with Assembly all the back in the 1940s, it's main purpose was to offer a more understandable and manageable means of programming than binary code. Programming in binary was not only extremely tedious, but also very time consuming and very hard to manage. It's the same reason why you'll never see anyone today program in binary. Therefore Assembly's goal was simple; simplify the process of instructing machines while maintaining close control over hardware operations.

Hello World in Assembly

global _start

section .text

_start:
mov rax, 1 ; write(
mov rdi, 1 ; STDOUT_FILENO,
mov rsi, msg ; "Hello, world!\n",
mov rdx, msglen ; sizeof("Hello, world!\n")
syscall ; );

mov rax, 60 ; exit(
mov rdi, 0 ; EXIT_SUCCESS
syscall ; );

section .rodata
msg: db "Hello, world!", 10
msglen: equ $ - msg

Shortly thereafter, in the 1950s, Fortran ( Formula Translation ) came to be about. Developed by IBM, Fortran's primary goal was to enable scientists and engineers to write programs for mathematical and scientific computations more efficiently.

Hello World in Fortran

program helloWorld

print *, "Hello World!"

end program helloWorld

This was more or less a bit of history, you won't really see people using Assembly or Fortran in the field but I felt it was a bit of necessary context. Not to mention they're both programming languages regardless, so I wanted to have them mentioned. We will now delve into actual modern programming languages that are used very often in the field.

Structured Programming: C and Pascal

C, developed in the early 1970s, was designed with the primary goal in mind of writing operating systems. Think Windows, Linux, MacOS, they're all operating systems. In this case it was specifically made to create the UNIX operating system, but is widely used today to create operating systems. C is the ideal choice for writing operating systems due to its flexibility, efficiency, performance and closeness to hardware. It has no runtime dependencies, direct memory access, efficient byte-level manipulation and all C code has a direct 1 to 1 translation to machine code.

Hello World in C

// Header file for functions
include <stdio.h>

// Where the execution of program begins
int main() {

// Prints Hello World
printf("Hello World!");

return 0;
}

Pascal, developed a bit earlier in the 1960s only had education in mind, aiming to teach good programming practices that encourage structured programming and data structuring. It became widely used in schools and colleges alike, for the reason that it is a teaching language, Pascal is able to illustrate concepts and themes very easily, which translates when trying to understand functions within different programming languages.

Hello World in Pascal

program Hello;
begin
writeln ('Hello world!');
end.

OOP: C++, Java and Smalltalk

C++, as the name suggests, is just C with object-oriented features. Object-oriented programming is where you focus your attention on objects, which can contain data in the form of fields and code, in the form of procedures known as methods. OOP is a way of programming in which you use objects to model and organize software in a way that aligns with real world concepts.


It's polar opposite is system programming, system programming has everything to do with what happens behind the scenes, it doesn't execute a task directly, but offers core services to other software which in turn can execute tasks, again, think operating systems, drivers, system utilities.
C++, being C with object-oriented features, aims to strike a balance between system programming and object-oriented programming and is used widely for a variety of reasons.

Hello World in C++

// Header file for functions
#include <iostream>

//Where the execution of program begins
int main() {

// Prints Hello World
std::cout << "Hello World!" << std::endl;
return 0;
}

Java was designed with the philosophy of "write once, run anywhere". It focuses on portability across different platforms. It achieves this by allowing developers to write application code that can run on any device that has Java Virtual Machine (JVM), losing the need for it to be recompiled for each platform. It's goals included also being rather simple, it's object-oriented, robust and secure.

Hello World in Java

class Test
{
public static void main(String []args)
{
System.out.println("Hello World!");
}
};

Smalltalk was one of the first true object-oriented languages, aiming to provide a completely integrated development environment ( IDE ) and language that is simple yet highly dynamic. Its goal is to enable fast and iterative development while putting a strong emphasis on OOP.

Hello World in Smalltalk

#include <stdio.h>

int main()
{
printf("Hello world!\n");
return 0;
}

Simplicity & productivity: Python and Ruby

Python was designed with productivity and code readability in mind. It's what some people would call just another speaking language. It puts an emphasis on simplicity encapsulated by the idea that "There should be one-and only one-obvious way to do it." Henceforth why it's also an amazing beginner language, but it is held back by it's simplicity if you're looking to do anything advanced with it.

Hello World in Python

print("Hello World!")

Ruby is in some regards similar to Python, where it focuses on productivity and simplicity. What Ruby does different however, is that Ruby puts an emphasis on making programming fun and putting the programmer's needs over that of the computer's, promoting productivity and even making it a fun hobby for some.

Hello World in Ruby

puts "Hello World!"

Functional programming: Haskell, Scala and Erlang

Haskell is a purely functional programming language. Functional programming is programming using functions. Functions work in the same way that math functions, give something the same input, it'll always return the same output. Haskell's only purpose is to express algorithms in a clear and concise manner with a strong emphasis on safety and immutability. Haskell facilitates a more mathematical approach to programming by enabling advanced type systems and lazy evaluation.

Hello World in Haskell

main = putStrLn "Hello World!"

Scala is a programming language that combines functional programming with object-oriented programming, aiming to offer a very scalable language for the JVM. Scala ( as the name suggests ) is scalable in the sense that it is suitable for writing small scripts as well as building large systems.

Hello World in Scala

// Scala program to print Hello World!
object Geeks
{
// Main Method
def main(args: Array[String])
{
// prints Hello World
println("Hello World!")
}
}

Erlang was created for building distributed systems that are scalable and fault-tolerant. It emphasizes reliability and not being prone to faults, aiming to handle a large number of concurrent activities in an efficient manner.

Hello World in Erlang

% hello.erl
-module(hello).
-export([hello_world/0]).

hello_world() -> io:fwrite("hello world!\n").

Specialized languages for modern challenges: Swift, Go and Rust

Swift is specifically aimed at iOS and MacOS development. It puts an emphasis on safety, performance and software design patterns. It's easy to learn, offers modern programming features and offers a clean experience for developing apps for Apple's various platforms.

Hello World in Swift

// Swift "Hello, World!" Program

print("Hello, World!")

Go ( Golang ) is designed by Google and is specifically made to be a readable, efficient language for modern multicore networked machines. It's simple, targets performance, system programming, web applications and even large distributed systems.

Hello World in Go

// First Go program
package main

import "fmt";

// Main function
func main() {

fmt.Println("!... Hello World ...!")

}

Rust focuses on memory safety and performance. It aims to offer the same efficiency other languages like C++ offer, but with a much stronger focus on safety in concurrent programming.

Hello World in Rust

fn main() {
println!("Hello, world!");
}


In simple terms, the world of coding is like a big toolbox where every tool, or programming language, has its own special job. Some languages are really good for talking directly to computers, like C, while others, like Java, are used to make big and complicated programs. Then there are languages like Haskell that are great for math stuff, and Python, which you can use for all sorts of projects, from making websites to doing science experiments.

Understanding why each language exists shows us how cool and varied coding can be. It's like having the right tool for every job. Knowing which one to use can make a big difference in solving problems or bringing new ideas to life. This mix of languages also means there's always something new to learn in tech, driven by our ideas and the languages that turn those ideas into reality. The wide range of programming languages is a sign of how inventive and forward-looking people are, always finding new ways to push technology forward.


Do you like what you're reading from the CoderOasis Technology Blog? We recommend reading our Implementing RSA in Python from Scratch as your next choice.
Implementing RSA in Python from Scratch
This is a guide to implementing RSA encryption in python from scratch. The article goes over the math and has code examples.

The CoderOasis Community

Did you know we have a Community Forums and Discord Server? which we invite everyone to join us? Want to discuss this article with other members of our community? Want to join a laid back place to chill and discuss topics like programming, cybersecurity, web development, and Linux? Consider joining us today!
Join the CoderOasis.com Discord Server!
CoderOasis offers technology news articles about programming, security, web development, Linux, systems admin, and more. | 112 members
CoderOasis Forums
CoderOasis Community Forums where our members can have a place to discuss technology together and share resources with each other.