<div dir="ltr"><div class="gmail_default" style="font-family:monospace">And to be clear, irrelevant means, call it whatever you want.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 1, 2023 at 5:23 PM David Alayachew <<a href="mailto:davidalayachew@gmail.com">davidalayachew@gmail.com</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"><div dir="ltr"><div class="gmail_default" style="font-family:monospace">Hello Mark,</div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">Thank you for posting this!</div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">I really like the direction of simplifying concepts and reducing the surface size. Starting out with a smaller domain of concepts makes the universe easy to understand, not to mention, you can appreciate the expanded domain once you need to start introducing some programming-in-the-large concepts.</div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">>
The new programmer encounters these concepts</div><div class="gmail_default" style="font-family:monospace">> at the worst possible time,
before they learn</div><div class="gmail_default" style="font-family:monospace">> about variables and control flow, and when</div><div class="gmail_default" style="font-family:monospace">> they
cannot appreciate the utility of</div><div class="gmail_default" style="font-family:monospace">> programming-in-the-large constructs for</div><div class="gmail_default" style="font-family:monospace">> keeping a large program well organized.</div><div class="gmail_default" style="font-family:monospace">> Instructors often offer the
admonition,</div><div class="gmail_default" style="font-family:monospace">> "don't worry about that, you'll understand it</div><div class="gmail_default" style="font-family:monospace">> later." This
is unsatisfying to them and</div><div class="gmail_default" style="font-family:monospace">> their students alike, and leaves students</div><div class="gmail_default" style="font-family:monospace">> with the enduring impression that the</div><div class="gmail_default" style="font-family:monospace">> language is complicated.
</div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">Rereading this paragraph, I appreciate the wording of it very much. It helps us see the mindset of the student as clearly as possible. So much so that it raises 2 questions.</div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">1. In the name of simplifying things for beginners, what is the reason why the main method is specifically called "main"? Would not "run" or something similar be better? The word "main" implies to me that it is the "main" method (out of all of the others). But that right there means I must be aware of the concept of there being multiple methods. But again, that's forcing the beginner to think about concepts that they don't yet need to. Most students' first programs will be solely contained in a single method.<br></div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">2. Alternatively, could we have the name be irrelevant if it is the only method in the class? If we do that, then the concept of the "main" method would be really impactful, because, once you introduce the concept of multiple methods, students are likely to ask themselves "which method will get run first?" In that instance, the concept of a method called main wll be extremely intuitive and understandable. I really like this idea. I feel like we have an opportunity for a memorable "light bulb" moment in student's minds. If they ask themselves which method will be called now that there are multiple, the "main" method will make perfect sense the first time. It will complicate that launch protocol. For example, do we allow parameters? I say, it should follow suit with "main" semantics.<br></div><div class="gmail_default" style="font-family:monospace"><br></div><div class="gmail_default" style="font-family:monospace">Thank you for your time and help!</div><div class="gmail_default" style="font-family:monospace">David Alayachew<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 1, 2023 at 4:34 PM Mark Reinhold <<a href="mailto:mark.reinhold@oracle.com" target="_blank">mark.reinhold@oracle.com</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"><a href="https://openjdk.org/jeps/463" rel="noreferrer" target="_blank">https://openjdk.org/jeps/463</a><br>
<br>
Summary: Evolve the Java programming language so that students can<br>
write their first programs without needing to understand language<br>
features designed for large programs. Far from using a separate dialect<br>
of the language, students can write streamlined declarations for<br>
single-class programs and then seamlessly expand their programs to use<br>
more advanced features as their skills grow. This is a preview language<br>
feature.<br>
<br>
- Mark</blockquote></div>
</blockquote></div>