Exploring Programming Languages

When looking at programming, there are 3 types of programming languages. Machine language is the lowest-level programming language, consisting of binary code, which I did during the 2.8 participation activity, where we had to configure the instructions to get certain inputs. Assembly language is a middle-level language that uses mnemonics to represent machine code instructions. It uses an assembler to convert assembly language programs into machine language (Vahid & Lysecky, 2019), as we did in activity 2.9. High-level languages like Python are more human-readable and use abstractions that make it easier to write complex programs. Typically, a high-level language is automatically "converted to an assembly or machine language before being run" (Vahid & Lysecky, 2019).

I found High-Level Languages easier to use due to the easy-to-read keywords to better understand what it is you are asking and writing. While programming in Python is easier as you do not have to worry about binary or using a compiler to interpret the code for the computer, it still comes with some challenges, like understanding the linear flow of the code and how each variable has an effect in the entirety of the code. While I found High-Level easier to use, there are times when a different program would be more effective.

Machine Language would be most effective in embedded systems and bootstrapping. Machine language is commonly used in embedded systems where the software interacts directly with hardware components (Middle Tennessee State University, 2023). It's essential for tasks like controlling microcontrollers in appliances, automotive systems, or industrial machinery. 

Assembly Language would be most effective using system programming, performance-critical applications, and legacy systems. Assembly language is effective for system-level programming tasks, such as writing operating system kernels, device drivers, and firmware (Fernando, 2023). It provides a level of abstraction above machine code while still allowing fine-grained control of hardware resources. When performance is crucial, such as in video game development or real-time simulations, assembly language can be used to optimize critical sections of code. 

High-level language is most effective when used with web development, data analysis, rapid application development, and cross-platform development. High-level languages like JavaScript, Python, and Ruby are effective for web development. They offer libraries and frameworks that simplify tasks such as building user interfaces, handling databases, and managing server-side logic. High-level languages are commonly used for data analysis and machine learning due to their extensive libraries and tools for statistical analysis and machine learning model development (BBC, 2023). High-level languages are ideal for rapid application development. Due to its versatility, readability, and vast ecosystem of libraries and frameworks, I believe that High-level is one of the most popular programming languages. 

Scratch is a block-based visual programming language, which means you build programs by snapping together code blocks. This is quite different from typical programming languages. This was my first time using Scratch, as well as my first real-time trying out programming outside of some minimal things I have encountered for work. It was a fun and entertaining way to learn about how coding works and seeing the end result of each line. As fun as it was and the amount of technical skill I have, I would have thought it would have been easier to use. I definitely struggled the first couple of tries when trying to create my program, but thankfully, there were lots of guides and tutorials to help me. 

When I first started with my code in Scratch, I wanted to do an RPG Adventuring game. I started with a wizard who was in charge of the magic guild and my goblin, who wanted to go on an adventure. I used the record function to do some voiceover work, and that was difficult because I had to use the wait block and count and keep track of the time to make sure the voice conversation lined up. I then tried switching scenes and hid the wizard sprite, but he never showed back up when the code was restarted. After troubleshooting with the show and hide blocks, I ended up breaking the code with the voiceovers and tossed the project altogether. 

After not having success with the RPG adventure, I switched to the side scroll Dinosaur Jump https://scratch.mit.edu/projects/888641304. While creating this program was going better, there were still some difficulties. I encountered trouble with the size of the tree and the size of the dinosaur; if I made the tree too small, it was not much of a challenge, but if I made it bigger, the tail of the dinosaur would hit the tree. I kept adjusting the, if X< block and kept subtracting little by little until, at the top of the jump, the tree would delete the clone. Another issue I ran into was during the end; I wanted the dinosaur to roar if it hit the tree and then end all programming. I had to look over the tutorials as well as Google search various other individual's codes to see if anyone had similar codes so that I could see how they did it. I watched some videos on YouTube of people who had the same problem and finally found a video that helped break down the programming and what small improvements I could make (WarFame, 2022). The hardest part was the timing; if I put in 2 seconds, the dinosaur would hit the tree and then roar for 2 seconds, but the game would keep scrolling until after the 2 seconds. If I made the time too short, you could not even see the roar bubble. So, I had to play with the time quite a bit to make it more seamless. 

After doing the programming, I have a better understanding of entry-level coding and variables using If, then, and statements. I also learned the more complex the code; the easier it is to make a mistake that could ruin the entirety of the program to almost start over or backtrack where the break is a lot. I also learned how adding one thing, even though small, can have a huge impact, positive and negative, on the code overall, and all it works together. 





Resources:

BBC. (n.d.). High-level languages - classifying programming languages and translators - AQA - GCSE computer science revision - AQA - BBC Bitesize. BBC News. https://www.bbc.co.uk/bitesize/guides/z4cck2p/revision/1

Fernando, J. (2023, July). Assembly language. Investopedia. https://www.investopedia.com/terms/a/assembly-language.asp#:~:text=Assembly%20language%20is%20used%20to,such%20as%20high%20frequency%20trading.

Middle Tennessee State University. (2023). Computer languages. Machine Language/Assembly Language/High-Level Language. https://www.cs.mtsu.edu/~xyang/2170/computerLanguages.html#:~:text=Low%2DLevel%20language%20is%20the,of%20binary%20numbers%201’s%20%26%200’s.

Scratch. (2023). TeaRex Jump. https://scratch.mit.edu/projects/888641304/

WarFame. (2022). How to make an endless runner game in Scratch (Part 1). YouTube. https://www.youtube.com/watch?v=Pgt_BRqtoPg

Vahid, F., & Lysecky, S. (2019). Computing technology for all. zyBooks.

Comments

Popular posts from this blog

Newbie to Newbie: Algorithmic Design and Data Structure Techniques

Database Management: A Fundamental Component of Information Technology

Outside of the Classroom: Computers in the Workplace