Do Graphical Integrated Development Environments cause exclusion of participants?

A Graphical Integrated Development Environment is a user interface that provides an editor and some underlying scripts to aid programming. The scripts call various other programs like compilers, assemblers, disassemblers, debuggers etc at the click of a menuitem.
In the case of cross compilers - a process of building software on a build machine, usually an Intel or AMD based machine, for another architecture of CPU like ARM, AVR, PIC, MIPS etc.

Compiling software is a fairly intensive task requiring substantial memory and processing on the build machine. The bigger the program you are compiling the heavier is the resource requirement.
The GIDE adds yet another huge overhead.

The underlying scripts call the compiler with several flags to optimize the generated code, then linker and finally the assembler. The result is a binary file that can run on the intended architecture.

In the case of cross compilers one has to setup the entire environment called a tool chain. Which is a compiler for the specific platform, a linker, debugger, assembler and library and header files. Additionally for embedded systems like AVR, ARM, PIC etc an additional equipment known as programmer hardware is required and a program to run the programmer. Setting up all of this is a fairly involved and complex task. Many GIDEs - quite a lot of them from the chip makers - came with all of these software tools bundled in a huge package of several 100 MB and provide a “oneclick” installation.

If one does not have a programmer - which range from mere wire and connector connected to serial/parallel port to expensive dedicated devices - and a sufficiently powerful computer one is cutoff from learning programming and embedded hardware.

Notice that the GIDE actually is merely a glorified editor with all the hard work done by scripts.
If one could separate the GIDE from the toolchain and run a browser based “IDE” and shift the toolchain on a server, we should be able to use a smart phone as a development tool. Shifting tool chain to server then leaves the complexity of setup to system admins who are already very well versed in handling far higher software dependencies and complexity.

Using a mobile as a tool immediately dissolves the barriers that block those who do not have computers.
Further, the mobile itself has many built in sensors that can be used as very good aids in learning physics, biology etc. By adding some low cost external hardware we can expand vastly the range of experiments and activities.

There already exist software that attempt such separation of IDE and compilation. However their focus is not access through mobile phones.

One would have to do some amount of development work to get them working with mobiles.

Would it be a good idea to attempt this task?
Are the above assumptions on entry barriers valid?
Will such a tool enable those without PCs and expensive mobiles become hands on teachers makers and learners ?
What are the available browser based editors and do any provide code highlighting?

1 Like

I didn’t get your drift on the IDE part of it. As an aside, I don’t think system administrators typically handle software dependencies and complexity nowadays - containers (docker, etc.) are the sysadmin’s one-click. In fact, I read a term called “children of the cloud”, referring to sysadmins who haven’t even had to work with a physical server (and can’t crimp an Ethernet cable), since all they administer are instances on the cloud.

It is true that docker, etc. are considered easy enough for the non-sysadmin computer user too.

If the idea is more about smartphone use to do as much development as feasible, https://phyphox.org seems to have made a start (no external devices, observe and record only).

Personally, digitizing everything and then trying to visualize it might be more bling, but something built off off-the-shelf smartphone sensor embedded chips/boards and “analog” “actuators” might allow more learning more.

Luckily HBCSE sysadmins are quite adept. Hence deploying a toolchain or creating deployable dockers is fully within their capabilities.

That is the main idea and I am already looking at phyphox. However there are limitations to using only the phone hardware. Consequently adding some very simple external hardware - both analog and digital will add hugely to the phone capability, as you point out.

There already exist nice tools like Xpeyes. However the costs are high for individual students. The reason is that they have the processing and conditioning circuitry built together and have not achieved scale of boards like arduino, ESP etc.

Additionally using the above dictates the need for a computer. Both for visualisation as well as programming in the case of arduino like devices.

As outlined above for programming one uses an editor, compilation tools and hardware programmer, all combined into an IDE. Unbundling these allows browserifying the editor moving the toolchain to the server, thus enabling the use of a mobile in the absence of a regular computer.

what a lovely and complicated message @jtd. There are so many issues that are mixed in here but they don’t detract from the overall geekiness of the post. Let’s tackle a few…

for one, you seem to be targeting only programs and programmers writing in C or C++ or other compiled languages (or, god forbid Assembly). Your more run-of-the-mill programmers such as myself are likely to use a higher level scripting language such as JavaScript, Perl, Python, etc. The kind of hand-holding these languages do is analogous to the hand-holding an IDE does. Believe me, I’ve tried (and would love to become fluent in) using vim but I keep on coming back to (currently) Visual Studio Code. In fact, you yourself state, “Notice that the GIDE actually is merely a glorified editor with all the hard work done by scripts.” That is the key… the IDE is doing all the hard work letting the programmer focus on the logic of the program.

Projects such a Jupyter (for Python) and Runkit (for nodejs) do allow loading packages/modules and running the program on a server while the program itself is written in an “IDE” running inside the browser. Github is coming out with cloud-based IDE which will really be Visual Studio Code running in the browser (easy to do because VSC itself is written entirely in JavaScript) with the actually run-time on the server. In fact, several such projects and websites already exist – I’ve tried a few and though I have not yet settled on anyone, I do find them intriguing. In fact, I am in line to try out the Github cloud coding service soon as it is launched. I can imagine using that since all my code is already on Github and I use node, and hence, npm which too is part of the same company. There are many plusses for such a thing, the greatest being that your data are never lost. But there is also a huge downside – you can only access your code if and when you are online. I personally am in many circumstances where I have no net access but I want to code.

The other interesting assumption on your part is that your programmer is resource-constrained enough to not have access to a computer where she can run an IDE or the entire compiler toolchain but is definitely resourceful enough to own a smartphone powerful enough to run a browser with an embedded IDE and a network plan with copious amounts of bandwidth and data allotment.

I still think I should tighten my belt and learn vi/vim properly so I can simply use it in an ssh environment with tmux over mosh. That would be perfect. I remember I had a friend who was a wizard at vi, and I would watch in fascination as he manipulated code on his screen.

I should have made myself clearer. I am referring to resource constrained school teachers and students.
Also the IDE is not running inside a browser. An editor is. @surendra has already hosted Jyupter on HBCSE. Which I will test with a 2 year old phone.
Th plan is to write some simple embedded code using Jyupter, compile on server and program a arduino or ESP32 connected to the phone with some script. The script I have not even vaguely thought of.

Regarding scripting languages, Lua and micro python is available for ESP32 and middle level ARM controllers. These boards barely make it to the affordable category -costs around Rs.600 -900.
Will be huge advantage to use python directly on the dev board connected to phone. So might be worth a try.

1 Like

I’m not sure if you are clearer, at least to me. But it seems that you are targeting this thread specifically to teachers and students (i’m not sure what is specifically unique about that demographic, and also just about everyone is either a teacher or student right?), and specifically to programming of micro controller boards that don’t require a complicated tool chain anyway. Also, note that it is already possible to program Arduino using a browser based IDE

1 Like

Resource constrained. I stated that specifically.

The one that @Ashish_Pardeshi showed , I am about to try on a 3 year old phone, which is typical of what a underprivileged student would have. If it works we are done.

2 Likes

About sys.admins, I did write “typically”. I had heard that research lab admins/volunteers are wizards.

I was not clear about who were the theoretical target audience. Given teachers and students and Android, maybe the add-on device should have USB Ethernet and keep sending data to Android which it is tethered to.

2 Likes