
Hello world in every programming language - QuarkSpark
https://github.com/leachim6/hello-world
======
rll
Technically Hello World in PHP is just:

Hello World

The one they have with <?php print("Hello World"); ?> is also an opcode longer
than using <?php echo "Hello World"; ?> because off the FREE on the return
value from the print. But a file just containing the string: Hello World and
nothing else will generate the same opcodes as the echo version so they are
equivalent and you might as well use the shorter form. A file without an
opening <?php tag is still a perfectly valid PHP program.

~~~
lhnz
Where do you learn such in depth information about PHP. The source code?

~~~
rll
It helps if you wrote a good chunk of it.

But one way that is easier than diving into the source code is to just dump
the opcodes using vld (see pecl.vld). I have a little wrapper shell script
/usr/local/bin/vld:

    
    
      #!/bin/sh -e
      exec php -dvld.active=1 -d vld.execute=0 "$@"
    

Then for the hello world program with the print() call:

    
    
      % vld hello1.php
      Finding entry points
      Branch analysis from position: 0
      Return found
      filename:       /tmp/hello1.php
      function name:  (null)
      number of ops:  3
      compiled vars:  none
      line     # *  op                           fetch            ext  return  operands
      ---------------------------------------------------------------------------------
         2     0  >   PRINT                                            ~0      'Hello+World'
               1      FREE                                                     ~0
         4     2    > RETURN                                                   1
    
      branch: #  0; line:     2-    4; sop:     0; eop:     2
      path #1: 0, 
    

vs. the one that just contains the string: Hello World

    
    
      % vld hello2.php
      Finding entry points
      Branch analysis from position: 0
      Return found
      filename:       /tmp/hello2.php
      function name:  (null)
      number of ops:  2
      compiled vars:  none
      line     # *  op                           fetch          ext  return  operands
      ---------------------------------------------------------------------------------
         2     0  >   ECHO                                                     'Hello+World%0A'
               1    > RETURN                                                   1
    
      branch: #  0; line:     2-    2; sop:     0; eop:     1
      path #1: 0,

~~~
why-el
Sorry to bother with an unrelated question, but how did you format the code
pasted in your response?

~~~
rll
See <http://news.ycombinator.com/formatdoc>

~~~
why-el
Thank you. I read that a while ago but I must have missed the section on code.

------
mtrn
While _Hello World_ is nice, something a bit more involved could give you more
insight. Among many people, Amit Singh (of MacFuse and Mac OS X Internals
fame) did this with the _Towers of Hanoi_ :
<http://www.kernelthread.com/projects/hanoi/> (111 Hanoi implementations
total).

~~~
objclxt
One of my favourites is 99 Bottles, with just under 1,500 implementations:
<http://99-bottles-of-beer.net/abc.html> \- some are inspiring, but others are
just plain funny.

------
baddox
The Rosetta Code is a much more interesting and useful site along the same
lines.

<http://rosettacode.org/wiki/Rosetta_Code>

~~~
gtani
There's probably a lot more cheats and cookbooks, but:

<http://pleac.sourceforge.net/>

<http://hyperpolyglot.org/>

------
doktrin
Why is Morse code included? I'm not being flippant, but rather genuinely
curious as to whether there's some basis for it being considered a
"programming" language or precursor thereof.

This isn't to confuse Morse code with reMorse :
<http://esolangs.org/wiki/ReMorse>

~~~
mtrn
I started to read _Code: The Hidden Language of Computer Hardware and
Software_ by Charles Petzold two days ago - and he starts with morse code (and
braille). You're right, it's no programming language (just an encoding) - but
seemingly near conceptually to a _language_ (for Petzold, anyway - yay it's
got 0's and 1's, too).

~~~
pmjordan
Does the book really focus on Morse code having 0s and 1s? Isn't it
technically a ternary encoding as opposed to a binary (0/1) one? The gaps
between letters are pretty significant.

~~~
mkopinsky
This is what I found funny about Gmail Tap 28 days ago. They managed to take
Morse Code - a tertiary encoding with only one input button - and "simplify"
it by having three buttons.

~~~
cloudwalking
We simplified the default Android keyboard from ~28 keys to 3. We didn't
simplify Morse Code.

~~~
mkopinsky
You complexified Morse code, is the point! Once you're doing Morse code, you
may as well make the entire keyboard be one key!

