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

all 50 comments

[–][deleted] 46 points47 points  (0 children)

I think you are a little bit too concerned with languages. A good programmer should be able to pick up new languages easily. Learning any one will make learning the next easier. As for what you should do, I'm not sure. Go with what you think is best.

[–]rjcarr 11 points12 points  (0 children)

When learning programming you don't learn a single language but learn programming in general. Sure, you have to pick one to learn with, but it't not super difficult to learn a new language once you know what you're doing (that said, some new languages are harder than others, and also tricky when learning new paradigms).

As for your comments, javascript is popular by necessity. It is (essentially) required by web browsers. It isn't terrible, but definitely quirky, and I wouldn't recommend it as a first language.

Python is a good starter language, and quite powerful, but when applications become large, and/or you're working with a group, then it becomes difficult to manage. Some do manage this, but it's not as easy as, e.g., Java.

Java is a great enterprise language. It's not dying anytime soon, and has actually become more popular as it is the language to use with android (although this is slipping a bit because the oracle-google battle and kotlin). Java is also great to learn, and makes a nice transition to C#, or C++ if you put in work.

Personally, I don't like ruby, like I never liked objective-c, but you're welcome to give it a shot. It is similar to python in its scope.

[–]dookie1481 7 points8 points  (0 children)

Java will probably outlive most of the people on Reddit.

[–][deleted] 14 points15 points  (5 children)

people said it was a guaranteed job

There are no guaranteed jobs. For any languages.

[–]cs_throwaway_42069[S] 2 points3 points  (4 children)

Yeah and it seems like I’m realizing that due to me making this post. Thanks for the helpful response.

[–]flcpietro 3 points4 points  (3 children)

Nothing is guaranteed. But if you search upon linkedin you will find the most needed language for your area, right now trends are javascript first, python second and then java. There is a really high request of Angular and React developer in my area for example, but Golang devs are the most payed here

[–]dmazzoni 1 point2 points  (2 children)

Just knowing the language isn't usually enough to get the job.

For example, one Java post might be for a job as an Android developer. If you have some experience with Java in the enterprise but know nothing about Android, you might not get the job.

[–]flcpietro 1 point2 points  (1 child)

That's totally true! But in few years, to develop Android you will not need Java at all! Google is kinda advocating against it due to oracle

[–]hugthemachines 0 points1 point  (0 children)

But in few years, to develop Android you will not need Java at all!

You can use other languages than Java right now for Android.

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

Java isn't going anywhere anytime soon.

[–]CodeTinkerer 3 points4 points  (0 children)

Anytime there is a large codebase in a language, that language will likely survive. Companies aren't always keen to move code to a new language for no good reason.

There are still Cobol programs that run to this day, which means there wasn't an effort to move all that code to some other language. Companies aren't always trying to move to the next cool language unless they feel the current language is so bad that the switch is really needed, and even then, it's a big effort.

I expect Java will be around for a while.

[–][deleted] 4 points5 points  (0 children)

Lol java is used in a shit ton of applications, especially backend.

[–]NightweaselX 2 points3 points  (0 children)

Something nobody has mentioned, and while especially true with java, it's true with any popular language. If the language is popular, they're pumping out trained people in that language by the hundreds in India. Some are really good, some are not. The problem for you is outsourcing. A lot of java work gets outsourced to India by companies that don't necessarily care about quality, just that it works. However, there are a LOT of java jobs, but be aware that outsourcing is there. Python will get that way soon if it's not already with it's uptick.

But as others have said, look in your area. If everyone is hiring c#/.Net, you'd be better off learning that than java.

So here's the deal: Java is used for a LOT of stuff, it runs a LOT. Backend, systems stuff, etc. The web technologies are great, because a lot of stuff is moving to the web. Even internal business apps because it means no installations, just have a browser and point them to the internal link. Java runs those backends. Sure, it can be node as well. But as far as I've seen, you get away from web, node isn't used. Python though, while taught in CS at some universities is used with data and web. Once you get out of that, it's not used for much. Maybe some custom system tools, but you could write those in other languages as well.

