Programming Hello World: A Deep Dive

Ryan James

·

April 15, 2020

Every programmer remembers the first time that the wrote their first program ever…most likely it was a simple print or display statement that showed the words “Hello World” on the screen. The first time I did this was not as eventful as I remember, but one memory that does come to mind was when I used Python to say “Hello World” over the computer speakers with a text-to-speech library. I was so giddy with excitement I felt I had to tell everyone but decided not to in the long run. Now on to the big question that always gets floated: “What language should someone learn first?”. This is such a loaded question because it has so many variables nested in it. I’m going to rephrase the question more specifically trying to reduce our variables: “What language should a non-adult student learn first?”. We’re going to address a few different programming languages/environments that are looked into by educators and students alike and see if we can find a best answer for this question.

Starting with Blocks

Snap Blocks

Higher-level programming languages tend to be the least intimidating; so let’s jump into block languages. Scratch and Snap! are both great examples of block languages suitable for the classroom. Scratch is hosted by MIT online and Snap! is hosted by UC Berkely online. Since block languages have a more appealing interface for students that are not comfortable with technology, a block language generally will allow programming concepts to be better understood for students who are new to using computers and computing tools. What programming concepts can be taught with these languages? Well Scratch incorporates variables, selection, sequencing, iteration, data abstractions, and procedures. Snap! incorporates all of this plus some more advanced data abstractions like matrices and objects. Snap! is also really useful for more advanced projects since it can connect to other websites and students can write Javascript code inside of a Snap! project.

Transition to Text-Based

print("Hello World!)

Next up on our list has to be Python. For a text-based programming language, the options are endless…it’s like going through Netflix to find that perfect movie or show you’ve never seen, just too many options. For this, people have their favorite text-based language and will tend to lean that way for a first language whether that be Python, Java, Javascript, C, or something else. I really feel that Python is perfect for first time programmers because the language almost looks like natural language. A lot of the syntax rules present in other languages are not there for Python and its much more forgiving when it comes to making mistakes in your code. The caveat is that students will need to be comfortable with their projects not looking as good as making a project in blocks with sprites moving around the screen. You can still create graphical and colorful projects in Python, but these are not beginner projects for students.

class MainClass {
    public static void Main(String[] args){
        Console.WriteLine("Hello World!);
    }
}

An outlier on my list is Unity, which is not a programming language at all. Unity is an interface that uses the C# programming language. Unity is on this list because it’s a little bit of both worlds – block-based language and text-based language. Unity works this way: the programmer is given a highly interactive interface with lots of buttons and options. The programmer can create objects similar to a sprite in a block-based language. Then, the programmer will create scripts in the C# programming language to program the object to react to the program or game environment that the object has been placed in. Unity has gained popularity in recent years due to the gaming and VR industries getting bigger. With that, a lot of students are playing around with Unity on their own so it now its starting to be taught in schools. My hesitation with Unity is that all of the objects created in the interface act as objects (OOP objects) in the C# scripts which requires the programmer to understand object-oriented programming if they are going create code on their own without following tutorials.

Programming Goals

If we had one language to rule them all, which one would it be? We don’t have enough information yet to answer this question. If we’re being the best educators we can be, then everything we teach must have a purpose. Looking at the core departments: Math, English, Arts, History, Science, Languages, Physical Ed…all of these departments have a purpose in teaching students to think more critically and grow up to be the best version of themselves that they can be. The purpose of teaching a student how to write a program is to teach them how think computationally and problem solve with the aid of computing tools. These are the programming concepts that are present in every language that has been mentioned in this post:

  • sequencing
  • selection
  • iteration
  • data and procedural abstractions

These concepts are the foundation for learning how to write successful programs and help programmers understand the more advanced topics of object-oriented programming and writing efficient algorithms for data structures. So really any of these languages could be used. We need to answer the question that we started off with though: “What language should a non-adult student learn first?”. In my experience and research I’ve come across, the answer to this is a block language. When using a block language the programmer is forced to slow down think about each block that they are planning to use which ends up creating deeper understandings of programming concepts. In addition to this, students are unable to simply copy and paste a code segment from another source to solve their problems which is a common practice for people learning a text-based programming. Now, I know that some people will say that a text-based programming language is what students should start off because their too mature for a language like Scratch or Snap!...even I use Python in my AP CSP class which is for some students the first time taking a class that incorporates programming. For students that are close to becoming adults, there is a big grey area in this discussion and the answer to that can only be answered by looking at the content knowledge of the teacher, the students, and the community that the classroom setting is set in. A good rule of thumb though, is to start students off with blocks and then help them transition into a text-based classroom once programs become complex enough where the text-based programming language becomes a more efficient option. Now, no matter what your opinion on the matter to this question is, go out and write some code and build something new!