When I was young I always enjoyed playing with Mindstorms. It was my first experience programming. For me it was amusing that I could build some robot with Lego and make it retrieve a ball from our living room.
Sadly jumping from the block oriented programming to "real" programming of the Hitachi H8 microcontroller was not very straight forward, so I kind of hit a wall in that regard. Maybe this collaboration will act as a better gateway to "real" programming.
I have somewhat mixed feelings about this. On the one hand, block-based "programming" does allow children/newbies to construct something that works. On the other hand, almost nothing usable is being programmed this way. So I'd say it's more or less fine as a kind of introduction to general rules of programming, but the sooner you get to the actual code, the better.
That said, microcontroller programming is something very specific in the sense that the same thing might (and often is) programmed in a completely different way on another device, so basically a large part is just getting to know your hardware. Fortunately, these days several abstraction layers are available for people who need them, from MicroPython to FreeRTOS.
They're exclusively written in Python, some of them using Bluetooth for remote control, some using pollution APIs to display data and also TensorFlow for image recognition.
If memory serves, a decade ago LabView was fairly involved in the robotics-education space, as a "real" block-based language that industry actually used and that kids could theoretically graduate from teaching languages into. Only kids I saw using it were those whose parents used LabView at the day job from an industrial background though.
Depends what you mean by “usable.” Are you going to ship it in military hardware? No. But I built a block based program connected to a motor that gave kids a candy if they guessed the number that the computer was thinking of in less than 6 guesses. A 4 year old invented binary search within 10 minutes.
Block based programming allows people to make working applications these days. See: Mendix, Labview, Betty Blocks and many many others besides.
PLCs have historically used ladder diagrams, which are also not 'code'. I've seen Excel spreadsheets that you would have been hard pressed to replicate using code.
Programming in its very essence is telling a machine what to do, what form that comes in isn't all that relevant, and code is just one of those forms.
'actual code' is not a requirement for programming.
I think it's more about teaching kids/newbies to think in a programming way. That can be language agnostic. You're essentially trying to achieve something "complex" using simple instructions. At a basic level that's a great way to learn programming. As the problems get more complex it becomes obvious why paradigms & architectures exist, and your programming skills can improve.
I think that's the thing? Block programming languages come from folks who write "CS education" literature as opposed to the "new programming languages" literature. They're turing complete, because curriculums require teaching the use of if statements and for loops, but that's about it.
If I actually wanted to use a block language at my day job I'd want affordances for larger, more complex programs. Compiler or JIT, copy/paste, zooming in and out of parts of programs (ala Prezi or something), integration with source control diff tools, C extensions / integration with existing code, console output, file I/O, etc.
Whilst it was never completed, as funding for the program was diverted elsewhere, I worked on a team at a university using Blockly [0] compiling it to Lua, and parsing from Lua back into our specific runtime set of Blockly functions.
It could do absolutely everything that Lua could do. We also added a kind of multifile support, using tabbed views to reimplement libraries on the browser side of things (compiling into separate Lua files).
The idea was that educators at both ends of the spectrum could convert to and from the same visual representations. The primary school classes the uni were running could use blocks, and slowly move to normal Lua, one feature at a time, all the way up to the first and second year ICT programs for higher ed.
Because it could compile to Lua, we could use git and a whole bunch of other tools that already exist. There was an experimental C/asm.js branch to add in FFI support, but that was deemed too time-costly whilst the rest still had a bunch of edge-cases.
And then, unfortunately, the whole program got yanked. But about that time it was close approaching what I would consider "useable" for actual real work.
Sounds like a wonderful tool for fundamental CS courses and projects. I remember assignments like creating a Cesar Cipher using Java, being distracted by tangential stuff like what the static keyword means and importing libraries. That language was a lot to take in, just tuning-out the noise from what I needed to learn. Something like half the class did not take the second course. Most of the thrash had little to do with the assignments themselves. Being able to toggle between a visual representation of the program and the code helps students' comprehension of the core concepts immensely. That much is obvious when you work with kids on Lego robotics projects. I could imagine a tool set like that, with the flexibility to build something like a console blackjack game. It would quickly become a standard for teaching secondary school programming courses. Hopefully someone else will take up that torch before my own kids are looking at learning how to program.
This is true to a certain extent. Certainly, large problems get awkward pretty quickly using the Scratch model. However, I found this Code.org version of Minecraft[0] interesting. You primarily use the Scratch like interface, but then you can click a button, and see how your legos translated into Javascript.
The leJOS alternate firmware for the RCX was my first introduction to Java. It was amazing how complete the support was given the small footprint. It even implemented Java's threads system.
I started programming in normal languages before I did a mindstorms based project for a robotics lab at university. Going in the other direction is just as jarring because of how limited the block based system felt. It's also just a clunky IDE compared to a text editor...
Luckily now we have Arduino that hides all the nasty stuff from users. There are 2 basic blocks: unit and loop. Adding repeating code blocks into loop block isn’t that hard. Jumping from Mindstorms to Arduino shouldn’t be a big difference.
IMO: It's slightly easier for small children to learn to program than adults. I'd imagine anyone here shouldn't have an issue but saying a kid gets it isn't quite right.
I contacted Atlassian support via my personal email account and they informed me that somehow my subscription is tied to my personal account, but I need to use my former work email to login.
I can't do that, so I've lost access to all my personal boards and apparently to my Gold Subscription too.
Hi, I'm an electronics guy shifted a (little) bit to the software world. I consider myself a fast learner and I put that ability to use whenever and wherever I can. I'm willing to relocate worldwide and I'm ready for any adventure. I love designing and building stuff.
Previous job was at a startup designing and building an IoT product for rental and real state in Spain.
I feel like this fails at the scope level. Of course excluding the program the computer is unable to understand Chinese. Just like a transistor alone is unable to perform a sum of two integers. Either you analyse the complete system or you are just drawing false parallels.
I've always found this curious since Linux fans usually mention the high usage of Android as Linux usage. The people usually think of GNU/Linux when they think about using Linux but the truth is Android is far from that. Be it the lack of GNU utils, not using a mainline kernel or the myriad of blobs and proprietary stuff bolted on top.
It's not clear what you are curious about. You can run GNU/Linux with out of tree modules (e.g. proprietary nvidia graphics driver). That doesn't change the fact that you're running a (now probably tainted) Linux kernel.
I don't think anyone is thinking of a GNU/Linux desktop environment when they think "Android runs Linux!", they are quite literally thinking "Android uses the Linux kernel." They are not wrong.
Of course. I wasn't talking about the population of HN, I mean it in a broader sense, people who know GNU/Linux is a thing but don't know or care enough to realise the differences.
I'm curious about what is there to celebrate in some huge corp using some free software in a completely cornered use that gives little to no freedom to its users.
I'm sorry if my points are not clear. As it has been evidenced english is not my first language.
> I'm curious about what is there to celebrate in some huge corp using some free software in a completely cornered use that gives little to no freedom to its users.
Huge amount of money poured into development of said opensource software - including the patches in the article you're commenting on.
Major opensource projects are (and have for years) receiving most contributions from developers in Microsoft, Google, Intel, RedHat, Pivotal, and many others.
Ah, I see your point. I suppose there are folks who know GNU/Linux is a thing, but don't understand the distinction between "it uses a Linux kernel" and "it uses a Linux kernel and gnu-friendly environment." In which case they would wrongly equate Android == Linux == GNU/Linux.
> As it has been evidenced english is not my first language.
No problem, I'd say that your English seems great, better than some native English speakers I know. English is my first language and it's easy for me to be unclear :D
Unlike most other environments, though, it is very simple to create an Android application which embeds and launches a Linux userland, without any virtualization or syscall-ABI translation being required. See, for example, https://termux.com/
ChromeOS is also "Linux" in this sense, because of Crouton.
Agreed, the Linux kernel is nothing more than a board support package for Android. Android applications are not Linux applications. And Fuschia/Zircon are clearly efforts replace the kernel.
It was fun because they (or, more precisely we) organised a lot of events, even at national scale (I'm from Europe). I met a lot of different people from different parts of my country who were also studying EE or similar and had the same interests I did. A very wide network I now sometimes rely on because those people now work in very different places compared to the people who were in my class and now mostly work in the same city our university was.
However, I still remember a day someone asked for a paper and I was disappointed when I found out I had no access as a Student Member. Luckily I had access through the university library but it pissed me off.
No longer a member because it's not really useful in my field and I would have to pay it myself. Membership fee in Europe is around 80% of USA but my salary (I'm a junior) is around 30% of that of an average EE in the USA.