Jump to content

"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:

Link to comment
Share on other sites

  • Replies 208
  • Created
  • Last Reply

Top Posters In This Topic

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
Link to comment
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:

Link to comment
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?

Link to comment
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
Link to comment
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;
}

Link to comment
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
Link to comment
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

Link to comment
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...

Link to comment
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
Link to comment
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
Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...