Hacker News new | past | comments | ask | show | jobs | submit login

Why didn't you port it to Kotlin instead? Much better language than Go in every aspect and also comes with an auto-conversion tool.



Kotlin can already use existing Java library, I presume.

The goal for the company was to enable an estimated 1 million of Go programmers to use RavenDB database.

This is Java AND Go (and Python and Node) scenario, not Java OR Go.


Single executables yet without JVM?

Static typing?

Simplified toolchain without make/maven files?

My big one after swearing off of Java was never needing an IDE to do even the simplest things - is Kotlin useable without an IDE?


> Static typing?

Not only not an advantage, but kotlin does have that so I don't understand what you were going for here.


> Single executables yet without JVM?

Kotlin native is coming along, uber jars are popular so only other departments is the JRE, Docker can bundle that

> Static typing?

Yes with good type inference and "null safety"

> Simplified toolchain without make/maven files?

You can use the compiler directly? But for anything serious a build tool is pretty essential for any language? At least you have options

> My big one after swearing off of Java was never needing an IDE to do even the simplest things - is Kotlin useable without an IDE?

You could write it with a Morse Code Keyer if you really wanted


> Single executables yet without JVM?

Yes. The JVM is Java's biggest downside, so why would you want to just move to a different language on the same overly complex (to put it mildly) runtime.


I'd argue it's one of javas strengths, its fast and other than increasing max heap size tuning is only necessary for the hardcore FAANG etc What's complex about installing openjdk-<version>jdk from your package manager? Your app normally bundles library dependencies so no virtual environment fuckery like python Ruby et.al


I can assure you that you don’t need to be a FAANG for tuning to be necessary...


What's your basis for this rather contrary opinion?


In order to understand the issues you might have with an application you need to have a decent understanding of its runtime environment. From the hardware on up. The JVM adds a huge new runtime that you need to understand how it works and its possible failure points in order to be able to effectively develop software and diagnose issues. So, IMO, it goes against the basic precept of software engineering. That of taking a problem and breaking it down and simplifying it in order to develop a well understood, maintainable systems. You don't simplify something by adding complexity.


> You don't simplify something by adding complexity.

Yes, you do, it's called abstraction.

For example, C compiler adds complexity when compared with assembler, but that lets you significantly simplify your code.

And without abstraction, modern software development would not be possible.

Of course too much abstraction can be a problem (which is why some people still program in assembly), but that does not mean JVM will always be the wrong solution.


It's a matter of delegating responsibility. The stack is too deep and too complex for any one person to understand. I have a good understanding of the Java language and the JVM. At some point I have to trust the JVM engineers to get things right on all the platforms the JVM runs on.

I have a rudimentary understanding of the Linux and BSD kernels and how they can impact certain parts of my applications. But I have zero knowledge of Windows. But I don't need to, because the JVM engineers do, and things Just Work (TM).

I'm not smart enough to learn the intricacies of every platform, and thankfully I don't need to be.

I guess you have similar issues with POSIX and the abstractions offered by high level programming languages? I assume you write some CPU specific assembly and understand all the possible failure modes of that hardware?


It's a client library for a database server. They were contracted by RavenDB to build a Go client library, the existing Java client is not a bad starting point for that as the languages are fairly similar.

Kotlin can just use the Java client directly.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: