<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <font size="4" face="monospace">The rationale should be obvious:
      System.out.println is not going away, nor are the several billion
      uses of println in existing Java code.  Were we to choose another
      name "because its better", then people have to learn two names,
      and learn that they do the same thing.  In this, we chose
      familarity / minimal hamming distance over finding the "best" name
      as if it were a clean-slate exercise (because it is not a clean
      slate exercise.)<br>
      <br>
      (I'll also point out that had we done as you suggest,
      mirror-universe Ethan would be asking the exact same question
      (e.g., "what is the rationale behind picking something that is
      gratuitously different from how it is done today"))<br>
      <br>
      <br>
      <br>
      <br>
    </font><br>
    <div class="moz-cite-prefix">On 7/16/2024 1:11 PM, Ethan McCue
      wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:CA+NR86gUqP3ivgEXC+xGsj1m+WNs-y3JccQh1V5VwOddnaLC8Q@mail.gmail.com">
      
      <div dir="ltr">I still am not for importing java.base, for the
        reasons I think I talked to death in that other thread.<br>
        <br>
        I guess while we are on the topic, what is the rationale behind
        naming the method <font face="monospace">println</font><font face="arial, sans-serif">?</font>
        <div><font face="arial, sans-serif"><br>
          </font></div>
        <div>The current draft on github has <font face="monospace">println</font>, <font face="monospace">print</font>, and <font face="monospace">readln</font><font face="arial, sans-serif">. But printing isn't the inverse of
            reading - writing is the inverse of reading. I agree that
            the metaphor of "printing to the screen" is used widely, but
            I don't see why we would pick that given a blank slate.<br>
            <br>
            Then also </font><font face="monospace">readln</font><font face="arial, sans-serif"> over </font><font face="monospace">readLine</font><font face="arial, sans-serif"> strikes me as a strange tradeoff.
            That's the kind of thing that helps someone who already
            knows that "ln" is an abbreviation for "line" write code -
            i.e. the group Cay identified as "</font>authors of small
          programs." For beginners it's one more non-obvious thing that
          needs to be explained.</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Tue, Jul 16, 2024 at
          12:43 PM <<a href="mailto:forax@univ-mlv.fr" moz-do-not-send="true" class="moz-txt-link-freetext">forax@univ-mlv.fr</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">-----
          Original Message -----<br>
          > From: "Cay Horstmann" <<a href="mailto:cay@horstmann.com" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">cay@horstmann.com</a>><br>
          > To: "Remi Forax" <<a href="mailto:forax@univ-mlv.fr" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">forax@univ-mlv.fr</a>><br>
          > Cc: "amber-dev" <<a href="mailto:amber-dev@openjdk.org" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">amber-dev@openjdk.org</a>><br>
          > Sent: Tuesday, July 16, 2024 9:15:30 AM<br>
          > Subject: Re: JEP 477 Interacting with the Console<br>
          <br>
          > On 16/07/2024 08.41, Remi Forax wrote:<br>
          >>> In general, the needs of beginners and authors of
          small programs are not the<br>
          >>> same. The JEP bounces between the needs of the
          two. Implicit classes are useful<br>
          >>> for both, but magic imports will add puzzlement
          for beginners.<br>
          >> <br>
          >> I disagree, this is only an issue if you talk about
          "import", seing println as a<br>
          >> shorcut for IO.println is not a real problem.<br>
          >> <br>
          >> The notion of "import" in Java is tricky anyway
          especially because most of my<br>
          >> students know Python so you need a full lesson about
          the difference between<br>
          >> Java import and Python import,<br>
          >> but that lesson can be taught in the second part of
          the semester when you need<br>
          >> "package".<br>
          >> <br>
          > <br>
          > Hi Rémi,<br>
          > <br>
          > I agree that not having to talk about imports right away
          is a win. I am all for<br>
          > importing java.base.<br>
          > <br>
          > I am not sure I get your point about shortcuts, though. I
          wouldn't want to talk<br>
          > about shortcuts any more than about imports. I would not
          want to discuss why<br>
          > there is a println shortcut but not parseInt or pow.<br>
          <br>
          Shorcuts is not the right term, convenient is a better term.<br>
          This is the word we use to explain "var" too.  <br>
          <br>
          > <br>
          > Really, how painful is IO.println? (If that's too long,
          call it IO.out.) And it<br>
          > is consistent. IO.println. Integer.parseInt. Math.pow.
          Consistent is good for<br>
          > beginners. If further brevity is desired, there is an
          existing<br>
          > mechanism--static imports. Which can wait.<br>
          <br>
          I think this is perfectly fine to not use "println" but
          "IO.println" instead and mention later that it can be
          abbreviated to "println".<br>
          <br>
          > <br>
          > The alternative is to go big, and to provide "shortcuts"
          for all beginner<br>
          > methods. println, parseInt, pow. Consistent and not
          puzzling. But of course the<br>
          > rub is, what are all beginner methods ?<br>
          <br>
          and the fact that all these names polute the scope.<br>
          <br>
          We have exercises where students rewrite simple functions like
          pow or parseInt, it would be sad if IO.parseInt is called
          instead of the method "parseint" defined by a student because
          the method call is written "parseInt(...)".<br>
          <br>
          > <br>
          > Cheers,<br>
          > <br>
          > Cay<br>
          <br>
          regards,<br>
          Rémi<br>
          <br>
          > <br>
          > --<br>
          > <br>
          > Cay S. Horstmann | <a href="https://horstmann.com" rel="noreferrer" target="_blank" moz-do-not-send="true" class="moz-txt-link-freetext">https://horstmann.com</a><br>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </body>
</html>