Bityi (translating code editor)

From OLPC
Revision as of 13:30, 10 August 2007 by Homunq (talk | contribs) (Isolating)
Jump to: navigation, search

Almost all programming is done in programming "languages" based on English. These are really codes, much less than languages, with a limited vocabulary. Still, it's a significant barrier for other-language programmers, especially young ones. A modern computer, even a cheap one, would have no trouble doing transparent, real-time translation into the user's natural language. For instance, on disk you'd have python "if ... else...", but on screen, you'd see (and write) "si... sino..." (spanish).

To make my proposal a little more specific:

  • Based on scintilla (BOB open-source editing component, already does coloring and folding).
  • If the user unknowingly used an English keyord on-screen, it would be "escaped" with a prefix like "ES_" on disk.
  • Similarly, if a program used a whateverlanguage keyword, it could be escaped on-screen.
  • A right-click on any word shows the English version, obviously includes easy option to turn translation off globally.
  • By default, only translates keywords for given programming language, but includes option to have cascading translation files for files and the libraries they use. These could be created on-the-fly using right-clicks with dictionary support.

a few implementation brainstorms...

  • Only what's actually on screen need be duplicated in memory
  • The cursor counts as a wordbreak for speed reasons.

Interested? Contact me.... I will be continuing to explore this idea, but I'm not going to jump in with both feet unless I have some backup.--Homunq 16:20, 25 July 2007 (EDT)

Some details of scite/scintilla: GTK based, as is takes under 2 megs decompressed and with lexers for many many languages.

But...

I just read the OLPC interface guidelines, particularly the "view source" key. From one angle: that just emphasizes that this idea should be absolutely central to this project, I'm actually even more surprised than I already was that (as far as I can tell, sorry if I've missed you) no-one has thought of it. From another angle: if you want to be able to view the source OF the view source activity, a laudible goal, that would tend to indicate that for OLPC purposes this would be better based on IDLE. But my interest in this idea is not solely OLPC-based. So... again, contact me if you want to collaborate with me on this one. If my first collaborator wants to go with or other Python/TK based editor, great, I like to program Python; if they prefer scintilla in C++, great, I think it will have a wider impact.

Either way, I repeat: this idea is absolutely vital to OLPC fulfilling its goal (perhaps not the main goal, but clearly a goal) of creating as many programmers as possible.Homunq 06:05, 28 July 2007 (EDT)

And then...

Further browsing and exploration finally leads me to Develop#Human Language and Culture Concerns where this issue has been discussed. As you can see from what I say here, I think that there are simple solutions to the issues raised there. I'll go continue this discussion over there. Homunq 15:30, 28 July 2007 (EDT)

Isolating

This will serve to isolate the programmers. It locks them into a programming ghetto. They won't be able to write normal code with a normal editor. They won't be able to follow examples on the web.

It's not as if anybody needs this. As proof, I offer English. The "for" loop common to numerous programming languages has nothing to do with the English word as far as I can see. Neither does the "static" keyword. We get by OK. We just memorize what the keywords do. We even deal with unpronouncable things like "^" and completely weird usage of basic punctuation.

AlbertCahalan 00:06, 10 August 2007 (EDT)

I understand the point, and it is a possibility.
However, I'd argue that, in making the first step into programming easier, it is a good thing; further steps, of learning "keyword English", can and will come easily later. After all, which was harder to learn, the first computer language you knew, or the second?
Consider the following scenarios: A child who is literate in Arabic presses the "view source" key and sees an impenetrable mass of foreign symbols; or, they see some confusing words which seem to have their own strange logic. Which do you think is more likely to lead to that child, 10 years later, being fluent enough in English to search for code snippets on the web? It's not clear-cut, but I'd say the second.
Or for you: say that SQL was in russian, with cyrillic letters and all. Sure, you could learn "выберите ... из ... где ...", and read it in all the examples on the web and in your programming books - but if a plugin came along that let you write "select ... from ... where ...", wouldn't you use it in your own coding? I sure would, and "ghetto" be damned. Homunq 13:30, 10 August 2007 (EDT)