Why do people use Python when this exists?
>syntactically feels like Python
>no Java verbosity or NullPointerExceptions
>great tooling
>can be compiled with Graal to native executables
Why do people use Python when this exists?
>syntactically feels like Python
>no Java verbosity or NullPointerExceptions
>great tooling
>can be compiled with Graal to native executables
It's good, but the competition between backend languages is fierce. Syntax is alright, bit too sugar-y but enjoyable. Null safety is an incredible feature. I still prefer Java thoughever.
why java over it?
What does it do that python doesn't?
Far better performance, no global lock that would prevent proper multithreading, designed around static types from the start instead of static types getting added late, and easy access to the Java ecosystem.
I see you are new here, let me clear up some things for ya.
Assembly - God language
C, Zig - Demigod languages
Python - language for high schoolers
Lua - language for toddlers
Java - bullshit
Kotlin - like java, but slightly better
IQfy is a C board.
>Lua - language for toddlers
True
>Java - bullshit
You're underestimating Java, it has a great selection of libraries
No thanks i'll stick to C#
Maybe the license is a problem.
I honestly have no idea what kotlin is aside from being reminded that it exists from java here and there
Kotlin is fricking stupid. It doesn't have much over Java (actually Java has proper pattern matching unlike Kotlin) and is significantly less powerful than Scala. Also with Kotlin you're bound to IntelliJ.
>It doesn't have much over Java
It's true, but I still with that we had ? and ?: in Java. It's to me the two things that are missing the most.
The nullability system alone is a big reason to use Kotlin. It lets you clearly mark the references that can be null, instead of relying on docs or your memory. At the same time, it's very ergonomic.
You also have the property system, operator overloading, default arguments, and named arguments. It's just a lot nicer than Java, and more similar to Python.
You can just use Java libraries.
>and more similar to Python
It's not like Python at all wtf especially because of its build systems. If there's anything that could qualify being like Python it's Scala. And you can't really code Kotlin without IntelliJ which is even more cancerous.
No I meant syntactically. With all these properties, default arguments, and keyword arguments. Also no semicolons.
I used this to write a bot farm for oldschool runescape and make F2P look bad with bots everywhere and make Jagex lose money by making people who try out the game simply ragequit because they cannot even kill a chicken without some bot running up, killing the chicken first and saying "Hop worlds bro, I was here first".
Python has a very large community, tons of monetary support from large tech companies, and libraries for everything you could ever think of. The better question is why would anyone use anything else?
non-invisible compilation step
Kotlin has not been better than Java in years. It used to be but with modern Java there is very few reasons to use Kotlin. It's not worth it. If you want a Python replacement, ask yourself why and pick something better.
as a language kotlin is quite nice. maybe one of the best.
but the baggage of the java ecosystem is just not worth it to me.
Java ecosystem access is the only reson Kotlin is viable, what are you talking about? Are you referring to Kotlin being a JVM based language with GC?
The JVM is nice but it really fricking needs value types.
it's been "coming soon" for 10 years now lmao
Yes it's quite annoying. I think value types are way more important than virtual threads. They should have focused on releasing value types first.
Yeah. I've been really wanting it for years. It would make Java a lot more attractive for certain type of performance intensive tasks.
The annoying thing is that right now you get way too much overhead on some abstractions. I think it's especially bad when you have simple classes with a few fields like say a class for complex numbers (just two fields of doubles). Using that loses you a lot of performance compared to just using two doubles, and similarly if you want to do computations with a lot of complex numbers you're much better off using two double[] to define them than one Compex[].
Why are they having such a hard time implementing this? I don't get it.
It will be nice when it arrives but I think people don't understand what slows down Java programs. Most server based Java software will not benefit a huge amount from value types. If your writing CPU intensive programs, you would be using native arrays either way.
>I think people don't understand what slows down Java programs.
Boxing is a huge problem and it doesn't only occur in CPU intensive operations. Everytime you're dealing with streams you're dealing with boxing which puts pressure on the GC and fricks with performance and memory overhead.
Yes, but as I said, in IO heavy programs, the overhead from streams is dwarfed by the network stack code. In CPU heavy programs you have a small % of the code that runs 99% of the time which you would want to optimise with native arrays either way. Even if boxing has overhead, in your average software, if you were to remove the overhead completely it would not have more than 1% effect on the runtime. ( Im talking about non-trivial programs, in trivial programs it probably does not matter either way. ). This is based on my experience profiling different types of large Java programs
dunno what people want
just jerk off about being closer to C
>muh value types
>muh enterprise efficiency
>proceeds to use 10 gb of spring boot
>muh java videogames
>proceeds to do O(e^n) iteration on something O(log n)
>cucked by GC anyways
A lot of people want value types to cut down on memory use and GC pressure. Most Java programs are slow as frick if you restrict the amount of RAM the JVM can hog.
the syntax of Kotlin is quite pleasant and that could exist independent of the JVM and java ecosystem.
and yes the java ecosystem is an asset for Kotlin, because you can use all of that stuff. but also a lot of that stuff is insanely cobbled together shit from years of delusional Java Enterprise Spring Beans insanity.
the JVM is quite a technical marvel in some aspects, but the code ecosystem on top of it is a fricking monument to human delusion quite often.
Kotlin is a pain in the ass to build, even for something like "hello, world". I like the idea of a less-boilerplate-infested JVM language and I much prefer the standard library of the jdk to that of python, but running python is so much easier, if you're just now getting into the language. The java family is so tightly integrated with an IDE for managing the developer experience that many people, both seasoned developers and novices, when they see
> java tutorial part 1: download a several gig ide which uses more RAM than a web browser and also maven/gradle which take more time and resources to build something than rust cargo
vs
> python tutorial part 1: download this little python interpreter and edit the source code with whatever you want. To run just `python script.py`
Kotlin becomes a very hard sell.
The idea of Graal sounds great. I'd really enjoy being able to deploy any of the JVM languages in a more-or-less native fashion with good startup times and lower memory usage. I gave it a shot not that long ago and it took a solid 20 seconds and a few hundred megs of ram to build literally "hello, world". Using 24 cores. I then went to build a small swing application, which failed after around 90 seconds, spitting out a stack trace so obtuse and cryptic that c++ would envy.
For most tasks, there exist less painful alternatives, with the sole exception of android development.
>I then went to build a small swing application
Swing doesn't work well with Graal, JavaFX does though. See pic related. Obviously this is a small example but I've also AOT compiled complex JavaFX (actually ScalaFX in my case) applications which I can't share because that would doxx me.
>The annoying thing is that right now you get way too much overhead on some abstractions.
100% agree and I HATE how JVM people try to downplay this issue. It truly triggers me.
Surprised some bumfrick hipster made a perfectly functional Clojure Interpreter using Oracle's own tech, but JShell is some stagnant project that hasn't gone anywhere in 12 years and Groovy is a comatose project that people don't care about even if this tech could help to make Jenkins way less cancer. There's Scala CLI now at least. Also JBang, but never tried it.
Python dev here.
I've actually tried to take Scala pill once. I love the language, but my problem is that I extensively rely on libraries that either don't exist in JVM land, or are way too different for convenience. I am mostly talking about Polars, Requests, BS4 and Typer.
Holy frick, it is a much better experience, though. Immutability everywhere, .pipe method for each class and @main decorator instead of dunders galore alone make it much prettier, not to mention that it can be compiled to an executable.
Have you checked Li Haoyi's libraries? He's basically all about making Scala Python-like https://github.com/com-lihaoyi
Some of his libraries are part of the scala toolkit https://docs.scala-lang.org/toolkit/introduction.html
Until there's a way fot Kotlin to do FFI with Fortran and C and someone bothers to port libraries using that, you won't see any adoption from the Python clout
https://en.wikipedia.org/wiki/Java_Native_Interface
https://en.wikipedia.org/wiki/Java_Native_Access
Because I'm not A android dev?
>import
/thread
I use Fantom when I want to write Java without writing Java
kotlin is nice, but spring boot is fricking cancer
>Jeetbrains
Please don't denigrate Jetbrains. Their IDEs are great.
Is it true it doesn't have pattern matching?
Yes
(nothim)
Into the trash it goes.