Developing Android Apps Visually, In 3 parts 78
An anonymous reader writes "Dr. Dobb's has a three-part blog (all three parts are up; this is part 1) about using App Inventor. The focus isn't so much on the technology but rather the discussion of 'can visual development let anyone program?' If so, is App Inventor really visual development? And should we be teaching real programmers about visual development. Most of the conclusions are in part 3. As a byproduct, they show you how to put App Inventor output on the Market and there are two games on the market (free) that resulted from the articles." Here's part two, to round out the trilogy.
Not worth it (Score:4, Interesting)
Coincidentally I just started learning to develop mobile apps last week. I'm using Sencha Touch and PhoneGap, Eclipse, and the Android SDK. The combination works pretty nicely, and lets me build fairly pretty pseudo-native apps, working in JavaScript. Best, they will run on iOS and any future mobile device with WebKit.
Re:Not worth it (Score:4, Funny)
The only gap I like is pink, hairy, and smells like fish.
Let us know when you finally found out what it really smells like.
Re: (Score:3, Informative)
Best, they will run on iOS and any future mobile device with WebKit.
But will they run fast? When Apple decided to add JIT execution of JavaScript to Safari in iOS 4.3, only pages running in Safari got the fast treatment. Applications using a UIWebView and web sites that have been bookmarked on the home screen were stuck with the old, slow, interpretive JavaScript engine rather than running a JIT engine in a separate process.
Re: (Score:3)
That is a technical issue though, and one I assume they will resolve, since it relates to security issues if they had added JIT globally with the way it is set up right now. At least, that was my understanding over why it has been brought in piecemeal
Re:Not worth it (Score:4, Insightful)
Re: (Score:1)
Actually it's not about being defensive but providing the user with a good user experience. On iPad 4.2 I tried one of Sensa Touch demos showing full screen tap areas (chess game example) which was highlighted as the best of the best. The performance was so bad that half of the time taps were not being handled by the UI, and everything being redrawn on the screen happened half a second later. After seeing this demo I decided to stay away from it, because the iPod 1 is still much better hardware than first g
Re: (Score:3)
The cool thing about visual programming is... (Score:3)
Re: (Score:2)
...your spaghetti code will actually look like spaghetti!
Hey, I'm half Italian... I dont see the problem with that. ;-)
Re: (Score:2)
...your spaghetti code will actually look like spaghetti!
Hey, I'm half Italian... I dont see the problem with that. ;-)
With no sauce...
Oh, screw that, then!!!
Re: (Score:2)
Having worked on LabVIEW for a WHOLE PROJECT (stupid client insisted on doing everything in it), I agree!
If your code looks like a hairball, it needs refactoring...
Real programmers... (Score:5, Insightful)
...don't use visual tools. They describe the GUI in assembly language, or use torturous frameworks. Of course it is this elitist attitude of making things as difficult as possible that has resulted in 2 decades of user experience that stinks. I don't know how many times I've seen programmers rant that Visual Basic was evil because it was too easy and let anyone program. They somehow think putting together a user form should require 2 weeks and multiple degrees in computer science. On the contrary, it should be ridiculously simple to throw together a user form. There are things you can't simplify like algorithms and complex logic in science and business and THAT is where you NEED to focus and concentrate a developer's attention. Bloated frameworks and non-visual building tools from hell that make things unnecessarily hard are nothing but a hindrance and should be eliminated. There's no shortage of work to go around.
Re: (Score:2)
I completely agree with you.
Most people I know that actually *have* a computer science degree, don't mind Visual Basic. They realize that underneath it all it's just another Turing machine with a better interface. Yes, you can abuse it. Just like Excel is abused to build entire BI-solutions. A fool with a tool and all that...
Re:Real programmers... (Score:4, Informative)
Re: (Score:2)
Interesting - I'm not doing much development work in that area but it sure looks interesting.
Re: (Score:2)
Re: (Score:3)
I haven't used VS2010 yet, so I'm not sure whether they've fixed it, but the biggest problem with the winforms designer in VS2008 isn't that it's too easy. It's that if you touch anything it rewrites half the .designer file. Must have been implemented by someone who didn't ever look at diffs in their source control program.
Re: (Score:2)
Re: (Score:2)
Nonsense (Score:1)
Real programmers use visual tools when they are the right tool to use. If you are trying to lay out a pixel-perfect preference dialog for a retail app they can't be beat, and real programmers use them. And if anyone ever came up with a visual tool that makes the actual work of programming simpler, real programmers would flock to it; but don't hold your breath.
Programming is a process of progressively deeper understanding of a problem space. Visual tools allow you to easily represent a shallow understanding
Re: (Score:2)
Of course it doesn't take all that. That kind of qualification only comes into play when it is necessary to put together a good user form. People who think it is ridiculously simple to "throw together" a (good) user form don't understand that even the seemingly simple is often complex. That is why there is so much c
IntelliJ IDEA (Score:5, Interesting)
Slightly off-topic, but Android development for me has been marred by the steaming pile of dung that is Eclipse. Netbeans is ok but it's android support isn't great.
I finally got around to trying IntelliJ IDEA, and hooray! Android development is now possible on my lowly 2009 PC. It is so much better than Eclipse. You should download it now and forget about Eclipse this instant. Let's see:
Cons compared to Eclipse:
* Not the official android IDE.
* Doesn't have some android tools built in (ddms).
* No GUI editor for the manifest.
* No GUI layout editor (although the Eclipse one is unusable anyway).
* Logcat always autoscrolls. It's slightly annoying.
Pros compared to Eclipse:
* The main UI is way faster and more responsive.
* The 'smart' features (code completion, refactoring etc), are even more clever than in Eclipse -- they practically read my mind.
* No retarded 'workspace' paradigm.
* The code editor is way more responsive.
* The UI is a lot more sane, and much less cluttered, even though it still has a ton of features.
* Built-in git support. Maybe this is in Eclipse, but I'm sure it is way more complicated.
* No retarded 'perspectives'.
* The UI is cleaner IMO, although it is a little win95-ish.
* I have no idea why, but it manages to detect my phone even though adb doesn't. (I know right?)
* It's just way better. There are tons of features that make you think "Wow, they really spent time implementing that (in a good way)?", random example: if you create a new class, edit and press undo, it will ask you if you want to undo creating the class!
In conclusion, fuck you eclipse. You suck.
Re: (Score:3)
The GUI layout editor which comes in Eclipse works. Granted some times you just want to type your code in yourself, but otherwise its simple drag and drop for the most part.
Eclipse's "Workspace paradigm" is very useful if you do lots of different things with it. Got bored working on mobiles, swap the workspace to your Java one and you have everything you left - settings included. Want to do something else, use another workspace. Its a great idea.
Perspectives again.. take a short while to get used to... but
Re:IntelliJ IDEA (Score:4, Funny)
Fuck you is a plugin for eclipse. It won't do it natively. And it's a bitch to install. Do you really need eclipse to do that?
Re: (Score:2)
That... gives whole new meaning to the phrase "Java developers do it in Eclipse" :)
Re: (Score:2)
Re: (Score:1)
Re: (Score:2)
Shouldn't it be the opposite -- autoscroll only when it is at the very bottom. And for me it autoscrolls all the time anyway.
Re: (Score:1)
Right right right, I get it. (Score:2, Interesting)
See, the one fundamental concept programs like this miss is that ANYONE CAN PROGRAM!
I'm sorry guys, I hate to break with the fleet of devoted programmers needing to feel like they have something on the world, here.
Programmers are no better than people in any other skilled trade. And, I'm confident that I could work in any skilled trade I wanted to. If I could learn how to program in twelve languages, who is to say that I wouldn't be a genius with plumbing, or electricity? The difference here is that I want
Re: (Score:3, Interesting)
No and no.
I have seen many people struggling to learn PHP (as part of their education). Not because they had any issues with the language itself, but because they couldn't systematically approach their problem. And if you would have read the TFA, or even simply peeked at the pictures, you would have seen that this IDE is almost a glorified code coloring editor, where words of code fit together like jigsaw pieces.
The art of programming is actually the art
Just like VB? (Score:1)
The quality of those apps will speak for itself.
should we? (Score:2)
Should we teach C programmers about Assembly?
Should we teach perl programmers about C?
Should we teach SQL programmers about perl?
Should we teach HTML programmers about SQL?
Should we teach Drupal programmers about HTML?
Should we teach anyone about the insides of the things they use?
Only if we teach Assembly programmers about opcodes, I guess.
Re: (Score:2)
Sheesh! Just teach them all Maxwell's equations, some quantum theory and particle physics Be done with it. Enough of this coddling people with circuit analysis and all that other high level stuff they've glued on top of it.
Re: (Score:1)
Maxwell's equations are just a very special case of the standard model of particle physics (only the simplest interaction, operating in the classical limit). All you need to teach is the standard model and general relativity. All other established theories of physics are ultimately just special cases of those. Indeed, for computers, you can probably omit general relativity.
How is the mayhem handled? (Score:2)
I would like to know how App Inventor handles the chaos (read fragmentation) in the Android ecosystem. Chaos stemming from the different screen sizes, types, hardware especially that for processors and graphics and manufacturing quality.
Disclaimer: I am no app developer, but an avid Android fan, currently using the Samsung Galaxy S II and loving it.
Re: (Score:3)
From my limited experience... (Score:1)
App Inventor seems like labview for android. That means that programmers should hate it and hardware engineers should like it. That being said, I'm a hardware engineer and I'm writing apps in java. I guess I was expecting app inventor to be more intuitive but there is somewhat of a learning curve. I figured if I'm going to have to learn something I might as well learn the fundamentals (java) so I can apply it in other places. So I decided to focus on the whole eclipse android sdk package.
Thats not to say a
Re: (Score:2)
I played around with it some, and for anything but relatively simple apps it can get a little unwieldy, even though you can encapsulate and collapse functional blocks in their own modules so you don't have to see your entire app layout all the time. It is still awfully cumbersome to do simple things like specifying the input parameters to a function, or the conditions for a loop, things that take a second in text. That said, the main limitation I ran into was that they didn't have a proper component for web
Anyone can program, yet again (Score:1)
I hate to just say "This is impossible, forget it and go on." I'd love to see it happen, but I don't think it ever will until we have near human level AI that can replace a human coder. Programming is not about dragging pretty blocks around, it's about visualizing and then creating a logical process that accomplishes something. Programmers have the (inborn, I believe) ability to do this; nonprogrammers don't, and no amount of training or simplified tools makes the slightest difference.
I was in college with
Re: (Score:3)
How many people do you think actually have an inborn ability to program?
Most people have created or followed algorithms (cooking recipies, map routes,...) at one point or other. Part of the problem is abstraction, which many are not good at, but a large portion is also the jargon that we programmers pick up along the way. For example, my dad's pretty good with logic, but I can't really explain what a "class" is to him - he didn't just spend the last decade working his way up to that concept. I'm pretty good
Re: (Score:3)
I did say first program...
Re: (Score:1)
Visual Programming is Bad for Open Source (Score:3)
I've done some work in visual languages, like Pure Data/Max mostly, and some things you notice:
It's easy to get started in them but, no matter how easy they make it, eventually you get bogged down in trying to look up the particular name for a block that does X, because any logic that takes more than two lines of real code or relies on tight loops can't be programmed literally in the visual way.
I'd say that visual languages give you a good entre to programming, but really it's just BASIC brain damage all over again -- visual languages use visual cues like lines or sockets to do what in fact are nothing more than GOTOs, you have to do a lot of hard coding, the language makes you do a lot of static decision making, you always are deciding to make (k) objects instead of arbitrary (n) objects; code reuse, structure, or metaprogramming are unheard of.
Re: (Score:2)
Yeah, that was the same problem I saw with it. I am going to run through the tutorials in TFS just to make sure that I wasn't missing something, but it seems far too limited to even write Checkers or something
Re: (Score:1)
Just started playing with AppInventor this week (Score:4, Informative)
The Cons: I tend to be kind of a linear, procedural thinker -- I cut my teeth on BASIC, learned COBOL in high school, learned Pascal and Perl in college, and now use mostly Perl and a little Python -- so AppInventor requires me to approach writing programs a little differently. For example, in Perl, if I want to compare two strings, I think it out the way the line is typed on the console; AppInventor, on the other hand, seems kind of like programming in Reverse Polish Notation
The Pros: I am quite impressed with the ease with which I started using AppInventor. When I first started using Python, it was very easy for me to read someone else's scripts and comprehend what they were doing. Writing Python, on the other hand, was a bigger hurdle. To be fair, a lot of that was because I've been writing Perl for so long, that I try to do things the Perl way (okay...ONE of the many Perl ways ) and then have to search Google to find the way it's supposed to be done in Python. AppInventor, on the other hand, is just a matter of snapping puzzle pieces together. If you try to do something that would be a syntax error in a traditional language, AppInventor immediately pops up an error telling you why you can't do whatever it is you are trying to do -- and the error messages are pretty intuitive. Procedural errors are a whole other story -- see the caveat above about using TinyDB.
Experienced programmers may turn up their nose at tools like AppInventor since it lowers the barrier of entry so much, but IMHO, tools that make it easy for people to learn programming concepts are a Good Thing. Will people churn out crappy code in AppInventor? Yep. Do people already churn out crap code in Perl, Java, C/C++/C#? Yep. Will skilled programmers make well-designed apps in AppInventor? I don't see why not. I imagine the quality of the code will probably depend upon some of the concerns I described above, but the *design* will be a reflection upon the skill and experience of the developer. I don't see any reason why a good developer will suddenly be reduced to creating crappy apps with tools like A
Re: (Score:2)
Thanks, that's a very nice, balanced review... You've saved us all the trouble of writing one ourselves... Somebody please mod parent up?
My feeling is that it will go a long way in making programmable interfaces using touch screens and other (whatever they may be) graphical-input-only devices.
This is just the beginning, I suspect that this particular path may turn out to be better than people fear...
Re: (Score:2)
It's all about Me, Me, Me. (Score:2)
The entire first page is someone blithering about themself. There may be some useful information on later pages.
Suprised there's no mention of Scratch so far. (Score:2)
Looks like almost the exact same approach. My short experience with Scratch suggested that interesting apps could indeed be written in the framework, but that the complexity of any 'real' app would soon become burdensome in such a visual programming environment.
Does Not Address 90% of Programming (Score:3)
I've been writing software for over 25 years, with the last 20 of them being mostly GUI based.
The visual components of any non-trivial program will compose about 10% of the final product, with the other 90% being the code that does the actual work. AppInventor addresses the least crucial aspect of writing software -- the ability to create a user interface.* The ability to think abstractly, and to implement that abstraction, is far, far more important; and it is the thing that relatively few people can do well.
So no, AppInventor is not going to let just anyone write good software. Without the skills needed for other other 90% of software development, AppInventor will do nothing more than address a trivially insignificant aspect of writing software.
* Do not construe this statement to mean that designing good, clean user interfaces is easy. It is an art form all to itself, but constitutes a relatively small portion of creating software.
very informative. (Score:2)
i looked it up. cobol does indeed use english works.
AppInventor is useless (Score:2)
I'm sure someone can create a nice web-based, visual development tool for Android. AppInventor is not it; I found it to be cumbersome and useless.
Need to be able to export the blocks to XML (Score:1)
However, as a new language, it's missing a big feature: googleability. In order to debug and ask questions, you need to be able to easily show a piece of code and let people search it through Google. This means that you need the code to be in text, not diagrams.
Adding a