Jump to content
Taki

"Hello World!" dans tous les langages

Recommended Posts

Assembleur architecture x86, avec le compilateur TASM

.model small
.stack 100h

.data
 hello  db  "Hello the World !$"

.code
main  proc

 MOV  AX,@data
 MOV  DS,AX

 MOV  DX,offset hello
 MOV  AX,0900h
 INT  21h

 MOV  AX,4C00h          
 INT  21h

main endp
end main

15 lignes :chinois:

Share this post


Link to post
Share on other sites
bon, je sais qu'on va pas commencer a chipoter mais pour le code php, un simple

<?php
echo "hello world";
//ou bien: print "hello world";
?>

aurait suffi :p

(enfin ça n'a pas d'importance, mais bon, pour moi le code le plus lisible et le plus

simple possible reste toujours souhaitable :)

enfin bon, topic sympatique, que je rajoute dans les liens , et bonne continuation :)

Merci grand gourou :pleure:

Je vais de ce pas mettre à jour le post d'entête. :pleure:

@Irgoff: trop marrant ton lien :chinois:

EDIT: Update terminée.... on attend la suite :D

Edited by Taki

Share this post


Link to post
Share on other sites
En francais:

Bonjour le monde

J'avais hésiter à la faire celle-là, mais je me suis retenu de peur de me faire traiter de :rhooo::transpi:

Edited by nonas

Share this post


Link to post
Share on other sites
Bon pour rappel un petit historique des langages de programmations...juste histoire de voir les langages dans lequels il nous manque des Hello World...On autorise ceux sur carte perforée ou pas?

http://www.oreilly.com/news/graphics/prog_lang_poster.pdf

Si t'as une image du hello world sur carte perforée ça peut être marrant mais faut voir si on peux vraiment appeler ça de la programmation.

D'ailleurs à ce qu'il paraît les mes qui fesaient les trous sur les cartes se sont tous recyclés dans la SNCF comme controlleurs... :chinois:

:mdr2:

Share this post


Link to post
Share on other sites
Si t'as une image du hello world sur carte perforée ça peut être marrant mais faut voir si on peux vraiment appeler ça de la programmation.

D'ailleurs à ce qu'il paraît les mes qui fesaient les trous sur les cartes se sont tous recyclés dans la SNCF comme controlleurs... :incline:

:kill:

Ben la prochaine fois que je passe a l'université, je prendrais mon APN...Y'a aussi des mémoires a tores, je les prend avec?

Share this post


Link to post
Share on other sites

Bon, ben j'en ait trouvé grace a l'ami google...

Ces cartes sont des cartes mécanographiques datant des années 60 - 70...

xDSCF5164.JPG

Celle-ci est un programme sur bande de papier codé sur 8 bits...Le codage utilisé est le codage ABCDIC...ca sert dans les ordinateurs de type MICRAL (années 70-80)

xDSCF5166.JPG

Des cartes programme pour un IBM System 3 et le "petit" ordinateur qui va avec

4.jpg

1.jpg

2.jpg

Des trucs Hors Sujet :

La première souris

Spécialiste des radars à l'US NAVY, Engelbart conçut la souris en 1963.Le nom de souris lui fut donné spontanément car ce nouveau périphérique y ressemblait avec son cordon en forme de queue.

souris.gif

mouse.jpg

http://www.thocp.net/hardware/pictures/mouse_firstb.jpg

(celle la elle passait pas sur PCI)

Ca doit pas être aussi confortable que ma MX510...mais bon...:francais:

De la mémoire a tores

Une vue généralle :

core0.jpg

Je me suis fait refiler dernièrement une plaque de mémoire à tores de ferrite, le genre de mémoire dont on se servait avant la généralisation des puces de RAM. Le panneau fait 64 x 64 bits, soit 4096 bits, ou 512 octets. Le texte de cette page n'y rentrerait même pas... ce qui ne veut pas dire qu'on ne pouvait rien en faire : par exemple, le noyau du ColorForth tient dans seulement 400 octets.

Avec un billet de 100FF a coté...

core1.jpg