------
Groxx
Another very large set of hello worlds:
<http://rosettacode.org/wiki/Hello_world>

------
ushi
This repo is out of date. There are 9 months old pull requests open. Here is a
fork: <https://github.com/c00kiemon5ter/hello-world>

------
luzon
node.js is not a programming language.

~~~
furyofantares
'Hello World' is not possible in javascript without support from whatever
hosts it. The language itself has no support for input or output.

The site does have one filed only under 'javascript' implemented with alert(),
but that's really javascript as it exists in browsers.

~~~
eurleif
You could say the same about C. Sure, the C standard library is specified
along with the language, but it's still a library, not a set of language
features. You could have C without the stdlib. So does that mean an example in
C with an alternative IO library would be ok, but not a similar example in
Python?

I don't think whether IO is built into a language is really the important
question. If people are interested in seeing how IO works with different
frameworks, those examples should be there. But if people just want to see
what a language's basic syntax looks like, not the specifics of emitting IO in
various frameworks, there should be one example per language, even for
languages which lack built-in IO.

------
scriptproof
One page list, more languages: <http://www.scriptol.com/programming/hello-
world.php> (and older)

------
reitzensteinm
I remember reading that the Malbolge author was 'working' on a Hello World
program, and thought that was awesome. Now I see why:

[https://github.com/leachim6/hello-
world/blob/master/m/malbol...](https://github.com/leachim6/hello-
world/blob/master/m/malbolge.mbg)

I wonder if it was written by hand; that would be impressive. Doesn't look
like it would be too hard to hand roll a little compiler for it.

~~~
tomjen3
At least the first one wasn't made by hand. It was created by a stochastic
beam search program written it Common Lisp.

And if I recall correctly, it took years to do.

~~~
reitzensteinm
OK, rereading the specs, I completely take back what I said about handrolling
a compiler not being difficult. Damn.

