Coding Styles¶
Python¶
Philosophy¶
Readable and Simple
Focuses on calirty and mininmal sytax
Uses include data science, AI and scripting backend
Syntax¶
- Indentation defines code blocks
Python’s creator, Guido van Rossum, designed the language around the idea that “code should be as readable as plain English.”
- Colon (:) signals and new block of indented code (sort of like a bracket)
Guido van Rossum worked on a teaching language called ABC at CWI (in the Netherlands) before inventing Python. ABC used colons to introduce blocks, just like Python.
No semicolons or braces/brackets
Naming: snake_case
# for comments
for i in range(1,6):
print(f"Number {i}")
C++¶
Philosophy¶
Power and Control
Lowlevel access
Manual memory management
Performance Focuses
Uses include systems, games, and high performace Software
Syntax¶
Braces define code blocks
Semicolons end statements
Type declaration required
Indentation optional but make it pretty so it is Readable
Naming: camelCase or PascalCase
// or /* for comments
#include <iostream>
using namespace std;
int main()
{
for (int i = 1; i <= 5; i++)
{
cout << "Number " << i << endl;
}
return 0;
}
Javascript¶
Philosophy¶
Dynamic and flexible
Designed for web interactivity
Loosely typed now supports modern modular patterns
Uses include web apps, front end and back end
- Note that “ES6” is simply the modern version of javascript
ES6 added some features and changed some syntax
Now javascript is ES9 but everything from ES6 + is considered “modern javascript”, before ES6 is considered an older langauge
Syntax¶
Similar to c++ but more flexible
Template literals like Python f-strings
No type declarations
Semicolons to end statements are options but recomended
Indentation not required but make it pretty and uniform so it is readable
Naming: camelCase
// or /* for comments
for (let i = 1; i <= 5; i++)
{
console.log(`Number ${i}`)
}
Object Declaration Comparison¶
Feature |
Python |
JavaScript |
C++ |
|---|---|---|---|
Typing |
Dynamic |
Dynamic |
Static |
Keyword |
|
|
|
Constructors |
|
|
Class name as constructor |
Access Modifier Defaults |
Public |
Public |
Private |
|
|
|
|
Memory Management |
Automatic (garbage collected) |
Automatic (garbage collected) |
Manual or via smart pointers |
Method Definition |
Defined inside class |
Defined inside class |
Defined inside or outside class using |
Python Example¶
class Car:
"""A simple Car class."""
def __init__(self, make, model):
self.make = make
self.model = model
def start(self):
print(f"{self.make} {self.model} is starting.")
# Object creation
my_car = Car("Toyota", "Camry")
my_car.start()
JavaScript Example¶
/**
* A simple Car class.
*/
class Car {
constructor(make, model) {
this.make = make;
this.model = model;
}
start() {
console.log(`${this.make} ${this.model} is starting.`);
}
}
// Object creation
const myCar = new Car("Toyota", "Camry");
myCar.start();
C++ Example¶
#include <iostream>
#include <string>
using namespace std;
/**
* @brief A simple Car class.
*/
class Car {
private:
string make;
string model;
public:
// Constructor
Car(string m, string mod) {
make = m;
model = mod;
}
// Method
void start() {
cout << make << " " << model << " is starting." << endl;
}
};
// Object creation
int main() {
Car myCar("Toyota", "Camry");
myCar.start();
return 0;
}
Summary Table¶
Concept |
Python |
JavaScript |
C++ |
|---|---|---|---|
Define class |
|
|
|
Constructor |
|
|
|
Create object |
|
|
|
Instance variable access |
|
|
|
Access modifiers |
Implicitly public |
Implicitly public |
Must specify ( |
Garbage collection |
✅ Yes |
✅ Yes |
❌ Manual / Smart pointers |
Documentation style |
Docstring ( |
JSDoc ( |
Doxygen ( |
Key Takeaways¶
Language |
Object Philosophy |
|---|---|
Python |
Objects are flexible, lightweight, and dynamically typed. Easy for beginners. |
JavaScript |
Prototype-based; ES6 classes give a clean, modern OOP syntax. |
C++ |
Deep, type-safe OOP with control over memory and performance. |
Imports and Modules¶
Feature |
Python |
JavaScript (ES6) |
C++ |
|---|---|---|---|
Import keyword |
|
|
|
Export keyword |
Functions and classes automatically accessible from modules |
|
Not applicable — declarations in header files |
Namespace |
Module namespace (each file acts as a module) |
File or module-based namespace |
|
Encapsulation |
Managed by module imports |
Managed by module exports |
Controlled by header / source file separation |
Dependency Management |
Handled via |
Handled via npm or yarn |
Handled manually or via build systems (CMake, Makefiles) |
Memory and Resource Management¶
Aspect |
Python |
JavaScript |
C++ |
|---|---|---|---|
Memory Management |
Automatic garbage collection using reference counting |
Automatic garbage collection |
Manual control (stack and heap allocation) |
Object Lifetime |
Managed by interpreter and reference count |
Managed by garbage collector |
Determined by scope and destructors |
Garbage Collection |
Yes (reference counting + cyclic GC) |
Yes (mark-and-sweep GC) |
No (must free manually or use smart pointers) |
Pointers |
Not exposed to programmer |
Not used |
Directly used for memory access and manipulation |
Resource Cleanup |
Automatic when objects go out of scope |
Automatic by GC (not deterministic) |
Controlled manually or via RAII (Resource Acquisition Is Initialization) |
Common Issues |
Reference cycles can delay collection |
Unpredictable GC timing |
Memory leaks, dangling pointers if misused |
Who Wins?¶
- Readability belongs all to python
It basically reads as english and is short and sweet
- Flexibility goes to Javascript
The syntax is flexible meaning there are many ways to achieve the same outcome
Semicolons are recomended but not required
Dynamic variable declaration with let
- Performance and Control belongs to c++
You can handle the memory yourself
It is extremly fast which is why it used for games and high end Software
It is so complex so that the coder can have more control over the program