domingo, março 29, 2015

Democratizing Web App Development: "Hello App Inventor!" by Paula Beer and Carl Simmons

Hello App Inventor!: Android programming for kids and the rest of us - Paula Beer, Carl Simmons
Published 2014

One of my long term goals is to teach my kids “Computers”, and I look forward to teaching them how to program. MIT's Scratch is to desktop/browser environments what App Inventor is to Development for Mobile Devices (Android OS).

If Harvard is also using the “scratch” framework in their Computer Science and Programming classes, why shouldn’t we use its equivalent in terms of Mobile Development? In this particular instantiation we are dealing with the Android OS. Despite having the Android Developer with Eclipse APP Inventor installed on several of my machines, App Inventor helps me to toss something together a lot quicker to see if it's going to be any good to develop. It also saves me a lot of time. I’m talking about prototyping here.

This kind of visual application framework is for inciting curiosity.  A GUI based app framework is also good for exposing the basic logic of the platform in a non-advanced way, without hours of programming study, which is inevitable at some point, but that point will come at a time where the developer has already formed a passion for it. And when you learn the nuts and bolts of a programing language or API or SDK or whatever with passion, then you just can't stop till you reach the guru level.

I came in contact with App Inventor in 2013 (still in version 1.0 at the time) and I was completely won over by it. I think the real value of this kind of App Development Framework is that it makes it easier to contribute value to what I do. What do I mean by "Value" in this particular context? Value always comes in many flavours be it poetry, science, political “science”, solving problems, etc. I haven’t been a professional developer for a long time. Why do I need to dabble with development frameworks at this particular juncture in time? For several reasons. Because I like programming even when I don’t do it in my day job; because I’m always on the lookout for new development frameworks, and last but not least, sometimes I just need to do something that involves putting together a small piece of code to fulfill my goal, be it something for my kids (e.g., a multiplication table that goes up to “20”), be it on how to display locations on a Google Map or be it explaining the encryption and decryption concepts when sending messages on the internet.

When perusing the Google Play Store I constantly cannot find the app I need. Due to the fact that and I'm too busy with a full family and a full time job to currently devote time to learning a new programming paradigm, I still have apps that I want/need, and that’s where App Inventor come in handy. My purpose is not to distribute my app in the Google Market, but just to use it for myself. Not every app needs to go on the Market.

I’m a strong advocate of adding Computer Skills to the usual set of Reading, Writing and Arithmetic skills. Raspberry Pi (HW), Scratch (Desktop Development) and App Inventor (Development for Mobile Android devices) may be the supporting vectors that allow this. Unfortunately only a tiny percentage of people ever consider learning to write source code. Not everyone needs to become a professional developer, but gaining a fundamental understanding of code on how software works, is quickly becoming a core skill needed in today’s workplace. With this framework I don’t need a ”main” program. On top of that it also hides all the “ugly engines” that come with Java, e.g., Java Listeners and other behind-the-scenes event-dispatching stuff.

I worked with the book at hand for 10 days. I wanted to code all the examples to see how I would fare even though I’ve a Computer Science degree. I must say I was quite surprised with the level of the language and the way the book is organized. The book’s organization mimics the App Inventor, i.e., it has chapters organized by the apps I can code, rather than programming topics like conditionals and iteration (those topics are ”hidden” within the chapters providing a painless introduction to the more hard-core concepts).

What seems most extraordinary is the framework’s ability to remove syntax portions from my own thought processes so I can focus on what I want the App to look like. I had serious doubts that my brain, coming from a more traditional Computer Science venue would rebel against it. It didn’t happen.

Having to remember complex structures while building an app is no longer a requirement… This app may be the first workable wysywig approach to computer programming when it comes to mobile Android devices.

On the whole I think the framework in itself is interesting and fun, but more as a toy and a way to learn programming the easy way. MIT needs to add extensions to correct the framework’s deficiencies (e.g., the frameworks inability to use third parties components; alas we can’t have everything even in a Visual Programming Framework). Saying this is a way for non-programmers to build apps is a bit misleading. The focus should be more on its use as a rapid development tool with hooks to extend it and build more professional applications than saying it’s a framework for non-programmers, i.e., it’s wrong to think that using visual blocks we don't have to understand programming; it’d be like thinking that FORTRAN programmers don't need to understand programming since FORTRAN uses English words.  Programmers still have to know how to program — be it in assembly, C++, Java, COBOL, or with little visual aids.

Bottom-line: I love App Inventor for the ability to explore many aspects of mobile computing as well as the ability I have in terms of prototype an app that I want to sketch rapidly. Nevertheless the framework has some serious drawbacks when it comes to developing applications for the real market. For starters without a library code it’s nigh on impossible to develop serious programming/applications.  But even with code reuse available, there are still some critical missing features, e.g, a "run-time library" which is essential. Without these “coding components” built on top of the language syntax, forget it.  I’m no longer in the business of reinventing the wheel programming-wise. Let me take just one example very dear to my heart: math functions. There are just a few in App Inventor, but NOT a single string manipulation function (MakeText is the closest we get).  In the long run, without nothing better to do than develop code it’d not bother me to write them into a re-useable library, but unfortunately there is nothing that lets me manipulate single characters.  I think the reason for this is that a library written in App Inventor would not be very performance efficient, even if I had the core ability to access strings as a list of characters.

Despite all of its drawbacks, App Inventor is still ideally suited to teaching kids how to develop some programming concepts and even produce some nice-looking mobile apps on Android.

Check out these examples on the Google Play Store I've developed using this framework.
Original post:

Sem comentários: