PHILOSOPHY
Victoria Philosophy
"The best programming language is the one that gets out of your way while teaching you how to think."
Core Beliefs
1. Learning Should Be Joyful, Not Frustrating
Most programming languages were designed for experts, then retrofitted for beginners. Victoria was designed the other way around—learning-first, with depth available when you need it.
When you make a mistake in Victoria, you don't get a cryptic stack trace. You get a clear explanation of what went wrong, why it happened, and how to fix it.
error[E0001]: type mismatch: cannot assign string to variable of type int
--> example.vc:2:1
|
2 | let x:int = "hello";
| ^^^^ type mismatch
|
= note: Victoria supports optional static typing for type safety
= help: either change the value to an int, or change the type annotation to :string2. Simplicity is a Feature, Not a Limitation
Victoria deliberately avoids complexity theater. There are no:
- Complex build systems to configure
- Package managers to fight with
- Dozens of ways to do the same thing
- "Clever" features that sacrifice readability
This isn't because Victoria is a "toy" language. It's because cognitive overhead is the enemy of learning.
3. Errors Are Teachers
In Victoria, error messages are designed as micro-tutorials. Every error includes:
- What went wrong (the error message)
- Where it happened (file, line, and column)
- Why it happened (contextual notes)
- How to fix it (actionable suggestions)
We believe that every error is a learning opportunity. When a beginner sees "identifier not found: println", Victoria doesn't just report an error—it teaches: "use 'print' instead - Victoria uses print() for output."
4. Progressive Complexity
Victoria supports three levels of programming sophistication:
Level 1: Just Start
print("Hello, World!")Level 2: Learn Structure
define greet(name) {
return "Hello, " + name + "!"
}
print(greet("Victoria"))Level 3: Add Rigor
define greet(name:string) -> string {
return "Hello, ${name}!"
}
print(greet("Victoria"))You can write entire programs at Level 1. You can mix levels freely. The language grows with you.
5. Familiarity Without Baggage
If you know any C-style language (JavaScript, Java, C#, Go), Victoria will feel familiar:
- Curly braces for blocks
- Functions, loops, conditionals
- Objects and methods
But we've removed the baggage:
- No
varvsletvsconstconfusion (justletandconst) - No semicolon debates (they're optional)
- No
thiskeyword gotchas - No implicit type coercion surprises
6. Batteries Included, Not Required
Victoria comes with built-in modules for common tasks:
- math - Mathematical operations
- json - JSON parsing and serialization
- time - Date and time handling
- net - Network programming & HTTP client operations
You can build useful programs on day one, without installing dependencies.
7. Types Are Tools, Not Taxes
Victoria's type system is optional. You can:
- Write fully dynamic code (great for prototyping)
- Add types where they help (function signatures)
- Use types everywhere (for production code)
Types in Victoria are there to help you, not to punish you. They catch errors early and serve as documentation, but they never block you from experimenting.
Design Principles
Readable Over Clever
Code is read more often than it's written. Victoria prefers explicit, readable code over clever one-liners.
Helpful Over Strict
When you make a mistake, Victoria tries to understand what you meant, not just what you wrote.
Consistent Over Flexible
One obvious way to do things is better than many possible ways. This makes code easier to read and learn from.
Practical Over Pure
Victoria isn't dogmatic about programming paradigms. Use objects, functions, or both—whatever solves your problem.
Who Victoria Is For
- Complete beginners who want to learn programming without frustration
- Educators who want a teaching language with real-world applicability
- Hobbyists who want to prototype ideas quickly
- Developers who want a scripting language that respects their intelligence
Who Victoria Is Not For
- Those who need maximum performance (use Go, Rust, or C)
- Those building production web frameworks (use established ecosystems)
- Those who need extensive third-party libraries (we're growing!)
Victoria knows its place. It's a learning language, a prototyping language, a joy-to-write language. And that's exactly what it aims to be.