Programming Languages Reflection
This post describes my experience learning to use an online service called Scratch (Scratch, n.d.) to create a program. Difficulties encountered and how I overcame them as well as insights gained are discussed. With many high-level programming languages to choose from, Scratch offers an economical way to learn concepts common to all of them.
My experience learning Scratch was unexpectedly difficult. I created an account and began exploring the concepts presented on the site. At first, it was fun watching some tutorials and experimenting with backdrops and sprites. Then I hit a creative block. I could not think of anything I wanted to say using these tools.
I visited and reviewed two web sites similar to Scratch; Alice (Alice, n.d.) and Code Combat (Code Combat, n.d.). Alice promises to teach programming fundamentals using easy to grasp methods in a fun and interactive way. Code Combat promises the same things but is based more on gameplay. Each of the three sites requires an account to use their platforms. Of the three sites, Scratch seemed the better choice for me. The outstanding question remained, what was I going to build?
As mentioned in the previous section, I not a programmer. I am not a gamer, either. I played Pong, Gorilla, and Doom 2 each for about two weeks and got bored with them. I like to solve real-world problems with machines and electronics, rather than create virtual problems for others to solve. I enjoy getting into the code when I am trying to solve an actual problem or streamline a work process. I think this I why I found it difficult to create a Scratch project.
I overcame the difficulty by forcing myself to do the work. I narrowed my scope to one coding block at a time and stopped trying to do everything at once. An insight gained from this exercise is realizing I try and solve as many problems as possible using the least amount of code.
There are three types of programming languages covered in the reading for this assignment, machine language, assembly language, and high-level language (Vahid & Lysecky, 2017, sect. 2.8-10). Machine language consists of ordered bits that a computer processor can process in sequence, is not human readable, and is only useful within the processor. A machine language program can be useful for comparing performance on different types of processors and identifying faults for quality assurance. Assembly language is a set of words that correspond to machine code operations, is human-readable, and makes it possible to create instructions for assembly into machine language. It is useful for teaching future electrical engineers about the inner workings of processors. A high-level language takes the concept of assembly language one step further to create a programming vocabulary that allows programmers to write complex programs with annotated lines for assembly into machine language. High-level languages are the most popular of these three types because they are more accessible for people in many professions.
My experience demonstrated Scratch is not the programming language of choice for me. It was useful for exploring the kinds of tools that are currently available for learning programming concepts. Scratch is an economical choice for learning programming concepts. You can visit my project at https://scratch.mit.edu/projects/322167164/.
Carnegie Mellon University. (n.d.). Alice home page. Retrieved from www.alice.org/
Code Combat. (n.d.). Code combat home page. Retrieved from codecombat.com/home/
Scratch. (n.d.). Scratch home page. Retrieved from scratch.mit.edu/
Vahid, F., & Lysecky, S. (2017). Computing technology for all. Retrieved from zybooks.zyante.com/