I looked at Python a few years ago and lacked the self-discipline to continue forward with it. I remember nothing of that failed attempt other than everyone spouting how wonderful and easy it was. It could very well be my answer though. One of the solutions I would like to work on involves a few small applications that I would need to run on Windows, Linux, OSX and cell phones. I could cut out the cell phone requirement if needs be as I would likely be one of a handful in my company that would use it.
I sought Java out as a truly multi-platform endeavor that most of my users would already have installed on their systems. I know very few Windows users that have Python or would know what to do with it. Also, I would eventually like working towards redeveloping our current web apps which are a mess of dysfunctionalism at its finest.
Does it sound like I would be better served with Python?
Also, the allure of VB for me, like any Visual environment is that I can quickly build nice GUI's that make my stuff instantly usable by the-- less informed-- that I work with.
To write Java well you have to understand object-oriented programming. I think first learning to program is easier without OOP, or GUIs for that matter. But if you already know the basics, learning OOP is a good next step.
Not trying to force you to use Python - I just thought I'd address some of your concerns.
You don't have to ship Python to your Windows users - there's a way to glue the Python runtime to your program and generate a standalone EXE (see py2exe.org). Also, a non-trivial Windows application will eventually need an installer. Which could install a Python runtime. But distribution is a problem for later.
Java on cell phones is a totally different beast than the regular JRE. Getting your desktop Java program to run on a phone is not an automated task by any means. Also don't forget that your desktop users have to have the JRE installed (and preferably running the same version).
Learning to program takes time. You will likely end up rewriting many of the earlier pieces of your app, and possibly have to reorganize it entirely. I see that you are trying to replace an existing system that is badly put together. That's a good motivator, but keep in mind that quick and dirty solutions are unlikely to produce a good result, at least not until you rewrite that first attempt. Having said that, there is a place for VB, and it has an undeservedly bad reputation.
My own programming language timeline went like this: QBasic, VB, PHP, C, Java, Python. Having gone through all of the above, Python seemed easy and well-designed. But the easy to learn part is at least somewhat influenced by having done similar things before.
I am familiar with programming. Though I remember very little of the syntax, I certainly have not forgotten how to properly analyze and organize the flow of code-- or in other words, how to think like a machine.
Still, OOP was completely foreign to me before starting this adventure-- but I have also realized that it is not entirely different to writing good segmented VB code in which I would create procedures to call upon and return results-- I just didn't know to call it OOP back then.
I have heard some people say that OOP takes a considerable knowledge of proper coding to utilize fully, which maybe is beyond me at this point, but if you were to step outside of your multilingual box and decide it was time to learn programming, would you start with OOP or something like Python/Ruby?
Let me put all of this into perspective a little bit and maybe you or someone else can get me pointed in the right direction:
One of my immediate needs/desires is a scheduler. I am fine with a command line program that simply outputs the details of a database that I maintain. I'm good with that. What I need is a lightweight piece of software that simply allows me to input Date/Time and maybe some notes and then allow me to manipulate that date to provide alerts or notices on a schedule I define for each task. Now, this may sound like reinventing the wheel, but honestly I hate the way traditional schedulers work and I'd like to just take a crack at it myself. I also think this would be a relatively light and easy first project for my welcome back to programming.
This "database" could be a simple tab-delimited text file that my software imports and parses-- in fact, I am quite fond of ETCs. This would also mean I could keep this "database" up to date across several machines using various OSes via Dropbox even. I would like for this software to work on both Windows and Linux as I am regularly in both systems-- and ultimately my phone if at all possible.
Now, I really do appreciate the help and I sincerely thank you for following along this far and reading all this gibberish-- but what would you fire up to write something like that? I am, after all, a lifetime learner and I have no problems learning multiple languages. I've got the time. :)
You can do OOP in VB. It is almost proper OOP: the only thing not supported is real inheritance. So for every method in your child class you have to write some boilerplate to make a call to the parent.
As a side note, there was a really awesome book I read back when VB6 was still new. It's called Hardcore Visual Basic, and it is about how to do things that were said to be impossible in VB. Using the undocumented VarPtr functions, calling Windows API, etc. It is out of print (obviously), but available online at http://vb.mvps.org/hardweb/
That page mourns the late VB6. It is right: VB.Net is an entirely different language. I don't even know where you'd get a copy of old school VB these days (though VBA in Office is quite similar). Anyway, VB6 is dead, so you are probably interested in moving on to something modern.
The nice thing about Python is exactly that everyone keeps going on about how awesome it is :) What this means for you is that people have written some really good libraries. Many of them are in the standard distribution and are well-documented. This is what Python people mean by "batteries included".
As for what I'd use for this app... Not sure. I haven't written anything GUI-heavy in a long time. With Java I usually hand-code the GUI, but there might be good visual editors these days. For Python there is an IDE called Boa Constructor which lets you build GUIs. I have not tried it though.