[HN Gopher] Turns out GCC has imperative argument handling
       ___________________________________________________________________
        
       Turns out GCC has imperative argument handling
        
       Author : ufo
       Score  : 19 points
       Date   : 2022-07-01 10:34 UTC (12 hours ago)
        
 (HTM) web link (hisham.hm)
 (TXT) w3m dump (hisham.hm)
        
       | rayiner wrote:
       | Pedant: That's not imperative. You can have a purely functional
       | program that uses a flag in a list to treat subsequent arguments
       | in a list differently. Just have a conditional on the flag, and
       | recursively call "do_things_this_way" on one branch and
       | "do_things_that_way" on the other.
        
       | kccqzy wrote:
       | Blame the linker, not GCC.
       | 
       | Also it's pretty well known that the order of command line
       | arguments passed to the linker is important. It is sometimes also
       | needed to pass a library to the linker multiple times.
        
         | jepler wrote:
         | Yes, sort-of, though the "imperative" linker flags -( and -)
         | may help you. if you can figure out how to quote them properly
         | (or use --start-group / --end-group)
        
         | klysm wrote:
         | I did not know that but that does suck. The typical contract is
         | that it shouldn't matter beyond being able to parse it.
        
           | cstrahan wrote:
           | I believe it _would_ be that way, if not for performance. The
           | linker keeps track of unresolved symbols, and resolves those
           | symbols while parsing subsequent object files. So if you list
           | a dependency _before_ it is used, that dependency won't be
           | linked at all, resulting in unresolved symbols -- thus the
           | need for object files to be listed in a particular order.
           | 
           | Edit: and the need for listing a dependency twice is to
           | resolve mutually dependent object files. If A depends on
           | symbols from B and B depends on symbols from A, you can link
           | A,B,A or B,A,B (per the aforementioned reasoning).
        
       | an1sotropy wrote:
       | I'm guessing this person hasn't used (ImageMagick) "convert";
       | AFAIK it is the program that does the most to turn a sequence of
       | command-line arguments into an imperative scripting "language"
        
         | touisteur wrote:
         | You can built pretty darn complex things with just imagemagick
         | command-line, between the max command line size and combining
         | several intermediate pictures. I used to do complex dashboards,
         | system architectural diagrams, with just bash functions calling
         | in imagemagick. Now if you don't have imagemagick, rsvg-convert
         | will do, just remember your svg :-).
        
           | RedShift1 wrote:
           | Would love to see some screenshots of that... Sounds like the
           | digital equivalent of hand-drawn schematics
        
           | touisteur wrote:
           | Also I thought this crown of command-line as DSL was
           | ffmpeg's?
        
         | light_hue_1 wrote:
         | Or ffmpeg.
        
       | yjftsjthsd-h wrote:
       | > I thought find was a strong contender for Unix command with the
       | weirdest argument handling, but I guess gcc takes the cake.
       | 
       | Depending on how you count, surely dd should take the cake?
       | Otherwise, you're just including the _group_ of commands that
       | uses arguments as a command language, and I don 't think that's
       | actually such a small group; ffmpeg does the same thing, too.
        
       ___________________________________________________________________
       (page generated 2022-07-01 23:00 UTC)