• xthexder@l.sw0.com
    link
    fedilink
    English
    arrow-up
    26
    ·
    16 hours ago

    Hello World in 1974: echo.c

    main(argc, argv)
    int argc;
    char *argv[];
    {
    	int i;
    
    	argc--;
    	for(i=1; i<=argc; i++)
    		printf("%s%c", argv[i], i==argc? '\n': ' ');
    }
    
      • xthexder@l.sw0.com
        link
        fedilink
        English
        arrow-up
        9
        ·
        16 hours ago

        I think it’s actually quite elegant. No matter what it has to skip over argument 0 which will be the executable name echo.
        If the subtraction was removed and the loop changed to <, it would then need to do an addition or subtraction inside the loop to check if it’s the last argument.

        • palordrolap@fedia.io
          link
          fedilink
          arrow-up
          5
          ·
          16 hours ago

          The real question might be whether the compiler was smart enough to change var++ and var-- into ++var and --var when the initial values aren’t needed.

          As compiler optimisations go, it’s a fairly obvious one, but it was 1974 and putting checks like that in the compiler would increase its size and slow it down when both space and time were at a premium.