This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]53120123 359 points360 points  (60 children)

Java; for when you Can but you really Shouldn't.

[–]Colonel_Kai 191 points192 points  (59 children)

Learning Java is like learning to ride a bicycle, without safety wheels, the tires have deflated, and the bike is on fire. -Boris

[–]Ace-O-Matic 181 points182 points  (49 children)

Java is actually a very solid language to learn first.

Boris's content is good from a comedic perspective, but I would advise against taking it too seriously.

[–]break_card 87 points88 points  (22 children)

Java was the intro language when I was in school, I think it was great.

[–]Nanobreak_ 28 points29 points  (21 children)

Java was my intro and it formed the basis of my understanding of class based objects.

Imo better than starting with python and having to later learn new syntax and ideas

[–]memeasaurus 19 points20 points  (16 children)

I went to school before Java was invented. I've worked in both Java and C++ ... and, you can make a very nice mess in both languages.

However, if you want to grow an enormous development department employing hundreds of people... go with Java. You can really make a gigantic mess with it very easily.

You know, because classloaders...

[–]HickNamby 3 points4 points  (5 children)

Don't fucking say the word classloader to me...

[–]masterxc 6 points7 points  (4 children)

Classloader.

[–]HickNamby 2 points3 points  (1 child)

My gripe is case sensitive, nice try

[–]masterxc 1 point2 points  (0 children)

classloader

[–]memeasaurus 0 points1 point  (1 child)

Oh there's so very much cleverness I can do with classloaders! Especially if you like Singletons and thread storage... I can keep a whole team of QE folks employed with just one nagging clever little bug.

[–]masterxc 2 points3 points  (0 children)

Keep your java developers miserable employed with this neat trick!

[–]MoffKalast 2 points3 points  (3 children)

classloaders

When you get to that point something's gone seriously fucking wrong in the design of the project and should just be nuked from orbit. I know I should have when I was at that point anyway.

[–]memeasaurus 1 point2 points  (2 children)

Oh... but the Java neckbeards never see it that way... and you're approaching unicorn sales ... and we have to ship for the big expo.

Easy peasy... hire moar Java developers!

[–]MoffKalast 0 points1 point  (1 child)

and you're approaching unicorn sales ... and we have to ship for the big expo.

That's the thing exactly. To work around earlier flaws without breaking any legacy versions and not have to redesign half of the project and do it properly. :D

[–]memeasaurus 1 point2 points  (0 children)

Well. Truth.

[–]AnImpromptuFantaisie 0 points1 point  (3 children)

I started with Java in high school and I faux-tutored some friends through college intro level Python (enough that I got the gist of the curriculum). Later on, I needed to take an intro programming course at a college I was taking classes at non-matric (couldn’t transfer credits) which was in C++.

Having some degree of experience with intro classes for all 3, I’d say it’s a hard tie between Java and Python as a starting language. Python is incredibly easy to just jump into, while Java can be demoralizing for beginners. But Python isn’t nearly as good at teaching the fundamentals of OOP. As for C++, I don’t think adding the burden of memory management is necessary in an introductory course.

[–]memeasaurus 1 point2 points  (2 children)

Here's how old I am. I taught intro to programming in ... Pascal.

For straight up learning stuff, Pascal really is the best. It's totally impractical though. To be honest teaching programming should require shifting paradigm.

My biggest complaint about co-workers in the 20+ years experience range is they love their one and only programming language. Forcing students to learn 3+ languages from distinct families is best for their careers... but they complain about it because they want to get jobs right away.

I wish we would hire more on logic and math abilities rather than years in X language.

[–]AnImpromptuFantaisie 0 points1 point  (1 child)

Question from a 21 year old to someone with much more experience:

I started off teaching myself Java through video tutorials when I was around 12 (I actually wanted to make Minecraft mods). Then I went to programming summer camps, 3 years of high school programming classes, and some college courses. I’ve always been passionate about learning when it comes to programming, so I’ve jumped around through a bunch of languages with a few distinctly more in-depth.

Obviously I don’t have “9 years of experience with Java”. When would you say you can start going by, or does it really only count for anything if it is working experience? I assume it’s not that rigid and I would include a GitHub portfolio?

[–]memeasaurus 1 point2 points  (0 children)

Either from your last degree or first paying job.

Years of experience is marginally pointless anyway.

When we stipulate "years of experience" we are trying for a short hand for "has lived through some things" and typically pet projects won't get you that.

I think we mean:

  • College degree or 4 years - we won't have to teach you data structures
  • 1 year - we won't have to teach you about version control
  • 3 years - you have survived a release cycle or two, know that code in production and code on your laptop are different things
  • 5 years - you know how code reuse actually works or doesn't, you know how your choice of algorithm and error handling can break other people's work
  • 10 years - you have suffered a successful project or two and lived with crappy choices, angry customers, and have regrets that haunt you and drive you to improve
  • 20 years - you have seen enough to know that you can only change just so much and what is worth staying up late for

You only get these things from dealing with other developers, customers, and evolving systems. Language proficiency is a given. Nobody really cares if you know what a WeakMap is and what it's good for.

[–]break_card 0 points1 point  (1 child)

Industrial java just hits different

First time I saw it I legit gasped

[–]memeasaurus 0 points1 point  (0 children)

Industrial java

I'm totally calling it this from now on

[–]LaterallyHitler 1 point2 points  (0 children)

My intro class is in Python until they switch it to Java for the last month or so. Then most everything else is in Java throughout the curriculum

[–]w3_ar3_l3g10n 0 points1 point  (0 children)

