This isn't a tool for allowing non-programmers to develop apps for mass sale/distribution (although I'm sure there will be plenty of that). This is a tool for allowing non-programmers (like me!) to create tools for a mobile platform to make our own custom apps to fulfill our own niche needs.
This could be huge - yeah, I'm sure the apps won't be as polished, fast, or optimized as an app written in the native language and using the native API's, but I'm a professional mechanical/acoustical engineer who spends my time working on my job and I don't have the time (or inclination) to learn to be a software engineer/programmer. Similarly, programming my own DSP filter in C would probably result in a more efficient analysis tool, but Matlab/Octave gets the done while allowing me to concentrate on my engineering projects rather than dealing with memory management, etc. Don't look at it as a developer's tool, it's a high-level RAD environment like VB, Excel, etc.
Now of course the proof is in the pudding and we'll have to see how it works in the real world. I will say that I'm a current Nokia smartphone user who has been sitting out the iOS/Android war, but if if App Inventor works well, Google will have brought me over to the Android camp.
The whole App Store is a sordid tale, and the good Apps will always beat crappy apps by marketing.
But if i do wish to have an App specifically tailored for my group then why the fuck do i need to conform to requirements of Apple?
I think most of the mental barriers and frustrations of learning a new programming language is not knowing what you can do with it, not knowing the right syntax, or not knowing what the program is doing during execution - the block interface removes most of these problems while still preserving a programmer's mindset. Hopefully this will convince some of the 'hardcore' programmers that it is a legitimate language, even if developing with it is a bit slower than typing.
I haven't played with it for a while - they were planning to add function blocks, but I don't know if they did.
Also - lots of kids actually have played with scratch. If you look at the website, there are 1.1 million projects and 150,000 members. So - this next generation is really poised to make this platform their own. Maybe it will be their TI-83?
The goal is "make it possible to create an app with NO programming knowledge".
The ability to create "trivial" apps and then run them on your cell phone can be exciting for many people. I think this will increase the appeal of Android as a consumer device. Of course, a big flood of trivial (tool-created) apps in the Android market may reduce some of that appeal, but overall, this seems like a good move by Google.
It will be interesting to see if more people buy Android phones because they can now create and run their own apps on their phones
There have been visual app generators before, for other platforms. None of them took the world by storm, and mostly were very limited and/or actually quite hard to learn - different from regular programming languages, but still with a learning curve. The devil's in the details, and a good programming language "makes easy things easy and hard things possible". App generators often succeed very well at the "makes easy things easy" part but fail at the "make hard things possible" bit.
On the Internet, we saw a lot of 'personal home pages' which were basically globally accessible bookmark menus.
Those had limited utility because they were public and only available when on-line.
By comparison something as 'easy' as Frontpage would be great for making a personal single-purpose app for your phone. It doesn't have to do a great deal to be useful - perhaps it would just show the RSS feed from your school events society. Maybe it would just make a ping sound when you touched the screen, or be a really simple game just for the fun of it.
If we are talking about 15 minutes of setup and build time then the apps really don't have to do much, and they only have to be useful to one person to get made. But it makes owning the phone much more interesting to people who are a bit geeky but don't code, which is important for Google.
(Compare to the iPhone - where the easiest option is to set up a web server and build a single-purpose web site. That's easy for us but for a 10 year old it's a huge barrier.)
That does not look like no programming knowledge to me.
Has anyone ever actually demonstrated that a "visual" programming language is easier for non-programmers to learn programming than a language with a relatively simple syntax, like Python? How is that picture significantly easier to understand than
Screen1.BackgroundColor = Blue
Graphical programming removes choices and options. However it also removes ways to make mistakes.
Code is only a means to an end. If you can achieve the result you want without it, then it's just an obstruction.
It's for building voice apps, and believe me, it's easier to learn than anything in the space (VoiceXML, random proprietary APIs, etc.)
Java isn't necessarily easy to learn, and that's all that Android has right now.
From the NYTimes:
"A program by a nursing student at Indiana University enabled a phone to send an emergency message or make a call, if someone fell. It used the phone’s accelerometer to sense a fall. If the person did not get up in a short period or press an onscreen button, the program automatically texted or called the person designated to receive the alert. "
"For example, one student made a program to inform a selected list of friends, with a short text message, where he was every 15 minutes. The program was created by putting three graphic code blocks together: one block showed the phone’s location sensor, another showed a clock (which he set for 15-minute intervals), and third linked to a simple database on a Web site, listing the selected friends. "
The text above, quite adequately describes the functionality of the app. If someone gave a programmer the above description, the programmer would have enough information to write the "backend" code for the app and leave the UI and details (like the length of time before sending the text message) to be filled in later. It's sort of a shame that you have this two-sentence sufficient description of the app and then need to spend months to create the code to implement what took you 10 seconds to describe.
This question may need its own thread, but I always wondered if there would come a day when you could describe an app like the one above, in English, and a "compiler" would create the program for you, leaving you to decide things like themes, button locations, etc.
I call this artificial intern-level-intelligence: You describe the app in English, and the intern (or AI intern) creates the code, and asks questions about details like the theme, the images, the length of time before the program sends the text message, etc.
Do you guys think computers will ever get close to artificial intern-level-intelligence?
- lots of powerful features that make necessary mobile app features (e.g. "pull up your contacts list!") super easy
- "puzzle piece" logic building inside app inventor is really easy to understand (ish), and pretty well done
- the process* is easy for non-programmers to do / understand / see in action
- how difficult it is to go beyond app inventor's available functions, if you know exactly what you want to do, or how you would do it if you could just pull up code (e.g. it's really hard / awkward right now to have multiple "screens" in an app)
- the android "look" in general, and the strict limitations of app inventor wrt visual styling
- the emulator is, unfortunately, _not_ easily accessible for non-programmers
- everything runs inside a java vm, and generally feels a little cumbersome
- the process* is slow and full of 30-second chunks of lost time
* process: make changes to the program -> "package" the app -> take a photo of the generated QR code -> download and install the app -> test your changes on the phone
It could be this generation's C-64 equivalent. I have fond memories of whiling away hours of time in C-64's Basic.
I think the new Google tools are an important first step from pre-teens mindlessly playing/texting with their mobile devices (consuming) to making something, even if it is a toy app (producing). And maybe they'll get a bit of the ego boost that comes from making something other people like/want. Maybe it will become cool to make your own little apps. Imagine if Seventeen magazine had a monthly contest for best app. This could be more than a technological shift, this could be a shifting of cultural attitudes towards programming / IT at the subsurface, tectonic level.
As for teaching logic, I think it really comes down to how the person is wired internally. Some people just think that way.
It doesn't have parens, of course, and sometimes the blanks on the blocks are positioned so that arithmetic appears to be infix, but it's most certainly Lisp. It would be trivial to create a 1:1 mapping between the visual representations and s-expressions. My guess is that behind the scenes, that's exactly what's going on.
After this realization, I noticed that Hal Abelson is involved in the project: http://googleresearch.blogspot.com/2009/07/app-inventor-for-...
From the article:
"The blocks editor uses the Open Blocks Java library for creating visual blocks programming languages. ... Open Blocks visual programming is closely related to the Scratch programming language, a project of the MIT Media Laboratory's Lifelong Kindergarten Group...
The compiler that translates the visual blocks language for implementation on Android uses the Kawa Language Framework and Kawa's dialect of the Scheme programming language..."
I commend the approach to get more parties interested in programming and mobile web application development. Perhaps this opens up a whole new world of potential for getting mobile applications development into the classroom at a very young age. On the downside, we might end up with an influx of even crappier Android applications in the market. I already have a hard enough time filtering through the craplications as it is.
Here's the link to SCRATCH for those unaware:
I am showing my age, when I admit that my initial reaction was to note the similarity with Novel's AppWare circa 1995. ( http://support.novell.com/techcenter/articles/dnd19940502.ht... ) Appware, like Scratch, took a modular approach of assembling software building blocks and connecting the output of one to the input of the other, dealing with triggers, events, etc. As a programmer coding to native APIs (WinAP and MacOS, in C++) I found AppWare to be an adequate and fun prototyping tool, useful for quickly testing an idea or stringing together a quick & easy widget to solve a basic problem. Even moreso, considering it was a cross-platform (MacOS & Windows 3.0) system, which was novel for that time period. However, when it came time to build a full-featured application to deliver to others, in my experience Appware fell short. I suspect I'd feel the same way about this tool for Android but I'm willing to give it a shot.
I suspect that much of the HN readership feels the same, but we are quite the minority, and this tool is designed to address the needs of what my non-programmer wife charmingly refers to as "normal people" -- non-hacker people who don't really care how things work, but instead use the device as a tool in order to get on with their lives rather than a means unto itself.
also about flooding app store with crappy Apps.
A good quality app will standout by reviews/word of mouth and Advertising.
Sad how Apple makes people idiots
This tool is awesome.
Just remember to disable it if you ever see them in person again. Could get awkward. Anyway, it's nice to see these platforms getting more accessible to non-developers. It's always been off putting to me when learning a language just how difficult it is to get some tangible results. It's a huge uphill battle if you're just approaching it as a hobby or learning experience. Depending how quickly you hit the celling of this platform it could inspire people. I'd like to see some combination of Interface Builder and OSX's Automator on the iPhone platform.
Perhaps Google will have better luck, but I can't remember a time since COBOL first tried this that some effort hasn't been ongoing to do just that. Anyone remember Fifth Generation Languages? And before that Fourth Generation Languages, or 4GL?
It's also a good way to teach the basics of programming and OOP, which frankly a lot of programmers still can't grasp. In 2010 no less!
At the end of the day MOST people don't want to create their own apps for their own needs, they want to pay $0.99 and be done with it.
Here's the difference:
Real programmers don't see programming as work. It's a hobby, it's fun, and spending 20 hours on a small app isn't a waste of time or money. It's worth every second. I stay up until the wee hours of the night writing my Android apps because I love it. Every programming problem is a puzzle, and when I'm done I feel accomplished and pleased.
Joe-non-programmer sees this 20 hours as time and money lost. They could have been playing with their kids, or working their real job making money. They could be watching a baseball game or playing video games, or spending time with friends. If something is out there for $0.99 then there is no way in hell they will spend any time making their own apps. It's as undesirable as fixing the leaky facet that's been leaking for 6 months.
It's for the guy who likes to tinker, or the student with a ton of time on their hands and they aren't worried about making money anyway.
If anything - there may be more crappy apps in the Market, but it will require real developers to step up their game to get noticed amidst the garbage.
When running for President JFK gave people buttons, had them run call centers and letter campaigns, and anointed them block leaders. Many people think the sole value was what these people produced (letters, phone calls, pamphlets etc), but at least as much it was making the people themselves strong Kennedy advocates. It gave people a chance to be involved and stand for something; they became strong unpaid advocates that had influence on and access to their personal network of family in friends in a way no radio spot or ad in the paper could possibly rival. That's how "the establishment" starts a grassroots movement.
How does this relate to Google? Beyond the mass appeal of any power-to-the-people message, if you write your own app (and even just knowing that you could), even if it's shit (and most of these will be), you feel like you're on the Team Google. This is just one more brilliant way Google is building itself into a ubiquitous, and well received, cultural force.
I used LabView in college and it was okay. I interact with another graphical programming environment in my current contract and I hate it. I probably wouldn't hate it if I didn't know how to read and write code.
I don't see these things as good training wheels either. They obfuscate the details that are required to be a good programmer. It would probably be more daunting to a newcomer to lift up the hood and see miles of code that they can't easily relate to the graphical version.
Im skeptical, but if it does create more interest in the platform, that is a good thing.
I would agree that these environments make programming easier and more approachable.
remember when they appealed to the education market?
So someone sees that, creates their own. Shows it to a friend. "Ooh, I want to do that for my cat too!" And since that person is just about to buy a new phone, they go and get one with Android. Then that person shows a friend their own new kitty "app" and that person who is getting a new phone ... repeat.
Everyone looks for a great big downpour instead of a light rain to change everything.
Jokes aside, I guess I'm a bit skeptical about these pseudo-developement envirnoments. It's a nice concept to demo but does it realy have any practical applications in real world? I mean, really practical, something that people create not just because they can, but because they need it.
I remember two decades ago when I used to program using QBASIC as a 6 year old. I didn't need any of the applications I made - but it sure looked like fun.
This new Google initiative might not be about general masses, but more aimed at helping children with their creative processes.
Totally agree it's a great thing for educational purposes, I was just questioning if it can be considered as something more than an educational tool.
I'm not against the idea, and if this kind of tool attracted people who care deeply about human factors, interaction and graphics design I'd in fact be totally in favor of it.
But this doesn't look like much more than Visual Basic or, as Gruber put it, Hypercard.
Sure Visual Basic programs written by non-programmers are often a monstrosity in every way and most of us no doubt have our share of horror stories. But the point is that most of those monstrous apps actually work and solve a real world problem, and had they sat around and waited for a programmer to come along and solve their problem correctly they'd probably never get their program.
"Come on PHP, web development is not for everyone. Making it easy for amateurs to write crappy dynamic web sites brings no good to the web"
And, yeah, PHP has made a lot of crappy things possible. But some of those crappy things go on to become good things, and wouldn't have been possible had it not been so easy to get started.
Sure, their approach might be amazingly ignorant of history, but you can't fault them for trying.
"The Android Scripting Environment (ASE) brings scripting languages to Android by allowing you to edit and execute scripts and interactive interpreters directly on the Android device. These scripts have access to many of the APIs available to full-fledged Android application"
Not as simple as Inventor, but pretty powerful.
Just like during elections the key isn't the hard core linux user or the unwashed masses who can't use their remote, it's the independents/people in the middle.
The thought that the bottom section of the phone can detach and flip around seems clunky to me. Like someday that piece might get loose and fidget a little, making my phone feel cheap and broken.