Mittwoch, 8. Februar 2023

Vergleich von 25 unterschiedlichen Programmiersprachen


In diesem Artikel möchte ich anhand eines einfachen Beispiels Programmiersprachen miteinander vergleichen. Es gibt unzählige Sprachen, die für unterschiedliche Zwecke eingesetzt werden und sich mehr oder weniger stark voneinander unterscheiden.

Am Beispiel folgender Anforderung sollen die Programmiersprachen verglichen werden:

Ausgabe Textzeile 1: "Herzlich Willkommen!"
Ausgabe Textzeile 2: "Bitte Namen eingeben: "
Benutzereingabe: <NAME>
Ausgabe Textzeile 3: "Herzlich Willkommen <NAME>!"

Codebeispiele der fünf beliebtesten Programmiersprachen


Java

import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    System.out.println("Herzlich Willkommen!"); System.out.print("Bitte Namen eingeben: ");
    Scanner scan = new Scanner(System.in); String name = scan.nextLine();
    System.out.println("Herzlich Willkommen " + name + "!");
  }
}

Python

print("Herzlich Willkommen!")
name = input("Bitte Namen eingeben: ")
print("Herzlich Willkommen " + name + "!")

C++

#include <iostream>
#include <string>
int main() { std::string name;
  std::cout << "Herzlich Willkommen!" << std::endl;
  std::cout << "Bitte Namen eingeben: ";
  std::cin >> name;
  std::cout << "Herzlich Willkommen " << name << "!" << std::endl;
  return 0;
}

JavaScript

const readline = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
console.log("Herzlich Willkommen!");
readline.question("Bitte Namen eingeben: ", (name) => {
  console.log("Herzlich Willkommen " + name + "!");
  readline.close();
});

C#

using System;
namespace ConsoleApp {
    class Program {      static void Main(string[] args) {
             Console.WriteLine("Herzlich Willkommen!");
             Console.Write("Bitte Namen eingeben: ");
            string name = Console.ReadLine();
             Console.WriteLine("Herzlich Willkommen " + name + "!");
         }
    }
}


Codebeispiele von fünf weniger genutzten Programmiersprachen


Lua

print("Herzlich Willkommen!")
print("Bitte Namen eingeben: ")
name = io.read()
print("Herzlich Willkommen " .. name .. "!")

Julia

println("Herzlich Willkommen!")
print("Bitte Namen eingeben: ")
name = readline()
println("Herzlich Willkommen $name!")

Haskell

main :: IO ()
main = do
  putStrLn "Herzlich Willkommen!" putStr "Bitte Namen eingeben: "
  name <- getLine
  putStrLn ("Herzlich Willkommen " ++ name ++ "!")

Rust

use std::io;
fn main() {
    println!("Herzlich Willkommen!");
    println!("Bitte Namen eingeben: ");
    let mut name = String::new();
    io::stdin().read_line(&mut name).unwrap();
    let name = name.trim();
    println!("Herzlich Willkommen {}!", name);
}

Dart

import 'dart:io';
void main() {
  print("Herzlich Willkommen!");
  print("Bitte Namen eingeben: ");
  String name = stdin.readLineSync();
  print("Herzlich Willkommen $name!");
}


Codebeispiele von fünf Programmiersprachen älter als 50 Jahre


Assembly (1949)

section .data
    welcome db 'Herzlich Willkommen!', 0 prompt db 'Bitte Namen eingeben: ', 0
    name_format db 'Herzlich Willkommen %s!', 0

section .bss
    name resb 256

section .text
    global _start

_start:
    ; Ausgabe Textzeile 1: "Herzlich Willkommen!" mov edx, 14 ; Länge des Willkommens-Texts
    mov ecx, welcome ; Adresse des Willkommens-Texts
    mov ebx, 1 ; Dateideskriptor für stdout
    mov eax, 4 ; Syscall für write
    int 0x80 ; Aufruf des Betriebssystems

    ; Ausgabe Textzeile 2: "Bitte Namen eingeben: " mov edx, 18 ; Länge des Prompt-Texts
    mov ecx, prompt ; Adresse des Prompt-Texts mov ebx, 1 ; Dateideskriptor für stdout
    mov eax, 4 ; Syscall für write int 0x80 ; Aufruf des Betriebssystems

    ; Benutzereingabe: <NAME>
    mov eax, 3 ; Syscall für read
    mov ebx, 0 ; Dateideskriptor für stdin
    mov ecx, name ; Adresse des Puffers für den Namen
    mov edx, 256 ; Maximale Länge des Namens
    int 0x80 ; Aufruf des Betriebssystems

    ; Ausgabe Textzeile 3: "Herzlich Willkommen <NAME>!"
    mov eax, 4 ; Syscall für write
    mov ebx, 1 ; Dateideskriptor für stdout
    mov ecx, name_format ; Adresse des Formatstrings
    mov edx, name ; Adresse des Namens
    int 0x80 ; Aufruf des Betriebssystems

    ; Beenden des Programms
    mov eax, 1 ; Syscall für exit
    xor ebx, ebx ; Rückgabewert 0
    int 0x80 ; Aufruf des Betriebssystems

