wmww / Pinecone

An unmaintained programming language
http://pinecone-lang.herokuapp.com/
MIT License
869 stars 115 forks source link
language pinecone programming-language

The Pinecone Programming Language

Built from the ground up to be fast, concise and intuitive.

NOTE: PINECONE IS NO LONGER BEING ACTIVELY DEVELOPED OR MAINTAINED

Pinecone is a new programming language. Its goal is to combine the simplicity of a dynamic language with the performance of a compiled one. It is under rapid development, but most of the core features are ready.

If you want to program in Pinecone now, see the tutorials for how to get started.

There is also a Pinecone plugin for VIM here.

For updates, discussion and help, take a look at the Pinecone subreddit: /r/PineconeLang

About

Pinecone is a brand new, easy to learn, general purpose, multi-paradigm, high performance programming language created by Sophie Winter. Work on the language began on October 4th, 2016. Pinecone can now be interpreted or transpiled to C++. The language is written from scratch (it includes an integrated lexer, parser and interpreter, etc.).

Example

Here is the common demo program FizzBuzz written in Pinecone. It prints the numbers from 1 to 20, but it prints "Fizz" if the number is divisible by 3, "Buzz" if it is divisable by 5 and "FizzBuzz" if it is divisible by both. You can find more samples in the examples directory or the tutorials.

# FizzBuzz

# call the function defined below
fizzBuzz: 1, 20

# define the FizzBuzz function
fizzBuzz :: {start: Int, end: Int}: (

    # loop i from start to end
    i: in.start | i <= in.end | i: i+1 @ (

        # use conditionals to print the right thing

        i % 3 = 0 && i % 5 = 0 ?
            print: "FizzBuzz"
        |
        i % 3 = 0 ?
            print: "Fizz"
        |
        i % 5 = 0 ?
            print: "Buzz"
        |
            print: i
    )
)

Why?

This is probably the most common reaction to hearing about a new language. I realize that there are a lot of programming languages, and that the reason for that is that there are so many assholes like me who keep making them. I do truly think, though, that Pinecone fills a previously empty niche.

Pinecone aims to have similar capabilities to modern object oriented compiled languages such as C++, Swift and Rust. It's primary attraction is the simplicity and consistency of it's syntax. Here are some examples of how Pinecone is different from other popular languages:

Compatibility

Pinecone currently requires zero external dependencies (and the only one that will likely be added is LLVM). You will need a C++11 compiler to build it, and the process is easier with GCC and Make. Pinecone has been successfully tested on Linux, MacOS and Windows.

Current State

The features that are currently implemented are as follows:

The following features are coming soon:

Contributing

I have not yet added enough documentation to the language internals to make it practical for others to contribute to the language itself. If you are interested in adding a specific feature or just helping out, post in the subreddit or direct message me on reddit or twitter. Fixes and improvements to the readmes and tutorials are always welcome.