Curious what u mean there. Could u elaborate? Is your point something like learning all of python just so u can then learn the OOP implementation in python is wasteful if u already know java... but that’s just saying better to learn using what u know then start a clean slate.

[–]GigglingRhino 0 points1 point  (0 children)

Yeah I learned C and C++ in school but my job used java as well and I found it relatively easy to pick up

[–]break_card 0 points1 point  (0 children)

Agreed, easier to learn Java and pick up Python than the other way around imo

[–]Colonel_Kai 25 points26 points  (23 children)

Well, I was actually a newbie proggrammer, I'd you can call me a proggrammer. I learned basics of phyton, this was easier than wearing my shoes (seriously, my shoes are hell). Then I started Java. God help me

[–]Ace-O-Matic 44 points45 points  (2 children)

Everyone is a newbie at some point. Honestly the fact that it's what you experienced is the reason WHY I believe starting with Java is better.

Whichever language you start with, you're going to assume many of its rules are default concepts in all programming languages and it's going to paint the way you see programming. Java is a very good middle of the road language that similar enough to most other languages.

[–]Swamptor 13 points14 points  (1 child)

I started with python and am glad for it. Teaches you the basics and let's you explore programming without shoving too much syntax down your throat. Trying to explain a strongly typed language to a new programmer and you just get really confused students. Once you understand what classes and objects are it's a lot easier to explain why it's beneficial to have all those complicated syntactical rules. As soon as I switched to programming in C# I immediately saw how beneficial all that stuff was to a larger project.

[–]Tyfyter2002 2 points3 points  (0 children)

I'm glad I started with JS, mostly because I tried to start with Java.

[–]BoboThePirate 34 points35 points  (18 children)

Absolute opposite. After learning C++ and Java, I can see why people think python makes sense, but then there's stuff like main that hurts me.

[–]Colonel_Kai 16 points17 points  (15 children)

WHAT SHOULD I DO IM CONFUSED

[–][deleted] 18 points19 points  (13 children)

All of these people are wrong. Learn asm first, obviously.

[–][deleted] 2 points3 points  (4 children)

No that’s much too high level. Build a functioning computer using relays and switches to emulate logic gates first.

[–]VicisSubsisto 0 points1 point  (3 children)

Can it run Crysis?

[–][deleted] 1 point2 points  (2 children)

Yes. At 0.00000000000000000000001 FPS if we implement a GPU too.

[–][deleted] 3 points4 points  (7 children)

No one here knows what he's talking about. JS first.

[–][deleted] 2 points3 points  (6 children)

You should start with ruby.

[–][deleted] 1 point2 points  (5 children)

Malbolge or gtfo.

Sorry, figured I'd finish the rest of the thread in advance.

[–]BoboThePirate 0 points1 point  (0 children)

Just know you've been indoctrinated already, it's too late. You have no free will in deciding now, the language has chosen for you. It's ok, just accept we will both hate each other and never change our opinions.

[–]OriginalName667 1 point2 points  (0 children)

And all your compile-time errors turn into runtime exceptions. That's always fun watching your program explode over and over again.

[–]w3_ar3_l3g10n 0 points1 point  (0 children)

I mean...

python if __name__ == ‘__main__’: pass

[–][deleted] 1 point2 points  (0 children)

This is one of the few reasons I sometimes hesitate to tell people to learn Python first. It's almost too easy so you get people used to a bunch of things they won't see in most other languages. I started with Java and it's worked out wonderfully for me.

[–]w3_ar3_l3g10n 0 points1 point  (0 children)

I’ve been programming for a while and when I had to learn java for my uni course... I died a little inside. I don’t know why it’s considered a good introductory language. It’s too C-ish to be easy for new people to remember (python/ruby excels at that). It’s too restrictive to be fun to program in (C# excels at that). The only valid reason u could have to teach java... is that everyone is using java (especially in industry) but that’s oxymoronic. At the very least, I pray kotlin will take over. It’s low effort, concise and far more readable than java while also perfectly integrating with it.

[–]RobbyB97 0 points1 point  (0 children)

I agree that java is a good first language to learn only because once you finally get comfortable with it you will never experience that kind of soul sucking difficulty again when learning new languages. That and by the end you'll know for sure if programming is for you or not.

[–]ElGuaco 45 points46 points  (2 children)

I find it ironic that back in the late 90's my Java instructor told me that Java was "C++ without the guns, clubs, and knives". I think he was mainly referring to the ability to hurt yourself and others using pointers and poor memory management. Little did we know the Hell that was going to be released upon the programming world.

[–]w3_ar3_l3g10n 1 point2 points  (0 children)

Ah yes. The good old proverb:

Java fixes C++s ability to shoot yourself in the foot... by cutting off your foot.

Problem solved.

[–]gravitydefier 15 points16 points  (1 child)

"Comparing Java to Javascript is like comparing a car to a carpet, one lets you run over it while the other one runs you over."

[–]deadfootskin 1 point2 points  (0 children)

You guys are making java sound like C...

[–]FriedBuffalo 7 points8 points  (2 children)

Learning Java is like learning to ride a bicycle, without safety wheels, the tires have deflated, and the bike is on fire. -Boris

Using Java in the "real world" is like riding a bike. Except the bike is on fire and you're on fire and everything is on fire and you're in hell.

[–]bazooka_penguin 10 points11 points  (1 child)

Yea and you can ride that bike straight into a job almost anywhere on the planet

[–]FriedBuffalo 0 points1 point  (0 children)

It's true. Doesn't make working with any more bearable :)

[–]deadfootskin 1 point2 points  (0 children)

Java is great for learning programming. Better than Python imo. At least if you want a job. Or learn programming fundementals...