Ce n'est pas si gros : sur cette photo, je passe la plaque au scanner, à côté d'un bout de papier sans valeur de dimensions connues. La surface couverte par les tores fait 4,8 cm de côté, ce qui donne 0,75 mm de côté par bit.

core2.jpg

Rapprochons-nous un peu pour en examiner la délicate structure. Cet ouvrage de tapisserie électronique était façonné à la main : s'il faut avoir de bons yeux et/ou une loupe puissante pour regarder ces détails, imaginez la difficulté des techniciens qui fabriquaient ces mémoires ; on comprend sans mal leur prix très élevé. (heu ca devait pas être des techniciens, mais de petits chinois sous payés, c'est pas possible...M'enfin bon si c'était vraiment des techniciens qui faisaient ca...ils n'avaient aucune excuse pour ne pas repriser leurs chaussettes durant les années 60...)

core3.jpg

Et un petit zoom

--Edit--

On comprend mieux pourquoi il fallait économiser la mémoire à l'époque...heureusement depuis, nos amies les bascules transistorées ont été inventées...

Edited by Charles.w

Share this post


Link to post
Share on other sites

Bon pour être serieux...

Une Hello World en LISP...

; LISP
(DEFUN HELLO-WORLD ()
                 (PRINT (LIST 'HELLO 'WORLD)))

Une première Hello World en Objective C

void main()
{
  printf("Hello World\n");
}

Une deuxième Hello World en Objective C

#import "objc/Object.h"

//
//  Compile with:
//
//    cc hw.m -o hw -lobjc -lm
//

@interface HelloWorld : Object
{
 STR msg;                 // Instance Variable
}

+ new;                     // Class/Factory method
- print;                   // Instance method
- setMessage: (STR) m;     //  "         "

@end

@implementation HelloWorld

+ new
{
 self = [super new];
 msg = "";
 return self;
}

- print
{
 printf("%s\n", msg);
 return self;
}

- setMessage: (STR) m
{
 msg = m;
 return self;
}

@end


int main(int argc, char**argv) {
 id obj;

 obj = [HelloWorld new];

 [[obj setMessage: "Hello World"] print];

 return 0;
}

Share this post


Link to post
Share on other sites

Bon d'autres hello world....

En APL (1960)

@ This program is very simple in APL!

'Hello World!'

@ In APL, anything that is printed in quotes is printed to the terminal. (@ in APL signifies a comment)

@ If the "Hello World statement needed to be stored, then you could use the following :
h<-'Hello World'
h

@Typing h causes h's value to be printed to be printed.

En ALGOL 68 (heu...ben...1968...)

BEGIN
FILE F (KIND=REMOTE);
EBCDIC ARRAY E [0:11];
REPLACE E BY "HELLO WORLD!";
WHILE TRUE DO
   BEGIN
   WRITE (F, *, E);
   END;
END.

Bon ben passons à l'assembleur...

Sur VAX ...

LL0:
       .data
       .text
L       .align  1
       .globl  _main
_main:
       .word   L12
       jbr     L14
L15:
       .data   1
L17:
       .ascii  "Hello, world.2"
       .text
       pushl   $L17
       calls   $1,_puts
       ret
       .set    L12,0x0
L14:
       jbr     L15
       .data

Sur Motorolla 68000...

start:
   ; Message-String ausgeben
       move.l #msg,-(a7)
       move.w #9,-(a7)
       trap #1
       addq.l #6,a7

   ; auf Taste warten
       move.w #1,-(a7)
       trap #1
       addq.l  #2,a7

   ; Programm beenden
       clr -(a7)
       trap #1
        
       msg: dc.b "Hello World",10,13,0

Sur MIPS R2000 (pour rappel le MIPS est le premier processeur RISC)

.data                     # Datensegment
str:    .asciiz "Hello World!\n"  # String ablegen
       .text                     # Codesegment
main:   li      $v0, 4            # 4 = Print_string
       la      $a0, str          # Adresse des Strings übergeben
       syscall                   # Systemfunktion aufrufen
       li      $v0, 10           # 10 = Quit
       syscall                   # Programm beenden

En MIDAS sur PDP 10

;; Hello world in MIDAS