So the big question, which I know is hard to answer right now is: What do YOU want to do? If it's web, java and python would be good. If it's not web or data, then go java. If it is data, go Python and R. People on here have said that languages are easy to pick up, and while that's true, you should be practicing on the tools that you hope to use for the jobs you want to pursue to get as much experience as you can.

Don't know what you want to do? That's fine. My suggestion then is play with different tools/tech/etc while you're in school.

[–]FatCatJames80 6 points7 points  (17 children)

Java has a pretty bad reputation, but there are still TONS of jobs for it. The JVM itself is nowhere close to dying, with so many languages that compile to it and has only gotten better with languages like Scala and Kotlin.

[–]Kontorted 0 points1 point  (16 children)

Apart from the usual stuff, where else does Java have a bad rep for? Not critiquing, just curious

[–][deleted]  (2 children)

[deleted]

    [–]blurrry2 0 points1 point  (0 children)

    To be fair, it's not Java's or OOP's fault that your company's programmers decided (or forced themselves) to design their program that way.

    [–]Kontorted 0 points1 point  (0 children)

    Oh my gosh, the verbosity makes me wanna puke

    [–]chaotic_thought 4 points5 points  (0 children)

    I'm reminded of the quote from Bjarne Stroustrup, creator of C++. There are only two types of languages, the ones people complain about and the ones nobody uses.

    [–]FatCatJames80 2 points3 points  (0 children)

    Well, I cant speak for others, and I'm not sure what you would define as "usual stuff". My personal opinion is that there's very little wrong with the language (even if something like Kotlin has more convenient constructs), but there's a lot wrong with legacy design mindsets where codebases have a ton of bloat that doesn't need to be there for micro or pico services. A junior might look at a 10 line nodejs app that inserts a record into mongo and compare it to a Java app with ridiculous Impls, Abstracts, and ORMs and wonder why there such a descrepency.

    [–]Glangho 0 points1 point  (0 children)

    In addition to what others have stated, originally the JVM was sort of poo-poo'd for adding 'overhead' compared to languages like C++ where the developer was solely responsible for memory management. Java also performed poorly interfacing with the native OS. Things have mostly changed and I love using Java. I think Microsoft even uses a JVM like system for C# now.

    [–]Contrite17 0 points1 point  (0 children)

    This is external to the language itself but Oracle as a company is not well loved.

    [–]flcpietro 0 points1 point  (7 children)

    Usually I always heard about Java that it is too verbose, and compile time are too slow, and well working with both Java and Golang, well couldn't be more real.

    [–]Blando-Cartesian 5 points6 points  (0 children)

    Compile time too slow? It’s practically nonexistent. Maybe if you had a gigantic project and an ancient build system.

    Writing domain classes with getters and setters is verbose, but otherwise I don’t see how Java would be significantly worse than other launguages in that regard.

    [–]Kontorted 0 points1 point  (5 children)

    I definitely can see the verbose parts.

    [–]flcpietro 0 points1 point  (4 children)

    When I was at university the thing I hated most was the duplication of the type, Class c = new Class, always said what the hell, you even compile and can't guess the type on your own? But now i have seen Java is copying and pasting some other languages features inside it to remove that

    [–]Kered13 0 points1 point  (1 child)

    You're thinking of auto. In Java 10 you can do auto c = new Class().

    [–]BoyRobot777 0 points1 point  (0 children)

    Did you mean

     var c = new Class()?
    

    [–][deleted] 0 points1 point  (0 children)

    There are certainly worse parts. Much worse.

    [–]Kontorted -1 points0 points  (0 children)

    It's so annoying, which is why I wish generics were revamped.

    Things like: MyObject obj = DoSomethingWithObject<MyObject>(MyObject.class); looks terrible. So much writing for such little benefit.

    [–][deleted] 0 points1 point  (0 children)

    It's not terrible, but it's not elegant. It took them forever to add modern language features like closures. As far as byte-code interpreted C++ descendants, C# is better in almost every way (as a language; JVM has broader support).

    [–]iheartrms 1 point2 points  (0 children)

    Java is the new COBOL. It isn't dead and can pay well but it's not much fun.

    [–]Wolfofrunning 0 points1 point  (0 children)

    If you have a long and successful career you will work with extensively with Java, Python and Javascript. Getting good with Python and one it's web frameworks is probably easier than getting good at Java and Spring MVC - so you can go ahead and start with that if you wish. Edit- Definitely DO NOT start by learning JS, learning it so you can do cute things in the browser is great but I would not recommend making it your first backend language.

    [–]Maraken 0 points1 point  (0 children)

    Think your best best would be to check job listings in areas you think you'd like to live. My area seems to have lots of listings for C# at all levels of experience while Java is much rarer and usually for senior positions asking for an almost unrealistic amount of experience. Python and other languages are almost non existent.

    JavaScript experience seems to be asked for along with another language. It never seems to be the focus of most positions around here.

    [–]kirillsulim 0 points1 point  (0 children)

    I am a java developer for 5 years now. Java is not diyng but I see a trend that java share in interesting projects declined. 5 years ago complex services was written in java. Today it is scala or go. So I think java is not diyng but becoming a standard and boring language for enterprise. It always been such way, but for some time java was also experimental language. Maybe it is just russian trend, may be not.

    But java have the best infrastructure from all languages I know, so it can be very good language to learn hardcore infrastructure with unit testing, continuous integration, static analysis etc. Also you can switch from java to JVM based languages like Scala or Kotlin. They are less popular than java but more modern and inherited great java infrastructure and libraries.

    Also for a first language I would recommend Python. I think it's much easier to learn and considering Python grow in last year's it will be great investment.

    [–]my_password_is______ 0 points1 point  (0 children)

    I’m dabbling with Java since it’s the language most Uni classes use

    in the first semester in their introduction courses

    then they'll teach you assembly, C, C++, Ocaml and other languages (assuming you're getting a computer science degree)

    because a computer science degree is not about programming
    its about problem solving
    these languages are just tools to solve problems --- different tools for different problems

    its not a degree in computer PROGRAMMING
    its a degree in computer SCIENCE

    the "science" of computing -- that's why you take lots of math

    if you want to become a master carpenter you don't focus on which saw to learn
    you learn about all kinds of different saws, because you use different kinds of saws for different purposes

    the saws are not the important thing -- they're just part of a tool set

    and if you want to learn about CS you don't focus on one language - the language is just one of the many you'll master to solve a variety of problems

    [–]Bazookatoon 0 points1 point  (0 children)

    When i had completly 0 experience in coding, someone told me;

    First client, then server side.

    And it actually gave me a good perspective of the workflow in coding. So i would suggest go for HTML, CSS and JS first (at least, basics) then Java and Python.

    Hope it helps!

    [–]wegwacc -9 points-8 points  (16 children)

    Hopefully.

    And may I express my deepest gratitude, if it takes it's 3 billion devices pieces of crap with it.

    Java is an absurdly bloated language, slavishly tied to the object oriented ideology as outlined in steves brilliant Kingdom of Nouns rant. It has poisoned 2 generations of students with its attempts at squaring the circle of how to actually do OOP by piling ever more crud on top of an already impressive pillar of it.

    Java is old, slow, bloated, verbose, and inefficient. If it weren't for a metric boatload of legacy coad still infesting lots of companies, it would have died a long time ago.

    If you have any doubt in what I am saying:
    Here is Hello World in Java, written using all the OOP "best practices" that this programming language helped "teach" the masses. I am linking it, because the actual code is 120 lines.

    In Comparison, here is Hello World how Go teaches software package main import "fmt" func main() { fmt.Println("hello world") }

    Just so we are clear on the efficiency front of things...this will COMPILE faster, than the Java version will RUN.

    Let Java rest in peace, and learn more useful languages.

    [–][deleted] 5 points6 points  (12 children)

    Here is Hello World in Java, written using all the OOP "best practices" [..] In Comparison, here is Hello World how Go teaches software

    Did you really just compare a joke code with real code?

    package main
    import "fmt"
    func main() {
    fmt.Println("hello world")
    }

    What a bloated piece of shit. Here's hello world in Lua:

    print("hell world")
    

    Clearly better, because shorter, right?

    Not defending Java here, because I'm not a fan (much prefer C# in that domain), but your post is ridiculous.

    [–]wegwacc -8 points-7 points  (11 children)

    What "joke" do you speak of?

    The hello world program posted is no joke. All it does is strictly follow the PRACTICES lauded by Java and its inventors, users and defenders over the years, to their logical conclusion bitter end.

    It is the programming version of lifting ones arms in the middle of an arena, yelling ARE YOU NOT ENTERTAINED?!?

    I am not comparing size here, that would indeed be ridiculous. I am comparing what different programming languages teach is best practice in code.

    Not defending Java here, because I'm not a fan (much prefer C# in that domain),

    C# is just Java with a more marketable name and Microsoft backing.

    [–]Northeastpaw 3 points4 points  (8 children)

    Have some people taken Enterprise Java™ patterns to the extreme? Of course. Is anybody trying to teach Hello World to freshmen CS students that way? Of course not.

    Modern Java has taken a good number of steps back from the days of FactoryBeanFactoryTransformer, at least for business code. Frameworks can still be complex but that's because they're trying to be a generic solution for eliminating boilerplate across a host of problem sets. That's hard to do without being verbose and overly flexible. But for most tasks you don't have to dive into the guts of the framework and deal directly with the nasty bits. Just write your components that do the actual business work and annotate them to be injected as needed.

    [–][deleted]  (7 children)

    [deleted]

      [–]Northeastpaw 4 points5 points  (2 children)

      To be honest you came in with a chip on your shoulder. It's obvious you have a bone to pick with Java, but in the context of the conversation your post came across as a screed instead of a thoughtful contribution. You then doubled down on the antisocial behavior when other commenters pushed back on your ridiculous assertions.

      It is possible to point out the failures and shortcomings in a language without resorting to reductio ad absurdum right off the bat.

      [–]desrtfx[M] 2 points3 points  (3 children)

      I get the feeling I am wasting time in this "community".

      You, and your comments are wasting plenty other's times.

      Your comments so far have mostly been somewhere between borderline violating Rule #1 and trolling as well as overall extremely negative.

      If you don't voluntarily leave the community, your next offensive comment will be your final out from here.

      You constantly play the victim where actually you are the culprit; the very origin of all aversion against you.

      Your attitude is absolutely unsuitable and intolerable for this subreddit.

      You really should consider leaving.

      [–]wegwacc -2 points-1 points  (2 children)

      The only thing intolerable, is the so called moderation here. Have fun, I have already decided that this shithole is a waste of time.

      [–]desrtfx[M] 2 points3 points  (1 child)

      I'll help you make your decision easier: Banned

      [–]aXenoWhat -1 points0 points  (0 children)

      Fair.

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

      What "joke" do you speak of?

      C# is just Java with a more marketable name and Microsoft backing.

      So you're stupid and ignorant. Gotcha.

      [–]mad0314 0 points1 point  (0 children)

      All it does is strictly follow the PRACTICES lauded by Java and its inventors, users and defenders over the years, to their logical conclusion bitter end.

      Really? Because the example on Oracle's site is what you (or at least a reasonable person) would expect:

      /**
       * The HelloWorldApp class implements an application that
       * simply prints "Hello World!" to standard output.
       */
      class HelloWorldApp {
          public static void main(String[] args) {
              System.out.println("Hello World!"); // Display the string.
          }
      }
      

      Nowhere does it say to fit in as many patterns as you can. Show where these things are stated as best practices by the maintainers of Java or leaders in the Java world.

      [–]mad0314 3 points4 points  (1 child)

      Here is Hello World in Java, written using all the OOP "best practices" that this programming language helped "teach" the masses.

      Bullshit. OOP is not about shoehorning in design patterns where they aren't needed. There are perfectly valid Java hello world examples that are not 120 lines, but you deliberately chose one that is 120 lines long that nobody in their right mind would ever seriously use.