Programming Languages Overview, COP 3223 Computer Science I – Study Notes
offline

Difficulty: Beginner Prerequisites: None. This is foundational material suitable for students with no prior programming background.

Tags: programming languages, C, Java, Python, JavaScript, Ruby, Swift, C#, compiled vs interpreted, procedural, object-oriented, high-level languages, low-level control


Big Picture

This topic gives you a map of seven widely used programming languages: what each one is designed for, what makes it distinctive, and where you will encounter it in the real world. In an introductory computer science course, you are not expected to master all seven, but you are expected to know the landscape, because the choice of language shapes what you can build and how you think about problems. If you already know one language, this material helps you understand why other languages exist and what trade-offs they make.


TL;DR

Seven major programming languages (C, Java, Python, JavaScript, Ruby, Swift, C#) each occupy a different niche. They differ in paradigm (procedural vs object-oriented), execution model (compiled vs interpreted), level of abstraction, and typical use cases. Knowing which language fits which job is a recurring exam topic and a practical skill for choosing the right tool later.


Key Terms

Programming paradigm

A fundamental style or approach to programming. The two most relevant here are procedural (step-by-step instructions) and object-oriented (organised around objects and classes). Think of it as the "philosophy" behind how you structure your code.

Procedural programming

A paradigm where the program is a sequence of instructions executed top to bottom, with functions grouping reusable steps. C is the classic example. In simple terms, this means you write a recipe: do step 1, then step 2, then step 3.

Object-oriented programming (OOP)

A paradigm where data and behaviour are bundled into objects. Java, Ruby, C#, and Swift are all object-oriented. Think of it as building with Lego bricks: each brick (object) has its own properties and can do things.

Compiled language

A language whose source code is translated entirely into machine code before the program runs. C and Swift are compiled. Compilation catches many errors before execution and typically produces faster programs. In simple terms, the computer reads and translates the whole recipe before it starts cooking.

Interpreted language

A language whose source code is executed line by line at runtime by an interpreter. Python, JavaScript, and Ruby are interpreted (or use just-in-time compilation, which blurs the line). Think of it as reading and following the recipe one step at a time, rather than translating it all upfront.

Portability

The ability of code to run on different hardware or operating systems with little or no modification. Java achieves this through the JVM; C achieves it through widespread compiler support.

Type safety

The degree to which a language prevents you from using a value in a way that contradicts its declared type. C# and Swift are strongly type-safe; C gives you more rope to hang yourself.


Core Content

C – The Foundation of Systems Programming

  • General-purpose, procedural language developed in the early 1970s

  • Known for efficiency, low-level control over memory and hardware, and portability across platforms

  • Common uses: operating systems (Linux, Windows kernel components), embedded systems (microcontrollers, IoT devices), scientific computing

  • C sits closer to the hardware than any other language on this list, which is why it remains the language of choice for performance-critical code

  • Most modern languages (Java, Python, C#) borrow syntax or concepts from C

Java – Write Once, Run Anywhere

  • General-purpose, object-oriented language developed in the mid-1990s by Sun Microsystems

  • Known for portability (runs on the Java Virtual Machine, so the same bytecode works on any OS), safety features (automatic memory management, no pointer arithmetic), and scalability

  • Common uses: web back-ends, Android mobile development, large-scale enterprise applications

  • The JVM is the key architectural idea: your code compiles to bytecode, not native machine code, and the JVM handles the rest

Python – Readable, Versatile, and Beginner-Friendly

  • High-level, interpreted language developed in the late 1980s by Guido van Rossum

  • Known for simplicity, readability (enforced indentation, minimal boilerplate), and a vast ecosystem of libraries

  • Common uses: data science and machine learning, web development (Django, Flask), automation and scripting

  • Python's trade-off is speed: it is significantly slower than C or Java for raw computation, but development speed and readability often matter more

JavaScript – The Language of the Web Browser

  • High-level, interpreted language developed in the mid-1990s (originally for Netscape Navigator)

  • Known for its ability to create interactive, dynamic web pages and full web applications

  • Common uses: front-end web development (every major browser runs JS natively), server-side development (Node.js), game development, desktop apps (Electron)

  • JavaScript is the only language that runs natively in web browsers, which is why nearly every web developer encounters it

Ruby – Developer Happiness and Expressiveness

  • High-level, object-oriented language developed in the mid-1990s by Yukihiro Matsumoto

  • Known for readability, expressiveness (code reads almost like English), and developer productivity

  • Common uses: web development (Ruby on Rails framework), automation, scripting

  • Ruby's philosophy is that programming should be enjoyable; it prioritises human readability over machine performance

Swift – Apple's Modern Language

  • General-purpose, compiled language developed by Apple in the early 2010s as a successor to Objective-C

  • Known for speed (comparable to C in many benchmarks), safety (strong typing, optionals to handle null values), and interoperability with legacy Objective-C codebases

  • Common uses: iOS app development, macOS app development

  • If you want to build apps for iPhones or Macs, Swift is the primary language Apple supports

C# – Microsoft's Answer to Java

  • General-purpose, object-oriented language developed by Microsoft in the early 2000s

  • Known for simplicity, type safety, and scalability within the .NET ecosystem

  • Common uses: Windows desktop applications, web development (ASP.NET), game development (Unity engine)

  • C# and Java share a great deal of syntax and philosophy; the practical difference is the ecosystem (Microsoft/.NET vs JVM/open-source tooling)


Formulas / Diagrams

No formulas apply here. A useful mental model is a two-axis chart:

  • X-axis: Level of abstraction (low-level on the left, high-level on the right)

    • Low-level: C

    • Mid-level: Java, C#, Swift

    • High-level: Python, JavaScript, Ruby

  • Y-axis: Primary paradigm

    • Procedural: C

    • Object-oriented: Java, Ruby, C#, Swift

    • Multi-paradigm (OOP + functional + procedural): Python, JavaScript


Real-World Applications

  • C is the language behind the Linux kernel, most embedded firmware, and the core of databases like PostgreSQL. When your microwave runs code, it is almost certainly C.

  • Java powers the back-end of many large banks and e-commerce platforms. Android apps were written almost exclusively in Java before Kotlin arrived.

  • Python is the default language for data science teams, machine learning research, and quick automation scripts (renaming 10,000 files, scraping a website, cleaning a dataset).

  • JavaScript runs in every web browser on earth. If you have ever clicked a button on a website and something happened without the page reloading, JavaScript did that.


Common Misconceptions

  • Students often think "interpreted" means "slow and bad." It does not. Interpreted languages trade raw execution speed for faster development cycles, easier debugging, and flexibility. The right choice depends on the task.

  • Students often confuse Java and JavaScript because of the name. They are unrelated languages with different syntax, different execution models, and different use cases. The naming was a marketing decision in the 1990s.

  • Students sometimes assume C is obsolete because it is old. C remains one of the most widely used languages in the world, particularly anywhere performance and hardware access matter.

  • Students sometimes believe learning one language means the others are irrelevant. In practice, professional developers regularly work in two or more languages, and the concepts transfer across all of them.


Why It Matters / Exam Flags

⚠️ Be able to classify each language by paradigm (procedural vs object-oriented) and execution model (compiled vs interpreted). This is a common multiple-choice format.

⚠️ Know at least two typical use cases for each language. Exam questions often ask "which language would you choose for X?"

⚠️ Understand the difference between compiled and interpreted execution. Be ready to explain the trade-off (speed vs flexibility).

⚠️ Do not confuse Java and JavaScript. Exams test this specifically because students mix them up.


Quick Self-Test

  1. True or false: C is an object-oriented language.

  1. Fill in the blank: Java achieves portability by compiling to __________, which runs on the JVM.

  1. True or false: JavaScript can only be used for front-end web development.

  1. Fill in the blank: Swift was developed by __________ as a replacement for Objective-C.

  1. True or false: Python is a compiled language.

Answers: 1. False (procedural). 2. Bytecode. 3. False (also server-side via Node.js, desktop apps, games). 4. Apple. 5. False (interpreted).


Practice Q&A

Q: Name three characteristics that distinguish C from higher-level languages like Python or Ruby.

A: C is procedural (not object-oriented), compiled (not interpreted), and provides low-level control over memory and hardware. It lacks automatic memory management and requires the programmer to handle memory allocation and deallocation manually.

Q: Why is Java described as "write once, run anywhere"?

A: Java code compiles to bytecode rather than platform-specific machine code. The Java Virtual Machine (JVM) interprets that bytecode on any operating system, so the same compiled program runs on Windows, macOS, and Linux without modification.

Q: A team needs to build an interactive website with buttons, animations, and real-time updates. Which language from the list is essential for the front-end, and why?

A: JavaScript, because it is the only language that runs natively in web browsers. All major browsers include a JavaScript engine, making it the standard for client-side interactivity.

Q: What is the main trade-off Python makes compared to C?

A: Python sacrifices execution speed for readability, simplicity, and faster development. A Python program will typically run slower than the equivalent C program, but it will be shorter, easier to read, and quicker to write.

Q: A student wants to build an iPhone app. Which language should they learn, and what are two of its key features?

A: Swift. Key features include speed (compiled, performance comparable to C), safety (strong type system, optionals for null handling), and interoperability with Objective-C codebases.


Connections to Other Topics

This material connects directly to later topics in data structures and algorithms, where the choice of language affects how you implement structures like linked lists (manual memory in C vs automatic in Java). It also connects to software engineering courses, where understanding language ecosystems (JVM, .NET, Node.js) shapes architectural decisions. If you go on to study operating systems, your C knowledge becomes essential.


Related Terms / Search Tags

programming languages overview, C language, Java programming, Python programming, JavaScript, Ruby, Swift, C#, compiled vs interpreted, procedural vs object-oriented, JVM, .NET, high-level vs low-level, general-purpose language, scripting language, COP 3223, UCF Computer Science I, intro to programming languages, language paradigms, bytecode, type safety, portability