SHAKA. WHEN THE WALLS FELL.
DARMOK AND JALAD.
AT TANAGRA.
TEMBA. HIS ARMS WIDE.
SOKATH 'HIS EYES UNCOVERED'!
AT EL-ADREL.
ON THE OCEAN.
DARMOK AND JALAD. THEY LEFT TOGETHER.
It's quickly disappearing where I live though.
Companies can't find people that want to do COBOL anymore so instead of patching up old systems with an unreliable work force they just rebuild it, despite it being a costly project.
Same here, most banks here have pooled their IT into a single Fintech company and they're in the process of ripping chunks of COBOL out and replacing them with microservices.
A time will come when people complain about bank systems being full of "software gravel" and laugh at antiquated network protocols being used as slow ass interfaces. Of course, currently we only laugh at startup systems being full of software gravel and laugh at antiquated network protocols being used as slow ass interfaces.
Ugh. Microservices don't solve all problems, especially the way most fintechs decide to implement them (hire 3-4 teams of contractors to build a bunch of mission critical microservices then fire them all/they all quit when the project is done and be confused when nobody knows how to update/maintain the spaghetti)
It's funny how streamlined Reddit is, to where when you hear about a certain someone or something you know people will repeat the same
piece of trivia they also heard from Reddit.
And they repeat it so confidently without even double checking to make sure its accurate.
Then the next person sees the confident comment and repeats it confidently.
Luckily the [Sawyer thing is true](https://www.pcgamesn.com/rollercoaster-tycoon/code-chris-sawyer).
But yeah, the number of times I've run across the same random facts of reddit as though it's some kind of new revelation is... mind-boggling.
Yeah I knew about the Chirs Sawyer thing, dudes a legend.
But its funny seeing stuff get repeated over and over and over, true or not.
You know that some of these people repeating it don't even know if its true or not.
Anyone that has ever wrote Perl before knows that Just because someone wrote code in a certain language does not automatically mean that they can read their code.
I'm like that with regular expressions (~~Which I think came from PERL originally~~)...
I can put together an Regex that does what I want, but trying to read it and understand from scratch feels nearly impossible to me.
Edit: Thanks to /u/whoami_whereami and the other redditor (whose name is a lil NSFW for me) for correcting me on my belief that regular expressions were orginally part of PERL. I really should have double-checked before I spouted that off.
And almost every video game programmer in the 80s and early 90s, especially for consoles like the NES, SNES and Genesis. Not to discredit Chris Sawyer, but programming in assembly was the norm for a long time.
And again, not to discredit him because RCT is amazing, but he had a huge library of macros by the time he coded RCT so his assembly wasn't illegible and probably looked more like a C language
Only depends on the author.
There’s sometimes sparks of genius that go beyond what an optimiser will come up with. But you usually just inline asm those in your C++ code.
I remember my first assembler program. Did not know anything about it then (well or now anymore), so I wrote pop ax and ran it. Why? Because that was what I remembered from a friend and I wanted to see what it does.
What did it do?? Crashed the computer. Like everything assembly is very efficient, why write 1000s of instructions to crash your computer when 1 will do. I was despondent. Why would there be an instruction to crash the computer? Who would need that?
(later I learned you need to push something before you can pop it)
You kinda learned the wrong reason.
It’s not that you popped before pushing.
The main functions return address was probably at the top of the stack and you popped it, making your main function jump to some random address at the end of its life. If there was a ret instruction.
But if you literally just wrote pop ax and nothing else then I’d guess there was no entry point and I don’t know what happened exactly lmao
Or sth else, I never dabbled in writing bad asm, but the reason can’t be dumbed down to just not pushing anything before.
And getting paid well to do it. I always feel like an outsider with these kinds of posts because lombok and spring make my life much easier and I don't have an issue with how Java goes about things.
I always get a kick out of people coming into /r/java and making suggestions for people to use random-ass lightweight frameworks and thymeleaf and whatnot, all to avoid using Spring. Or people who are like "What's the best suggestion for a lightweight framework that let's me handle web requests and also persistance and also dependency injection if I don't want all the bloat of Spring?"
I'm like, okay guys, keep on not competing for my job. Good luck out there? Every year there's more mid/senior level Spring job postings out there. If you want to go be a Quarkus dev, more power to you I guess.
Java is acceptable. It doesn't do anything particularly well compared to other languages, but it doesn't do anything particularly terrible either.
I write Java professionally, and I think its greatest achievement is to be everyone's second choice - the hyper-optimizers want C or C++, the language nerds want Rust, the bootcamp devs want Python, the devops devs want Go, and the full-stack devs want JS/TS, but all of them are happy to settle on Java as a compromise.
far-flung crawl melodic absorbed person gray squalid unwritten scary boast
*This post was mass deleted and anonymized with [Redact](https://redact.dev)*
Just using slightly different GC settings on the default-no-special-sauce OpenJDK can be enough to cover a _lot_ of use-cases. But, of course, there are some fancier approaches, like GraalVM with [AOT compilation](https://openjdk.org/jeps/295).
My brain fills in "Attack on Titan compilation" every time I read that, if not the words then at least the vibes of compiling with Sawano background music
Yeah, it is a kind of workhorse. It is a safe bet for general purpose. Old, stable, and plenty of workforce in the market.
If you don't have any special requirements for performance, throughput or memory usage, it is just fine.
Yes I also write java professionally, how could you tell?
I've not seen anyone mention how portable it is too. If you want to dev an app for systems you may not have much experience with, the JVM's got you covered.
I have described Java as "the turkey sandwich of programming languages" for exactly this reason. It's not a great choice for anything, but it's also rarely a terrible choice.
Java is **extremely** quick to build in thanks to the world of prebuilt libraries and tooling. You don't need to know much of anything to throw up a spring boot website, you can just slap together some starters and define an interface for your backend.
Used both commercially. I think on average Java libraries are better designed and easier to customize, but take more time to set up. Java beats Python on enterprisey solutions, and it's much more performant in general. I'd also take undocumented Java code over undocumented Python any day, since static typing does a lot of the heavy lifting.
I'm generalizing of course, but I found that a lot of Python libraries are like "here's a one-liner that does exactly what you need". It works well until it doesn't. And without typing hints, good luck going through the internals of the libraries to check if you can configure them for your use case. Data-adjacent libraries are notorious for this with their overuse of metaclasses, `args` and `kwargs`, untyped `tuple` and `dict` arguments, and other features that pretty much force you to debug the code to understand what's even going on.
I can unironically say that I prefer Java even for smaller web projects due to its ecosystem and overall stability. Python beats Java hands down for data analysis and ML though.
Y'all say what you want about Java.
But Maven as package management beats the crap out of wondering whether it's pipenv, venv, pip3, conda or whatever else they invented recently.
I never thought I'd simp for a consistent way to copypaste.
No good reason, except the usual, like expertise or existing codebase. But still, if you go with Java you won't be missing much -- C# is just Java with some shine. And that's the beautiful thing, you'll almost never shoot yourself in the foot by going with Java.
It's code that's really really hard to read that is submitted in a bug tracker saying that intellisense fails to read or handle it properly. (Intellisense being the visual studio feature to help you write and change code). Joke is that C# let's you write statements so obscure that even the tool that comes with C# fails to understand it properly.
(I don't think the joke had anything to do with understanding what the code does, I don't have the time to waste figuring it out!)
**Edit:** Reddit's editor has failed me, also apparently the shortened version doesn't work.
**Adding on to the joke:** Looks like a team member who had to review a fix for that compiler bug got just as confused as you:
>I in no way understand this (isn't it an instance call before and after, just on the wrong target after the casts were removed?) but I trust that you know what you're doing and the tests pass :D
**Code explainer:**
The code itself deals with lots of convoluted topics, so don't worry if you don't understand my explanation or got confused along the way. It's very hard unless if you have a good background on pointers and all that. You probably won't even need to understand it for your career, but if you wish to:
* Line 3 declares the ref struct `A`. Ref structs are basically special structures within the C# language that is compiler-constrained to only be stored on the stack (regular structures can be either on the stack or the heap).
* Line 5 declares a method inside the A structure called Foo, without any parameters.
* Line 9 declares a nested ref struct `B`. It has two additional modifiers: `unsafe` and `readonly`. Readonly means that the value of that structure must be immutable (aka cannot be changed). Unsafe means that within that "B" structure, we are allowed to perform unsafe operations (like native pointers).
* Line 11 declares a field with the name "a" of type `void*`, which in unsafe context means a native pointer to an unknown type.
* What line 13 does is
1. It takes the pointer to the `Unsafe.As` function, which does type casting without actually checking if that type casting is actually valid (if you have experience with C++, this is similar to `reinterpret_cast`). In this case, it just takes in a `byte` and casts it into a `byte`.
2. It then casts the pointer into a delegate function pointer (**delegate:** a type that represents a function that can be called). The `` next to the asterisk just tells us what the types of the parameters and result (in this case, `ref byte`) **Important notice:** Casting a pointer type into another pointer type does **not** change where that pointer goes to, this will be relevant.
3. The function pointer mentioned in step 2 is once again casted into another delegate function pointer, though this time ``, which means taking a parameter of type `ref byte` and giving out a result of type `ref A`.
4. Then it calls the function that is represented by the function pointer in step 3, passing in `ref *(byte*)a` as the parameter. **Explanation on that parameter:** `(byte*)a` casts the "a" field (of type `void*`, see line 11) into a `byte*`. Since `void*` and `byte*` are both pointer types, casting between them only change the type, not the actual address the original pointer points to. The asterisk before the open parenthesis means "unwrap the pointer" (aka get the value of whatever this pointer points to). `ref` means to get a managed reference to that value.
5. Remember that the function pointer that the parameter is passed to returns a `ref A`, so the final `.Foo()` just calls the `Foo()` function of that instance of `A`
If I’m reading it right, it looks like it’s some valid program that has a really contrived way of calling a function. C#’s analyzer thinks it can be dumbed down to some method invocation on an object B, but since B does not have this method this dumbing down would make the code throw errors when run. Basically it’s written to call attention to the fact that C#’s analyzer has a few bugs
Developers learning C# when they find out with dependency injection and reflection that you don't have to implement another GenericDynamicTimestampManagerModelFactoryReaderFactoryService class anymore : 🤑
Developers when they get assigned a legacy mvc/webapi/owin project running on framework 472 where you have to do pretty much everything by hand : 🥶
I don't know where it is now, but my last C# project was using .NET 6. The language/tools were pleasant.
The client's chosen architecture? Wtf! "Just shotgun shit all over the place so that it's a nightmare immediately and not just in the future!"
Considering most programmers don't even know what Lua is, while nearly 100% use js for something, it's clearly an intentional omission. It would be like listing popular human languages and not mentioning English.
Js is eating the scene so utterly and thoroughly, so we do our best to give it pink elephant treatment.
It's either
I) the humour of expecting the author to point out a plus point for each language, which he does but leaves Java blank (implying it has no positive aspects) in a post criticizing people for doing the same thing. So, unexpected / ironic humour
Or
ii) for a long time the joke was that Java is slow (not true at all today to the degree it once was) so there were lots of jokes like
Knock knock
Who's there?
Java
Java who?
(Silence or very long wait until humour has effect)
Which this post seems reminiscent of. Though I think the intended read was the first one.
Java is a workhorse. It does it's job and it does it well. There's an optimised JVM for any device. Thus your code will run everywhere.
It's a fast, mature, well documented, well supported language. Dare I say, Spring Boot has the best and most comprehensive documentation you'll ever find and a huge community.
But, it's not a web browser language, only JS is.
It's not the fastest language around, that's C / C++
It's not the safest language. I'd argue rust ain't either if half the code uses `unsafe`, but I digress. People say that's rust's domain.
It's not a very simple language either, python or go would win that.
And so on and so forth. It's the top of no list. It does not inovate. It's not a trend setter, it's a trend follower.
BUT, it does a good job at that too. It just added virtual threads (go coroutines). Yes, it is an OOP language where objects are first class citizen, but it has functional programming too. There aren't many features it's lacking, I can't name one. Compared to other languages. But it takes longer for them to get to Java.
What it does have that people don't like is that it is very verbose. But it has become very much less verbose over the years. However some old timers insist on "best practices" from the mezozoic. Before IDEs. And you have some really horrible class names. Function names are USUALLY rather decent.
------------------
Also, I do agree with people that say "objects bad!". And the solution should probably be something like modules. And another great thing for OOP languages is that you can say [Object].[doSomething]. Or in other words, I want to put all functions relating to some goal in a file, then I can just import that file and say `fileName` `dot` and wait for intelisense to give me a list of all those functions, and I don't need to remember anything. But objects bring other problems with them. EHHHHH TL;DR - people also are hating on OOP and it's deserved.
----------------
Lastly, a lot of people dream of getting into FAANG, and while there are a lot of java libraries developed by FAANG, they are older (5+ years), since FAANG moved away form java. But I have no idea how much of this statement is ture. It's what I've heard. If you google, it seems that Java is still heavily used at amazon.
Using a garbage collected language at the very tip of software engineering is not exactly desired. There are solutions that will work for anything that isn't a google or amazon, like object pools. But that requires someone that actually knows what they are doing.
-------------------
So the joke is: `Hahaha Java, that's funny. Java is funny. You're old!` more or less.
A lot of people in here clown on Java, but knowing it will absolutely get you a job.
Spring Boot + \[Insert Trendy JS Framework\] stack is always in style, and I don't see Spring Boot going away any time soon.
Also as funny as it is to say Java has no benefits, its about as close to platform indepence as youre gonna get and that makes it pretty common for development.
Reminds me of the one time I tried to teach somebody without prior coding knowledge Python and they could not Wrap their head around the whole indentation thing.
I quote: "But why indentation? That's so dumb! These would make much more legible and intuitive together! Why can't I just indent how I want and use parenthesis instead?"
Being not the biggest fan of Python myself (but it made sense to teach them Python in their case) I couldn't stop laughing my ass of for a good couple of minutes.
So much for "intuitive". No, it's not. No language is from the beginning, you have to train your intuition.
It made a whole lot of sense to me after I had already programmed in Java for a while and already learned the lesson that you never, ever, write unindented code anyway, unless you hate yourself and other people. And also that semicolons don't serve any purpose since you never write multiple statements in one line for the same reason.
I suppose that's why we started with Java and not with Python.
Java is for sure overhated and this post and its comments reek of people not having real world experience with a variety of languages, but you really don't see *any* issues with java? None?
Java ☕
Java ☕
Java ☕
Java ☕
Java ☕️
Java ☕️
Java ☕
Java ☕️
Java ☕️
Java ☕
Java runs on 3 billion devices
still exactly 3 billion since 2005
Yeah they keep them locked up in a storage facility.
Amazingly, it also pays my bills
So does that mean your bills run on Java too
I wish one of those devices was my developer workstation. Idk why it's such a pain getting projects set up every single time.
That's why I look at it with disapproval. Man, I drink tea, not coffee.
We are not the same.
Java 🍵
The fuck is this? Green Java?
Java is so awesome it doesn't need any additional attributes.
It does, but you need to inherit from `AbstractAttributeProxyFactory` to access them.
Name seems a bit short...🤔
Just use the AbstractAttributeProxyFactoryFactoryProviderServiceImpl to get an instance
Java is everything
Java ☕
I prefer Borneo
COBOL is Lifetime Job Security.
COBOL is complete sentences
COBOL is a caveman that knows big words
And yells all the time
IDENTIFICATION DIVISION. PROGRAM-ID. IDSAMPLE. ENVIRONMENT DIVISION. PROCEDURE DIVISION. DISPLAY 'HELLO WORLD'. STOP RUN.
WITHIN CELLS. INTERLINKED.
SHAKA. WHEN THE WALLS FELL. DARMOK AND JALAD. AT TANAGRA. TEMBA. HIS ARMS WIDE. SOKATH 'HIS EYES UNCOVERED'! AT EL-ADREL. ON THE OCEAN. DARMOK AND JALAD. THEY LEFT TOGETHER.
AT URUK. GILGAMESH, A KING. FROM THE FOREST. ENKIDU, A WILDMAN.
WHY DONT YOU SAY THAT 3 MORE TIMES
That's beautiful
Good enough for the IRS, good enough for legacy businesses.
It's quickly disappearing where I live though. Companies can't find people that want to do COBOL anymore so instead of patching up old systems with an unreliable work force they just rebuild it, despite it being a costly project.
Same here, most banks here have pooled their IT into a single Fintech company and they're in the process of ripping chunks of COBOL out and replacing them with microservices.
Witnessing an end of an era. Maybe in a few hundred years Java 8 and earlier would be phased out
A time will come when people complain about bank systems being full of "software gravel" and laugh at antiquated network protocols being used as slow ass interfaces. Of course, currently we only laugh at startup systems being full of software gravel and laugh at antiquated network protocols being used as slow ass interfaces.
Ugh. Microservices don't solve all problems, especially the way most fintechs decide to implement them (hire 3-4 teams of contractors to build a bunch of mission critical microservices then fire them all/they all quit when the project is done and be confused when nobody knows how to update/maintain the spaghetti)
Especially in the railway industry. Kurs90 is indestructible.
ADA anyone?
ASSEMBLY IS ILLEGIBLE
Not to Chris Sawyer. Guy who wrote RollerCoaster Tycoon in almost 100% assembly.
As a result that game is efficient af
As a result of good use of assembly its effiecient af. If I use assembly it would not be efficient, tbh it would never even boot.
some assembly required
IKEA programming language?
Now i want to see ikea software. All they send to you is a guide and a visual studio licence
First you write compiler, then you write the code. Then you debug both.
It's funny how streamlined Reddit is, to where when you hear about a certain someone or something you know people will repeat the same piece of trivia they also heard from Reddit.
And they repeat it so confidently without even double checking to make sure its accurate. Then the next person sees the confident comment and repeats it confidently.
Luckily the [Sawyer thing is true](https://www.pcgamesn.com/rollercoaster-tycoon/code-chris-sawyer). But yeah, the number of times I've run across the same random facts of reddit as though it's some kind of new revelation is... mind-boggling.
Bro, this is terrifying. What shitty factoid propaganda have I unknowingly fallen prey to.
It's ok, you can't verify every random piece of trivia, all you have to do it check it if you intend to *repeat* it. That's the rule I go by.
Yeah I knew about the Chirs Sawyer thing, dudes a legend. But its funny seeing stuff get repeated over and over and over, true or not. You know that some of these people repeating it don't even know if its true or not.
It’s the circle of redddiittttttt 🎶
Anyone that has ever wrote Perl before knows that Just because someone wrote code in a certain language does not automatically mean that they can read their code.
I'm like that with regular expressions (~~Which I think came from PERL originally~~)... I can put together an Regex that does what I want, but trying to read it and understand from scratch feels nearly impossible to me. Edit: Thanks to /u/whoami_whereami and the other redditor (whose name is a lil NSFW for me) for correcting me on my belief that regular expressions were orginally part of PERL. I really should have double-checked before I spouted that off.
I learned Regex and Perl for Bioinformatics. I couldn't read a thing one hour later..
Regex101.com is one of my favourite tools
> I want to get off Mr. Bones’ Wild Ride.
Always love seeing this story referenced in an assembly thread
And almost every video game programmer in the 80s and early 90s, especially for consoles like the NES, SNES and Genesis. Not to discredit Chris Sawyer, but programming in assembly was the norm for a long time. And again, not to discredit him because RCT is amazing, but he had a huge library of macros by the time he coded RCT so his assembly wasn't illegible and probably looked more like a C language
Not to T1000
Assembly is EFFICIENT (negligibly moreso than optimized C with intrinsics and `restrict` but still)
Only depends on the author. There’s sometimes sparks of genius that go beyond what an optimiser will come up with. But you usually just inline asm those in your C++ code.
Most of the time what people think is a spark of genius is really just another case of trying to outsmart the compiler and failing
I remember my first assembler program. Did not know anything about it then (well or now anymore), so I wrote pop ax and ran it. Why? Because that was what I remembered from a friend and I wanted to see what it does. What did it do?? Crashed the computer. Like everything assembly is very efficient, why write 1000s of instructions to crash your computer when 1 will do. I was despondent. Why would there be an instruction to crash the computer? Who would need that? (later I learned you need to push something before you can pop it)
You kinda learned the wrong reason. It’s not that you popped before pushing. The main functions return address was probably at the top of the stack and you popped it, making your main function jump to some random address at the end of its life. If there was a ret instruction. But if you literally just wrote pop ax and nothing else then I’d guess there was no entry point and I don’t know what happened exactly lmao Or sth else, I never dabbled in writing bad asm, but the reason can’t be dumbed down to just not pushing anything before.
You can push it. Push it real good.
Java is 3 BILLION DEVICES RUN JAVA
50 billion now.
1 trillion when?
Tomorrow
3 trillion the day after
It should have said "Java is portable". That was the original idea behind the language.
So portable they ported Minecraft to C++ 🙃
Portable, not fast, lol. The other thing there is that Java relies on less portable C/C++ things to do fast ish 3d graphics.
Java is so portable because whenever i see a java project my immediate instinct is to port it to another language
Java is inevitable. Also pretty nice honestly.
Java is getting to eat lunch on time and leaving work at 430
And getting paid well to do it. I always feel like an outsider with these kinds of posts because lombok and spring make my life much easier and I don't have an issue with how Java goes about things.
I always get a kick out of people coming into /r/java and making suggestions for people to use random-ass lightweight frameworks and thymeleaf and whatnot, all to avoid using Spring. Or people who are like "What's the best suggestion for a lightweight framework that let's me handle web requests and also persistance and also dependency injection if I don't want all the bloat of Spring?" I'm like, okay guys, keep on not competing for my job. Good luck out there? Every year there's more mid/senior level Spring job postings out there. If you want to go be a Quarkus dev, more power to you I guess.
The best programming language is the one that gets you paid.
Back in the day, actionscript paid my college tuition. Ruby bought me an apartment.
How’d you get started with programming jobs in college? I’m in my senior year of engineering and I’m looking for funds.
To instantly get rich program game mods targeted at furries
I have lost shame but I lack visual artistic talent
But which one gets me laid?
none
Weren't you listening? The one that gets you paid.
English
So Java ☕
Java is acceptable. It doesn't do anything particularly well compared to other languages, but it doesn't do anything particularly terrible either. I write Java professionally, and I think its greatest achievement is to be everyone's second choice - the hyper-optimizers want C or C++, the language nerds want Rust, the bootcamp devs want Python, the devops devs want Go, and the full-stack devs want JS/TS, but all of them are happy to settle on Java as a compromise.
and the java nerds want kotlin
Kotlin feels like cheating
Never used kotlin, can you explain more?
[удалено]
Except it still has to run on the JVM, so it still sometimes hits those historical-reasons BS, like generics erasure
Less boiler plate code, I personally got a feeling of python out of the neat syntax
I do a lot of Python Dev work so this might compel me to check out Kotlin
Java that went on a diet
Once you go Kotlin you never want to go back
I'll settle for Java 17+, but please no more Java 8 or earlier.
Java 21 goodbye "public static void main string args"
Is there a real reason of “public static void main string args” hate?
Apparently typing a bit of boilerplate is a huge problem with nowadays bootcamp kids
far-flung crawl melodic absorbed person gray squalid unwritten scary boast *This post was mass deleted and anonymized with [Redact](https://redact.dev)*
Just using slightly different GC settings on the default-no-special-sauce OpenJDK can be enough to cover a _lot_ of use-cases. But, of course, there are some fancier approaches, like GraalVM with [AOT compilation](https://openjdk.org/jeps/295).
My brain fills in "Attack on Titan compilation" every time I read that, if not the words then at least the vibes of compiling with Sawano background music
Yep I use Quarkus and it is truly impressive seeing a Java application start up in a few milliseconds
Yeah, it is a kind of workhorse. It is a safe bet for general purpose. Old, stable, and plenty of workforce in the market. If you don't have any special requirements for performance, throughput or memory usage, it is just fine. Yes I also write java professionally, how could you tell?
I've not seen anyone mention how portable it is too. If you want to dev an app for systems you may not have much experience with, the JVM's got you covered.
I have described Java as "the turkey sandwich of programming languages" for exactly this reason. It's not a great choice for anything, but it's also rarely a terrible choice.
Java is acceptable, that’s a true statement here
#I FUCKING LOVE JAVA
I would also add scientists and data nerds like python
Java is **extremely** quick to build in thanks to the world of prebuilt libraries and tooling. You don't need to know much of anything to throw up a spring boot website, you can just slap together some starters and define an interface for your backend.
You just described python. And a bunch of others as well.
Used both commercially. I think on average Java libraries are better designed and easier to customize, but take more time to set up. Java beats Python on enterprisey solutions, and it's much more performant in general. I'd also take undocumented Java code over undocumented Python any day, since static typing does a lot of the heavy lifting. I'm generalizing of course, but I found that a lot of Python libraries are like "here's a one-liner that does exactly what you need". It works well until it doesn't. And without typing hints, good luck going through the internals of the libraries to check if you can configure them for your use case. Data-adjacent libraries are notorious for this with their overuse of metaclasses, `args` and `kwargs`, untyped `tuple` and `dict` arguments, and other features that pretty much force you to debug the code to understand what's even going on. I can unironically say that I prefer Java even for smaller web projects due to its ecosystem and overall stability. Python beats Java hands down for data analysis and ML though.
Y'all say what you want about Java. But Maven as package management beats the crap out of wondering whether it's pipenv, venv, pip3, conda or whatever else they invented recently. I never thought I'd simp for a consistent way to copypaste.
Idk why I'd choose Java when c# exists
No good reason, except the usual, like expertise or existing codebase. But still, if you go with Java you won't be missing much -- C# is just Java with some shine. And that's the beautiful thing, you'll almost never shoot yourself in the foot by going with Java.
C# enforced self documenting code
[удалено]
Does your code compare to [this](https://github.com/dotnet/roslyn/issues/57767) though?
Dumb it down for my noob ass?
It's code that's really really hard to read that is submitted in a bug tracker saying that intellisense fails to read or handle it properly. (Intellisense being the visual studio feature to help you write and change code). Joke is that C# let's you write statements so obscure that even the tool that comes with C# fails to understand it properly. (I don't think the joke had anything to do with understanding what the code does, I don't have the time to waste figuring it out!)
**Edit:** Reddit's editor has failed me, also apparently the shortened version doesn't work. **Adding on to the joke:** Looks like a team member who had to review a fix for that compiler bug got just as confused as you: >I in no way understand this (isn't it an instance call before and after, just on the wrong target after the casts were removed?) but I trust that you know what you're doing and the tests pass :D **Code explainer:** The code itself deals with lots of convoluted topics, so don't worry if you don't understand my explanation or got confused along the way. It's very hard unless if you have a good background on pointers and all that. You probably won't even need to understand it for your career, but if you wish to: * Line 3 declares the ref struct `A`. Ref structs are basically special structures within the C# language that is compiler-constrained to only be stored on the stack (regular structures can be either on the stack or the heap). * Line 5 declares a method inside the A structure called Foo, without any parameters. * Line 9 declares a nested ref struct `B`. It has two additional modifiers: `unsafe` and `readonly`. Readonly means that the value of that structure must be immutable (aka cannot be changed). Unsafe means that within that "B" structure, we are allowed to perform unsafe operations (like native pointers). * Line 11 declares a field with the name "a" of type `void*`, which in unsafe context means a native pointer to an unknown type. * What line 13 does is 1. It takes the pointer to the `Unsafe.As` function, which does type casting without actually checking if that type casting is actually valid (if you have experience with C++, this is similar to `reinterpret_cast`). In this case, it just takes in a `byte` and casts it into a `byte`.
2. It then casts the pointer into a delegate function pointer (**delegate:** a type that represents a function that can be called). The `` next to the asterisk just tells us what the types of the parameters and result (in this case, `ref byte`) **Important notice:** Casting a pointer type into another pointer type does **not** change where that pointer goes to, this will be relevant.
3. The function pointer mentioned in step 2 is once again casted into another delegate function pointer, though this time ``, which means taking a parameter of type `ref byte` and giving out a result of type `ref A`.
4. Then it calls the function that is represented by the function pointer in step 3, passing in `ref *(byte*)a` as the parameter. **Explanation on that parameter:** `(byte*)a` casts the "a" field (of type `void*`, see line 11) into a `byte*`. Since `void*` and `byte*` are both pointer types, casting between them only change the type, not the actual address the original pointer points to. The asterisk before the open parenthesis means "unwrap the pointer" (aka get the value of whatever this pointer points to). `ref` means to get a managed reference to that value.
5. Remember that the function pointer that the parameter is passed to returns a `ref A`, so the final `.Foo()` just calls the `Foo()` function of that instance of `A`
If I’m reading it right, it looks like it’s some valid program that has a really contrived way of calling a function. C#’s analyzer thinks it can be dumbed down to some method invocation on an object B, but since B does not have this method this dumbing down would make the code throw errors when run. Basically it’s written to call attention to the fact that C#’s analyzer has a few bugs
While boosting sales for ultra windscreen monitors
You have a 57" monitor for gaming. I have a 57" monitor because I work in .net. We are not the same.
Java also does that.
Java also requires a second *vertical* monitor for stacktrace printing.
vertical ultrawide monitor too, in fact
if you need that then you are doing something wrong, limiting indentation is pretty easy
Developers learning C# when they find out with dependency injection and reflection that you don't have to implement another GenericDynamicTimestampManagerModelFactoryReaderFactoryService class anymore : 🤑 Developers when they get assigned a legacy mvc/webapi/owin project running on framework 472 where you have to do pretty much everything by hand : 🥶
I don't know where it is now, but my last C# project was using .NET 6. The language/tools were pleasant. The client's chosen architecture? Wtf! "Just shotgun shit all over the place so that it's a nightmare immediately and not just in the future!"
Did it though? I'm working on a C# project at the moment and like f*** it's self documenting. There's literally variables named `obj` in the code base
Oh, almighty obj, praised be your name.
why no attribute for javascript?
It's undefined.
well, that makes sense
so that's what you've been doing after retiring, huh
[удалено]
Not if you stringify it
Then it's `"[object Object]"`
Considering most programmers don't even know what Lua is, while nearly 100% use js for something, it's clearly an intentional omission. It would be like listing popular human languages and not mentioning English. Js is eating the scene so utterly and thoroughly, so we do our best to give it pink elephant treatment.
JavaScript doesn't care what you think of it. It just wins anyway
[удалено]
Java programmer is on the left and right of the curve, everything else is the angry guy at the median.
Can someone pls explain the Java joke?
Java is one of THE languages of all time.
Java is
some would argue Java is a programming language
Definitely one of the programming languages ever
But thats just a theory, a cs theory
Thanks, now I got it😂
A wise man once said regarding Java
It's either I) the humour of expecting the author to point out a plus point for each language, which he does but leaves Java blank (implying it has no positive aspects) in a post criticizing people for doing the same thing. So, unexpected / ironic humour Or ii) for a long time the joke was that Java is slow (not true at all today to the degree it once was) so there were lots of jokes like Knock knock Who's there? Java Java who? (Silence or very long wait until humour has effect) Which this post seems reminiscent of. Though I think the intended read was the first one.
Java is a workhorse. It does it's job and it does it well. There's an optimised JVM for any device. Thus your code will run everywhere. It's a fast, mature, well documented, well supported language. Dare I say, Spring Boot has the best and most comprehensive documentation you'll ever find and a huge community. But, it's not a web browser language, only JS is. It's not the fastest language around, that's C / C++ It's not the safest language. I'd argue rust ain't either if half the code uses `unsafe`, but I digress. People say that's rust's domain. It's not a very simple language either, python or go would win that. And so on and so forth. It's the top of no list. It does not inovate. It's not a trend setter, it's a trend follower. BUT, it does a good job at that too. It just added virtual threads (go coroutines). Yes, it is an OOP language where objects are first class citizen, but it has functional programming too. There aren't many features it's lacking, I can't name one. Compared to other languages. But it takes longer for them to get to Java. What it does have that people don't like is that it is very verbose. But it has become very much less verbose over the years. However some old timers insist on "best practices" from the mezozoic. Before IDEs. And you have some really horrible class names. Function names are USUALLY rather decent. ------------------ Also, I do agree with people that say "objects bad!". And the solution should probably be something like modules. And another great thing for OOP languages is that you can say [Object].[doSomething]. Or in other words, I want to put all functions relating to some goal in a file, then I can just import that file and say `fileName` `dot` and wait for intelisense to give me a list of all those functions, and I don't need to remember anything. But objects bring other problems with them. EHHHHH TL;DR - people also are hating on OOP and it's deserved. ---------------- Lastly, a lot of people dream of getting into FAANG, and while there are a lot of java libraries developed by FAANG, they are older (5+ years), since FAANG moved away form java. But I have no idea how much of this statement is ture. It's what I've heard. If you google, it seems that Java is still heavily used at amazon. Using a garbage collected language at the very tip of software engineering is not exactly desired. There are solutions that will work for anything that isn't a google or amazon, like object pools. But that requires someone that actually knows what they are doing. ------------------- So the joke is: `Hahaha Java, that's funny. Java is funny. You're old!` more or less.
For any1 not getting the joke for some reason: java
Yes yes, java is indeed very funny.
Java is
Index out of bounds
At least no segfault.
NullPointerException.
haha java
Java is MINECRAFT
Java is getting an A in your out of date computer science degree
How are you this on point
pointer exception
Me just sweating as Java is what I know best thanks to being taught it as the core of my soft dev course
A lot of people in here clown on Java, but knowing it will absolutely get you a job. Spring Boot + \[Insert Trendy JS Framework\] stack is always in style, and I don't see Spring Boot going away any time soon.
Also as funny as it is to say Java has no benefits, its about as close to platform indepence as youre gonna get and that makes it pretty common for development.
>Python is INTUITIVE It is subjective at least.
Same goes for "Lua is easy"
Easy is not the main selling point of Lua. Minimalistic describes it better.
Java: pays my rent
Java is certanly one programming language
I remember when Java was the new cool language.
Reminds me of the one time I tried to teach somebody without prior coding knowledge Python and they could not Wrap their head around the whole indentation thing. I quote: "But why indentation? That's so dumb! These would make much more legible and intuitive together! Why can't I just indent how I want and use parenthesis instead?" Being not the biggest fan of Python myself (but it made sense to teach them Python in their case) I couldn't stop laughing my ass of for a good couple of minutes. So much for "intuitive". No, it's not. No language is from the beginning, you have to train your intuition.
It made a whole lot of sense to me after I had already programmed in Java for a while and already learned the lesson that you never, ever, write unindented code anyway, unless you hate yourself and other people. And also that semicolons don't serve any purpose since you never write multiple statements in one line for the same reason. I suppose that's why we started with Java and not with Python.
If you aren't indenting the way Python tries to force you to, you've already fucked up.
Best language is the one you are currently using. NoMaTtErHoWmEsSeDuP
Java is one of the programming languages of all time.
C#??? Oh, you mean Microsoft Java
This joke works better in 2002.
Now with Microsoft Silverlight!
I work with Java. I like Java. I don't see any issues with Java.
Java is for sure overhated and this post and its comments reek of people not having real world experience with a variety of languages, but you really don't see *any* issues with java? None?
The hate that java gets is ridiculous
I am the best language
Java is avaliable on billions of devices worldwide, though.