$ guessprog --verify
✓ correct: : learn more about this language
process exited with code 0 · well done!
you're in the of today's solvers
next challenge in
a new challenge is available: refresh the page to play!
$ guessprog --support
guessprog.dev is free and ad-free. Enjoying it? Help keep it running.
$ guessprog --share
GUESSPROG(1)
- NAME
- guessprog — a new secret programming language every day
- USAGE
- type a language, pick it from the list, hit ⏎
- HINTS
- every wrong guess is compared to the secret language: [✓] same as the secret · [ ] different · ↑ ↓ the secret is newer / older
Year
The year when the programming language was first released or made available to the public.
When your guess is wrong, you'll see arrows indicating whether the secret language is older (↓) or newer (↑) than your guess.
Programming Paradigm
The dominant style of idiomatic code in the language. Most modern languages support several styles: a language is multi-paradigm only when none of them prevails.
- Imperative: Focus on describing how to do things step-by-step
- Object-oriented: Based on the concept of objects containing data and methods
- Functional: Treats computation as evaluation of mathematical functions
- Multi-paradigm: Supports multiple programming paradigms
| functional | functional |
|---|---|
| oop | object oriented |
| procedural | procedural |
| logic | logic |
| declarative | declarative |
| imperative | imperative |
| multi | multi paradigm |
| concat | concatenative |
| array | array oriented |
| dataflow | dataflow |
| visual | visual |
Language Family
The family or lineage that the programming language belongs to, usually its closest syntactic ancestor:
- C-like: Syntax and structure influenced by the C programming language
- Lisp: Based on the Lisp family with parenthetical syntax
- ML: Based on the ML (Meta Language) family
- Other: Unique syntax or belongs to a different family
| algol | algol |
|---|---|
| lisp | lisp |
| shell | shell scripting |
| c-like | c like |
| ml | ml |
| forth | forth |
| smalltalk | smalltalk |
| prolog | prolog |
| asm | assembly |
| pascal | pascal |
| basic | basic |
| apl | apl |
| fortran | fortran |
| cobol | cobol |
| erlang | erlang |
| standalone | self contained |
| other | other |
Memory Management
How the language handles memory allocation and deallocation:
- Manual: Programmer must explicitly allocate and free memory
- Automatic GC: Automatic garbage collection handles memory cleanup
- Reference counting: Memory is freed when reference count reaches zero
- Ownership: Uses ownership systems to manage memory safety
- None: No dynamic memory at all: static storage, a fixed tape or hardware
| gc | automatic gc |
|---|---|
| refcount | reference counting |
| manual | manual |
| hybrid | hybrid |
| ownership | ownership |
| stack | stack based |
| none | none |
Type Binding
When variable types are determined:
- Static: Types are determined at compile time
- Dynamic: Types are determined at runtime
- Gradual: Type annotations are optional and checked where present
| static | static |
|---|---|
| dynamic | dynamic |
| gradual | gradual |
Type Safety
How strictly the language enforces type rules:
- Strong: Values of unrelated types are never silently converted
- Weak: Silently converts between unrelated types, e.g.
"1" + 1
| strong | strong |
|---|---|
| weak | weak |