... we lived in a hole int' road......
It was a couple of months ago that I mentioned that I was starting of a project to develop an application for Android tablets and phones. I'm surprised that it was as long ago as all that; time flies, and I haven't spent all that much time on it. I'm not entirely sure how to go about describing my experiences so far.
My background is that I graduated in computer science some 45 years ago, spent my early working years programmingin FORTRAN and assembler, and last wrote software in about 1985.
My idea is to create an Android app that explains to potential customers what is here at the gîte. In that sense, it's purpose is similar to a straight website, and it's relatively uncomplicated. There is no serious custom computation to do, I just want a nice interactive display of the usual types of info: what we have, what we offer, and where to find us. So far so good.
I have four main sources of information: these three books, and the web.
The Android Application Development for Dummies is an excellent book and did exactly what I needed as an absolute novice in Android programming. It describes carefully and precisely what you have to do at each step, the results that you can expect, and what to do if it goes wrong. I haven't contacted the author, but I understand that he gives a quick and helpful response to questions sent to him by readers in difficulty. I haven't finished reading his book, but at this point it has given me the confidence to branch out on my own, and write software that is different from the examples that the author guides you through.
Java is the main language used in Android programming, and A Software Engineer Learns Java is an excellent explanation of it. As near as I can describe it, it is a university-level exposition of the language in its entirety. It's a challenging read, to be taken slowly. Everything is clear, logical and understandable, if you take the time to digest it. I'm stuck on chapter 12.
(The website layout language XML is also extensively used in Android apps, but for the specification of screen layouts rather than the logic of the app. I have no book reference for this, but there's a lot of help on the web)
Android User Interface Design is another good book, explaining the design principles for good presentation of Android interfaces. It assumes a working knowledge of Java, so it loses me when it gets into the detail. I'm hoping (and expecting) that as I come to complete the Java book, this book will make more sense.
I suppose the thing that strikes me as I fight my way through the thicket of Android app development, is the complexity of it all. This is a necessary side-effect of the power and versatility of modern computing platforms, and the fact that such power is now in the hands of the general public.
Java is an object-oriented language, a technique that was controversial when it was launched, but it has permitted the development and maintenance of the kind of powerful applications we take for granted today. One of the things that has changed as a result is the way that programs are developed. I find that I am spending my time learning how to manipulate objects that have already been already created in Java. Google provide many objects that are useful in Android apps; for example a Google map that you can display on a screen. The task of displaying a map becomes one of learning how to find, understand and use the tools that create and manipulate map objects, which is much faster and easier than doing it all from scratch. However, one of the challenges is that the instructions for doing so are not always up to date (a by-product of the huge number of such objects). For example I created a map object using Google's instructions and it didn't work, and eventually I had to ask for help from an internet forum to find out how to fix the problem.
So today's programming seems, at least at first sight, to be more about re-using ready-made software, cutting and pasting it into one's programs, and getting help from reference databases and fellow programmers when things go wrong. It's a steep learning curve. If I can try to distill it, there are three levels: at the bottom level you have Java to learn; then you need to know about the objects that have been created in Java and how to manipulate them, and for this you also need to learn and understand the language used in the explanation. For example, can you make head or tail of this page?