Introduction to Beagle Project

This page presents an introduction to the Beagle programming language project

Welcome to the Beagle project web site! This project aim to create a new object-oriented programming language and compiler to create native applications and libraries. This page provides an introduction to the Beagle project, from planned features to detailed information about the design decisions.

Motivation

Despite the fact that there are many available programming languages for all needs and tastes, I was looking for a programming language with some unusual set of features. I work in a research center and my team is focused on the development of technologies like speech synthesis and biometrics. We use a lot of code in Python to prototype experiments and when we reached good results we implement the algorithms in C/C++ to use in our products. We use Pyhon because it’s easy and fast to implement (and, of course, have a lot of libraries for scientific computing). Also we use C/C++ because we need to create portable code to compile as optimized native libraries. It needs to run fast and be compatible with many other languages.

So I thought: what if we could combine the advantages of both programming languages? After a small web search I could not find a language that fits with my needs. Thus, I saw an oportunity to create something new. Basically I needed a programming language which:

  • Support for a minimal set of object-oriented features (dynamic dispatch, encapsulation, inheritance, etc.);
  • Compile to machine code;
  • Export classes in native libraries, not just C style functions;
  • Support to mix with C source code;

The Project

This project aims to design a new programming language with the previously mentioned features and create it compiler. To simplify the initial release of the compiler, it will generate C source code from Beagle sourcecode rather than native binaries. Thus, one can use any C compiler to generate the native binaries and take advantage of all well-estabilished optimizations.

The following list describe all features for the first version of the Beagle programming language:

  • Whitespace indentation (off-side rule) like Python;
  • Object-oriented syntax and features similar to Java, C# and C++ (especially operator overloading);
  • Use of words instead symbols for some operators to improve readability;
  • Array indexing and slicing;
  • Export classes and C style functions (static class methods);
  • Dynamically load classes;
  • Basic reflection (create objects and call methods) and meta-information querying.
  • Support to mix with C source code (link time);
  • Support to call C style functions from another libraries.

This page is under construction.

Table of Contents