# Language Overview
DWScript is an object-oriented scripting language based on Delphi (Object Pascal). It features a strong type system, high performance, and a rich standard library. This guide is organized into the following sections:
## 1. Getting Started
* **[Welcome](/lang/basics/introduction)**
Basic syntax, comments, and program entry points.
* **[Program Structure](/lang/basics/structure)**
Units, namespaces, and scope.
* **[Operating Modes](/lang/basics/modes)**
Differences between native execution, web server, and JS transpilation.
* **[Coming from Delphi](/lang/basics/from_delphi)**
Key differences for experienced Delphi developers.
## 2. Types & Variables
* **Type System** - [Overview](/lang/basics/types), [Variables](/lang/basics/variables) & [Constants](/lang/basics/constants).
* **Core Types** - [Integers](/lang/basics/ints), [Floats](/lang/basics/floats), [Booleans](/lang/basics/bools), and [Strings](/lang/basics/strings).
* **[Enums & Sets](/lang/basics/enums_sets)**
Enumerated types and bitmasks.
* **[Variants](/lang/basics/variants)**
Dynamic typing support.
## 3. Operators
* **[Arithmetic & Logic](/lang/basics/operators)**
Standard math, comparison, and logical operators.
* **[Bitwise Operators](/lang/basics/bitwise)**
Manipulating data at the bit level.
* **[Ternary](/lang/basics/ternary)**
& **[Coalesce](/lang/basics/coalesce)**
Compact conditional expressions.
## 4. Control Flow
* **[Loops](/lang/control_flow/loops)**
`for`, `while`, and `repeat` loops.
* **[Conditionals](/lang/control_flow/control_flow)**
`if` statements and `case` blocks.
* **[Iteration](/lang/control_flow/iteration)**
Iterating over collections and ranges.
* **[Exceptions](/lang/control_flow/exceptions)**
Error handling with `try...except` and `try...finally`.
## 5. Data Structures
* **[Arrays](/lang/basics/arrays)**
Static and dynamic arrays.
* **[Associative Arrays](/lang/basics/associative_arrays)**
Dictionary-like collections.
* **[Records](/lang/basics/records)**
Value types with methods and operators.
* **[Tabular Data](/lang/advanced/tabular)**
In-memory dataset handling.
## 6. Functions
* **[Subroutines](/lang/functions/subroutines)**
Procedures and functions.
* **[Parameters](/lang/functions/parameters)**
Passing values, constants, and references.
* **[Contracts](/lang/functions/contracts)**
Design-by-contract features (requires/ensures).
* **[Lambdas](/lang/advanced/lambdas)**
Anonymous functions and closures.
## 7. Object Oriented Programming
* **[Classes & Objects](/lang/oop/oop)**
Inheritance, polymorphism, constructors.
* **[Properties](/lang/oop/oop_properties)**
Getters, setters, and array properties.
* **[Interfaces](/lang/oop/interfaces)**
Contract-based programming.
* **[Helpers](/lang/advanced/helpers)**
Extending existing types.
## 8. Files & System
* **[File I/O](/lang/stdlib/std_files)**
Reading and writing files.
* **[Date & Time](/lang/stdlib/std_datetime)**
Temporal operations.
* **[Configuration](/lang/stdlib/std_inifiles)**
INI files and [Registry](/lang/stdlib/std_registry).
## 9. Web & Database
* **[Web Support](/lang/stdlib/std_web)**
Handling HTTP requests and responses.
* **[JSON](/lang/stdlib/std_json)**
Parsing and generating JSON.
* **[Database](/lang/advanced/database)**
SQL integration.
## 10. Advanced Topics
* **[State Management](/lang/basics/state)**
Persistent variables and state management.
* **[RTTI](/lang/advanced/rtti)**
Runtime Type Information and Attributes.
* **[Metaprogramming](/lang/advanced/metaprogramming)**
Compile-time logic.
* **[Style Guide](/lang/tooling/style)**
Best practices for formatting and naming.
* **[Example Gallery](/example/language/oop_demo)**
Practical code samples.
:::info
**Gotcha:** Be aware of the difference between **Array** (0-indexed) and **String** (1-based) indexing. See **[Indexing Strategy](/lang/basics/types#indexing-strategy)** for details.
:::
Language Overview
DWScript is an object-oriented scripting language based on Delphi (Object Pascal). It features a strong type system, high performance, and a rich standard library. This guide is organized into the following sections:
1. Getting Started
Welcome Basic syntax, comments, and program entry points.