Author Topic: Learning Java in Retirement  (Read 497 times)

Walter Mitty

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 1025
    • View Profile
Learning Java in Retirement
« on: November 05, 2011, 08:40:57 am »
I'm trying to learn Java.  It may not make sense for a retired person to set this as a goal, but there I go.  I do want to have a machine I can program, and Windows does not appear to be such a machine.  I want to keep my brain sharp, although this may not be the best way.

I'm catching up on a long, long time during which I let my programming skills lapse.  I don't count SQL as a programming language.  It's a sublanguage.  And I don't do PL/SQL well enough to consider myself proficient. 

I considered C++ for a while,  but I decided that Java was a better move for  me.  More on that later.  And I'm not seeking the leading edge, something like Scala.

I have to admit that I'm not as smart as I was forty years ago.  My brain just isn't capable of juggling several unresolved issues at the same time the way it was in my twenties.  But I'm not as ignorant either.  This cuts both ways.

On the one hand, my tolerance for other people's crap has gone down.  When the Java people tell me that their way is the only way, I often know that to be false.  But I'll play along, because I want to play in their sandbox. 

On the other hand,  I know where I want to get to in learning the language.  As an example,  here is a page I want to master: 

http://download.oracle.com/javase/tutorial/collections/interfaces/map.html

Why do I want to become proficient with maps?  Because it's the lowest common denominator between OOP and the relational data model.  I want to be able to "think relational" but "code in terms of objects".  That's not easy.

Walter Mitty

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 1025
    • View Profile
Re: Learning Java in Retirement
« Reply #1 on: November 05, 2011, 08:47:28 am »
The only language I really enjoyed learning was Pascal.  I may start a separate thread on that.  I enjoyed my first programming course, but I think it was programming I was enthusiastic about,  and not FORTRAN.  Maybe assembler a little, but that was just because it enabled me to see how the machine worked.

I'm not enjoying the learning of Java.  Too many times, a concept is explained in terms of a prerequisite concept.  I can't fault the tutorials for that.  It's an efficient way to structure the learning curve.  But I can't say that it's fun.

For example,  I have to learn the difference between "Long" and "long".  Although I kinda understand what it does, I can't for the life of me understand why such a distinction is necessary in an object oriented language.  If everything is an object, why can't a variable be treated as an object?   Well, it's their language, not mine.
 

Richardk

  • Global Moderator
  • Wise Sage
  • *****
  • Posts: 3820
    • View Profile
Re: Learning Java in Retirement
« Reply #2 on: November 05, 2011, 09:54:56 am »
If Java is such a PIA and this isn't for paid work then maybe take a look at some other languages. I don't know what are 'good' languages to pick but two that come to mind are Ruby and Python. I'm sure others would have suggestions as well that would keep you sharp while learning a modern and useful language.

The Gorn

  • Your agonizer, please. And be sure to keep the batteries charged!
  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 14182
  • Gornix user
    • View Profile
Re: Learning Java in Retirement
« Reply #3 on: November 05, 2011, 11:56:49 am »
Walter - for your purpose, may I recommend Python?

It is a scripting language in wide use. It has fully object oriented capabilities which you can also ignore on a case by case basis. It has a swiss army knife of built in capabilities. It is used heavily for text and string processing, therefore it would give you the opportunity to learn how to apply regular expressions. It is cheap and cheerful - free.

Mainly, it's really easy to use and is not cumbersome in the least. It is interpreted, which Java is not. It has easy to understand entry points for a learner, and there are also quite advanced things written using Python. In other words you are not going up against a culture of building monolithic huge applications when you learn Python, as you are when you learn Java.

I used Python scripts to migrate this board's messages and member list from Yuku into a SQL dump file that I could then import into this board software.

It was exasperating to get this "right" enough to result in a decent migration, but it was also fun to learn how to do it in Python.
Gornix is protected by the GPL. *

* Gorn Public License. Duplication by inferior sentient species prohibited.


I D Shukhov

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 3362
    • View Profile
Re: Learning Java in Retirement
« Reply #4 on: November 05, 2011, 12:27:38 pm »
Reasons it's a good idea to learn Java:

* You'll be able to develop for Android if you want to.   
* It has a wealth of library classes you'll be able to use.   I'm not really a Java programmer, but that's what I've read.
* Probably you don't care, but it's listed as Popular Language #1 by Tiobe.   That should make it marketable.  If you wanted to pick up  a few bucks, using your database skills, say, it couldn't hurt to say you know how to program in Java.
* It has the great Eclipse IDE to use to program it.   One thing nice about scripting languages is that you don't have to wait for them to compile.  I don't see this as much of an advantage with fast computers and a good IDE.  You just change something and hit Run and it's darn near instantaneous.
* There may be decent GUI builders, but again I don't know.  Nothing I've seen is as good as X Window GUI builders.   NetBeans may be okay.  Maybe someone else can comment here.
* I think it has good thread support.
* Scala has a good reputation, runs on the JVM and can call Java libraries.
* It's used with the most popular enterprise frameworks like Spring.  Again, you probably don't care about that.