Fortran (1957)

program greeting
  implicit none
  character(len=20) :: name
  write(*,'(A)') "Herzlich Willkommen!"
  write(*,'(A)') "Bitte Namen eingeben: "
  read(*,'(A)') name
  write(*,'(A)') "Herzlich Willkommen ",trim(name),"!"
end program greeting

LISP (1958)

(print "Herzlich Willkommen!")
(print "Bitte Namen eingeben: ")
(setq name (read))
(print (format nil "Herzlich Willkommen ~A!" name))

COBOL (1959)

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
DATA DIVISION.
WORKING-STORAGE SECTION.
   01 WS-NAME PIC X(20).
   01 WS-MESSAGE PIC X(20) VALUE "Herzlich Willkommen".
PROCEDURE DIVISION.
   DISPLAY "Herzlich Willkommen!".
   DISPLAY "Bitte Namen eingeben: ".
   ACCEPT WS-NAME.
   DISPLAY "Herzlich Willkommen " WS-NAME "!".
   STOP RUN.

BASIC (1964)

10 PRINT "Herzlich Willkommen!"
20 PRINT "Bitte Namen eingeben: ";
30 INPUT name$
40 PRINT "Herzlich Willkommen "; name$; "!"

Codebeispiele von fünf schwer erlernbaren Programmiersprachen


Perl

#!/usr/bin/perl
use strict;
use warnings;
print "Herzlich Willkommen!\n";
print "Bitte Namen eingeben: ";
my $name = <STDIN>;
chomp $name;
print "Herzlich Willkommen $name!\n";

Erlang

-module(hello).
-export([run/0]).
run() -> io:fwrite("Herzlich Willkommen!\n"),
    io:fwrite("Bitte Namen eingeben: "),
    {ok, Name} = io:read_line(),
    io:fwrite("Herzlich Willkommen ~s!\n", [Name]).

Forth

." Herzlich Willkommen!\n"
." Bitte Namen eingeben: "
accept name
." Herzlich Willkommen " name . "\n"

Scheme

(display "Herzlich Willkommen!")
(display "Bitte Namen eingeben: ")
(define name (read))
(display "Herzlich Willkommen " name "!")

Prolog

welcome :-
  write('Herzlich Willkommen!'), nl,
  write('Bitte Namen eingeben: '),
  read(Name),
  format('Herzlich Willkommen ~w!', [Name]), nl.


Es ist gut zu sehen, dass es teils große Unterschiede in den Umsetzungen gibt, sich einige Bereiche aber stark ähneln. Natürlich handelt es sich hier um ein sehr einfaches Beispiel und die Unterschiede werden größer, je mehr Code geschrieben wird. Wer aber in der Lage ist, Programmcode zu lesen, wird mit vielen unterschiedlichen Sprachen klar kommen.

Als kleinen Bonus gibt es nachfolgend noch fünf Beispiele für Sprachen, die keinen traditionellen Nutzen haben sondern eher als intellektuelle Herausforderung gelten.


Codebeispiele von fünf esoterischen Programmiersprachen


Brainf***

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>--
-.+++++++..+++.
|| ".<<+. ------.--------.>>+."

Intercal

       C INPUT 
$1     C    READ NAME
$2     C     PRINT *, "Herzlich Willkommen!"
$3     C     PRINT *, "Bitte Namen eingeben: "
$4     C     PRINT *, "Herzlich Willkommen", NAME, "!"
       C END

Chef

COME Herzlich Willkommen!
DO .(
  COME Bitte Namen eingeben: 
  DO ,(
    READ name
    COME Herzlich Willkommen name!
  )
)

Befunge-93

v
>      : # Ausgabe "Herzlich Willkommen"
,      :
,      :
,      :
,      :
,      :
,      :
,      :
,      :
"Herzlich Willkommen!"
_      :
>      : # Ausgabe "Bitte Namen eingeben: "
"Bitte Namen eingeben: "
_      :
p      : # Eingabeaufforderung
v      :
>      : # Ausgabe "Herzlich Willkommen <NAME>!"
"Herzlich Willkommen "
<      :
,      :
"!"     :
>      :
_      :

LOLCODE

HAI 1.2
VISIBLE "Herzlich Willkommen!"
VISIBLE "Bitte Namen eingeben: "
GIMMEH NAME
VISIBLE "Herzlich Willkommen " + NAME + "!"
KTHXBYE


Hinweis zum Schluss: Die Codebeispiele wurden mithilfe von ChatGPT angefertigt.




Keine Kommentare:

Kommentar veröffentlichen