Це відео не доступне.
Перепрошуємо.
Use Java For Everything
Вставка
- Опубліковано 10 лип 2024
- Recorded live on twitch, GET IN
Article
www.teamten.co...
By: x.com/lkesteloot
My Stream
/ theprimeagen
Best Way To Support Me
Become a backend engineer. Its my favorite site
boot.dev/?prom...
This is also the best way to support me is to support yourself becoming a better backend engineer.
MY MAIN YT CHANNEL: Has well edited engineering videos
/ theprimeagen
Discord
/ discord
Have something for me to read or react to?: / theprimeagenreact
Kinesis Advantage 360: bit.ly/Prime-K...
Get production ready SQLite with Turso: turso.tech/dee...
As a kid I watched skate vids to get fired up to go skate, now I watch prime vids to get fired up to go to work
Same. Lol
For reals. I hear him get all pumped and I’m like “LFG!!” 🤘🎸
Are you me?
I was just thinking of this
Yup we’re living the same life
A decade ago being 2014 physically hurts me and I'm not even old
26yo here and I feel ya
23 yo here and i feel ya. Last time i remember 1 decade ago was 2004
I‘m 23 and I feel so old already
nice try grandpa
99% will say they aren’t even old. It sneaks up on you
Java no longer being used today is one of Prime's wildest takes the past few months, lmao.
Java today is actually good and has a worse rep than it deserves (probably old coders remembering the dark days, just like PHP). All its missing now is reified generics/C# templates and it would be golden. The ecosystem puts almost any other language into the dumpster (maybe not js/ts in terms of volume but personally I feel the quality is way worse).
@@Tom-jy3innulls and .Equals() method is also a problem
Yeah, I feel like he is half joking, half blocking out some Groovy Java trauma. Java still has its quirks, but it's a great language and has a solid foothold in the industry, even if it doesn't mix much with the frontend/functional crowd. I've personally really gotten an appreciation for Groovy, I wish you could write Java like that and have the same native run times.
@@Tom-jy3in Reified Generics are coming, it's just taking a long time for god knows why
@@theshermantanker7043 It's a huge refactor of the entire VM + you have to keep backcompat (including with proprietary class files). I hope they do it this decade lol.
interview for junior c++ developer:
interviewer: what is your favorite language?
me: cmake
interviewer: ( ͠° ͟ʖ ͡°)
what lead me to rust and ts is my hatred towards (c)make
There are other alternatives nowadays. You can even use Zig's toolchain to compile c/c++ apps
my favourite language is cmen
The interviewer is a fan of autotools and m4/libtool ?
better design stuff from scratch than to import stuff with cmake
"Stop using bash once you get to arrays." That explains how we ended up with a 70K line bash system at a previous job. The system was older than bash arrays.
I can see how it became a previous job o_o
It's easier to port a shell than porting a shell script.
Now it's use React for everything.
The "library" that forces its way into the entire program, changing how you write the language.
Bruh
@@TJackson736 *framework
We use flutter❤❤❤
So basically instead of Java... JavaScript?
As an unapologetic Java enjoyer I'm ready for this video. ⚔️💀
I thought i was the only one that likes java 😂
@@gintoki_sakata__ I used to be a java hater and now that the language has gotten half decent I am a certified java tolerator.
Love the Java and the JVM. But nowadays when in a Java project, I find myself pulling some Kotlin in for the new code. 🫶
@@EpicNickshow did they change it? Last time I used it was in like 2015 and I wanted to jump out the window
@@tongpoo8985 it caught up to many features C# introduced after it surpassed Java like switch expressions, type based pattern matching with instanceof, record classes, var and local final variables (something C# actually is missing still, still no local readonly), ok-ish lambdas, etc.
Java still never made the "breaking" change of adding reified generics which is why I am still a tolerator and not an enjoyer.
Me, an enterprise software person: you guys *don't* use Java?
Java 6 is the most enterprise version. You’re not fully enterprise if you’re using a newer version.
@@almostprofessionalrecords6651 true and real
@@almostprofessionalrecords6651Java 21 or bust
We're on Java 8 😆
We have mostly 8 and newer stuff in 11. The biggest issue for me is that about half of the 8 is actually groovy/grails and I do not like it.
For a histogram use the worlds most popular database and programming language: Excel.
Excel is the most successful functional programming language
excel has terrible plotting capabilities. 20 f*ing years! and until recently they didn't have capability to create new functions
but they have a giant 3d letters feature, so it's fine...
just like ms word has almost no bibliography management, terrible picture placement tools, sh*t paragraph styling system, but has a giant 3d letters effect.
@@Daniel_Zhu_a6fword art is more important than functionality!
@@Daniel_Zhu_a6fMust be sad when you don’t know how to work an application but blame the application for being on the right hand side of the bell curve.
@@o0Donuts0o the fact that i've consistently found that writing a python script is a faster and simpler solution than using an application that allegedly simplifies data manipulation, should tell you a lot about that application.
if word had fine citation capabilities i we wouldn't have to use zotero/mendelei/endnote. and if word had normal formatting tools (good chapter numbering, picture embedding etc), latex would have probably gone extinct.
First minute I’m like, I use the back of my power drill to hammer in wall anchors. Not because it’s best, but because the hammer is downstairs and I’m not.
yo im stealing this analogy
"If statements are UNREADABLE SPAGHETTI!", cry the clean coders, who use 23 different files spanning 5 layers of abstraction for the same functionality as a 6-line If statement.
It depends bro, for instance let’s say I wanted to determine an angle to turn something along a radius and I had sensors around the object to determine let’s say light intensity… why would I use if statements to step into the direction in a limited and bloated way when I can make a function to normalize and determine a vector based on the optimal direction derived by the light gradient cast upon all sensors… it’s kind of like looping over data one by one instead of using a hash map…
@@BlueDippylooping over data is faster and simpler than a hashmap when N is small. You're right, it depends.
@@colemanroberts1102 darn right
@@colemanroberts1102 And running your for loops in reverse is faster in javascript but nobody cares about that optimization either
I hate their irrational hatred towards gotos as well. I think they're just autistic if they can't read code like a book. Procedural code is literally step by step description of what we want to achieve, you can't get closer to pseudocode than procedural.
Java is a really supreme language. Once they can figure out how to decrease start up times using Spring Boot, its going to be a huge game changer. Otherwise Java 21 already includes a lot of impressive features that reduce verbosity, improve virtual threads as well as functional programming.
I use Java only in Quarkus framework. It has excellent startup times when compiled using GraalVM.
@@gruntaxeman3740 Interesting!! how large is the application you’re working on and how mature is the Quarkus framework? Spring Boot still seems to have the edge in terms of features. Maybe that has changed or is in the process of changing?
There are a few options.
AoT compile, or AppCDS are probably the best ones.
@@rsKayiira
I'm not using it in current projects but I really want to use it more. In past I did one small project and it was pleasure to use, and there is tons of features. All bells and whistles are found from extensions. I found it mature as it is based on open source libraries that implements Java standards but it also has Vert.x and GraalVM.
Most of the backend code I wrote currently is for NestJS for various reasons but if I don't have any reason to use some other framework, I'm sure I would pick Quarkus. Tooling, features and performance are so good and philosophy it has is to follow standards.
I know Spring and used that too but it kind of have "homemade" feeling around it. Spring boot was my Java stack before Quarkus appeared.
@@gruntaxeman3740 you can run spring on graal vm
3 Billion Devices Run Java
3 bilions gbs of ram wasted :D
@@ooijaz6063 I can tell you from experience that you are underestimating the wasted ram by a factor of ten at least..
Could 3 billion devices be wrong?
How many of these are DVD players?
And three quarters of them are in landfill
I started my programming journey in 2007 with de-obfuscated RuneScape clients and writing a custom server , which was all Java back then. It'll always have a special place in my heart. ❤️
Saaame! The first language I picked up was Java just because I wanted to build a RSPS for fun. That was around 2010. What great times ❤️
I miss Java for Android apps
Same, but I hated Java. I liked that the community platform which is still kind of around was all wrapped in Pascal and interfaced with Pascalscript. Dealing with sniffing all the glue was ironically less of a headache than the convoluted build system of just java, so I liked working on that side of things. I never released scripts only libraries because I myself was only botting because I liked the programming. I spent way more time writing code and debugging than ever botting lol
do you think java is still worth learning?
@@22ROM Java is still pretty widely used by many companies. Particularly as the native language of Android and Oracle software.
If you want to work for Google on Android or another company that mainly uses Java, or if you are very interested in projects using Java, then yeah absolutely.
It depends on your goals and what you want to do. If you are new to programming entirely I would say start with something like LUA or Python, whatever ecosphere interests you, LUA is big in game modding and application scripting(like nvim), Python has a package for everything and you can quickly make useful tools and programs for anything you can think of.
Unreal engine uses C++ for game scripting.
Unity uses C# for game scripting.
Google uses C/C++, Java, Go, Python.
Meta/Facebook uses react, c++. Java, python.
Amazon uses typescript, c/c++, python
And so on.
Has it really been that Java devs are the real full-stack devs all along?
Java has always been strong in the backend. In my current project we even do the frontend in Java using Vaadin. 😆
Sip some Java and it goes straight to the backend
@@HyperionStudiosDE Sweet lord, do people still use Vaadin? oO
Define "real"
@@PhilipAlexanderHassialis It is such an emotional roller-coaster that we will never get rid of it
Java isn't terrible as a language. The problem is that everyone is so bored with it that they can't just write plain Java, they have to get clever with functional or async, make custom wrappers for dependencies or even reinvent basic stuff like ORMs and web frameworks. It's so bad that every single Java client I've had their coding style has been so radically different that practically no skills transfer from one to the other. This can even be said for much of the standard library which has to pander to three decades of programming tastes and whims.
stream().sorted().filter().distinct.findFirst()
functional😂😂
It's not a horrible language, it's a HORRIBLE runtime. Write code today, next year when you try to run it again on the "current" JRE it won't run. Utter trash. Esp when compared with Go where you can compile code from a decade ago on the current version and it runs perfectly.
@@ZacCrawforth what are you even talking about, the JVM is the peak of forwards compatibility, the only place where this breaks is when you include ASM magic but rarely if ever you'd have to deal with this
@@ZacCrawforth still better than languages like python where every minor version has a breaking change
@@ZacCrawforthbackward compatibility is one of the main reasons java is used widely.
Java is actually my favorite language because to me it's the easiest to read. I really don't like how a lot of newer languages try their best to have as few of characters as possible. People always give me crap about it takes to long to write but I just use an IDE and it types most of that for me now what I do do a lot is reading other peoples code.
2024 And I use Java for everything, let's goooooooo
This reminds me of when I was starting out in martial arts. Everyone was saying that their Kung Fu or Art was the best, but I realized that it wasn't the art that kicked ass. It was the artist. If you got good with a particular skill, guess what? You were good at using that particular skill to do just about anything, because you'd already learned the corner cases and work arounds and how to shore up its' weaknesses.
So, java sucks
I didn't "get" unit testing. Because it felt like I was testing for things that were obvious.
And then I realised that 1. That's still very valuable.
Especially on bigger projects
2. It helps you realise when your code is linked badly when you can't unit test
3. It's helps when refactoring or changing business rules to know initial intentions
Also dopamine, 100% test success is always a nice dopamine boost.
Java is alright... I massively prefer C# over it, but Java gets stuff done you know, can do a lot of things well and be pretty efficient.
Funny, I have the exact opposite reaction. Whenever I have to write C#, I want to blow my own head off. Bad libraries, bad documentation, lots of "magic" features that are hard to track / debug, only so-so portability, constant API replacements, often objectively worse "upgrades" to APIs, etc, etc, etc.
Java may lack the big breasted bimbo sex appeal of C#'s innumerable "cool" features, but it's full of mature smarts that make it way more attractive to me. 😉
@@thewiirocks using "big breasted bimbo sex appeal" to describe a language is crazy and I love it
@@thewiirocks So Java is a milf?
Java is a lot better than c# because everything works.
"Class has been compiled by a more recent version of the Java Environment (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0." - #yeahright ;)
I'd love to know more about Prime's decisions of when to use "the right language for the job". Because in almost all of enterprise and corporate development I've been involved in (from the very, very small to the very large), a language is picked and then that's what we use for a product/application. Unless you do a micro service, which is either never going to happen, or your name will very soon be "mud" because you just cost everyone a shit load of extra maintenance effort.
And lo, Prime did speake unto his lowly flock thus: "No one will ever contribute". And the people did hear the words he spoke. And the people did murmur in agreement, for they saw that it was true.
This is the word of the code.
‘ Praise be to code ‘
Screw the right tool for the job. I use R for everything
You Rascal.
Unfathomably based.
Gimme a sec, need to swallow my breakfast again.
I have never before felt this incomparable disgusted by 1 line of comment. plz stop
What an absolute menace.
I doubt Rollercoaster Tycoon had unit tests.
How do you know?
@@krux02iykyk
@@krux02 I was written in assembly. 😎
Transport Tycoon was the same. People do no realize it but both games were solely written by Chris Sawyer. Transport Tycoon was released in 1994 for DOS so it is 16bit binary. It has its own rendering 2D engine and windows-like UI that honestly worked better then Windows 3.11 at that time.
Man, I miss those early day tycoon games. Also early day maxis stuff. SimCity/SimAnt/SimFarm.
My childhood right there... Along with Stars!
Java is too intense for me.
I've been in the pipeline queue for ages.
I'm hungry
Scala was a prime example of a language being used for everything: Scala - JVM, Scalanative like C++ and ScalaJS.
Huh? I had no idea these things existed. Now I want to learn Scala, if I'm not going to have to use JVM!
From what I've seen, Scala's type system will be right up my alley.
Funny, Kotlin also has the exact same 3 backends as well
Scala seems awesome until you realize, hey, I have been learning the language for a year and still haven't finished. The LANGUAGE.
@@nandoflorestan that’s funny. I think some complexities come from frameworks and ways of expressing your ideas like FP. In the end it makes you a better programmer in other languages cause you are exposed to so many ideas.
Have picked Java instead of Python for performance but you are annoyed with java verbose type declarations? Just use Kotlin - best of both worlds - very nice, expressive, concise syntax with Strong Typing and performance from Java(bonus if you are already know Java you will learn Kotlin in hours, 100% compatibility with Java).
I’m not a dev but my little bro that works for big corpo says they are starting new things in Kotlin now.
I wish we had a language that was Kotlin but with Groovy syntax. Certain ways Kotlin defines things just doesn't mesh well with my thinking, especially since it's such a departure from Java's syntax, such as using "fun" for declaring functions and methods. Why not just do like Groovy and just define them with parantheses after a method name?
@@Yous0147just put in the effort to learn something for once in your life.
So you are the guy who doesn't like to have fun...
Kotlin has been pointless since like Java 11
Talk about today's Java instead of yesterday's Java. UA-camrs like Stefan Mischook talk about 2000's Java, since they did not see the latest language version or don't even know how apps are developed today with it. And newbies just see "public static void main" arguments, today it is auto-generated in a Spring Boot project same with Angular project structure.
I've never had the chance to work with today's Java, because the company I work for (and from what I've gathered, most company) are still running yesterday's Java, or more realistically 10 years ago's Java (still running Java 8, released in 2014)
@@KyleDavis328 You can either get well paid, stay in comfort zone or change job and that again elsewhere. Depends on what you want.
Never got what was wrong with `public static void main(String args[])`, it tells you exactly what it is. What you think you're gonna need most methods to be public static? If so you didn't even do an effort in understanding the basics of the language. And then `void main(String args[])` is literally the same in any other statically-typed language.
Like yeah ok "haha long line" but the core of the language doesn't really make it much more verbose than the average contemporary language. It's mostly shitty base types/standard library that makes it look like trash out of the box imo.
@@leeroyjenkins0 thing is that the people who feel that having to write "function" rather than "fn", is a violation of their human rights, are also the most vocal.
@@richardclark9535 wdym it's an immense violation of my human rights, how dare they make me type more
Scala was the one language that gave me feeling of - when it runs it runs correctly. No other language not even Java which was my go-to language for more than decade. BTW - Java has changed a lot and still evolving at rate faster than new and old languages. It has all new concurrency primitives (green threads, actors etc), functional aspects (f as first class citizen, match statement case classes etc). So article's main point - Use Java for everything is still valid and in fact good practical suggestion. Today, we have more options for many different use-cases (go, rust, zig etc) but Java being go-to language still holds true. Many design choices Java had (and having when implementing new features) - hold still true and its the only true scalable language - large programs (LOC), performance/scalability covered (multi-core era), backward compatibility.. take any programming metric Java would fare decent if not in top 5. Often cited verbosity as bad feature hardly matters because of decade old matured IDES (which BTW dynamic languages can never get to sophistication level of Java).
Java is so good that it has its own eco-system of child languages that run on JVM. Javascript was part of Java from JDK 1.5 (2006ish - Rhino). Graal Project from Oracle has not offered way to run multiple languages in the same runtime concurrently.
My own take - Choice of Javascript as VM inside browser was wrong one. It should have been Java. (Java had applets going for it). This would have made Java truely English language of the programming and would have saved lot burn to man many programmers.
True that. It was also advertised as such by Oderski. It’s a shame it didn’t get widespread adoption
It should've been Java, it should've been Java all along...
Lowkey Java has had a renaissance. Past Java 11 or so, it's actually gotten pretty nice. It's still verbose, but that's not the worst thing :shrug:
1:13 there are some video games that use Flash (Yes, that Flash) for in-game UI. For example, Fallout 4 and Borderlands series.
Dude, that's crazy! I thought you meant like older video games.
@@KvapuJanjalia now, that is really scary.
Hi Mr. Parmesan
Thanks for the video, good as always
15:00 Sure Foo x = new Foo() is just 3 useless characters.
But that won't hold up if you need a new FooFactoryAdapterDongleFactoryBuilderBuilder
Java can be written without crazy abstractions as well unless you need to pull in some library that cultivates this caricature approaches you mention. And even then you can encapsulate this into some internal class. But I agree this huge amount of abstraction is really hard to get into and wastes time and obscures things.
I'd argue that's not the language, that's architectural patterns independent of Java. No one is forcing you to design your code in such a way.
A good IDE will offer you to complete the name after 5 characters at most.
Something missing from the video is that languages that claim to let you "Get started quickly" or do "Rapid Application Development" tend towards being harder to maintain in the long run. This has been true since the days when WYSIWYG was new and people talked about language generations. They really do let you go fast at first, but then they become a weight that you have to carry with you everywhere.
💯
Python requires more careful planning in the long-run, but it doesn't mean it can't do the job.
You can build 2D games, websites, networks, automation blocks, apps with Python.
Of course, Python is though destined for small to medium scope.
Java, especially with Spring ist still massively in use. Also Java-classes can be replaced with Kotlin.
The solutions today are endless if you just personally dislike physical contact with your keyboard. You could create (or some dozens already have) an autohotkey script using word detection to write your favorite Python function into Java's verbosity. It would take some time to dream up all the shortcuts you might need, of course. There is of course now AI to contend with. Python etc. might be faster to type, but AI can do your boilerplate. It can probably even interpret the Python code you just typed into a Java IDE (haven't tried this). If you're super scared of AI privacy, use the AI to write your AHK word detection or w/e instead.
"Just pick the right tool for the job" mercilessly mocked in the beginning, and unironically espoused a third of the way in. Masterful.
JustPickTheRightToolForTheJob-agen
@@ty.davis3HammerANailWithAShoe-agen
I think in the beginning he moreso mocked what choices people actually made when they wanted the "right choice"
Java is underrated
> Undocumented Python programs are horrendously difficult to maintain
I've recently started to learn a bit of Nix. It's so hard to properly understand something that requires a virtual PhD and has no static typing. It's just hard to rely on conventions.
I've been saying this to people too. Started with Python, then got into Java, then a tiny bit of C and Rust, then using Python again recently. Not having static typing is so crazy to me and hard to track what's going on in any mid sized to large application. I try to treat Python like a much nicer bash when bash doesn't cut it and treat it mostly just for scripting and easy things like jobs/pipelines.
"REFACTOR LATER".
Yes!
In almost 25 years in enterprise, I've not met a situation where refactoring later was the wrong choice. And any time an optimisation was made earlier a refactor generally needed to change it.
Solve for now.
The right tool is C.
UI? C
Engines? C
Subsystems? C
'but you need JS for web'. No, you don't. The web was better without the js idiocy of the last decade.
This!🍀
Except that engines are all written in C++, not C
@@theshermantanker7043 That's not the case at all my friend.
Some of the very best and most stable ones are written in C.
And what about the most stable and secure operating system kernels, like BSD and Linux?
The answer is C and not C++. And there are good reasons for that.
Segfaults? C
@@iXPilot Skill issues?
1:30 I think you missed out on a C. S. Lewis quotation here....
"The first qualification for judging any piece of workmanship from a corkscrew to a cathedral is to know what it is-what it was intended to do and how it is meant to be used. After that has been discovered the temperance reformer may decide that the corkscrew was made for a bad purpose, and the communist may think the same about the cathedral. But such questions come later. The first thing is to understand the object before you: as long as you think the corkscrew was meant for opening tins or the cathedral for entertaining tourists you can say nothing to the purpose about them." - Preface to Paradise Lost
I feel like Lua is the most obvious embedded language for things that aren't browser engines.
Why dont browsers use Lua.
Seriously that language is just used in everything. I think torch used to be a lua library until python fags got mad and ported it over to python.
I would much rather use lua over python. I started off with Lua cus of roblox so i might be biased, but the sheer simplicity of that language makes it nice.
I cannot believe seasoned software engineers discuss "python programming". Python is just a scripting tool with powerful libraries. It is used far much beyond the scope it was designed for (just like javascript). Actually it's a tool to allow powerful scripting available for non-programmers.
I read a lot of Lawrence's articles. My favorite is "Write code top-down", which I've been doing ever since.
the side quest to make a "this nuts joke" is one of many reasons I'm subscribed
If I have to make a histogram I’m going to bust out the TI-83
In the UK on July 5, 1948 the NHS was created. Within a week, there were reports of it being “on its last legs” or “about to go under”. Seventy-six years later it appears to be here still, different to how it started, but still here and still the same headlines about it being about to go under. Feels the same about Java, known even SME’s use spring boot projects for mission critical stuff.
Me: Assembly
The interviewer: 😳 what?
Me: which one?
the main complaints for java were verbosity and startup/runtime overhead
both of which are entirely solved with kotlin... want to do something in the relm of low level (like zig/rust) go kotlin native...
want to do actually typesafe javascript? -> kotlin with targetting js,
want wasm? sure you can do that too,
want to do everything? web/native/server and whatever... go kotlin multiplatform...
jetbrains will absolutely dominate programming language and tooling world in ~10 years... they are fuckin smart about it, and no one absolutely no one is doing anything to even be remotely competitive.
Its great, its just Gradle and everything around Kotlin that sucks (package management and stuff).
@@bobderbraumeister6919 it will get solved, i dont like gradle either, but its such a small problem compared to having one language to share code in all platforms i don't really care about that downside... we have to mess with builds so rarely that its irrelevant.
Having misread your nickname as "kremlin" and then reading about domination gave me a chuckle
@@bobderbraumeister6919 what about gradle sucks? (Genuine question).
I didnt like it at first, but the more I use it, the less I'm bothered by it.
So much so, that nowadays I prefer gradle over maven
@@lengors7327 most problems with gradle boil down to them using groovy so you have no completion when working with plugins, you are in js developer mode, copy pasting shit until it works, instead of working with the api of the plugins. Also many issues boil down to "upgrade to newer version or lower version to make it work"... backwards compatability being broken etc... its not consistent
Ada. That's the other language where once it compiles, it probably runs right.
Bro not even lying i use Java for everything
Java for maximum job security... And job dissatisfaction and maintenance exhaustion.
I feel like PHP beats Java in those departments
I started programming when i was 10. I first learned Java, (for Minecraft, obviously) then C++ (for Arduino, obviously) then Python (i fucking hate it so much but i use it because libraries). I know a ton of other languages, but I prefer java for everything. If there's a good library in java, I use it, so I dint die waiting for my code to run before it checks syntax.
Im 25.
It’s amazing how we share a common backstory. I also started programming 10 years ago in Java for Minecraft, mods - plugs - etc... Funny enough, also transitioned onto C++ for Arduino (around 7 years ago). At this point, I’m also quite good at swift, python, kotlin, php, javascript (including typescript) and more.
Java is my favourite. Python is my goto for scripting. I only use C/C++ when necessary (ie. Arduino/ESP/PIC), and other languages based on the platform I’m building for.
I’m 23, currently running a startup.
Honestly, I'm glad I started with windows batchscript & java.
Ew windows
I only say “depends on what I’m doing” because my favorite languages are Python and C. If Python had an alternative to front-end JS frameworks, I would never touch JS again
Htmx implied?
@@leeroyjenkins0 Serverside rendering is usually a bad idea ... I don't want to pay for the CPU cycles (and the horros of maintaining state and sessions) of displaying stuff at client computers. I want to offload as much work as possible onto clients actually.
@@dominikvonlavante6113 depends what you're doing I guess, probably not ideal (perf-wise, which isn't necessarily only factor) in most cases if you're doing frequent updates no. But if you don't want to use JS there you go.
Unless you want to have a python interpreter in JS, which sounds wonderfully awful. But who knows with wasm 🤔
My problem with Java is that in my experience despite all the improvements in recent versions, we're all stuck writing Java 8 (or 11 if you're lucky) at most corp jobs.
I bet modern java is nice, but if I wanted to use modern java it'd have to be in my free time, and at that point I'll write rust
0:48 The language you ... rather your team is most familiar with is often the right language for the job as that is a massive factor in deciding the language. Especially if there are not enough detriments to using it.
For personal projects I will just use the stack and language that best fits the task at hand. If that means learning a new language that is what I will do. In the context of running a business and working with other developers having everything written in different languages just for the sake of doing it in the "perfect language" is rarely something where the benefits outweigh the detriments.
6:33 But python isn't statically typed ... it is strongly typed ... right im out on this one.
@@sacredgeometry maybe he means mypy
@@TJackson736 Maybe.
This was my take for Python / Airflow. I could learn it in a month after having not touched python for a decade. In 6 months I was proficient. Onboarding the rest of my team took ~6 weeks. Migrating ~150 ETL jobs from Talend (java based gui etl tool) made everything easier to read and more transparent.
@@KeeganDoomFire11 I am skeptical that that had anything to do with python and I would argue its just an argument for refactoring.
Your content really does get me hype to work. You have such great energy
My (controversial) argument about Tests: the biggest value of writing them is that they force you to write testable code
To the man with only a hammer, every problem appears to be a nail. Expand your toolkit
I had to build servers for ad tracking. The old php backend was able to handle 30 Mbit/s of incoming traffic per server. cpu on the befiest server we could by from our hoster was at max with php. The new backend rewritten in go and optimised with running profiling in production easily saturated 1 gbit/s with moderate resource utilisation.
I used to do gamedev in Java and be in the same community from where Minecraft originated. Java is not that terrible, you can do a lot of stuff with it.
But now, I would prefer doing everything in Rust and TypeScript. The DX is unmatched.
Ew typescript. It's just javascript with useless types.
Rust is good, although the moment you need to go a little bit deeper, it gets so fucking crazy.
Personally i have come to prefer easier and more "stupid" languages like lua or go
@@no_name4796 TS is great. React is an obvious choice, and if you combine it with tRPC is superb. You won't be able to avoid webdev anyway, and TS>JS obviously.
In C/C++, if-else hinders the generation of jump tables since you can evaluate any expression. Switch, on the other hand, forces you to evaluate a single type that is easy to generate a table. This might not be true if the compiler can reason about the if-else statements, but it's a rare case (if the expression is trivial), This might be true for the other languages, but it's true for most of the compiled languages.
and you can use constexpr to switch on strings :).
I love the article because I just came back to Java last year after almost 10 years and I can't agree more.
Just write everything in Java, it's just not worth the effort to do it in other languages.
If I really need something I can't do good enough in Java, I do it C or hell in ASM even
what about writing in the language you like, and only writing the part in the necessary language when you hit the wall?
8:26 never mind java is that what's left of Kermit wrapped around you microphone stand?
Why would you have an emotional connection with a language? Is he sad when he is not working with his favorite? "I am most familiar with language X" is a good answer, and should tell the interviewer what he wants.
The only thing worse than maintaining undocumented python code is trying to read java code written by a Java developer… Java devs tend to know so many extra language tricks they will make a calculator program look like it was written by a nasa engineer.
(To be clear, most java code doesn’t need many comments, but people who only program in java write horrendous code)
Undocumented python is redundant, there is no documented python code. We just abuse the all-mighty "grep"
wow he talked about C# without making a spitting sound. Looks like some sort of personal growth.
Kotlin or Java or Both are great to work with
> If you need fast string processing
Perl is knocking on the door
The correct answer to the language question is "depends on the task. I use C# for game dev, Go for web backends, JS for pure web front ends, Dart and sometimes C# or Go for cross-platform front ends, and Python for building chat pipelines into docs for all those other languages."
11 years of writing groovy, hello
Hi 🥵
I am starting a new job writing groovy in 2 weeks, this is where all the tech jobs are going!!!
"I just choose the right language for job". I effectively said this for tools in general with my interview with ThePrimeagen but I did caveat it with you need to know the alternatives. If you don't know the alternatives, you can NEVER say it is the best tool for the job because you only have one option. It is by definition the worst choice too because it's the only choice.
And when it comes to programming languages, I am one of those weirdos who is a polyglot who knows literally 100s of programming languages because that's kind of what I do for a living. So knowing "the best language" in that case is because I know the alternatives; most people don't.
Knowing about 100s of languages is not knowing 100s of languages.
@@gerciusthat Ginger Bill fella on which comment you've made a remark unironically designs and writes the languages, so he actually can know this amount
@@Mglunafh What kind of depth of knowledge are we talking about, writing "Hello, World!"? I do not see, how is it possible to be proficient with 100s of languages unless you have eidetic memory or similar abilities.
@@gercius you must've misunderstood me. By "Writes the languages" I meant "writes the compilers for languages", not the "writes some programs on languages". At this point I'd assume that for being efficient in this endeavour one should consider diving into various languages on a routine basis and sniff out some intricate details for better understanding of the formal language theory behind the features and technical details implementation-wise.
If that's a language barrier, then yeah sorry, I'm not a native speaker
@@Mglunafh Thanks for clarifying. It makes more sense.
I think the main takeaway from this video for me is, stop obsessing about what language to learn for a personal project, and just go with what I know. Getting the job done will give me an experience and make me a better programmer, which at some point down the road I may apply to learning and using other languages.
I've written a python script to get the coordinates from more than 6 thousand clients right out of google maps, no API. Just mouse and keyboard controls (pyautogui). No classes, no compiling. Less than 50 lines of code.
Go ahead and do this with java.
for everyone raging about react, or js embedding into c++ / games etc, you have to understand soemthing: its not JS people want, and its certainly not React specifically, its html+css+js. Its the easiest and simultaneously the most powerful ui toolkit, and that is why so many native developers even are reaching for it... IMO what we need is an embeddable dom rendering engine with bindings for a better language directly like potentially Dart... Imagine writing native components in dart that just worked in the browser, and could be embedded into native applications. That could be done, but the browser manufacturers and w3c don't do it because they are already all in on js.
Many people, me included, are still hoping for WASM to get access to the DOM the same way JS has. This would allow any languge that can compile to WASM to also render on the DOM directly. Right now you can do it in Rust in a roundabout way with automatically binding to JS bindings you can call from WASM, but it's slower and has limitations that makes it wonkier to use.
"the most powerful ui toolkit", really?
@@vitalyl1327 yes "Its the easiest and simultaneously the most powerful ui toolkit". The alternatives are full on pixel shaders (too difficult/time consuming for uis) or native ui toolkits (too limited for achieving super custom designs). Am I missing something?
@@nomadtrails there is a whole range of alternatives. From the approach similar to Dear I'm GUI to things like Tk (which is insanely versatile and vastly underrated).
@@vitalyl1327 ImGui pitch literally says it is not designed for UI for end users. For Tk, I just checked out the 'modern' tkdocs website, and took a peek at the button widget, and man... you have to be kidding me. My guess is that you have never programmed a UI with web tech. I would recommend checking out svelte. Then revisit Tk, and tell me which is simultaneously more powerful and more easy.
To be honest, I'm a C# dev and I try to use it whenever possible. My time is most valuable and I see little point in wasting it by deliberately choosing a language I'm unfamiliar with. On the other hand, if there are existing libraries in Python, I'm not gonna be an idiot and try to parse Python into C# - even though it's possible.
I think you should know 1-2 languages well and use others when you absolutely have to or really makes sense in terms of time effort.
Same, everything I do can be done with C#, outside of web development (no, I'm not gonna use Blazor) so I learned Svelte+Typescript because I don't hate myself enough to use React
Well, I think one would do well to learn different paradigms.. write something semi-substantial in languages like Haskell, Ocaml, Lisp, Prolog.. maybe Erlang/Elixir and Rust. Even if you don't end up writing your stuff in those languages they teach valuable lessons about pros and cons of very different approaches to problems... and you can borrow some ideas from them.
Or.. you can just write code and be happy.
For C# devs it makes sense to know a medium bit of C/C++ and PInvoke because then you can use C-Style DLLs.
It doesn't have to be fancy C++ because what DLLs expose is data structures with a fixed layout that can be recreated in other languages, so it's structs, it's always structs and pointers to structs.
I use Java for 90% of everything. I have builds from Java for J2ME, Android, J2SE (SWT and Swing), native, and HTML5. I even have the ability to do Flash, Applets, and JNLP outputs if they came back. Nearly all of the other 10% is Javascript for simple webpages. Oddly my WSYWIG editor is JSON output from a Javascript tool called GDevelop.
The article is still correct.
Java is orders of magnitude faster then js/python and that's why it is suitable for a large set of problems that require more performance. Not just because the author is good at it.
The same could be said about Go.
Java is dated, yes. It has some poor defaults too. But what people forget is that the JVM is a freakin' amazing piece of software, and it doesn't force you in any way to use Java as a language. Use Kotlin, target the JVM, be happy.
Modern Java isn't so bad, I'd argue it's better than C#, give Java 21 a try.
We have the same problem when we talk about proper domain boundaries, people complain that writing mappers is boring and tedious and it is but it's also very easy to test and maintain that code. And it's your job.
I know JavaScript, Java, Go and Rust. The one time where performance did matter and I recommended Go because it's very fast and has a small footprint I was told by a Senior we always write Java lets write this also in Spring Boot :)
I have been playing with Zig for about 6 months. Other than it changing so damned much it has been real fun. Well maybe it is so much fun because it is so new. I agree with your quick diagram but I do not really find C all that tough (done dev in it). Rust is REALLY hard to get productive in. Go is literally super easy (and probably almost as fun as Python to write). Zig is almost as safe as Rust, almost as fast as C, almost as easy as Go. Just kind of in that magic perfect spot.
Java for everything is a 2004 Sun Micro take. 2014 was already too late.
I feel like java got better lately. java 8 was okay, since 11 and now espeically with stuff that got new in 17 and is expected to be in newer LTS versions, java is kind of decent.
other languages are still more fun by themselves. but combining javas improvements lately with the vast ecosystem of usually well proven, production ready libraries in the ecosystem make it a powerful tool.
I agree, Java is THE way to go forward.
One of the best things i ever did as a developer is pick a "New Language of the Year." I would focus on a specific aspect or paradigm of programming and pick a language to use for random tooling, or as a (bad) solution for many problems that weren't mission critical.
I've now got many tools in my toolbox that all have specific features that make them good for a specific task. Need math, i got R. Need purely functional and types i have Haskell. Scripts with quick and dirty UI, tcl/tk. Meta programming, Scheme/Racket. Been a programmer for 20+ years so i have a dozen more.
Java? I put that s*** on everything.
I personally don't think its bad to use React/Svelte/Vue for UI in games, because it's easy to make something good without learning some random library or making one, but best for it would be js/ts engine that is only for this purpose and removes all non-sense things that you don't need.
10:46 people who say python is slow are those who fail to do things the pythonatic way. Python is good at string processing but if you compile your regex inside the loop it's your fault.
People write python like they're not thinking about the underlying code at all then complain it's not as fast as C. Yeah it's not, but at least try to leverage the way the language is built over C in very predictable and understandable ways.
"Is there a way I can make this go through optimised paths within cpython instead of doing generic manipulation in the context of the interpreter" is the question to ask, and exactly what "pythonic" means in the end.
My current workplace banned Agile Methodology in 2002, the CEO built the company from the ground up as an engineer in the 80s and hated agile the very moment he encountered it for the first time.
rip
**Quiche eating intensifies**
Java is great because it's the ideal middle ground.
It's statically typed at compile time, but dynamic at run time.
I feel attacked when he said someone will make an app just to print graphs. Long story short, during college I need to print out a graph (can't remember the specifics). I should've used something like RStudio to do it but the end result was not something I envisioned, I was a beginner at RStudio. On the other hand, I have had to build a website with chart before (I think it was using Chart JS). So I just remade the some of the backend, build a database, inserted all my data, and grab the end result image from it. It was stupid but it took me only 1-2 hours because I just needed to change a few things rather than having to write a whole R queries.
I’m realizing something more and more: When people complain about languages, they are most often complaining about how most people use the language and not the language itself.
Well, the design choices of a language often affect how people tend to use it.
I used to use PHP for everything. Now I use Rust for everything. I'm fully away that neither is/was the right tool for everything. Someone will always tell you that whatever you're using isn't the right tool. Especially C# and Java guys seem to have a nose-in-the-sky-feeling and are very fond of telling you that their favorite tool is "superior".
Then those are really bad C# and Java programmers. I am personally big fan of Java/Kotlin/Springboot/Quarkus, but I am aware that there are different skillsets in teams and different tasks and many ways to skin a cat.
@@dominikvonlavante6113 Thank you for not being one of those. The thing I find most infuriating is the dismissive attitude. "PHP is just a web programming language". "Rust is just a systems programming language". And Java/C# being promoted in a more general way "well, it's enterprise" (whatever that means to you), implying that you are not a serious person for not using the same tools as they do.
Now it’s use Rust for everything
Exactly. Rust is just a much better C++, so if you never needed C++ then you don’t need Rust.
I agree that Go is fast enough in almost all cases!
Using one language for everything is handdicaping youself, for front end react, js, angular, etc, for back end c#, C++, and sometimes java.
Being slow is not primarily b/c of the language choice, the root cause is the different mindset of the developer who chose ruby/php/... over C#/Java/... It is a mindset which prefers speed of development over good engineering. The same way as "enterprise" developers gave a bad reputation to java, but java was never that bad, its just that those "enterprise projects" were so horrible.
Nah. Java is really like that. Very opinionated towards enterprise
I'm reading this comment after making a change to the Ruby system that was terribly slow in one spot. The guy did split the search function into several classes to add abstraction, but in doing so, he created an N+1 problem. Also when rendering the list, each element included a select menu containing around 5,000 items. No wonder it was running like crap.
On the other hand there are places in the codebase that would be at least 10x faster if it was written in Go, there is no way around this.
nah java is just bad, if you really prefer java like C# is superior to java in every way. mindset of choosing php/ ruby / python (i know you wanted to put python in there) so I guess engineers using python forks in the largest websites in the world with most users like youtube, spotify, instagram, etc are bad? and engineers at enterprises are better than them?
If someone codes in Java, they are simply a bad programmer or not a smart person in general.