Remix.run Logo
andrewstuart 6 hours ago

We need Anders to make one final language.

A MINIMAL memory safe language. The less it has the better.

Rust without the crazy town complexity.

The distilled wisdom from C# and Delphi and TypeScript.

A programming language that has less instead of more.

bonesss 2 hours ago | parent | next [-]

On the .Net VM you’re describing F#, mostly by virtue of being based on OCaml.

Contrasted with TypeScript and C#, F# is smaller, more expressive, stricter, with mature pattern matching and type resolution baked in from the ground up. F# was years ahead of the major languages on what are increasingly looking like ‘the basics’ around ADTs and immutability in modern distributed computing. OCaml and F# capture the linguistic high points of VB, Delphi, and C# with a broad spectrum of OOP(-lite) approaches, and have led those languages by decades on functional constructs that result in meaningfully tighter code. With the benefit of hindsight some approaches clearly map better to cloud computing and system verification.

F# also sits parallel to lots of living C#, objectively we see ‘less is more’. Less code per line, fewer lines per solution, terser and more LLM-efficient language. Error rates and refactoring costs are also meaningfully better IME, but harder to quantify in general terms.

christophilus 33 minutes ago | parent [-]

It’s a great language. I just wish its compilation speed matched that of OCaml.

blackoil 5 hours ago | parent | prev | next [-]

I want something that will bring productivity of Delphi to Web. May be I am old now, but I could have built applications in a weekend in Access or Visual Basic that will take weeks now in latest web stack.

aloha2436 5 hours ago | parent | prev | next [-]

> Rust without the crazy town complexity.

To be clear, the language has a GC then?

tester756 4 hours ago | parent | prev | next [-]

C# is way to go then

tonyedgecombe 4 hours ago | parent | prev | next [-]

>We need Anders to make one final language.

I do feel like there is a gap for a modern compiled, functional and garbage collected language.

Go isn't it because it lacks the functional constructs.

C# and Java aren't it because they depend on a VM.

Rust isn't it because of its difficult memory management.

Swift isn't it because it is so tied to Apple and their platforms.

rednb 3 hours ago | parent | next [-]

What you are looking for is called F#. You get native interop with C# and access to all .NET/C# libraries as a bonus. We use it as a daily driver for a complex B2B2C cloud platform.

3 hours ago | parent | next [-]
[deleted]
Sammi 2 hours ago | parent | prev [-]

Does it not run in a VM?

christophilus 14 minutes ago | parent | next [-]

It can be compiled, but that’s not the use case it was originally designed around, so it’s not quite as first class an experience as with Go or Rust.

rednb 30 minutes ago | parent | prev [-]

Yes you are right, it does not properly support NativeAOT yet.

But it isn't a need for most use cases, unless you want to do mobile development and meet app store policies. But even then, mature F# frameworks like Fable transpile your F# code to React & Cie.

kryptiskt 4 hours ago | parent | prev | next [-]

C# doesn't depend on a VM these days when it is AOT compiled. Same for Java, though C# is rather more user friendly in how it goes about it.

3 hours ago | parent [-]
[deleted]
jorams 2 hours ago | parent | prev | next [-]

There are plenty of languages in that niche you could be using. OCaml, Haskell, F#...

fpsvogel 42 minutes ago | parent | prev | next [-]

Roc might be that language one day. Not yet because it's pre-0.1.

EddieRingle 3 hours ago | parent | prev [-]

Kotlin has a LLVM backend, among others.

Sharlin 3 hours ago | parent | prev | next [-]

The minimal memory-safe language is Go. Turns out it's too minimal for most.

andrewstuart 2 hours ago | parent [-]

It’s not memory safe.

LarsKrimi 6 hours ago | parent | prev | next [-]

Oberon 07?

gucci-on-fleek 5 hours ago | parent | prev | next [-]

What about Lua? The language is very minimal, memory safe, and has Pascal-like syntax just like Delphi.

ptx 4 hours ago | parent | next [-]

Lua's variables being global by default seems somewhat error-prone.

gucci-on-fleek 4 hours ago | parent [-]

Agreed, but the recently-released v5.5 fixes that [0], and it's fairly easy to fix this in older versions with the following snippet

  setmetatable(_G, { __newindex = false, __index = false })
[0]: https://www.lua.org/manual/5.5/manual.html#2.2
andrewstuart 2 hours ago | parent | prev [-]

verything is an off by one error in Lua.

gucci-on-fleek 2 hours ago | parent [-]

Or conversely, everything is an off-by-one error in every other language :)

pmkary an hour ago | parent | prev | next [-]

Yeah exactly.

appsoftware 5 hours ago | parent | prev | next [-]

What would you take out of C# etc?

littlecranky67 5 hours ago | parent [-]

(not OP) I would take out mostly historic stuff, that is in there for backwards compat, that has been superseeded. But this could be achieved using linters.

vaylian 6 hours ago | parent | prev [-]

Sounds like golang to me

steve1977 4 hours ago | parent | next [-]

Considering they used Go for the native compiler he might actually agree with you.

andrewstuart 6 hours ago | parent | prev [-]

Without the features I identified,yes, you’re right!