It depends. I would pick either Java or C#. Both are (semi) modern high level languages. I know some folks swear by python but IMHO it doesn't quite give you what Java and C# can.
For you, the higher the level of abstraction the better off you are. That pretty much eliminates C and C++. As a former C++ dev I know all about Boost, STL, yadda yadda yadda. C# and Java are still cleaner and have less ways of shooting yourself in the foot.
For cross platform you lose ObjC as an option.
For general small app development on Windows and OSX the first decision is based on one and a half criteria: Cocoa and Mac App Store.
1) If you want to learn Cocoa there's no access to any Java Cocoa bindings any more.
And a half) Java apps will never be approved on the Mac App Store. MonoMac/Cocoa# project are translated and compiled under Xcode and can be approved. A dev at Oracle believes that if you bundle the JRE with the app that it could get approved but I've never heard of anyone succeeding. Or trying for that matter. I'm 90% he's wrong.
If you really care about either then Java is out.
If you don't then these are the things I would think about:
1) If game development is what will keep you coding then your language choice will be based on the game engine most easy for you to learn, understand and use.
- jMonkeyEngine is an open source java engine that is popular, has tutorials, etc but is also 3D focused
- Ardor3d was developed to be easier/better than jMonkeyEngine by the original jMonkeyEngine devs. Fewer tutorials and documentation. Also Java
- Axiom 3D engine - a C# engine with XNA, etc bindings. Cross platform I think
- Slick2D is a 2D java game engine. Never even looked at this but 2D art assets and development is far easier than 3D
- JGame - 2D java and flash engine
You'll want lots of incremental successes to keep you motivated vs throwing up your hands...it's not a matter of difficulty but human nature.
If you were serious about coding then there is no real substitute for a firm foundation in computer science basics (data structures, control, oo theory (encapsulation, abstraction, polymorphism, yadda, yadda, yadda), and so forth) that you want to skip. You don't have to go to university to learn these but you gotta pick these up somehow...most programmers without a CS background learn as part of a team. For you, there isn't a senior dev mentoring you along and frankly for small app development you'll be mostly fine.
Finally, if you still want to do C++/C I would take a look at the Torque Game Engine. Still alive but getting (IMHO) dated but for an indy game dev it's decent. You can start with just TorqueScript (LUA based I think...it's been sooo long I forget). $150ish to start but I think there is a free demo. What really helps are the starter kits.
There are unity ones too. Haven't tried any.
2) For general development were you code once and run on either windows or mac then Java is better than C#. While it is good practice anyway to have a high degree of separation between business logic and UI you can be sloppy in Java because the UI rendering is inherent in the language platform (ignoring Android for the moment). C# can have native bindings to Cocoa, XAML, WinForms, etc but for cross platform you need to not cheat in separating game or app logic from UI code or you will pay later.
For games, you code against the game engine unless you're starting from scratch. The native UI is the engine...but game logic should STILL be compartmentalized from GUI code and logic. If for no other reason than you might want to reuse game logic code in a new engine for a new game.
Don't code from scratch although DO code from the tutorials. Things like the NeHe opengl tutorials are kinda advanced but there are many XNA, JOGL, etc tutorials based on the NeHe ones. These gives you some low level understanding of what the 3D engines are doing for you...and why you don't want to code from scratch.
3) Documentation and tutorials: Both C# and Java have lots of these. Java probably has more because it is older and is a common teaching language. The downside is that if you google "How to do X in Java" you often end up with three different answers, two of which are deprecated by newer features in later versions of Java. C# is somewhat less crufty from this perspective but with the number of .NET versions, LINQ, XAML, win forms, etc you end up with some of the same issues.
Ran out of steam but this should get you started.
Don't worry about Java dying...it'll be around a couple more decades. There's billions of dollars worth of enterprise code built on Java including all of Oracle's stuff, a large chunk of IBM stuff, etc. Even desktop development will continue on...at least as the same low level of effort as today. Heck, it surprised the hell out of me but they did GA on JavaFX in Feb. I was pretty sure JavaFX would have died with the Oracle acquisition. Oracle doesn't have a desktop focus but given that Java is open sourced they can neglect it but not kill it. I don't see Ardor or JMonkeyEngine going away any time soon either.