The A-Z of Programming Languages: Falcon

Our series on the most popular programming languages continues as we chat to Falcon creator Giancarlo Niccolai

Falcon creator Giancarlo Niccolai

Falcon creator Giancarlo Niccolai

What’s the Falcon ecosystem like?

In the beginning, and for a few years, it was just me. I say “just” in quotes because Falcon wasn't meant as a spare time project, but rather a professional project aiming to interact with my daily job on high-profile computing. The fact that I have been able to sell my skills and my consulting time, rather than my software, has allowed me to separate some internal projects that cannot be disclosed, from generic parts that I have shared via open source (there are also some older libraries of mine on SourceForge, which I employed on various projects). Since early 2007, some contributors have checked out the code and occasionally provided patches, but the first contributions other than mine to the repository are from 2008.

I have a community of about 10 to 12 developers, contributors and packagers actively working on the project, either externally or providing code in the core, or subsidiary modules, or on related projects. Their contributions are still few in number and weight, but entering in a project as wide and complex as Falcon requires time. We're also preparing a sort of “mini-SourceForge” to host Falcon-based and Falcon-related projects.

If developers want to know a bit about our project style, we are as open as an open source project can be. New ideas have been constantly integrated into our engine thanks to the help and suggestions of people either being stable in the project or just passing by and dropping a line. Although it has been impossible up to date, I am willing to pass down my knowledge to anyone willing to listen and lend a hand to the Falcon PL project. So, if developers are searching for a way to make a difference, stick with us and we'll make your vote to count!

Does the language have its own repository system?

No. It may seem strange being said by me, but I really don't like to reinvent the wheel. We're using SVN, but we may switch to GIT or something more Web oriented if the need arises. In this moment, I don't consider the commit history to be very relevant (with an exception for the 0.8 and 0.9 head branches), so switching to a new repository wouldn't pose any problem.

Falcon seems to have an emphasis on speed, is this important within programming languages?

Speed is not important within programming languages – it is important for some tasks that may be solved by some programming language. As I said, I wrote HASTE out of a need for speed that wasn't addressed by any other scripting language, but Falcon evolved from HASTE for other reasons. If speed was everything, scripting languages wouldn't exist. On basic operations, the best in our class can perform about 30 times slower than C doing the same things, and that's definitely slow. Versatility, adaptability, maintainability, adequacy, integratability, complexity and many other factors play a major role in deciding which language to adopt.

Speed is the most important factor in the sense that is the prerequisite of everything, but it's not language specific. Speed is determined by the complete “input – processing – output” line, and what a scripting language does into that line is usually a small part. If your IPO line doesn't meet the requirement, nothing else is relevant; in the case of early Falcon, no other scripting engine was able to let my applications to use them in an IPO line efficient enough to do the job on time. Once your whole system meets the IPO time requirements, speed ceases to be in the equation and everything else but speed becomes relevant. It's a binary choice: your whole IPO line is either fast enough or not.

When we say “fast”, we mean that we concentrated our development towards helping the whole system around Falcon to use it as fast as possible. Vm speed is also relevant, as there are some tasks in which you want to use heavily vm based calculations, but it plays a secondary role, in our view, with respect to the "service" offered to the surrounding world (applications, modules, threads) to let them run faster. This is why we have been able to live seven years without a single optimisation on the vm itself, and this is why we're starting to optimise it now, when we have completed our reflection model and serviced the surrounding world the best we can.

Join the newsletter!


Sign up to gain exclusive access to email subscriptions, event invitations, competitions, giveaways, and much more.

Membership is free, and your security and privacy remain protected. View our privacy policy before signing up.

Error: Please check your email address.

Tags open sourcea-z of programming languagesprogrammingCscripting languageFalcon

More about ApacheClipperCMSHewlett-Packard AustraliaHPKDEKDELinuxMicrosoftSDLSpeed

Show Comments