title   hello

start:  .open   [.uao,,'tty ? 0 ? 0]
        .lose  %lsfil
       move    1, [440700,,[asciz "Hello, world
"]]
loop:   ildb    2,1
       skipn   2
        .logou 1,
       .iot    2
       jrst    loop

end     start

Sur Intel 8086 --EDIT-- CE CODE EST FAUX

; WRITTEN IN TASM (Turbo Assembler)
.MODEL TINY
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 100h
START:
       mov ah,9
       mov dx,OFFSET Msg
       int 21h
       int 20h
       Msg DB 'Hello World',13,10,'$'
CODE ENDS
END START 

Sur Apple 2

; Uses S-C Assembler variant.
; .or is origin
; .as is ASCII String
; .hs is Hex String
       .or $300
main    ldy #$00
.1      lda str,y
       beq .2
       jsr $fded; ROM routine, COUT, y is preserved
       iny
       bne .1
.2      rts
str     .as "HELLO WORLD"
       .hs 0D00

Edited by Charles.w

Share this post


Link to post
Share on other sites

Comment tu le fais fonctionner le code que tu as fourni pour assembleur x86 ?

Pcq je l'ai lancé chez moi mais ca ne fonctionne pas :-D

J'ai déjà du rajouter un .stack 100h pour que ca veuille compiler :transpi:

J'utilise Turbo Assembleur 3.2 et Turbo Link 5.1

Share this post


Link to post
Share on other sites

Peut-être un code masm, je sais que sa diffère un peu du tasm.

Share this post


Link to post
Share on other sites

Heu, c'est possible d'utiliser un compilateur C en mettant un code du genre ?

void test ()
{
    asm {

               ....   

         }
}

Edited by Charles.w

Share this post


Link to post
Share on other sites

C'est possible aussi que le code donné passe pas sur les dernières générations de processeurs...Il me semble que la rétrocompatibilité du code n'aille plus jusqu'au 8086...Avec le PIII, et ensuite le PIV, Intel a refondé toute son architecture...

Share this post


Link to post
Share on other sites

Oui c'est possible mais je sais plus comment faut le mettre exactement :roll:

Y'a un truc à voir avec les .h aussi.

edit : je parle de l'asm dans le c ici. Pour la rétrocompatibilité, je sais pas trop, mais en effet je crois qu'on va que jusqu'au Pentium. (voire 386)

Edited by nonas

Share this post


Link to post
Share on other sites

Arf, ca y est, je viens de trouver un compilateur...Negatory Assembly Studio 2.0, il gère les codes TASM, MASM, TASM32...

Bon ben du coup, puisque c'est un IDE, on fait un copier coller des hello world données...

.386
.model flat,stdcall
option casemap:none

include windows.inc
include kernel32.inc

.data
sConsoleTitle  db "Console Application",0
sWriteText  db "Hello World!",0

.code

Main PROC
LOCAL hStdout :DWORD
invoke SetConsoleTitleA, offset sConsoleTitle

invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hStdout,EAX

invoke WriteConsoleA, hStdout, offset sWriteText, 16d, 0, 0
invoke ExitProcess, 0

Main ENDP
end Main

Désolé pour l'autre code, je le referais plus...

--EDIT--

Pour DL Assembly Studio, c'est ici...

http://www.negatory.com/asmstudio/

Edited by Charles.w

Share this post


Link to post
Share on other sites

En tous cas, c'est super interessant tout ce que vous trouvez les gars! :D

Par contre j'ai la flemme de faire la MAj ce soir :mdr:

:arrow:

@+

Share this post


Link to post
Share on other sites

A mon avis, tu devrais dégager le "virtual basic" (d'ailleurs y'a une coquille :8 ) et le remplacer par le Basic :

ça donnerait donc :

10 ? "Hello World!"

Share this post


Link to post
Share on other sites
A mon avis, tu devrais dégager le "virtual basic"

rroooooh mais quoi c'est bien le VB :pleure:

:craint:

Share this post


Link to post
Share on other sites

Continuez, c'est très intéressant!!!! Et oui, faudrait corriger Virtual par Visual :pleure:

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...