Translations from Turing
From Compsci.ca Wiki
Contents |
Hello, world!
Turing
% This is a comment put "Hello, world!"
C
/* This a comment */
#include <stdio.h>
int main()
{
puts("Hello, world!");
return 0;
}
C++
// This is a comment
#include <iostream>
int main()
{
std::cout << "Hello, world!" << std::endl;
return 0;
}
Java
// This is a comment
import java.lang.*;
import java.io.*;
public static void HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
C#
// This is a comment
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
}
}
D
// This is a comment
import std.stream;
void main()
{
stdout.writeLine("Hello, world!");
}
Perl
# This a comment print "Hello, world!\n";
Python
# This a comment print "Hello, world!"
Ruby
# This a comment puts "Hello, world!"
O'Caml
(* This a comment *) print_endline "Hello, world!"
Eiffel
-- This is a comment
class HELLO_WORLD
creation {ANY} make
feature {ANY}
make is
do
std_output.put_string("Hello, world!")
std_output.put_new_line
end
end
Pascal
(* This a comment *)
program HelloWorld;
begin
WriteLn('Hello, world!')
end.
Ada95
-- This is a comment
with Ada.Text_IO; use Ada.Text_IO;
procedure Hello_World is
begin
Put_Line("Hello, world!");
end Hello_World;
Javascript
// This is a comment
document.write("Hello, world!<br/>");
A procedure
Now, abstracting the "Hello, world!" into a procedure called "say_hello_world".
Note: That name may appear slightly different depending on the naming conventions of a language. Where possible, forward declarations are used.
Turing
procedure sayHelloWorld put "Hello, world!" end sayHelloWorld sayHelloWorld
C
#include <stdio.h>
void say_hello_world();
int main()
{
say_hello_world();
return 0;
}
void say_hello_world()
{
puts("Hello, world!");
}
C++
#include <iostream>
void say_hello_world();
int main()
{
say_hello_world();
return 0;
}
void say_hello_world()
{
std::cout << "Hello, world!" << std::endl;
}
Java
import java.lang.*;
import java.io.*;
public class HelloWorld {
public static void main(String[] args) {
sayHelloWorld();
}
private static void sayHelloWorld() {
System.out.println("Hello, world!");
}
}
C#
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
SayHelloWorld();
}
private static void SayHelloWorld()
{
Console.WriteLine("Hello, world!");
}
}
D
import std.stream;
void main()
{
sayHelloWorld();
}
void sayHelloWorld()
{
stdout.writeLine("Hello, world!");
}
Perl
say_hello_world;
sub say_hello_world {
print "Hello, world!";
}
Python
def say_hello_world(): print "Hello, world!" say_hello_world()
Ruby
def say_hello_world puts "Hello, world!" end say_hello_world
O'Caml
let say_hello_world () = print_endline "Hello, world!" say_hello_world ()
Eiffel
class HELLO_WORLD
creation {ANY} make
feature {ANY}
make is
do
say_hello_world
end
feature {NONE}
say_hello_world is
do
std_output.put_string("Hello, world!")
std_output.put_new_line
end
end
Pascal
program HelloWorld;
var
procedure SayHelloWorld;
begin
WriteLn('Hello, world!')
end;
begin
SayHelloWorld
end.
Ada
with Ada.Text_IO; use Ada.Text_IO;
procedure Hello_World is
procedure Say_Hello_World is
begin
Put_Line("Hello, world!");
end Say_Hello_World;
begin
Say_Hello_World;
end Hello_World;
Javascript
function sayHelloWorld() {
document.write("Hello, world!");
}
sayHelloWorld();
Functions and an argument
Of course, we're still just saying "Hello, world!". There's no flexibility. Instead, let's create a procedure "say_hello" which takes one string argument "name" indicating who the procedure should greet. For this example, we'll greet "Bob".
This one will demonstrate specifying a procedure with an argument and then calling it that way.
Turing
procedure sayHello(name : string)
put "Hello, " + name + "!"
end sayHello
sayHello("Bob")
C
#include <stdio.h>
void say_hello(const char * name);
int main()
{
say_hello("Bob");
return 0;
}
void say_hello(const char * name)
{
printf("Hello, %s!\n", name);
}
C++
#include <iostream>
#include <string>
void say_hello(std::string name);
int main()
{
say_hello("Bob");
return 0;
}
void say_hello(std::string name)
{
std::cout << "Hello, " << name, "!" << std::endl;
}
Java
import java.lang.*;
import java.io.*;
public class HelloWorld {
public static void main(String[] args) {
sayHello("Bob");
}
private static void sayHello(String name) {
System.out.println("Hello, " + name + "!");
}
}
C#
using System;
public class HelloWorld
{
public static void Main(string[] args)
{
SayHello("Bob");
}
private static void SayHello(string name)
{
Console.WriteLine("Hello, " + name + "!");
}
}
D
import std.stream;
void main()
{
sayHello("Bob");
}
void sayHello(char[] name)
{
stdout.writefln("Hello, %s!", name);
}
Perl
say_hello("Bob");
sub say_hello {
my $name = shift;
print "Hello, $name!\n";
}
Python
def say_hello(name):
print "Hello, %(name)s!" % {"name": name}
say_hello("Bob")
Ruby
def say_hello(name)
puts "Hello, #{name}!"
end
say_hello("Bob")
O'Caml
let say_hello name =
print_endline ("Hello, " ^ name ^ "!")
say_hello "Bob"
Eiffel
class HELLO_WORLD
creation {ANY} make
feature {ANY}
make is
do
say_hello("Bob")
end
feature {NONE}
say_hello(name : STRING) is
do
std_output.put_string("Hello, " + name + "!")
std_output.put_new_line
end
end
Pascal
This one should work, but FreePascal is giving me a syntax error
program Strings;
var
procedure SayHello(Name : String);
begin
WriteLn(Name)
end;
begin
SayHello('Bob')
end.
Ada
Strings in Ada are tricky enough that I've left this one out
Javascript
function sayHello(name) {
document.write("Hello, " + name + "!");
}
sayHello("Bob");
Credits
Author: Wtd