Hi everyone,
I have a big question about a programming-related problem I only partly understand, hoping not to get an answer, but rather pointers to where I should be looking. Here it goes.
For the past two years I have been working on SplootCode wanting to make code more accessible to non-engineers. The initial product (as is today) is basically a structured editor with drag and drop a-la-Scratch capabilities, and some other things to help non-engineers see and understand what the code is doing. You can see an example tiny program
here.
During the interviews I conducted with several people, I bumped into a non-native English speaker who revealed their frustrations with having to learn English in order to code.
After speaking to another dozen non-native speakers - some of whom teach programming in non-English speaking countries using their native language - I figured that this is a really big problem for a lot people, and I want to solve it.
Since I have been deep into SplootCode for over two years, I am sure that I am suffering from sunk cost fallacy like crazy, thus the reason I am asking the question here is to get some outside perspective.
---
So, to solve the problem for people, I am wanting to address the nested problem that – AFAIK – the vast majority of programming languages, with the exclusion of any purely symbolic ones, are effectively a subset of the English language.
My first train of thoughts was: “perfect use case for building on top of SplootCode! The structured editing part means half the work is done already since I can label keywords however I want”.
Followed by: “but wait! how can this be actually solved so that anyone can use their own tool of choice, which is what people will need?”
---
Thus my question is:
I believe that the proper solution is to add a _layer_* to code – call the
tongue
layer – that defines the _label_** for each
tongue
.
What do I need to understand thoroughly, in order to build such a solution? Who should I speak to?
*_layer_ intended as a standalone structure that doesn’t interact with anything but the semantic label of any literal, variable, operator, or function (or any other atomic structure that may exist within a programming language)
**_label_ intended as the human-readable part of an atomic structure of a program. For example, the
if
in the structure
if () {}
in javascript, would be
se
in Italian, and
もし
in Japanese.