The major downside I can think of:  I doubt if its the most popular web programming language.  That might be PHP. 

The important thing is: do you have an application in mind?   If I was mostly interested in getting paid work or Android development, I'd probably learn Java.   If I wanted to do web programming, it probably would not be Java, but I'd need to do some research.
 

Anything that won't sell, I don't want to invent.  Its sale is proof of utility, and utility is success. – Edison

The Gorn

  • Your agonizer, please. And be sure to keep the batteries charged!
  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 14182
  • Gornix user
    • View Profile
Re: Learning Java in Retirement
« Reply #5 on: November 05, 2011, 12:38:20 pm »
It sounded like Walter didn't like the culture of Java development, and adopting standard libraries will plunge you head first into that culture. I remember Peter Gibbons (who was a Java contractor and developer) also mentioning from time to time that Java had incredible baggage in the groupthink around it with libraries like J2EE.

I would pick Java if I had an actual commercial project to do. If I were programming a utility for fun, I would use something like Python.

Regarding lists and maps: I believe that Python has the built in concept of maps as a data type. Also, Python is dynamically typed. Features like these make a language easy to pick up and run with.
Gornix is protected by the GPL. *

* Gorn Public License. Duplication by inferior sentient species prohibited.


DG9

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 1632
    • View Profile
Re: Learning Java in Retirement
« Reply #6 on: November 05, 2011, 01:44:07 pm »
If you liked Pascal, take a look at PHP.

Walter Mitty

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 1025
    • View Profile
Re: Learning Java in Retirement
« Reply #7 on: November 05, 2011, 02:08:51 pm »
The recommendations for Python sound good.  But having invested this much in getting the basics of java under my belt,  I'm going to invest a little more in learning how to exploit the libraries.  My expectation, based on a very quick scan is that the libraries do not represent one single culture but multiple subcultures.  I may not like it, but I'll survive. 

And I expect a semi decent interface between Java and Oracle, given that they are now under the same roof.


The Gorn

  • Your agonizer, please. And be sure to keep the batteries charged!
  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 14182
  • Gornix user
    • View Profile
Re: Learning Java in Retirement
« Reply #8 on: November 05, 2011, 02:11:28 pm »
It sounds like you're doing well with this. I would consider picking up Java today a royal PITA.

I had a contract in '99 where the client wanted to plunge me into a Java project. I left after a week because we didn't see eye to eye on a business (payments) matter.

But even back then, Java seemed like a huge monolith to learn. It was already dense with concepts that exclude the dabbler.
Gornix is protected by the GPL. *

* Gorn Public License. Duplication by inferior sentient species prohibited.


Richardk

  • Global Moderator
  • Wise Sage
  • *****
  • Posts: 3820
    • View Profile
Re: Learning Java in Retirement
« Reply #9 on: November 05, 2011, 02:17:51 pm »
There are many pros and cons to the choices listed and I'll second the Java mindset. I worked with guys that were heavy into Java and it seemed common to over-engineer the application with libraries and 'doing it the right way'. I think there's learning Java and Java as a religion. Still not a bad choice if you understand what you're getting into but as stated, it's all the other things (libraries) that you need to know to be a Java programmer.

I think something like Python would be more fun but I can't tell you which would be better for your needs.

Walter Mitty

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 1025
    • View Profile
Re: Learning Java in Retirement
« Reply #10 on: November 05, 2011, 03:23:54 pm »
The important thing is: do you have an application in mind?   If I was mostly interested in getting paid work or Android development, I'd probably learn Java.   If I wanted to do web programming, it probably would not be Java, but I'd need to do some research.

Thanks for your reply.  I'll look it over in detail.

Yes, I do have an application in mind.  This isn't something I have in mind to sell, but it is something I want to get done on all of my home PCs.  And it would take hundreds of hours to do it manually.  And I don't want to pay for an application that would do it for me.  And I don't trust the free applications that might be out there.  Not in this case.

And I have plenty of time, and almost no money.  So it's a good fit.

I D Shukhov

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 3362
    • View Profile
Re: Learning Java in Retirement
« Reply #11 on: November 06, 2011, 05:55:52 am »
According to the Occupational Outlook Handbook:

Quote
Computer programmers write programs. After computer software engineers and systems analysts design software programs, the programmer converts that design into a logical series of instructions that the computer can follow (A section on computer systems analysts appears elsewhere in the Handbook.). The programmer codes these instructions in any of a number of programming languages, depending on the need. The most common languages are C++ and Python.

