Back to Home Homework Task #2

Programming Language Concepts

Preparation for Speaker Dr. Giselle Reis

Question 01

Why did we move from punch cards to programming languages? What does that tell you about the purpose of programming languages?

Punch cards were extremely slow, fragile, and hard to understand, making them inefficient for creating large programs. They had very limited capacity, holding only around one line of code per card, and required massive physical storage space. Furthermore, computers read cards slowly in batches, often taking days just for a single program to run.

Modern programming is far more human-friendly, allowing us to intuitively understand and command computer processes. Thanks to advances in technology, these languages are much more efficient, automating the compilation or interpretation of code while also allowing real-time debugging.

Key Purpose: The main purpose of programming languages is to make reading and writing code faster and easier by keeping instructions intuitive and close to human language.
Question 02

There are hundreds of different programming languages out there. Why do you think we need so many?

Different programming languages are designed differently in order to work as efficiently as possible in different contexts.

Speed vs Readability

Low-level languages like C or C# are built to have direct control over computer hardware, making it extremely fast. On the other hand, high-level languages like Python prioritize readability of the code, making it easier and more intuitive to learn the logic behind a program with just one read.

Specialization

Some languages are specialized to run in certain environments. For example, JavaScript was created to specifically run inside web browsers to make websites interactive. Apple has created Swift for iOS apps, while Google has Kotlin for Android. These are a few of the many examples of specialization in programming languages.

Evolving Technologies

Technology is always advancing, and because of that, older languages start becoming obsolete as problems arise that they can’t handle safely. For example, Rust was created as a safer replacement for C++ as it had safety features to stop critical security errors users could make.

Competition and Scaling

Sometimes, big tech companies may create their own language that is extremely specialized to be effective in completing their organization's tasks in order to scale themselves bigger. For example, Google created Go to handle large-scale and fast compilation for their cloud infrastructure. Other reasons they typically create languages is to create competition for their opposition in the market. For example, part of the reason why C# was created by Microsoft is to be a competitor to Java.

Question 03

What are some drawbacks of a programming language you use? How would you like it to be different? Think of specific examples.

I mainly use Python, and its biggest drawback for me comes down to performance and ecosystem limitations:

Memory Usage

Automatic garbage collection and flexible data types cause high RAM usage, which can be inefficient when working under hardware constraints.

Execution & GIL

Running line-by-line makes Python slower than compiled languages like C++ or Rust. The Global Interpreter Lock (GIL) also prevents parallel processing using multiple threads.

Platform Limits

Python is weak in mobile and web browser environments, as it lacks native support in these areas, making deployment more difficult.

Question 04

If you were going to create a new programming language, how would you start? What do you need to define?

Firstly, I would define the specific problems or issues I need to solve with my language. Using those requirements, I would evaluate how existing languages that are designed for similar environments, tackle those challenges, to create a general framework.

I would also analyze areas where those similar languages struggle and refine those ideas to better fit my needs. Key factors I would need to define include:

Memory Management Performance Bottlenecks Low-level vs High-level Abstraction Syntax & Readability Target Platforms