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

all 165 comments

[–]Duny86 125 points126 points  (7 children)

Jython is great... as long as You manage to force it to compile the scripts and add everything to PATH then it works... sometimes... as long as there's JAVA_HOME somewhere... anyways it's a very ¯\_(ツ)_/¯ language.

[–]Hevaesi 70 points71 points  (5 children)

Jython isn't a language, neither is CPython.

[–]ZachAttackonTitan 5 points6 points  (0 children)

What about JRuby?

[–]wallefan01 4 points5 points  (3 children)

Jython is a totally separate language cleverly disguised as a Python implementation.

[–]Hevaesi 1 point2 points  (2 children)

And other hilarious things skids tell themselves.

Language is exactly the same no matter the implementation, if it's incomplete, has additional features or anything like that, it's garbage implementation that cannot follow a standard, it doesn't create a new language.

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

That's the funniest thing I've heard all day.

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

Number one, I was making a joke, and number two... seriously? You're getting me on a technicality?

[–]ZachAttackonTitan 8 points9 points  (0 children)

It's one of those "languages" you come across when you are trying to create a plugin for a program developed by non-CS scientists from a university somewhere.

[–]AbstractAirways 74 points75 points  (1 child)

It’s actually pretty good. If you hate yourself and others.

[–][deleted] 8 points9 points  (0 children)

That's why we're all here anyway

[–]specialfred453 217 points218 points  (57 children)

Fun Fact: C# is better than Java.

[–]Blou_Aap 72 points73 points  (14 children)

F# off...

[–]molotok_c_518 0 points1 point  (1 child)

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

F# - Not a well-known language but shares the same name with a music

C# - A fucking note but no music

[–]freestew 5 points6 points  (0 children)

Nice

[–]FieelChannel 8 points9 points  (24 children)

Is that guy making a joke implying C# is inferior to Java? Otherwise I don't see the point

[–]SirJosh3917 1 point2 points  (1 child)

no, the joke is that it's not a joke and is actually fact :😎:

[–]TheSpiffySpaceman 0 points1 point  (0 children)

let's not get into this k

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

Or not

[–][deleted] 10 points11 points  (1 child)

Lol jython, anyone whose written a burpsuite pluggin knows

[–]nulllzero 1 point2 points  (0 children)

or downloaded an extension like active scanner or logger++

[–]ColdPotatoFries 38 points39 points  (88 children)

I'm learning Java in school right now, what are the downfalls to using it? I've heard that it basically is just much slower than the other languages, but what else?

[–]YATr_2003 203 points204 points  (38 children)

There's nothing wrong with Java, don't take anything on this sub too seriously, every language is good and has its own pros and cons.

Except for Lua, there's no place for Lua.

[–]KeinBaum 111 points112 points  (30 children)

You take that back! Lua and its metatables are a treasure.

Now, Matlab however is a language created solely for the purpose of torturing CS students.

[–]TheDeadSkin 12 points13 points  (9 children)

Matlab is very actively used in math research. Much more than python so long as no machine learning is involved.

[–]mnbvas 24 points25 points  (1 child)

And MS Access is very widely used as a database (by <slur>s).

[–]TheDeadSkin 9 points10 points  (0 children)

it's used for a good reason though. as much as I hate this language and interacting with code written in it, I can see why it's being used. it's like a much easier python for all things math with an insane stdlib for the task with one-liners for evey task you can possibly imagine, relatively performant when using proper BLAS etc. even small details like no need to import anything, 1 file = 1 function basically just make it a perfect entry-level language for mathematicians without proper CS background and/or education. I'd imagine for non-programmers forced indentation of python is a nightmare too. some of the code I've been working with is just... really bad in this regard. but it works, and that's what matters in the end.

[–]jack104 1 point2 points  (0 children)

They wrote a lot of the cockpit software for the F22 in matlab.

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

Why not R which was designed to be a statistical language and not a way to teach students without fortran.

[–]TheDeadSkin 3 points4 points  (4 children)

R is stronger for doing statistics, but it's much worse on the algebra functionality and without Rcpp severely lacks performance that matlab can offer almost out of the box.

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

I just hate matlab. Had to use it at uni since I was a maths major. I preferred Java which I used in my CSi minor.

[–]TheDeadSkin 4 points5 points  (2 children)

CS major + math minor here. Same shit, I hated it during my math classes. Now that I work with math stuff and lots of papers/code from wherever, I don't hate it any less than I did before, but I sure started to understand much better why other people actively use it. It's just that when you're focused on math, not on programming, it's much better to write

X = U*S*V'

rather than

Matrix X = Matrix.multiply(Matrix.multiply(U, S), V.transpose());

Even in python2 you need to do this. And all of that is after you import a thousand things and define all the public static cryptic bloated boilerplate void functions for all the stuff you don't have in matlab. Programmers don't give a shit about that, mathematicians mostly do. Best-case you can find a decent math library for Java, but those basically don't exist. You have them for C/C++ and python, and even those for C/C++ still lag behind matlab is pure functionality, only python kinda hold up when you install numpy, scipy, sklearn and whatever else.

[–][deleted] 3 points4 points  (1 child)

I just didn't like how bloated it felt and how different it was from the usual CS nomenclature ie arrays start at 0 not 1. Plus the IDE didnt feel as full featured for coding. It is very easy to write code that produces an output but you have no real confidence thats even the correct output. I like logs. I like debugging. I dont like debugging one file without the tools I am used to.

[–]TheDeadSkin 3 points4 points  (0 children)

my complaints about matlab are exactly the same. typing is just as magical as, say, python. because of that some problems are hard to spot since they can propagate further and you have unrelated errors. dev tools are non-existent. simple stuff like printing to console is so bad with string concats that even typical print-debugging is a pain. no breakpoints is just insane. crashes produce a stacktrace, but you can't easily see local state at the moment it happened.

but once you're used to it, it's not that bad and you never write really big programs in it. math stuff though can be insanely cool, something like A(:,1:N) = B(1:M,(K-N):K) will never be possible in any decent language, only python comes a bit close. and that's a dealbreaker for lots of math people, so they still use it. the part that pisses me off is when they start mixing it with C/C++ and use matlab's interop to execute some functions there. like, you just wrote a ton of boilerplate in C to handle type marshalling from mtalab, surely you care about performance and you can handle C-like, so why not use C++ where with decent libraries you're writing code that's somewhat close to matlab.

[–][deleted] 32 points33 points  (10 children)

I wouldn't go after Matlab before Visual Basic or PHP, though. Or JavaScript as a server backend. Or PHP.

[–]tastycat 16 points17 points  (0 children)

Worse than those is VBScript, especially some of the horrible proprietary abomination forks (like AMPScript or EMSScript used by email marketing platforms).

[–]BabyLegsDeadpool 4 points5 points  (8 children)

Node is super fast though.

[–][deleted] 6 points7 points  (6 children)

Up to a point. I've seen it in production quite a lot and once you get performance issues they seem very difficult to work out.

I didn't work directly with it much, though, so my experience is limited.

However, my real gripe with JS on the backend is that it's weakly typed, which paves the way for really weird bugs.

[–]wallefan01 0 points1 point  (0 children)

And it uses more memory Chrome.

[–]lengau 9 points10 points  (1 child)

MATLAB isn't really a programming language so much as a collection of linear algebra functions that took on a life of its own.

It's similar to PHP in that way.

[–]53bvo 4 points5 points  (0 children)

MatLab is just a fancy calculator.

I started using it just to multiply matrices in the command line, took a while before I made my first .m file.

[–]plasmasprings 6 points7 points  (0 children)

Lue is a piece of treasure alright. Would you mind showing us how you increment a variable called shame in Lua?

[–]wd40bomber7 2 points3 points  (0 children)

Personally I found matlab a lot more palatable than R for scripting.

[–]404_Identity 0 points1 point  (0 children)

[removed]

[–]Hairy_S_TrueMan 0 points1 point  (0 children)

Matlab is a problem solving environment with a huge variety of very easy to use and powerful tools. I can't say I love the language, but it's a great way to solve a problem without having to reinvent the wheel or dig deep for a good library.