http://www.bls.gov/oco/ocos303.htm

No mention of Java.  Earlier in the article they do mention that software engineers use it:

Quote
Computer software engineers can generally be divided into two categories: applications engineers and systems engineers. Computer applications software engineers analyze end users' needs and design, construct, deploy, and maintain general computer applications software or specialized utility programs. These workers use different programming languages, depending on the purpose of the program and the environment in which the program runs. The programming languages most often used are C, C++, Java, and Python. Some software engineers develop packaged computer applications, but most create or adapt customized applications for business and other organizations. Some of these workers also develop databases.


The OOH appears to be pessimistic about computer programming.   The government statisticians at the BLS got offshore outsourcing mostly right but they think there is a huge dividing line between programming and software engineering.

Quote
Employment of computer programmers is expected to decline slowly, decreasing by 3 percent from 2008 to 2018. Advances in programming languages and tools, the growing ability of users to write and implement their own programs, and the offshore outsourcing of programming jobs will contribute to this decline.

Because they can transmit their programs digitally, computer programmers can perform their job function from anywhere in the world, allowing companies to employ workers in countries that have lower prevailing wages. Computer programmers are at a much higher risk of having their jobs offshored than are workers involved in more complex and sophisticated information technology functions, such as software engineering. Much of the work of computer programmers requires little localized or specialized knowledge and can be made routine once knowledge of a particular programming language is mastered. 

The outlook is rosier for software engineers:

Quote
Jobs in software engineering are less prone to being offshored than are jobs in computer programming, however, because software engineering requires innovation and intense research and development.




« Last Edit: November 06, 2011, 06:10:56 am by I D Shukhov »
Anything that won't sell, I don't want to invent.  Its sale is proof of utility, and utility is success. – Edison

Walter Mitty

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 1025
    • View Profile
Re: Learning Java in Retirement
« Reply #12 on: November 06, 2011, 06:32:18 am »
IDS,

I think the OOH description of the distinction between software engineering and computer programming is some 30 years out of date, maybe more.  In my career, on DEC machines,  software engineers did their own programming.  I heard of some mainframe shops where the output of software engineers was fed as input to computer programmers  (sometimes called coders).  I never worked in such an environment, and I never saw such an environment during  all the exposure I got while doing customer training.

I'm not really sure how it plays out for PCs and newer information devices, or for servers that serve up websites or services behind websites.  But I imagine it to be like DEC culture only more so. 

============

In any event, I don't think I need to apply it to my retirerent activities.  I want to write my own code.  And I want to design my own solutions.  And I don't need to outsource or offshore any of it.  Of course I need tools.  Right now, I have more tools than I can assimilate.
« Last Edit: November 06, 2011, 07:21:25 am by Walter Mitty »

Walter Mitty

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 1025
    • View Profile
Re: Learning Java in Retirement
« Reply #13 on: November 06, 2011, 08:15:03 am »
A few of you have commented that Java culture is outside my culture.  I think that's correct.  But for some odd reason I think that's part of the charm of the challenge.  Maybe it's self haterd.  But mayber not.  I grew up as a TCK, so I know both the upside and the downside of living in a culture other than your own.

The most daunting thing to me about Java is the size of the library.  But that's actually a plus.  If you can find the right library object,  and learn how to use it,  that may be less work than reinventing the wheel.  Of all the things I regret in the technical side of my career, it's not learning how to make better use of libraries.

Having said that,  I'm not going to treat it as some kind of mortal sin if I end up recoding something that was in the libraries, but that I failed to find.  This is technology, not religion.

And when I look in StackOverflow,  I find two cultures standing in stark contrast to each other:  Java culture and SQL culture.  I'm pretty much at home in SQL culture, although I haven't done all that much sophisticated SQL programming.  Maybe a few 8 way joins. 

Walter Mitty

  • Trusted Member
  • Wise Sage
  • ******
  • Posts: 1025
    • View Profile
Re: Learning Java in Retirement
« Reply #14 on: November 06, 2011, 08:21:44 am »
I really liked Pascal, but I'm not married to it.  And I sort of understand how it came to be left behind. 

I've philosophized in here about the esthetics of programming languages, and the impact on productivity.  But if you had asked the inventers of C about the linguistics of their language, here's how I think they might have responded:

Quote from: imaginary
We're not trying to guide the future of programming linguistics for the next forty years.  We're trying to come up with a third generation language that we can use as a platform for writing the rest of our system. 

We want it to be easy to write the compiler.  We want it to be easy to write fairly good source code.  We want portability.   And we want detailed control over the runtime environment.  If we achieve those goals, that will be good enough.

Next toipic!


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf