Thursday, March 14, 2024

rogramming Languages

Many universities offer computer science courses and projects where students build compilers or interpreters. These activities can be greatly enhanced by using tools specifically designed for this purpose. While tools exist to help students build the user interface ("front end") of compilers, there are fewer options available for the more complex "back end" tasks. Additionally, existing tools often require more programming knowledge than most undergraduate students have(Saioc & Hüttel, 2022)


A programming language acts as a formal system of notation used to express instructions for a computer to execute. The digital revolution wouldn't exist without programs yet crafting them perfectly is no easy feat. Despite their transformative power, programs rank among humanity's most intricate inventions. Even a single misplaced character in thousands of lines of code can bring the entire program crashing down. Unlike most things we create, programs excel at executing complex tasks in meticulous sequences over extended periods. This unique ability sets them apart and underscores the challenge of ensuring their flawless operation.(Zybook, 2024)


Working on scratch was very funny, and empowering. I like that I can create something unique and share it with others. Scratch is also a great way to learn about problem-solving, critical thinking, and creativity. I find it useful to understand high level programming.

When I first started using Scratch, I felt lost and confused. I did not know how to use the website or create my own projects. I had trouble with removing blocks from the scripts area. Whenever I tried to delete one block, a whole group of blocks would come out with it. I also could not share my project with others because I had not verified my email address. To solve these problems, I watched a video tutorial that explained the basics of Scratch and how to use it. I learned how to drag and drop blocks, how to snap them together or apart, and how to change their parameters. I also learned how to confirm my email address in the account settings so that I could share my project with the Scratch community. After watching the video, I felt more confident and comfortable with using Scratch.

 

If the embed project does not show click here

Using Scratch, I can develop logical thinking skills, such as breaking down problems into smaller steps and using conditional statements and loops to control the flow of my programs. Scratch also introduces the concept of abstraction, which is the ability to hide the details of complex operations behind simple blocks and functions. This mimics how real-world programmers use libraries and modules to simplify their code. Furthermore, Scratch allows learners to work with different types of data, such as numbers, text, and images, and store them in variables.

Scratch and machine language are very different in terms of how they are written and executed. Machine language is the lowest-level programming language, consisting of binary codes that are directly understood by the computer's hardware. Machine language is very fast and efficient, but also very difficult and tedious to write and debug. Scratch, on the other hand, is a high-level programming language, consisting of colorful blocks that are dragged and dropped to create scripts. Scratch is very easy and fun to use, but also very abstract and limited in functionality. Scratch runs on a web browser or an application, which translates the blocks into machine language for the computer to execute.

Scratch and high-level languages are similar in some aspects, but also different in others. High-level languages are programming languages that use natural or human-like syntax and keywords to express instructions. High-level languages are more readable and maintainable than machine language, but also require a compiler or an interpreter to convert them into machine language. Scratch is a type of high-level language, but it is more visual and graphical than most high-level languages. Scratch uses blocks and sprites to create interactive projects, while most high-level languages use text and symbols to create applications. Scratch is designed for beginners and learners, while most high-level languages are designed for professionals and experts.

The world of programming languages is vast and multifaceted, each tongue instructing machines to perform specific tasks. These languages fall into various categories based on their proximity to the machine and their underlying concepts. Low-level languages, like assembly and machine language, directly communicate with the machine's hardware, offering speed and efficiency but demanding extensive expertise to craft and troubleshoot. Conversely, high-level languages, such as Python or Java, resemble natural language, making them beginner-friendly but requiring translation for the machine to understand. Further distinctions lie in how programs are structured. Procedural languages, like C or Fortran, employ step-by-step procedures to break down problems. In contrast, object-oriented languages, exemplified by Java or C++, revolve around encapsulating data and behavior within objects, promoting modularity and code reusability. Finally, functional languages, such as Haskell, emphasize functions as the foundation, utilizing recursion and immutability to manipulate data in a predictable and expressive manner. (Coursera, 2023)

Scratch is the easiest language to use due to its visual block-based approach, Scratch generally enjoys ease-of-use for newcomers with no prior programming experience. However in real life, high-level languages like Python or Java: Compared to low-level languages, both can be easier to learn due to their syntax resembling natural language, although Python tends to be simpler for absolute beginners.

Here are some examples of scenarios where each type of programming language would be most effective:

 Low-level languages:

They are most effective for scenarios that require direct control over the hardware, such as operating systems, device drivers, embedded systems, and cryptography.

High-level languages:

They are most effective for scenarios that require rapid development, portability, readability, and maintainability, such as web development, data analysis, scripting, and education. (Tomassetti, 2017)

Procedural languages

They are most effective for scenarios that involve sequential and deterministic processes, such as numerical computations, simulations, and algorithms.

Object-oriented languages:

They are most effective for scenarios that involve complex and dynamic systems, such as graphical user interfaces, games, and software engineering. (Tomassetti, 2017)

Functional languages:

They are most effective for scenarios that involve parallelism, concurrency, and scalability, such as distributed systems, artificial intelligence, and big data.

Python was the most popular language in the world for the year 2022 (Cass, 2022), and for good reasons. It offers accessibility and ease of use, versatility and applicability, and continuous growth and evolution. Python's syntax resembles natural language, making it much easier to learn for newcomers compared to languages like C++ or Java with stricter syntax rules. Python also boasts a vast and supportive online community, offering numerous tutorials, documentation, and forums for learning and problem-solving. Moreover, Python's rich ecosystem of libraries and frameworks like NumPy, Pandas, Django, and Flask simplifies tasks in data science, web development, automation, and scientific computing. Python is also versatile and applicable in various domains, such as data science and machine learning, where it dominates with powerful libraries making data manipulation, analysis, and machine learning algorithm implementation intuitive and efficient. Python is also a compelling choice for both back-end and full-stack web development, especially in rapid prototyping and agile development scenarios, thanks to frameworks like Django and Flask. Python's simplicity and readability make it ideal for scripting and automation, from web scraping to system administration. Python is even used in game development, with frameworks like Pygame and libraries like PyOpenGL, although not as prevalent as C++. Finally, Python is a language that is constantly evolving, incorporating new features and addressing user needs. The Python language itself is actively developed and improved by the Python Software Foundation and the core developers. The dedicated Python community also contributes to a thriving ecosystem of libraries and frameworks, ensuring the language stays relevant and adaptable. 

 References

Cass, S. (2022, August 23). Top programming languages 2022. IEEE Spectrum. https://spectrum.ieee.org/top-programming-languages-2022

Coursera. (2023). 5 types of programming language. Coursera. https://www.coursera.org/articles/types-programming-language

Saioc, G.-V., & Hüttel, H. (2022). A Tool for Describing and Checking Natural Semantics Definitions of Programming Languages. Electronic Proceedings in Theoretical Computer Science, 369, 51–66. https://doi.org/10.4204/eptcs.369.4

Tomassetti, G. (2017, June 8). The best programming languages for each situation. Federico Tomassetti - Software Architect. https://tomassetti.me/best-programming-languages/

Zybook. (2024). Fundamentals of information technology & literacy home . Learn.zybooks.com. https://learn.zybooks.com/zybook/TEC101:_Fundamentals_of_Information_Technology_&_Literacy_(TED2407A)/chapter/2/section/1

No comments:

Post a Comment