------
jfoutz
No love for intercal? <http://en.wikipedia.org/wiki/INTERCAL> Hmm. piet is
missing too.
[http://www.retas.de/thomas/computer/programs/useless/piet/in...](http://www.retas.de/thomas/computer/programs/useless/piet/index.html)

------
joshbaptiste
I prefer the FizzBuzz examples as it also displays the simple looping
constructs of the languages <http://rosettacode.org/wiki/FizzBuzz>

Edit: Grr it is missing one of my favorite JVM.next() languages of the week
Kotlin, I will have to update it.

------
quink
MUMPS was left out. Like usual :P

w "Hello World",!

~~~
chris_wot
Everything I've ever heard about MUMPS says that it's awful. Is this true?

~~~
btwrto
It's a language that predates C. Maybe some the things that you take for
granted are not there, and some syntax is weird, and order of evaluation is
strict left-to-right. (i.e. "'x+1=2+3" first computes 'not x', i.e. 0 or 1 if
x=1 or x=0 respectively, then adds 1 to the result, then compares that result
to 2, then adds 3 to that result, giving either 3 or 4 as a final answer).

but if you write controlled, sensible code, then it's actually not. certainly
never my language of choice but it it's not just still used due to inertia...
it's pretty fast, it makes database interaction easy, it's pretty easy to
understand if the code isn't doing something awful like assuming variables and
relying on hidden state. (which you can do, yes.)

if you're talking about the Daily WTF articles, then no it's not nearly as bad
as those articles would imply. I worked for a company that is probably
featured in one, but not all, of those articles... we had good tools, good
coding standards/dev process, a good internal API/libraries that do quite a
lot, and sensible people. Under these circumstances it was not bad--I'd
actually grown quite fond of it. (No codebase of a large old company will be
WTF-free but this isn't language-specific. I don't think any actual _code_
from those Daily WTF articles actually comes from that company...)

Also, "A Case of the MUMPS" gets many things wrong.

'Scope of IF and FOR is "remainder of current line."' Nope. That's what 'do'
is for. Note that ';' comments out everything to the right on the same line.

    
    
        for i=1:1:100 do  ; equivalent to 'for(int i=1;i<101; i++) { }', with the lines below indented with a period serving as the body of the brackets  
        . write !,"line 1 of code block, iteration "_i
        . write !,"line 2 of code block, iteration "_i
        . write !,"line 3 of code block, iteration "_i
        write !,"Done with loop" ; this gets executed after the for loop
    

Note that I'd actually write this as 'f i=1:1:100 d' and 'w "string"' in place
of "for i=1:1:100 do" and 'write "string"'. It's just as easy to read if you
know the language, especially if you have nice syntax highlighting, and easier
to write. Which brings me to...

'To edit the code stored in the “database”, developers needed to use the
internally-created text editor.'

Not in our case, and this makes me wonder how long ago this guy's experience
was. in our case, the vendor provided an IDE and we also had our own, written
in C#, which is actually my favorite IDE from any language.

~~~
quink
I can't think of a more usable productive language from the 60s that still
survives. It's got a lower barrier of entry than C, and it's miles better than
BASIC. It's more friendly than BASIC in fact, while still being faster, and is
way more accessible than FORTRAN or COBOL.

You want to do FizzBuzz? I present the shortest FizzBuzz in almost any
language other than APL or Perl:

    
    
      f i=1:1:100 w ! w:'(i#3) "Fizz" w:'(i#5) "Buzz" w:'$x i
    

Or, in pseudocode:

    
    
      for i=1:1:100
       print "\n"
       if not (i%3) print "Fizz"
       if not (i%5) print "Buzz"
       if not x_pos_of_cursor print i
    

Ah, yes, and don't ever use dot notation as above if you plan on wanting
comments on your line, i.e.

    
    
      for 
       . blah
       ; some comment here
       . foo
    

foo here won't execute. Instead this works:

    
    
      for 
       . blah
       . ; some comment here
       . foo
    

Tripped me up the first time I dealt with that... however, these days with
Caché ObjectScript (the most popular MUMPS dialect) it'd be written:

    
    
      for {
        blah
        // some comment here
        foo
      }

------
drucken
Largest collection "Hello world" in programming languages (441 at last count):
<http://www.roesler-ac.de/wolfram/hello.htm>

It even has BCPL and LabVIEW!

------
franze
well, certainly not every programming language.

i.e.: i'm one of the most senior ACT3 programmers worldwide. (well, there were
only about a dozen or so people) it was a programming language used
extensively at the national austria press agency. it was - at it's time
(around 2001) - for more advanced as PHP 4. the hello world would have looked
something like this

<!--%'hello world'-->

(the <!-- --> was a relict from ACT2 ...)

yes it was an abomination, but it worked, and it was fast.

ok, anyway, ARC is missing, too. I think the claim "every programming
language" is a) wrong and b) not really feasible.

~~~
bmelton
It's a work in progress, with the _goal_ of getting every programming language
in there.

Submit a pull request for ACT3 and you'll have one less language's absence to
notice.

~~~
albertzeyer
"every programming language" is an infinite set. Every programming language
where an interpreter/compiler was implemented once is maybe better. But, when
you consider that most programmers have at one point invented their own
language, or languages (I cannot really count how much toy languages I have
created at some point), it is still way too much and impossible to get them
all. Maybe more restrictive would be to take languages which at least 2 people
have used at one point. But even then...

The point I'm trying to make is: "Every programming language" will always be
wrong.

------
jiganet
Hello world in PostScript:

/Times-Roman findfont 12 scalefont newpath 200 200 moveto (Hello World) show
closepath Showpage

Use this in gs on Linux or y gswin32 on windows

------
simonbarker87
LabVIEW is missing - can git support it?

Update:

And I don't see Processing either

------
tzaman
Not very useful

------
tome
The Python 3 version works in Python 2 as well. They may as well unify them.

------
BasDirks
I am not quite sure why the Haskell program needs a module statement.

------
asjo
COMAL 80 is missing. Too bad I don't remember anything of it :-)

~~~
trin_
im not sure but that should just be:

10 PRINT "Hello World"

------
knowtheory
of course, it doesn't explain how to build and/or run any of them :P

------
erode
Missing F#.

printfn "Hello World"

~~~
evincarofautumn
Submit a pull request.

~~~
silvestrov
Missing too an example written in RPG: <http://en.wikipedia.org/wiki/IBM_RPG>

I'm not going to submit a pull request, fortunately I've never had to write
anything in that language.

~~~
evincarofautumn
A friend of mine had a course in RPG in his CS curriculum. He tells me it
was…not pleasant, but not as bad as it might look.

------
goggles99
Where is the PL/I?

------
zackzackzack
I note a suspicious lack of DCPU-16.

~~~
jabr
There's an implementation in the pull request queue.

