My programming began with the use of Fortran and Watfive in high school on IBM mainframes. In University I learned Cobol, PL1, Pascal, APL and C. Along the way I was exposed to assembler and machine language, both of which I used in both school and in my first few jobs. Attending the University of Waterloo Co-Op program afforded me the luxury of applying the skills learned in class to the workplace during work terms. Learning in the process the practical use of the academic lessons.
From manufacturing to banking to service industry and healthcare I have worked on applications from mainframe to mini-computer, PC and handhelds. Throughout I have focused on the user, creating products and applications that work for the user regardless of the machine or platform. A very pragmatic approach to software.
Programming is the application of logic. The language is the means of communication, from human form to machine form, the tasks required to be performed. Over the years there have been many languages created to communicate functionality to computers. As developers we can create applications based on the needs and the requirements of the user that suit the application.
Product development seeks to create an application that can be deployed on any platform. For decades the elusive goal is to “build once: deploy everywhere”. Yet companies seek to lock developers into their platform. Building an app for the iPhone or iPad does not allow that software to run on a Blackberry, a new app needs to be built to work on Android or for each new device.
For a time the Java language had the promise of using a common code base to allow development for multiple platforms. But this was dashed as competing interest created division and version issues. Now we have Objective C for iPhone development, Java for Blackberry and other languages for different mobile platforms.
The internet allows access to documents and resources across the world using common browsers. The use of HTML and other protocols and tools provides a basis for users to access applications independent of their machines. Yet even now different browsers are causing problems with common application bases. Now a web page using .net will not display properly on Firefox browser or Chrome. What will this mean to developers and to users?
If you use only one browser you may find non-functional links. Often there is no indication or error handling for this. How can we, as developers, create machine agnostic and browser agnostic web applications? Different browsers, different languages and different platforms create a tremendous challenge.
Presenting XHTML to the client on the machine works well, yet you must stay away from machine specific and platform traps: like using script languages that only execute on specific platforms or require specific software to be installed on the machine. As developers we need to be inventive and build products that are free and clear of platform traps.
We may never find the perfect platform independent programming language. We, as developers, always need to work with the tools and platforms available and ones the users adopt. While we must always strive for the most flexible platform the choice is often not ours to make. The ultimate decision is the consumer who picks the devices they use and the apps they pay for.