What is fck?

fck is the first fully language-agnostic extensible coding language. What does all that mean?

Language-agnostic means you can write fck code in any spoken language you want to, whenever you want to.

Extensible means you can add or remove languages whenever you want to, even adding in made up languages or just an alteration of an already existing language's syntax that you prefer.

For those of you interested in having a look at the source code, fck is written in rust, and relies upon LLVM (specifically the rust bindings for LLVM from the llvm-sys crate) and clap. All parts (close enough) are handwritten. Due to the the specific nature of fck, this was almost a necessity.

Is it really the first of its kind?

This is a bit tricky to answer. Whilst there are languages that do include localisation and allow code to be written in different spoken languages, we do not believe that they are fully language-agnostic.

Why not?

We believe that for a language to be truly language-agnostic, there should never be anything in the way of switching between spoken languages; it should be seamless. Additionally, we believe that a language-agnostic coding language should be built around (amongst other things) localisation.

Take Scratch (or Catrobot). Both are visual languages aimed at teenagers to introduce them to coding. Both include localised versions for multiple spoken languages, but no way to switch between languages whenever you want, and no way to access localisation information at all.

A language closer to being language-agnostic is Citrine. Citrine supports multiple languages, and has a fully functional translator to translate between code written in different spoken languages. But if you want to write code in a different language half-way through, you can't do that. Neither does it have localisation built-in. Having said that, Citrine is a wonderful sign that we're moving in the right direction with accessibility in coding.

So what does fck have?

fck is fully language-agnostic. That means you can switch between language whenever you want, copying snippets (and acknowledging them) regardless of language; modifying language files so the syntax is just how you like it; translating between languages for single files or entire projects; and with localisation built into fck with no exceptions.

fck has lots of other features such as different flavours, intuitive and simple package managers, and both interpreted and compiled runtime options to name a few. If you're interested, go have a look at the introduction to fck.