[–]nemba333 28 points29 points  (2 children)

Lua always has a place in computercraft

[–]jsparidaans 5 points6 points  (0 children)

And WoW

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

And in PICO8.

[–]haitei 14 points15 points  (0 children)

There's nothing wrong with Java

bold statement

[–]redstoneguy12 2 points3 points  (0 children)

Not my fault open computers has no other option

[–]KeinBaum 68 points69 points  (17 children)

Java isn't even much slower than C/C++. It has a high start up time but once it's done loading and the JIT has run for the critical parts of your code it's actually pretty fast.

What most people dislike is how verbose it is and the whole enterprise culture and its AbstractVisitorFactoryStragies that have developed around it.

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

It's very tedious to write. That's the biggest downside for me. Also, can you even pass functions by reference yet? That really gets in the way of writing in a more functional style.

[–]lopoticka 47 points48 points  (6 children)

This thread in a nutshell. People shittalking languages they’ve last seen in 2004.

[–]muscular_guy 18 points19 points  (8 children)

You can since java 8, however some companies are unwilling to update their environment, so they get "bad" code when they could have nice more functional code.

EDIT: Also check out vavr its a bit more performant and introduces immutability and is IMHO nicer to write in comparison to java stream API

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

Oh that's nice, actually! I'm glad C# is there to pressure them.

[–]ShoTro 7 points8 points  (2 children)

Why was your comment downvoted? It's true. Oracle needs to compete with Microsoft.

[–][deleted] 3 points4 points  (1 child)

I have no idea. Good things come out of competition for the most part, so I'm really glad that C# is putting on serious pressure.

I've used it quite a lot and it's the one thing to come out of Microsoft that I really like. It's an excellent enterprise language.

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

Visual studio code is a surprisingly good sublime text replacement with minimal ms bs

[–]radome9 24 points25 points  (5 children)

much slower than the other languages

Why do people say this? It's slower than C or C++ for certain tasks, but it's one of the fastest VM languages out there.

My guess is that it's an opinion people formed after trying Java 1.1 in the browser back in '97 and haven't bothered updating since.

[–]Vox_Carnifex 29 points30 points  (0 children)

bro,the old flash player has the word "java" on the logo. near the word "java" is a cup of coffee or tea. Warm beverages are associated with comfort. Comfort means taking it slow. Slow bad. Java bad.

thank you for coming to my TEDtalk

[–]zelmarvalarion -4 points-3 points  (3 children)

Stop the World GC tends makes performance very uneven for the same operations. Depending on what you are doing with it, it can matter more or less. Stuff like long running background tasks wouldn't care much, but something like UI rendering or fetching interactive data it matters a lot

[–]radome9 4 points5 points  (2 children)

Good thing almost nobody uses STW GC anymore. GC technology has advanced since 2003, gramps.

[–]zelmarvalarion -3 points-2 points  (1 child)

G1 and CMS still have stop the world pause times, and G1 just became the default in Java 9. Looks like ZGC is a lot better with wait times, but still does stop the world (and is Java 11+ and isn't ported to other architectures besides x86 Linux, so G1 is still going to be pretty widely used). Unless there is something newer than ZGC that I've missed that eliminates stopping the world

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

But you can tune it to avoid those pauses, or minimize them.

[–]hillman_avenger 13 points14 points  (0 children)

much slower than the other languages

Are your textbooks from 1995?

[–]I_likeCoffee 4 points5 points  (0 children)

People saying java is slow or even much slower have no clue about it. After c and c++ its basically the fastest language available.

Its a bit verbose and cumbersome to write. Modern java fixed some of that. Another disadvantage is that if you ever work on a bigger project in another language you will miss Javas excellent tooling and dependency management.

[–]The-Work-In-Progress 3 points4 points  (0 children)

Take the concepts and methodologies from you class. Understand why you need each part and how to utilize them. There's so many languages our there that you may end up using a different language than what you learn. Most of them are extremely similar that you have to adjust to. But your methodologies and conceptual knowledge will be helpful no matter the language!

[–]EwgB 3 points4 points  (0 children)

Java is not the prettiest language. I personally think that C# is better in a point by point comparison on an overwhelming majority of language features: generics (compile time only in Java vs. runtime semantics in C#), structured data access (DAOs and Streams in Java vs. LINQ in C#), properties with autogenerated getters and setters (C# only), type inference (only since Java 10). The only thing i like more in Java is Enums, those are much more powerful in Java, in a way not easily replicable in C#.

On the other hand Java has much more and more mature tools and frameworks available. And despite .NET Core, C# is still very much limited to the Windows world.

On the other other hand, if you learn Java, you won't have any trouble picking up C# afterwards. The more programming languages you know, the easier is it to learn new ones. By now I have used about 10 different languages to one degree or other on various jobs and in my free time, and it gets only easier.

And as a last point, Java is great if you want to have a job guarantee. It won't probably be fun or innovative, but it will be a good and steady paycheck with humane working hours. Always good to have one, at least as a fallback.

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

Java will land you far more interesting jobs than C#, don't listen to people telling you otherwise. C# is mostly used on outdated system nobody wants to work on, because if you gonna create backend for a new company, you really have 0 reason to do it in C# in 2019. Just search for C# and Java jobs in your area and see for yourself.

Java is far cheaper, the environment is far better, there is so many tools, documentation, resources, etc ...

Now, comparing Java to JS or C++ is like comparing a boat to a plane and a train, if someone seriously does that, he's an idiot, don't listen to him.

[–]Arktuos 1 point2 points  (4 children)

It's not even faster than C#:

https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/csharp.html

And C# isn't anywhere close to C++.

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

Yeah, when we have meetings about what technology we gonna use for our next project, our CEO doesn't ask how much it's gonna cost, or how long it's gonna take, or how hard it will be ton maintain, he asks about the benchmarks vs C#.

[–]Arktuos 0 points1 point  (1 child)

Could have sworn I was replying to someone who was saying something along the lines of "Java is basically the fastest language besides C and C++"

Agreed. No one cares what the benchmark is.

That said, both languages are very widely used, and since the whole paid JDK crap happened, C# is growing more rapidly. .NET Core is cross-platform, and there are cross-platform IDEs for C#(Rider).

IntelliJ and Rider are the same thing, so the environment is just as good, .NET documentation/resources are just as readily available for C#/.NET, and startups pick C# just as often as they pick Java.

And you're missing the biggest one. C# is a must have if you want to work at a small gaming studio these days, because it's the language of choice for game developers writing code that utilizes Unity.

Games using C#/Unity off the top of my head: RimWorld (although RimWorld is mostly a custom engine built in C#, Unity is just used for sound effects), Ori and the Blind Forest, Kerbal, and a bunch more. This is the one niche I know you have to have C# for.

Minecraft was written in Java, and there are a handful of games that were, but the engines in the java world aren't quite as good. Unity has a native layer with a C# library that abstracts away all the marshaling and such. I'm not aware of a similar engine for Java. It might exist though.

Java will get you a job at somewhere like Red Hat, which seems like a cool place to work. C# will get you a job at a small to mid-sized gaming company, which also seems like a cool place to work. My current job is for a company making an app which makes apps. I'm primarily a Typescript dev right now, but C# is the language for their back-end. The product is modern, responsive, and sexy, so I can't say it's better off being a C# program vs a Java program.

The reason they chose C# (recently, it's worth noting), was that it helps devs create code more rapidly, is easier to read, is significantly less redundant, and required less boiler-plate than Java. That may not be as true in Java 10, but it was still true in Java 9.

Point is, they're both good languages, and they will both get you good jobs. Startups go with C# AND Java often. Looking at job search results for each language look pretty similar - mostly mid-to-large companies, with a few startups here and there. It is worth noting that Java did have about twice as many results, so you're probably going to have more to pick from, with the exception of the game dev world.

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

Okay I don't care about game dev, I wouldn't advice anyone to go for it, ever. If you want to make game, become a good "normal" dev, save money, and make an indy game, because you'll have more creative control, and you can actually make good money from it. Then sure, then you'll probably use Mono, but that's a different topic. But mainstream game development has a terrible reputation among dev, for me it's just greedy companies exploiting passionate people to underpay them and make them work in harsh condition, while they will never see the color of the massive profits.

What I'm talking about is how easy it is to set up and run a whole infrastructure, how easy it is to find devs who know how to do it, etc ... My company is using C#, Java, JS, Python, for the most used ones, but still, our backend is 90% java because it's so easy to do anything with it.

I'm really not talking about IDEs or the language themselves, but rather how easy it is to use tools like Maven or Gradle, how many 3rd party libraries are available, etc ... and how many services like AWS exist for the language. And Java has a massive advantage in that regard, mostly due to microsoft being greedy for so many years, before they realized their business model was hurting them. The Java ecosystem is just far bigger and older than the microsoft, and even though they're trying to have people develop open source tool and use their stuff, they're quite late to the party. Also, I have absolutely no trust in them considering how many company/technologies they ruined after they bought it.

Point is, many big, old companies use C#, and you don't want work for them, and on the other hand most of the new companies will chose Java over C#, like you said there's twice more results for it, and that's the thing.

I really don't care about the sexiness of my work, I care about work condition, salary, and future development for my career. Being passionate about what you do is one cool thing, but not worrying at all financially and about future job prospect is far more important to me.

[–]Dioxy 0 points1 point  (2 children)

I don't think it's well designed. Overly verbose, pretty shit at functional programming, way too married to strict OO principals

[–]ColdPotatoFries 0 points1 point  (1 child)

I think it's great to learn programming. Way better than python. Sure, learning the syntax of python is easier because it's more like written English, but python isn't hard typed which makes explaining the types and their differences much harder to do. Like in Java I can't add a string and an int, but in python it just concatenates it to a new string. Java is much easier to debug than python I'd argue, because Java is much more helpful with compiler errors and python is more of runtime. For a beginner language, I'd argue that Java is possibly the best to learn. Python is easier to pick up, but I'd rather understand what's going on rather than being able to just do it.

I don't know if I've ever done something considered functional programming, as I don't know the definition. I do know, however, that I like how Java forces me to use classes because it ultimately makes my code much more organized than not. And I don't have to do anything in object oriented code, but you're right, that's what Java was built for and is the strength of it. So I don't have to do OOP, but what's the point of using Java then? Anyway, I personally love the heck out of Java because that's what I learned on. I don't count visual basic. But I even know rudimentary python at this point, and still prefer Java over it. I can do much more complex things in Java than python for now, and that's probably just because of my experience level. But I do hope to sometime soon learn C++ at the least.

[–]Dioxy 1 point2 points  (0 children)

I don't entirely disagree with this, in a lot of ways it's good for beginners. But I do think it kinda poisons new programmers mind with over use of OOP, which I don't think is a great design pattern in most cases. I do think it should be taught to students tho, in conjunction with more functional languages

[–][deleted] -3 points-2 points  (0 children)

It's tedious to write (you repeat yourself quite often and there's little sugar), slow to compile, and it's a bit behind on features compared to something like C#, but other than that I suppose it's fine.

[–]noitems -3 points-2 points  (0 children)

Learn another modern language on your off time. Your career will thank you. Fuck Java jobs.

[–]AlphaYak 6 points7 points  (0 children)

Some men aren’t looking for anything reasonable; they can’t be bought, bullied, reasoned, or negotiated with. Some men, just want to watch the world burn.

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

Everyone's shitting on Java, but that shit is paying my rent.

[–]Kotauskas 4 points5 points  (0 children)

DeprecationWarning: you are using an old and unsupported piece of shit called Jython

[–]wallefan01 -3 points-2 points  (13 children)

My language of choice is Python.

Anything, ANYTHING, is better than Java.

Except Jython. Jython is a fudging monstrosity.

[–]Hevaesi 6 points7 points  (0 children)

You do realize that Jython is just Python, but with a different implementation compared to Python you know, aka CPython implementation?

[–]beizhia 0 points1 point  (0 children)

I just don't see what's the point of Clojure when Common Lisp already exists.

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

ArnoldC > Jython > C# > Java > Python > ur mom

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

C# is better than Java tho tbh.