The audacity to do such a thing…

    • CompassRed@discuss.tchncs.de
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      It depends. If the variable names are arbitrary, then a map is best. If the variable names are just x_1, x_2, x_3, …, x_n, then a list or dynamic array would be more natural. If n is constant, then a vector or static array is even better.

    • OmnipotentEntity@beehaw.org
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      1 year ago

      Or sometimes even just an array. The first time I thought I wanted to do this was 2003 and I was writing a perl script, and I was trying to loop through some sort of array, and write the outputs of some calculations to $val0 $val1 and so on, and I was neck deep into some horrible dark constructs like ${"val" . $i} before I actually realized that I really just wanted an array, you know, like the one I was already using.

      It took me forever to understand map (the metafunction).

    • palordrolap@kbin.social
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      In Perl, eval can do similar things, but symbolic references are “better” (I’m fairly sure it’s where PHP got the idea, and the syntax, from.) e.g.

      $foo = "bar";
      $$foo = "potatoes"; # $$foo = access the variable named in $foo, i.e. $bar
      print $bar; # prints potatoes
      
      

      Reading other responses, it seems like Python’s globals object is not entirely dissimilar, especially if you know how Perl deals with symbolic references under the hood.

      But just because you can doesn’t mean you should. If you use strict; in Perl, it will fail to compile most of this nonsense. Use a hash / associative array / dictionary / whatever your language (natural and/or programming) calls them instead.

      And I’m pretty sure that even without strict, local variables can’t be accessed at all the symbolic way, which is probably for the best. (NB: local is a subtle thing in Perl. By “local” here, I mean the so-called my variables that aren’t accessible outside their scope. local variables are actually localised globals. Enjoy that thought.)

  • wethegreenpeople@sopuli.xyz
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    I distinctly remember asking this question during a 100 level programming class but I just can not remember why I’d ever want to do this?

    What problem could I have possibly have been trying to solve where this would seem like the answer.

    • RyeMan@lemmy.ml
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      In lower level languages like C/C++ the reason becomes much more apparent when you learn about memory allocation and management (as a bonus it also really helps to understand how OS’s handle memory). Dynamically declaring variables in a loop would mean you need to allocate a chunk of memory for each variable that’s generated on the fly, most of, if not all of the dynamically declared variables would not even use most of their allocated memory resulting in a ton of extra overhead and wasted space within memory. An array is usually the answer when someone asks how to dynamically define variables. With an array you allocate the space needed in memory and can iterate across it block by block resulting in more control and efficiency within your reserved memory block. Linked lists are also a fun thing to look into when you aren’t sure how big your array needs to be. It’s a hard question to answer in a 100 level class because the answer actually goes pretty deep into low level programming, operating system and hardware principles.

  • Pxtl@lemmy.ca
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 year ago

    The reason I hate HTML: I’ve seen smart, reasonable people do this with IDs, and I’m not 100% sure they’re wrong.

    • jvisick@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      That’s because it makes sense when dynamically creating HTML. HTML is not a programming language, it’s simply markup - so if you want to generate some block of HTML in a loop and later access that block of HTML in JS (e.g. to interact with the UI separate from creating it in the first place), it’s a completely reasonable thing to do.