kirk781@discuss.tchncs.de
on 31 May 12:01
nextcollapse
Java was also my first introduction to programming as it was included in Computer Science in final year of school (at college, we did the trusty C).
I think they have replaced Java with Python now in schools because of the latter’s popularity and also because many would argue, Python is slightly easier to learn than Java.
kirk781@discuss.tchncs.de
on 31 May 15:43
collapse
That makes more sense in context. Another Gang of Four (that I err, know more deeply for some reason) is(read:was) a political grouping in mid 70s in China.
Some of the GoF patterns over-emphasise inheritance, but by-and-large, you don’t build large systems without either using or rediscovering software patterns, whether they’re OO, FP, or what-have-you.
Python is easy, but it can also be infuriating. Every time I use it, I’m reminded how much I loathe the use of whitespace to define blocks, and I really miss the straightforward type annotations of strong, non-dynamically typed languages.
sugar_in_your_tea@sh.itjust.works
on 31 May 13:52
nextcollapse
You can annotate types in Python, and it’s actually pretty nice when used with Pyright/Pylance.
Oh, I know you can, but it’s optional and the syntax is kind of weird. I prefer languages that are strongly typed from the ground up and enforce it.
sugar_in_your_tea@sh.itjust.works
on 01 Jun 13:11
collapse
Python is strongly typed, it’s just not statically typed. Python with consistent type hinting is extremely similar to a statically typed language like C#.
I would argue that without consistent and enforced type hinting, dynamically typed languages offer very little benefit from type-checking at runtime. And with consistent, enforced type hinting, they might as well be considered actual statically typed languages.
Don’t get me wrong, that’s a good thing. Properly configured Python development environments basically give you both, even if I’m not a fan of the syntax.
sugar_in_your_tea@sh.itjust.works
on 01 Jun 16:58
collapse
What’s wrong with the syntax? It’s just var_name: Type = value, it’s very similar to Go or Rust. Things get a little wonky with generics (list[Type] or dict[Type]), but it’s still similar to other languages.
One nice thing about it being runtime checked is you can accept union types, def func(param: int | float), which isn’t very common in statically typed languages.
JackbyDev@programming.dev
on 01 Jun 15:49
collapse
But nobody else does, and I need it more on code I am consuming than producing. In fact, many functions rely on being able to send various types for different behavior. Dynamic programming is crazy to me. It’s like guessing. I don’t know what type your code is accepting and I have to guess based on the name of read your code directly.
sugar_in_your_tea@sh.itjust.works
on 01 Jun 16:51
collapse
I have the opposite experience, a ton of libraries I use provide optional types, and the handful that don’t often have a good reason for it (e.g. numpy). Our projects at work have types almost everywhere, and it’s pretty nice to work with.
Hasn’t been updated since 2018. Does it still work?
rottingleaf@lemmy.world
on 01 Jun 02:51
nextcollapse
I hated something about Python, and avoided it, until encountering Tcl which for me fulfills the same role that Pythons seems for many people, but Tcl is really much more pleasant. IMHO.
Try ‘Nim’. It is Pythonic language with static typing.
gravitas_deficiency@sh.itjust.works
on 31 May 14:00
nextcollapse
I don’t think weakly- or dynamically-typed languages are a good thing to base computer science curriculum around. Yes, it’s “easier”. But you will genuinely have a FAR better understanding the language and the logic you’re writing in it if you work in the scope of strong and static typing - or, at least have linters that force you to (e.g. mypy for Python)
The argument I agree with is that Python is the best language to learn if it’s your only language, and Java is the best first language if you’re going to learn others. The syntax from Java is shared across so many other languages and it forces you to learn about things like objects and types. You could make an argument for C or C++ but Java’s handholding is more beginner friendly imo
taladar@sh.itjust.works
on 31 May 18:08
nextcollapse
Python isn’t really strict enough to be a good learning language and Java has too much accidental complexity that literally matters in no other language.
First learn C, then learn C++, then learn Java. In that order, each will make you appreciate what the previous one lacks. From there, you should pretty much be able to learn anything.
HandMadeArtisanRobot@lemmy.world
on 01 Jun 03:57
nextcollapse
Help. I’ve been stuck learning c++ for almost 10 years. :(
Not true. They use the same model, executing compiled bytecode. It just feels like directly running a script because Python compiles it to bytecode on the fly, and because it is embarrassingly slow.
MolecularCactus1324@lemmy.world
on 31 May 18:23
nextcollapse
I learned C++ as my first language and it was a great way to understand the core issues of a programming language — like memory allocation, memory freeing, the difference between memory addresses and the memory contents themselves, threads, system calls, etc. Java obscures these nuances to a degree, but Python is too friendly and makes it hard to understand them at all.
I believe if you learn C++ you can easily learn any other language. After C++, I learned Python, JavaScript, and Java in a few days each without formal instruction. If you learn Python first, you’re probably going to struggle learning those other languages because you haven’t grasped the lower level concepts yet and may never if you’re not in a formal setting that forced you to learn them.
No one disagrees that Python is easier, but if your goal is to get a foundation in programming that allows you to easily pick up other languages, you should start with C++.
Imo people should start with C first since it is a lot simpler than C++ while still providing a lot of what you mentioned. C++ adds a lot of things like name mangling, templates, L & R value references that can quickly make things a bit more daunting for beginners.
I also generally find error messages for C a lot more parsable for beginners than C++ ones.
C++ is a monster. I’d suggest C instead to learn about these basic ideas.
MolecularCactus1324@lemmy.world
on 01 Jun 16:31
collapse
C++ has classes though and if you start with C and then try to go to other Object-oriented languages you’ll be a little lost. But, by learning C++ first, you’re pretty much learning C at the same time, you just need to avoid using classes.
MrRazamataz@lemmy.razbot.xyz
on 01 Jun 02:12
collapse
In a first year computer science course at uni I can say they teach us Python, Java, and C, all with slightly different use cases.
omgboom@lemmy.dbzer0.com
on 31 May 12:41
nextcollapse
30 years of pain
Cobrachicken@lemmy.world
on 31 May 13:02
nextcollapse
kirk781@discuss.tchncs.de
on 01 Jun 00:28
nextcollapse
Lary Ellison is one of the richest men in the world right and owns some kind of private island or something that he bought basically after showing his shares of Oracle stock?
Also I’ve heard Oracle has a bad reputation when it comes to government contracts, very expensive poor quality software ripping off our taxpayers. I think they ought to be blacklisted or at-least require extra review due to their reputation. CUNY paid Oracle over $600 million and look at what that got them: …blogspot.com/…/cuny-first-computer-system-to-aid…. To be fair the article does claim that “The project required an expenditure of up to a billion dollars to do it right. CUNY Central offered far less. All but one of the bidders dropped out as a result”. I’m confused why it needs to be so expensive, even $600 million seems like way too much.
I remember Java being seen as the best thing ever in the 90's, and it was considered "cool" at that time. So cool even, that it became the programming equivalent of a hammer, every coding challenge looked like a nail for which you could use it.
It’s a cycle all popular languages go through. First only experimental applications and super opinionated programmers use it. Then everyone wants to use it for everything. Then it finds a niche where it excels and settles.
I remember Java, C++, Python, and JavaScript going through those phases as well. Currently, everything is Rust.
sugar_in_your_tea@sh.itjust.works
on 31 May 13:51
nextcollapse
I’m still wondering what Java’s niche is, it seems like it does everything, but nothing particularly well. I guess it found a home on Android, but I don’t think that’s because it’s particularly well-suited for it.
dustyData@lemmy.world
on 31 May 14:00
nextcollapse
Java is still massive in corporate software. As in, internal software for corporation’s day to day operations. Machinery management, inventory software, point-of-sale applications, floor management, automated finance tracking. Stuff that isn’t really cool or talked much about.
And of course there’s Java’s most important job. Coming up with features and syntax that Microsoft can copy and steal for C#.
Pieisawesome@lemmy.dbzer0.com
on 31 May 23:41
collapse
Sure, cause c# doesn’t have any original feature’s whatsoever
/s
PapstJL4U@lemmy.world
on 31 May 15:06
nextcollapse
Working, decently robust software that was designed 15 years ago doesnt just get replaced.
The point of Java is to be a language for 90% of programmers. The vast majority of software development is not sexy, doesn’t require a PhD. Java was intended to be a commoditising language and in that it succeeded wildly.
it succeeded in holding back the entire field of programming for a decade via that mindset by having people blindly apply stupid Java design patterns to everything.
You must not write much Kotlin then? It’s far more than sugar when a language fixes core issues in another.
It’s a modern, statically typed language that addresses many of Java’s longstanding limitations with robust type safety, expressive functional features, coroutine-based concurrency, and extensibility — all integrated natively. Interoperability with Java is a strength, not a sign of dependency.
Calling Kotlin merely syntactic sugar is like saying Swift is just Objective-C with prettier syntax — it misses the deep improvements in language design, safety, and developer experience.
sugar_in_your_tea@sh.itjust.works
on 01 Jun 17:09
collapse
I’ve written a fair amount, enough to know it’s a significant improvement on Java, but that it still suffers from the unnecessary abstraction in the standard library. And that’s pretty much my main problem with Java.
Swift is a different story because the main issue with Objective C is the syntax.
Enterprise programming and portable GUI applications.
taladar@sh.itjust.works
on 31 May 18:05
nextcollapse
Java is nothing like Rust. Java was always sold as a low skill programmer language, Rust has a steep learning curve. Java tooling has always sucked where Rust has excellent tooling pretty much since 1.0, Java is extremely verbose and needs a lot of tools to generate code to be productive at all, Rust is very expressive and most people write the code by hand or just use built-in language features. Java has a culture of “who care about that backtrace in my log as long as the app does what it is supposed to” while Rust has a culture that very much cares about correctness more than performance. Java was always driven by CEOs pushing it on people from the top while Rust is very much a language programmers try to push into their companies from the bottom.
Also, none of the languages you listed have a very particular niche that differs from what they were used early on apart from Java which is now mostly used on the server and used to also be used in GUI applications more.
dustyData@lemmy.world
on 31 May 18:18
nextcollapse
Yes, I have Java and love Rust but the point is that if you say they all go through the same cycle there need to be some commonalities between the languages and the way they rise to popularity and there just aren’t. If any modern language resembles Java’s rise to popularity it would be Go.
Java always had excellent tooling. You are mixing something up.
In General programming languages are not pushed by CEOs but come up in grass root movements by developers.
JavaScript kind of had a weird path though, with like a rebirth on server side, and then all these trendy libraries and frameworks and other bullshit.
drosophila@lemmy.blahaj.zone
on 01 Jun 10:53
collapse
What is the “everything” that Rust is being used in? From what I’ve heard its being used in the same place you’d use C or C++, not in any other niches.
Peppycito@sh.itjust.works
on 31 May 13:28
nextcollapse
Hadouken handshake
chronicledmonocle@lemmy.world
on 31 May 14:30
nextcollapse
A language I wish would die already, but there are still vendors that program in it, along with freaking Tomcat hosted applications. EduTech is still stuffed to the gills with it.
toastmeister@lemmy.ca
on 31 May 15:27
nextcollapse
There’s always Kotlin. Of course I never understood the desirability of a VM language in the first place, why not just compile for different architecture?
There’s also Groovy. A data execution pipeline program I use called NextFlow uses Groovy based scripts.
And compiling for different architectures can be very difficult. I’ve done a lot of work Power9 computers and it’s not as simple as having the right compiler flags. Often the dependencies aren’t built for your platform either so you have to go and compile those too. It can be quite a hassle.
JIT compiling and byte code morphing and instrumentation.
For instance data base persistence is usually done by instrumentation tools, that add instructions to keep track about transactions and modified objects, or new objects that need persisting.
And endless more things.
GreenKnight23@lemmy.world
on 31 May 17:31
collapse
Unlike other older languages, such as Cobol and Fortran -- which are still used, but almost always in legacy projects -- Java has constantly evolved to meet new demands while maintaining backward compatibility.
can't speak on the FORTRAN claim but with COBOL this couldn't be less true. last i checked the newest Enterprise COBOL LTS is newer than Java's
1rre@discuss.tchncs.de
on 31 May 18:00
nextcollapse
The difference is people still write Java, regardless of whether it’s a dated pos or not, so the use cases have evolved
Then there’s the use of the JVM/JRE which have evolved even more due to Scala, Clojure & Kotlin
COBOL is still being updated because, believe it or not, people are still writing COBOL
magic_lobster_party@fedia.io
on 31 May 19:54
collapse
People aren’t writing new projects in COBOL. It’s mostly to maintain 40+ year old systems. Unless you’re working in the bank sector, it’s unlikely you will write a program in COBOL.
Yeah, I know that the vast majority of Java applications out there are stuck on ancient versions of the JVM and spew back traces in their logs as if they bought them in bulk.
whotookkarl@lemmy.world
on 31 May 16:38
nextcollapse
It’s been interesting seeing the changes as they happened over time working with java pretty often for a good chunk of that time. The jvm and jit performance improvements, syntax changes and additional jep features added vs what was left out, tools for running and managing jvms, Sun & Oracle shooting themselves in the foot repeatedly, new jvm languages with scala, groovy, clojure, etc and their impact on java. I prefer other languages and tool chains for some cases, but java has been pretty good for building reliable, upgradable, extendable systems that get the job done & have a good large stable library.
I attribute Java’s uptake to a large amount of marketing and support, which led to a massive ecosystem. Even a mediocre language like this one can find success when propped up like that.
hex123456@sh.itjust.works
on 31 May 19:39
nextcollapse
Java was the new hotness when I was in the middle of my comp sci degree. The biggest benefit I found was javadocs. Other languages had shit documentation that usually didn’t match reality in comparison.
There, I said something nice about Java. I’m giving myself a gold star, and going to stop typing.
magic_lobster_party@fedia.io
on 31 May 20:01
nextcollapse
OOP was hype during the 90s. Schools adapted their curriculum to this trend. So they needed a programming language for this, and Java became the choice. C++ is too tricky as a first language.
The result is that a lot of people knew Java, which means it’s a good choice of language if you want to recruit programmers.
I believe most of Java’s success was luck. It released at the perfect time.
Knock_Knock_Lemmy_In@lemmy.world
on 31 May 20:29
nextcollapse
OOP makes so much sense. What happened?
anti_antidote@lemmy.zip
on 31 May 21:02
nextcollapse
The AbstractionBubbleFactory popped
magic_lobster_party@fedia.io
on 01 Jun 00:04
collapse
AbstractionBubbleBuilderFactoryStrategyImplementation mind you
jenesaisquoi@feddit.org
on 01 Jun 05:05
nextcollapse
Many people increasingly find that using functional patterns enables them to build more reliable software.
magic_lobster_party@fedia.io
on 01 Jun 12:10
collapse
I don’t think OOP is as bad as many people make it out to be. It’s perfectly fine in moderation.
The problem is that it can lead to over engineered applications when abused.
JackbyDev@programming.dev
on 01 Jun 15:46
collapse
You don’t think the $500 million marketing budget Sun put towards Java has anything to do with its success? It was more than just luck.
magic_lobster_party@fedia.io
on 01 Jun 16:19
collapse
I don’t think the $500 million marketing budget would’ve worked if Java was introduced at a time other than the 90s.
The 80s would’ve been too early. It would just turn into a parenthesis in programming language history (next to smalltalk). The 00s would’ve been too late. It would’ve missed the dotcom bubble boat. Java came in the right time to become a dominant programming language.
I’m not saying the marketing didn’t have any influence. It probably had an big influence in which OOP language was selected for computer science education.
rottingleaf@lemmy.world
on 01 Jun 02:47
nextcollapse
JVM isn’t mediocre. Really-really.
I don’t like something aesthetically about Java, can’t quite nail what, and don’t like long-long namespace strings, but these are my personal limitations.
Ah. I also don’t like OOP.
PushButton@lemmy.world
on 01 Jun 14:22
nextcollapse
I am going to be decapitated for this, but you’re totally right.
You only have to look at Rust. An horrible language with a massive hype machine and an army of zealots pushing it everywhere.
I can’t understand how people are complaining about the java boiler plate and its verbosity, while promoting Rust every time they can.
JackbyDev@programming.dev
on 01 Jun 15:41
collapse
For me it’s the tooling surrounding it that makes it nice.
I used Java years ago for Android dev, but stopped when I stopped doing that. Every once in a while I’ll get the itch to work on a new project, and always wonder if Java would be a good idea.
My hesitance is that I don’t trust Oracle (and don’t know to what extent they’re involved nowadays), I’m not familiar enough with the ecosystem to know what is legacy crap to avoid, and I think it’s generally seen as an uncool language, and I’m way too cool to be taking such risks.
MaggiWuerze@feddit.org
on 31 May 20:51
nextcollapse
If you want to do something java like, try Kotlin. Its a more modern take on java and not developed by Oracle
Pieisawesome@lemmy.dbzer0.com
on 01 Jun 00:20
nextcollapse
Java is IMHO one of the most underrated platforms outside of enterprise environments.
Most people also forget, that Java is not only a language, but also a platform, an ecosystem and active research is applied to many parts of Java.
Concerning Oracle: OpenJDK is actively supported by very different but big and capable companies (IBM, Amazon, Eclipse Foundation…). The quality of the language, libraries and documentation needs people which are payed to work on this, full time.
Bring to this the free IDEs one can get for Java - Eclipse and Netbeans are a little bit old school, but offer everything to build/debug and develop complex software.
Java is not my favorite programming language, but when I want to write interesting software and ensure it will be running for the next decade w/o significant changes, Java is really hard to beat.
Of course, in hindsight we know how to do a lot of things better as they were done in Java. Still, what other open source Language/Platform/documentation with the backing of capable companies and really independent and interoperable builds are out there?
One last note to all people which were damaged by Java in university or school: Usually the teachers/professors/lecturers have no real world experience of software development besides the usually university projects, and for the usual university projects which basically means getting small to midsize projects to run Java is total overkill.
Don’t confuse this with real world software projects in the industry, which are mission critical and need to work a decade from now on. Java was always a bread and butter language, but one which learned from other languages and even the verbosity makes sense, once one dives into code written a few years back by another person.
magic_lobster_party@fedia.io
on 01 Jun 11:55
collapse
Usually the teachers/professors/lecturers have no real world experience of software development besides the usually university projects
Adding to this: university projects are built on a relatively short timeframe compared to many industry projects. The growing pains that typically occur after a few years of continuous development is unlikely with the small scale of university projects.
I wouldn’t go to a university professor for advice on how to build a system that will last a decade of development.
neidu3@sh.itjust.works
on 31 May 21:30
nextcollapse
I liked Java a lot more before Oracle acquired Sun. I’ve used Oracle databases enough to hate Oracle with the passion of a supernova.
surewhynotlem@lemmy.world
on 31 May 22:09
nextcollapse
Open jdk is where it’s at
JackbyDev@programming.dev
on 01 Jun 15:40
collapse
Yep, thanks to the AdoptOpenJDK project which really helped make OpenJDK builds available for all platforms. (It is now called Eclipse Temurin and Adoptium.)
I think I need to clear a common misconception people seem to have here: Oracle has very little to do with Java.
At most, Oracle has the following connection to Java:
Own the trademark
Have a build of the JDK/JRE with commercial support.
However, Java as a language’s baseline comes from OpenJDK, an open source (GPL 2.0) community project which is upstream to several builds including Oracle’s JVM. It follows a “bazaar” like development model similar to the Linux kernel where you can see their mailing lists and track what’s being worked on. Anyone can contribute and the code is on Github: github.com/openjdk/jdk.
That being said, you don’t even need to use Oracle’s JDK (it sucks IMO) and use one of the community provided builds of OpenJDK. OpenJDK builds are provided by Eclipse, Amazon, Azul, Bellsoft and even Microsoft provides JDK/JRE builds. These are free of cost and have longer term support than Oracle’s offering.
ferrule@sh.itjust.works
on 01 Jun 01:44
nextcollapse
java was my 5th language, having just missed it as the AP CS language in highschool by a year. oddly i could not get behind such a massive standard library having come from BASIC, Pascal C++, ASM, VHDL. now after 30 years of programing i write Java web services for a living. feels strange.
kirk781@discuss.tchncs.de
on 01 Jun 03:05
collapse
Oddly, I did know some BASIC and I have vague memories of the numeric line starters like 10 with white text on a black background giving it a retro feel.
nasi_goreng@lemmy.zip
on 01 Jun 02:22
nextcollapse
Lol, as Javanese, It’s funny that Javanese ethnic name -> Javanese coffee -> Javanese programming language.
People still keep thinking that I was a programmer or making a typo of Japanese everytime I mention I speak Javanese.
YurkshireLad@lemmy.ca
on 01 Jun 03:11
nextcollapse
I think Java was first released just after I graduated. I do program Java at my day job though, and I don’t mind it. It has its quirks but I find I can express myself using Java, but I probably try to think towards much in OO paradigms when I design and code.
This dude came to my spouses work to do some sort of work/help (I don’t know the exact details) and someone wrote a doc he needed to review. It was a lot of work not just like a few notes but a proper doc and all he wrote back upon “reviewing” it was a thumbs up emoji!! 👍🏻 everyone was shocked lol, no feed back, no notes nothing just 👍🏻
threaded - newest
Java was also my first introduction to programming as it was included in Computer Science in final year of school (at college, we did the trusty C).
I think they have replaced Java with Python now in schools because of the latter’s popularity and also because many would argue, Python is slightly easier to learn than Java.
They did, but it makes me sad. Python is becoming the next JavaScript because of its ease of use.
The Java guys simply don’t understand how to code without the gang of 4 crutch to lean on.
Gang of Four?
They’re talking about this: en.m.wikipedia.org/wiki/Design_Patterns
That makes more sense in context. Another Gang of Four (that I err, know more deeply for some reason) is(read:was) a political grouping in mid 70s in China.
Yet another Gang Of Four
Some of the GoF patterns over-emphasise inheritance, but by-and-large, you don’t build large systems without either using or rediscovering software patterns, whether they’re OO, FP, or what-have-you.
Python is easy, but it can also be infuriating. Every time I use it, I’m reminded how much I loathe the use of whitespace to define blocks, and I really miss the straightforward type annotations of strong, non-dynamically typed languages.
You can annotate types in Python, and it’s actually pretty nice when used with Pyright/Pylance.
Oh, I know you can, but it’s optional and the syntax is kind of weird. I prefer languages that are strongly typed from the ground up and enforce it.
Python is strongly typed, it’s just not statically typed. Python with consistent type hinting is extremely similar to a statically typed language like C#.
I would argue that without consistent and enforced type hinting, dynamically typed languages offer very little benefit from type-checking at runtime. And with consistent, enforced type hinting, they might as well be considered actual statically typed languages.
Don’t get me wrong, that’s a good thing. Properly configured Python development environments basically give you both, even if I’m not a fan of the syntax.
What’s wrong with the syntax? It’s just
var_name: Type = value
, it’s very similar to Go or Rust. Things get a little wonky with generics (list[Type]
ordict[Type]
), but it’s still similar to other languages.One nice thing about it being runtime checked is you can accept union types,
def func(param: int | float)
, which isn’t very common in statically typed languages.But nobody else does, and I need it more on code I am consuming than producing. In fact, many functions rely on being able to send various types for different behavior. Dynamic programming is crazy to me. It’s like guessing. I don’t know what type your code is accepting and I have to guess based on the name of read your code directly.
I have the opposite experience, a ton of libraries I use provide optional types, and the handful that don’t often have a good reason for it (e.g. numpy). Our projects at work have types almost everywhere, and it’s pretty nice to work with.
Preach it! 🙌⛪
Most overrated language imho. I actually enjoy Java more.
use bython, python with braces XD
Hasn’t been updated since 2018. Does it still work?
I hated something about Python, and avoided it, until encountering Tcl which for me fulfills the same role that Pythons seems for many people, but Tcl is really much more pleasant. IMHO.
Try ‘Nim’. It is Pythonic language with static typing.
I don’t think weakly- or dynamically-typed languages are a good thing to base computer science curriculum around. Yes, it’s “easier”. But you will genuinely have a FAR better understanding the language and the logic you’re writing in it if you work in the scope of strong and static typing - or, at least have linters that force you to (e.g. mypy for Python)
The argument I agree with is that Python is the best language to learn if it’s your only language, and Java is the best first language if you’re going to learn others. The syntax from Java is shared across so many other languages and it forces you to learn about things like objects and types. You could make an argument for C or C++ but Java’s handholding is more beginner friendly imo
Python isn’t really strict enough to be a good learning language and Java has too much accidental complexity that literally matters in no other language.
First learn C, then learn C++, then learn Java. In that order, each will make you appreciate what the previous one lacks. From there, you should pretty much be able to learn anything.
Help. I’ve been stuck learning c++ for almost 10 years. :(
You can’t learn C++. Some parts of it maybe.
Python is interpreted where Java is compiled. They aren’t going to be able to be used in the same cases all the time.
Not true. They use the same model, executing compiled bytecode. It just feels like directly running a script because Python compiles it to bytecode on the fly, and because it is embarrassingly slow.
I learned C++ as my first language and it was a great way to understand the core issues of a programming language — like memory allocation, memory freeing, the difference between memory addresses and the memory contents themselves, threads, system calls, etc. Java obscures these nuances to a degree, but Python is too friendly and makes it hard to understand them at all.
I believe if you learn C++ you can easily learn any other language. After C++, I learned Python, JavaScript, and Java in a few days each without formal instruction. If you learn Python first, you’re probably going to struggle learning those other languages because you haven’t grasped the lower level concepts yet and may never if you’re not in a formal setting that forced you to learn them.
No one disagrees that Python is easier, but if your goal is to get a foundation in programming that allows you to easily pick up other languages, you should start with C++.
Imo people should start with C first since it is a lot simpler than C++ while still providing a lot of what you mentioned. C++ adds a lot of things like name mangling, templates, L & R value references that can quickly make things a bit more daunting for beginners.
I also generally find error messages for C a lot more parsable for beginners than C++ ones.
C++ is a monster. I’d suggest C instead to learn about these basic ideas.
C++ has classes though and if you start with C and then try to go to other Object-oriented languages you’ll be a little lost. But, by learning C++ first, you’re pretty much learning C at the same time, you just need to avoid using classes.
In a first year computer science course at uni I can say they teach us Python, Java, and C, all with slightly different use cases.
30 years of pain
Fuck Oracle.
One Rich Asshole Called Lary Ellison
Lary Ellison is one of the richest men in the world right and owns some kind of private island or something that he bought basically after showing his shares of Oracle stock?
His political contributions are really on brand. He funded election deniers in 2022.
Also I’ve heard Oracle has a bad reputation when it comes to government contracts, very expensive poor quality software ripping off our taxpayers. I think they ought to be blacklisted or at-least require extra review due to their reputation. CUNY paid Oracle over $600 million and look at what that got them: …blogspot.com/…/cuny-first-computer-system-to-aid…. To be fair the article does claim that “The project required an expenditure of up to a billion dollars to do it right. CUNY Central offered far less. All but one of the bidders dropped out as a result”. I’m confused why it needs to be so expensive, even $600 million seems like way too much.
I remember Java being seen as the best thing ever in the 90's, and it was considered "cool" at that time. So cool even, that it became the programming equivalent of a hammer, every coding challenge looked like a nail for which you could use it.
It’s a cycle all popular languages go through. First only experimental applications and super opinionated programmers use it. Then everyone wants to use it for everything. Then it finds a niche where it excels and settles.
I remember Java, C++, Python, and JavaScript going through those phases as well. Currently, everything is Rust.
I’m still wondering what Java’s niche is, it seems like it does everything, but nothing particularly well. I guess it found a home on Android, but I don’t think that’s because it’s particularly well-suited for it.
Java is still massive in corporate software. As in, internal software for corporation’s day to day operations. Machinery management, inventory software, point-of-sale applications, floor management, automated finance tracking. Stuff that isn’t really cool or talked much about.
And of course there’s Java’s most important job. Coming up with features and syntax that Microsoft can copy and steal for C#.
Sure, cause c# doesn’t have any original feature’s whatsoever
/s
Working, decently robust software that was designed 15 years ago doesnt just get replaced.
The point of Java is to be a language for 90% of programmers. The vast majority of software development is not sexy, doesn’t require a PhD. Java was intended to be a commoditising language and in that it succeeded wildly.
it succeeded in holding back the entire field of programming for a decade via that mindset by having people blindly apply stupid Java design patterns to everything.
No, it didn’t.
Show me an Android app written in Java, and I’ll show you the line of developers ready to rewrite it in Kotlin.
Sure, and Kotlin is largely syntax sugar for Java. It’s certainly nicer, but the semantics are largely the same.
You must not write much Kotlin then? It’s far more than sugar when a language fixes core issues in another.
It’s a modern, statically typed language that addresses many of Java’s longstanding limitations with robust type safety, expressive functional features, coroutine-based concurrency, and extensibility — all integrated natively. Interoperability with Java is a strength, not a sign of dependency.
Calling Kotlin merely syntactic sugar is like saying Swift is just Objective-C with prettier syntax — it misses the deep improvements in language design, safety, and developer experience.
I’ve written a fair amount, enough to know it’s a significant improvement on Java, but that it still suffers from the unnecessary abstraction in the standard library. And that’s pretty much my main problem with Java.
Swift is a different story because the main issue with Objective C is the syntax.
Enterprise programming and portable GUI applications.
Java is nothing like Rust. Java was always sold as a low skill programmer language, Rust has a steep learning curve. Java tooling has always sucked where Rust has excellent tooling pretty much since 1.0, Java is extremely verbose and needs a lot of tools to generate code to be productive at all, Rust is very expressive and most people write the code by hand or just use built-in language features. Java has a culture of “who care about that backtrace in my log as long as the app does what it is supposed to” while Rust has a culture that very much cares about correctness more than performance. Java was always driven by CEOs pushing it on people from the top while Rust is very much a language programmers try to push into their companies from the bottom.
Also, none of the languages you listed have a very particular niche that differs from what they were used early on apart from Java which is now mostly used on the server and used to also be used in GUI applications more.
You hate Java, you love Rust, noted.
Also:
SAP,
Graphics,
Data science,
Web.
Good day.
Yes, I have Java and love Rust but the point is that if you say they all go through the same cycle there need to be some commonalities between the languages and the way they rise to popularity and there just aren’t. If any modern language resembles Java’s rise to popularity it would be Go.
No
Java always had excellent tooling. You are mixing something up. In General programming languages are not pushed by CEOs but come up in grass root movements by developers.
JavaScript kind of had a weird path though, with like a rebirth on server side, and then all these trendy libraries and frameworks and other bullshit.
What is the “everything” that Rust is being used in? From what I’ve heard its being used in the same place you’d use C or C++, not in any other niches.
Hadouken handshake
A language I wish would die already, but there are still vendors that program in it, along with freaking Tomcat hosted applications. EduTech is still stuffed to the gills with it.
There’s always Kotlin. Of course I never understood the desirability of a VM language in the first place, why not just compile for different architecture?
It can help with standardization and some security benefits to run things in the JVM, part of the reason it’s so popular in enterprise
There’s also Groovy. A data execution pipeline program I use called NextFlow uses Groovy based scripts.
And compiling for different architectures can be very difficult. I’ve done a lot of work Power9 computers and it’s not as simple as having the right compiler flags. Often the dependencies aren’t built for your platform either so you have to go and compile those too. It can be quite a hassle.
“Write once, run anywhere” is a pipe dream but Java came closer than anyone else by far.
JIT compiling and byte code morphing and instrumentation. For instance data base persistence is usually done by instrumentation tools, that add instructions to keep track about transactions and modified objects, or new objects that need persisting. And endless more things.
fucking tomcat and jboss…🤮
I keep Java installed for one thing and one thing only… modded Minecraft.
can't speak on the FORTRAN claim but with COBOL this couldn't be less true. last i checked the newest Enterprise COBOL LTS is newer than Java's
The difference is people still write Java, regardless of whether it’s a dated pos or not, so the use cases have evolved
Then there’s the use of the JVM/JRE which have evolved even more due to Scala, Clojure & Kotlin
COBOL is still being updated because, believe it or not, people are still writing COBOL
People aren’t writing new projects in COBOL. It’s mostly to maintain 40+ year old systems. Unless you’re working in the bank sector, it’s unlikely you will write a program in COBOL.
Don’t forget this small sector called government. Loads of Cobol there.
And Java is very much considered legacy in the vast majority of projects that use it.
Then it would not be constantly evolving with more than a new release per year. Do you know anything about gigantic Java ecosystem? Guessed so …
Yeah, I know that the vast majority of Java applications out there are stuck on ancient versions of the JVM and spew back traces in their logs as if they bought them in bulk.
It’s been interesting seeing the changes as they happened over time working with java pretty often for a good chunk of that time. The jvm and jit performance improvements, syntax changes and additional jep features added vs what was left out, tools for running and managing jvms, Sun & Oracle shooting themselves in the foot repeatedly, new jvm languages with scala, groovy, clojure, etc and their impact on java. I prefer other languages and tool chains for some cases, but java has been pretty good for building reliable, upgradable, extendable systems that get the job done & have a good large stable library.
I attribute Java’s uptake to a large amount of marketing and support, which led to a massive ecosystem. Even a mediocre language like this one can find success when propped up like that.
Java was the new hotness when I was in the middle of my comp sci degree. The biggest benefit I found was javadocs. Other languages had shit documentation that usually didn’t match reality in comparison.
Yes. JavaDoc was/is good.
There, I said something nice about Java. I’m giving myself a gold star, and going to stop typing.
OOP was hype during the 90s. Schools adapted their curriculum to this trend. So they needed a programming language for this, and Java became the choice. C++ is too tricky as a first language.
The result is that a lot of people knew Java, which means it’s a good choice of language if you want to recruit programmers.
I believe most of Java’s success was luck. It released at the perfect time.
OOP makes so much sense. What happened?
The AbstractionBubbleFactory popped
AbstractionBubbleBuilderFactoryStrategyImplementation mind you
Many people increasingly find that using functional patterns enables them to build more reliable software.
I don’t think OOP is as bad as many people make it out to be. It’s perfectly fine in moderation.
The problem is that it can lead to over engineered applications when abused.
You don’t think the $500 million marketing budget Sun put towards Java has anything to do with its success? It was more than just luck.
I don’t think the $500 million marketing budget would’ve worked if Java was introduced at a time other than the 90s.
The 80s would’ve been too early. It would just turn into a parenthesis in programming language history (next to smalltalk). The 00s would’ve been too late. It would’ve missed the dotcom bubble boat. Java came in the right time to become a dominant programming language.
I’m not saying the marketing didn’t have any influence. It probably had an big influence in which OOP language was selected for computer science education.
JVM isn’t mediocre. Really-really.
I don’t like something aesthetically about Java, can’t quite nail what, and don’t like long-long namespace strings, but these are my personal limitations.
Ah. I also don’t like OOP.
I am going to be decapitated for this, but you’re totally right.
You only have to look at Rust. An horrible language with a massive hype machine and an army of zealots pushing it everywhere.
I can’t understand how people are complaining about the java boiler plate and its verbosity, while promoting Rust every time they can.
For me it’s the tooling surrounding it that makes it nice.
Yes, that’s part of the ecosystem. :)
I used Java years ago for Android dev, but stopped when I stopped doing that. Every once in a while I’ll get the itch to work on a new project, and always wonder if Java would be a good idea.
My hesitance is that I don’t trust Oracle (and don’t know to what extent they’re involved nowadays), I’m not familiar enough with the ecosystem to know what is legacy crap to avoid, and I think it’s generally seen as an uncool language, and I’m way too cool to be taking such risks.
If you want to do something java like, try Kotlin. Its a more modern take on java and not developed by Oracle
Kotlin is very similar to C# in my opinion.
It’s a happy middle ground for me
Ironic considering C# was supposed to be very similar to Java
Its called Microsoft Java for a reason
I’m so grateful for Kotlin, it gets rid of so much of the annoyances in Java.
Kotlin is now the language of choice for Android.
Rather Dart and Flutter.
Oracle has nearly nothing to do with Java. OpenSDK is developed by the Apache Foundation.
Java is IMHO one of the most underrated platforms outside of enterprise environments.
Most people also forget, that Java is not only a language, but also a platform, an ecosystem and active research is applied to many parts of Java.
Concerning Oracle: OpenJDK is actively supported by very different but big and capable companies (IBM, Amazon, Eclipse Foundation…). The quality of the language, libraries and documentation needs people which are payed to work on this, full time.
Bring to this the free IDEs one can get for Java - Eclipse and Netbeans are a little bit old school, but offer everything to build/debug and develop complex software.
Java is not my favorite programming language, but when I want to write interesting software and ensure it will be running for the next decade w/o significant changes, Java is really hard to beat.
Of course, in hindsight we know how to do a lot of things better as they were done in Java. Still, what other open source Language/Platform/documentation with the backing of capable companies and really independent and interoperable builds are out there?
One last note to all people which were damaged by Java in university or school: Usually the teachers/professors/lecturers have no real world experience of software development besides the usually university projects, and for the usual university projects which basically means getting small to midsize projects to run Java is total overkill.
Don’t confuse this with real world software projects in the industry, which are mission critical and need to work a decade from now on. Java was always a bread and butter language, but one which learned from other languages and even the verbosity makes sense, once one dives into code written a few years back by another person.
Adding to this: university projects are built on a relatively short timeframe compared to many industry projects. The growing pains that typically occur after a few years of continuous development is unlikely with the small scale of university projects.
I wouldn’t go to a university professor for advice on how to build a system that will last a decade of development.
I liked Java a lot more before Oracle acquired Sun. I’ve used Oracle databases enough to hate Oracle with the passion of a supernova.
Java was stagnating under Sun, unfortunately. I hate to say it, but Oracle probably saved Java.
But!.. Sun Java included internationalized set of Lucida fonts with proper hinting. Oracle removed that for whatever reason.
Haha. I guess I never noticed.
Open jdk is where it’s at
Yep, thanks to the AdoptOpenJDK project which really helped make OpenJDK builds available for all platforms. (It is now called Eclipse Temurin and Adoptium.)
I think I need to clear a common misconception people seem to have here: Oracle has very little to do with Java.
At most, Oracle has the following connection to Java:
However, Java as a language’s baseline comes from OpenJDK, an open source (GPL 2.0) community project which is upstream to several builds including Oracle’s JVM. It follows a “bazaar” like development model similar to the Linux kernel where you can see their mailing lists and track what’s being worked on. Anyone can contribute and the code is on Github: github.com/openjdk/jdk.
That being said, you don’t even need to use Oracle’s JDK (it sucks IMO) and use one of the community provided builds of OpenJDK. OpenJDK builds are provided by Eclipse, Amazon, Azul, Bellsoft and even Microsoft provides JDK/JRE builds. These are free of cost and have longer term support than Oracle’s offering.
java was my 5th language, having just missed it as the AP CS language in highschool by a year. oddly i could not get behind such a massive standard library having come from BASIC, Pascal C++, ASM, VHDL. now after 30 years of programing i write Java web services for a living. feels strange.
Oddly, I did know some BASIC and I have vague memories of the numeric line starters like 10 with white text on a black background giving it a retro feel.
Lol, as Javanese, It’s funny that Javanese ethnic name -> Javanese coffee -> Javanese programming language.
People still keep thinking that I was a programmer or making a typo of Japanese everytime I mention I speak Javanese.
Things could have been a lot different!
“fucking oak what the fuck” still works so not that different
Oakscript does have a certain ring to it
I think Java was first released just after I graduated. I do program Java at my day job though, and I don’t mind it. It has its quirks but I find I can express myself using Java, but I probably try to think towards much in OO paradigms when I design and code.
Thing thing = Thing
gets to be pretty old
For your information, since java 10, 2018, 7 years ago, it’s
var thing = Thing
like most languages.You should update your java knowledge.
Took them long enough.
Just saw: they’re changing it back because you don’t appreciate it enough :(
You can do
var thing = new Thing();
now.This dude came to my spouses work to do some sort of work/help (I don’t know the exact details) and someone wrote a doc he needed to review. It was a lot of work not just like a few notes but a proper doc and all he wrote back upon “reviewing” it was a thumbs up emoji!! 👍🏻 everyone was shocked lol, no feed back, no notes nothing just 👍🏻
👍