[-] lysdexic@programming.dev 1 points 2 years ago

Kotlin is IMO easier and less error prone

I'm no Kotlin expert, but I think Kotlin has a far more extensive core language and requires a heavier cognitive load to get up and running than Java.

It might have better developer experience and be less error-prone, but that comes at a price of admission that newbies have to pay.

1
26
1
1
1
15
1

TL;DR

At last the experiment is over, and CMake 3.28 has official support for C++ 20 named modules enabled without having to set the CMAKE_EXPERIMENTAL_CXX_MODULE_CMAKE_API variable.

1
1
1
Node v21.0.0 (nodejs.org)
submitted 2 years ago* (last edited 2 years ago) by lysdexic@programming.dev to c/nodejs@programming.dev
1
1
[-] lysdexic@programming.dev 1 points 3 years ago* (last edited 3 years ago)

I don’t see why we don’t have a build system where you simply have to give a project folder with the name of source file with the main() function, give the name of the output executable, the external dependecies to be called with gcc, and that’s it.

But we do. Check out CMake.

https://cmake.org/examples/

Originally CMake was a higher level abstraction over make, and generated makefiles based from the high-level project description. Nowadays it supports other build automation tools, such as Ninja, Visual Studio, Xcode, etc.

[-] lysdexic@programming.dev 1 points 3 years ago

I can also tell you without any shred of doubt, that there are many Amazon teams that absolutely hate Java

Irrelevant. What matters is what the company uses, not what some guy's personal taste.

Amazon standardizes on Java. There is no way around this fact.

[-] lysdexic@programming.dev 1 points 3 years ago* (last edited 3 years ago)

Well, in Rust, it’s a sum-type

The discussion is on to use monads in C++, and not on why is C++ different than Rust.

I repeat: you do not need sum types to implement a Result monad in C++.

[-] lysdexic@programming.dev 1 points 3 years ago

I can tell you without any shred of doubt that Amazon still standardizes on Java-based frameworks, including Spring, and has absolutely no plans to switch. Each Amazon team is able to pick its own tech stack, but the ones that do not use Java or a JDK-based stack are extremely rare, and more than not are working on specialized applications such as mobile development.

[-] lysdexic@programming.dev 1 points 3 years ago

The only reason Java is remotely tolerable today is because of influences from those ‘fad’ languages.

This might be your personal opinion but it is not a very informed one, or in touch with reality. Java frameworks such as Spring still dominate the backend ecosystem and some FANGs still standardize their backend development around it.

[-] lysdexic@programming.dev 1 points 3 years ago* (last edited 3 years ago)

Unless I’m misreading, you brought monads into it.

You're misreading it. What do you think a 'Result' type is?

[-] lysdexic@programming.dev 1 points 3 years ago* (last edited 3 years ago)

compiler support

That remark was on sum types, not monads. You do not need "compiler support" to have Result or neither monads in C++. There are already plenty of libraries that implement those. I use them in some of my projects. No compiler support needed.

As I said, sum types are not required for Return or Either monads. At best, they are convenient.

[-] lysdexic@programming.dev 1 points 3 years ago

So, you still have to go through all the dependencies, vulnerabilities and incompatibilities.

That's the point. There is no free lunch. Yet, you can live with stable, pinned versions and only upgrade the ones you really need to, and that means exercise your personal criteria instead of mindlessly upgrade everything just because there was a bump in a version number somewhere in an upstream dependency.

Yes, you can now kind of control the timing,

Timing, extent, scope, and impact. That's the point.

but it’s still unacceptable in my opinion, that you have to spend so much time just to not be an active danger to everyone.

You only spend the time you decide to spend. There are already vulnerability scanners that pinpoint exactly which versions need to be updated, and do that automatically for you. Mindlessly opening the floodgate to each and every change is by definition idiocy and a liability.

[-] lysdexic@programming.dev 1 points 3 years ago* (last edited 3 years ago)

I'm not sure you understand that what a union does or does not do is completely irrelevant and besides the point. Python's protocols add support for structural subtyping, and enable both runtime and build-time type checks without requiring major code changes. Don't you understand what that means?

view more: ‹ prev next ›

lysdexic

0 post score
0 comment score
joined 3 years ago
MODERATOR OF