Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
97e3809
New - Initial commit.
ikelaiah Aug 5, 2025
44591f3
feat: more styling
ikelaiah Aug 5, 2025
ed53149
feat: beter dark colours
ikelaiah Aug 5, 2025
6ea145c
feat: better light colours
ikelaiah Aug 5, 2025
6ca9be2
feat: add initial website structure with content sections and layouts
ikelaiah Aug 5, 2025
fcc50b3
feat: used correct prog lang identifier in the code blocks
ikelaiah Aug 5, 2025
84d7347
feat: fixed colours
ikelaiah Aug 5, 2025
0e8481c
feat: switched code highlighting to monokai style
ikelaiah Aug 5, 2025
fa1ba94
feat: line no on homepage
ikelaiah Aug 5, 2025
c222352
feat: Edits to styles
ikelaiah Aug 5, 2025
f934aad
feat: add about page with modern homepage design and styling
ikelaiah Aug 5, 2025
4020a6c
feat: update site title to Object Pascal and updated examples
ikelaiah Aug 6, 2025
b2f9358
feat: Edits to pages. Added a sidebar to the Learn page.
ikelaiah Aug 6, 2025
323d70c
feat: created capsule for pascal dialect indicator
ikelaiah Aug 6, 2025
1826fc5
feat: created style for bullet points, and added sidebars to all pages.
ikelaiah Aug 6, 2025
c2f91ba
feat: added major implementation to the home page, revised major impl…
ikelaiah Aug 6, 2025
1900300
feat: Edits to pages
ikelaiah Aug 7, 2025
032a6f7
feat: added initial documentation
ikelaiah Aug 7, 2025
89c6f5f
feat: added a new page: Resources. Removed an old page: Docs (Will b…
ikelaiah Aug 10, 2025
731820c
feat: added bettter Pascal learning guide with code examples and tuto…
ikelaiah Aug 10, 2025
0e52e7f
feat: edits to pages
ikelaiah Aug 11, 2025
a125055
fix: Updated link on the ladning page to correct destinations.
ikelaiah Aug 11, 2025
748936b
Fix - Hamburger is working now, manually implemented.
ikelaiah Aug 21, 2025
d7f7eeb
feat: added more comments for clarity
ikelaiah Aug 21, 2025
457a975
feat: updated code comments and modified the shadow's intensity of li…
ikelaiah Aug 21, 2025
72b86de
update: updated dates
ikelaiah Aug 21, 2025
651772e
feat: using cascadia mono font instead of cascadia code.
ikelaiah Aug 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
169 changes: 169 additions & 0 deletions content/about/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
+++
title = 'About Pascal'
date = 2025-08-22T08:50:00+10:00
draft = false
description = 'Learn about the philosophy of Pascal history, and the various implementations available today'
layout = 'single-with-sidebar'
+++

Pascal is a programming language that embodies the principles of clarity, reliability, and educational excellence. Created by Niklaus Wirth in 1970, Pascal was designed to encourage good programming practices and make programming concepts accessible to learners while remaining powerful enough for professional software development.

## The Philosophy of Pascal

Pascal was born from a simple yet profound philosophy: **programming should be clear, structured, and understandable**. Niklaus Wirth designed Pascal not just as a programming language, but as a tool for teaching and learning the fundamental concepts of computer science.

Wirth believed that a programming language should provide a clear conceptual framework for thinking about programming. Pascal provides exactly that—a clean, logical framework that mirrors how we naturally think about solving problems.

---

## Pascal's Enduring Principles

### Readability Above All
Pascal's English-like syntax makes code self-documenting. When you read Pascal code, you understand not just *what* the program does, but *why* it does it. This clarity reduces bugs, simplifies maintenance, and makes collaboration natural.

```objectpascal {class="highlight capsule-fpc"}
program CalculateAverage;
var
numbers: array[1..10] of real;
sum, average: real;
i: integer;
begin
sum := 0;
for i := 1 to 10 do
begin
write('Enter number ', i, ': ');
readln(numbers[i]);
sum := sum + numbers[i];
end;

average := sum / 10;
writeln('The average is: ', average:0:2);
end.
```

### Strong Foundation for Learning
Pascal teaches fundamental programming concepts without the complexity that can obscure learning in other languages. Students learn about data types, control structures, procedures, and functions in their purest form.

### Reliability Through Structure
Pascal's strong typing system and structured programming approach prevent entire classes of errors before they occur. The compiler catches mistakes early, leading to more robust software.

---

## Pascal's Evolution and Growth

Since its creation in 1970, Pascal has evolved far beyond its educational origins. Modern Pascal implementations power everything from desktop applications to web services, mobile apps to embedded systems.

The language gained massive popularity in the 1980s and 1990s with Turbo Pascal and later Delphi, proving that educational clarity and professional power could coexist beautifully.

Today, Pascal continues to thrive with active development communities, modern language features, and cross-platform capabilities that rival any contemporary programming language.

---

## Object Pascal: The Modern Evolution

Object Pascal extends Pascal's clarity into the world of object-oriented programming. It maintains Pascal's readable syntax while adding powerful features like classes, inheritance, interfaces, and generics.

Modern Object Pascal supports:

- **Cross-platform development** - Write once, deploy everywhere
- **Modern language features** - Generics, RTTI, anonymous methods (FPC: in the _trunk_ branch)
- **Rich ecosystems** - Comprehensive libraries and frameworks
- **Visual development** - Integrated designers and RAD tools (Lazarus IDE, Delphi PascalABC.Net)

---

## Major Implementations of Pascal

Pascal, as a language family, has numerous implementations beyond the mainstream options. Each brings unique strengths and targets specific development scenarios:

### Free Pascal Compiler (FPC)
[Free Pascal](https://www.freepascal.org/) is a mature, open-source Pascal compiler that supports multiple processor architectures and operating systems. It's the most widely used open-source Pascal compiler, compatible with Turbo Pascal and Delphi syntax while adding many modern features.

**Key Features:**
- Cross-platform support (Windows, Linux, macOS, and more)
- Multiple processor architectures (x86, x86_64, ARM, and others)
- Highly compatible with Delphi and Turbo Pascal
- Large standard library and third-party ecosystem
- Active open-source development and community support

### Lazarus IDE (FPC + GUI Designer)
[Lazarus](https://www.lazarus-ide.org/) is a professional open-source development environment for the Free Pascal Compiler. It provides a Delphi-like development experience with a visual form designer and a rich set of visual components.

**Key Features:**
- Cross-platform IDE (Windows, Linux, macOS, and more)
- Visual form designer with drag-and-drop interface
- Large collection of visual and non-visual components
- Integrated debugger and code tools
- Single source code base for multiple platforms

### Delphi (Embarcadero)
[Delphi](https://www.embarcadero.com/products/delphi) is a commercial rapid application development (RAD) environment that uses Object Pascal as its primary programming language. Originally developed by Borland, it remains one of the most powerful Pascal implementations with a strong focus on visual development.

**Key Features:**
- Visual Component Library (VCL) for Windows development
- FireMonkey framework for cross-platform applications
- Integrated Development Environment (IDE) with form designer
- Strong database connectivity and enterprise features
- Support for mobile platforms (iOS, Android) and desktop (Windows, macOS, Linux)

### Oxygene (Elements Compiler)
[Oxygene](https://www.elementscompiler.com/elements/oxygene/) is a modern Object Pascal implementation that compiles to .NET, Java, and native code. Developed by RemObjects Software, Oxygene brings Pascal's clarity to contemporary platforms while adding cutting-edge language features.

**Key Features:**
- Compiles to .NET Framework, .NET Core, Java, and native platforms
- Modern language features like LINQ, async/await, and nullable types
- Full access to platform APIs and frameworks
- Advanced IDE integration with Visual Studio and Fire

### PascalABC.NET
[PascalABC.NET](http://pascalabc.net/) is a modern Pascal implementation for the .NET platform, developed in Russia. It's particularly popular in educational settings and combines traditional Pascal syntax with .NET power.

**Key Features:**
- Full .NET integration with access to all .NET libraries
- Modern Pascal syntax with object-oriented extensions
- Built-in educational tools and simplified development environment
- Strong focus on teaching programming concepts

### pas2js (Pascal to JavaScript)
[pas2js](https://wiki.freepascal.org/pas2js) is the official Free Pascal transpiler that compiles Pascal code to JavaScript. Maintained by the Free Pascal team, it brings Pascal's clarity to modern web development.

**Key Features:**
- Official Free Pascal project for web development
- Compiles Object Pascal to clean, readable JavaScript
- Full DOM access and modern web API integration
- Node.js support for server-side development
- Active development and community support

### Turbo51
[Turbo51](https://turbo51.com/) is a Pascal compiler specifically designed for 8051 microcontrollers, bringing Pascal's structured approach to embedded systems development.

**Key Features:**
- Targets 8051 microcontroller family
- Optimized code generation for resource-constrained environments
- Pascal syntax for embedded systems programming

---

## Why Pascal Matters Today

In an era of complex frameworks and rapidly changing technologies, Pascal's core values remain more relevant than ever:

**Clarity in Complexity**: As software systems grow more complex, Pascal's emphasis on readable, maintainable code becomes increasingly valuable.

**Learning Foundation**: Pascal continues to be an excellent first language, teaching programming fundamentals without unnecessary complexity.

**Professional Power**: Modern Pascal implementations prove that educational clarity and professional capability are not mutually exclusive.

**Cross-Platform Reality**: Today's Pascal tools enable true cross-platform development with native performance.

---

## Get Started with Pascal

Ready to experience Pascal's unique combination of clarity and power?

- **[Learn Pascal](/learn/)** - Start with our brief tutorials
- **[Resources](/resources/)** - Explore Pascal's features and capabilities
- **[Community](/community/)** - Connect with Pascal developers worldwide

Pascal isn't just a programming language—it's a philosophy of clear thinking, structured problem-solving, and elegant code. Whether you're learning your first programming concepts or building professional applications, Pascal provides the clarity and power you need to succeed.
151 changes: 151 additions & 0 deletions content/community/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
+++
title = 'Community'
date = 2025-08-22T08:50:00+10:00
draft = false
layout = 'single-with-sidebar'
+++


Join the vibrant Pascal programming community! Connect with developers, share knowledge, and contribute to the Pascal ecosystem.

## Communities

### Discussion Forums

**Community Forums**:

- [Free Pascal and Lazarus](https://forum.lazarus.freepascal.org/index.php): The main official forum.
- [Begin End](https://www.beginend.net/): A site that gathers blog posts about Object Pascal (Delphi, Lazarus, Free Pascal).

**Reddit Pascal Community** :

- Discuss at [r/pascal](https://reddit.com/r/pascal)

### Real-time Chat

**Discord**:

Real-time chat servers for quick questions and community interaction.

- [Unofficial Free Pascal](https://discord.com/invite/GPFyAc2UJ2)
- [Delphi Community](https://delphi-community.com/) (Delphi is a close cousin to Free Pascal, many topics overlap)

### Mailing Lists

**Free Pascal Lists**

Stay informed through these mailing lists. You can subscribe to get emails about specific topics.

- [Free Pascal Mailing Lists](https://lists.freepascal.org/mailman/listinfo):
- **FPC-Pascal**: For general questions, help, and discussions about using Free Pascal.
- **FPC-Devel**: For technical discussions, bug reports, and if you're interested in how FPC is developed.
- **FPC-Announce**: Get notified about important news, like new Free Pascal releases.
- **pas2js**: Discussions about the pas2js tool, which converts Pascal code to JavaScript.
- **FPC-Other**: For topics that don't fit into the other categories.
- **MacPascal**: Focused on using FPC on macOS and for iOS development.
- [Lazarus Mailing Lists](https://lists.lazarus-ide.org/listinfo): Similar lists specifically for the Lazarus IDE.

---

## Open Source Projects

### Contribute to Pascal

**Free Pascal Compiler**
- Core compiler development
- [GitLab Repository](https://gitlab.com/freepascal.org/fpc)

**Lazarus IDE**
- IDE features and improvements
- [GitLab Repository](https://gitlab.com/freepascal.org/lazarus)

**Pascal Libraries**
- Visit the latest list here: [Awesome Pascal](https://github.com/Fr0sT-Brutal/awesome-pascal)

---


## Conferences & Events

- [DelphiCon](https://delphicon.embarcadero.com/) - Annual Delphi conference
- [Free Pascal and Lazarus events](https://wiki.freepascal.org/Conferences_and_Events) - A list of past and upcoming events

---

## Getting Help

### Where to Ask Questions

1. **Stack Overflow**: Tag your questions with `pascal`, `freepascal`, or `lazarus`
2. **Forums**: Free Pascal and Lazarus official forums
3. **Discord**: Real-time help from community members
4. **GitHub Issues**: For specific library or tool problems

### How to Ask Good Questions

**Include:**

- Pascal/compiler version
- Operating system
- Complete error messages
- Minimal code example
- What you've already tried

**Example:**

```
Title: "Array index out of bounds error in Free Pascal 3.2.2"

I'm getting an array index error in Free Pascal 3.2.2 on Windows 10.

Code:
var arr: array[1..5] of integer;
begin
arr[6] := 10; // This causes the error
end.

Error: "Range check error while trying to access array element"

I understand the error, but how can I prevent this at runtime?
```

---

## Contributing to This Site

This website is open source and welcomes contributions!

### How to Contribute

1. **Fork** the repository
2. **Create** a new branch for your changes
3. **Write** or improve content
4. **Test** your changes locally
5. **Submit** a pull request

### Content Guidelines

- Write clear, beginner-friendly explanations
- Include working code examples
- Test all code snippets
- Follow the existing style and format
- Add proper metadata to markdown files

### Report Issues

Found a problem? Help us improve:

- [Report bugs](https://github.com/ObjectPascal-Community/ObjectPascal-Community.github.io/issues)
- Suggest new content
- Fix typos and errors
- Improve existing examples

## Code of Conduct

Our community is welcoming and inclusive. We expect all members to:

- **Be respectful** of different skill levels and backgrounds
- **Help others** learn and grow
- **Share knowledge** freely and constructively
- **Give credit** where credit is due
- **Follow** platform-specific rules and guidelines
Loading