Programming thread

Am I exceptional or does Rust have a pretty steep learning curve? My first language was Java and my workplace uses mostly Python and R. Maybe it's because I don't have a C/C++ background, but Rust seems unusually difficult compared to the most common "modern" languages.
Rust is a very modern language, but unlike the other three you mention, it's a systems language. If you need a systems language (say, you're writing a high performance 3d game engine), Java, Python and R are out of the question. If you want memory safety, so is C. If you want both, expect a steep learning curve.

There's not much to choose from though. Linux and its core userland is written in C. Most game engines are written in C++. Rust has a few tiny inroads. Oh, and Jonathan Blow, the guy behind Braid, thinks idiomatic C isn't fast enough for games, and has come up with his own language.
 
Last edited:
For your average game developer, probably not. But it's also a bad idea for most people to write a game like the Witness from scratch. Jonathan Blow seems like a bright guy, and I'd be interested in what he comes up with, even if he never uses it.
Placing bets on a lisp
 
  • Like
Reactions: Marvin
Placing bets on a lisp
Nah. No dynamic typing. No garbage collection. "Jai is not trying to be as high-level as Java or C#. It is better described as trying to be a better C."

I don't get the impression that he knows shit about Lisp:

"The main relatively-heavily-used offenders are Lisp and shell scripts of various kinds. (And I think "oops, you made a typo, you don't find out until you try to run it and happen to ht that branch of code, oops that did not happen for three months, who knows what other bombs are sitting there waiting" is one of the primary factors in Lisp not gaining wider adoption."

From here
 
Placing bets on a lisp
It's C (Sans C syntax for cool points I guess) but with some interesting ideas.
The whole "Execute code mid compilation" thing is really interesting and I wanna see if there's some obscure C compiler out there that supports this as a macro.

Although the Jai compiler hasn't been released since it's announcement 5 years ago so my bets are on vapourware.

Edit: For those of you who embed your assets in the executable (Like I do) this is a complete gamechanger
 
Last edited:
Nah. No dynamic typing. No garbage collection. "Jai is not trying to be as high-level as Java or C#. It is better described as trying to be a better C."

I don't get the impression that he knows shit about Lisp:

"The main relatively-heavily-used offenders are Lisp and shell scripts of various kinds. (And I think "oops, you made a typo, you don't find out until you try to run it and happen to ht that branch of code, oops that did not happen for three months, who knows what other bombs are sitting there waiting" is one of the primary factors in Lisp not gaining wider adoption."

From here
I'm just a Smug Lisp Weenie who would have liked to see GOOL make a comeback.
It's not that I don't see what he means, but I bet you could make a typed lisp if you really cared about a compiler which checks for you shooting yourself in the foot. Something akin to Clojure's type hints comes to mind.
The whole "Execute code mid compilation" thing is really interesting and I wanna see if there's some obscure C compiler out there that supports this as a macro.
That's why I like lisp macros, because I can trivially jump between code and data at compile time to generate optimal code for different use cases. Just need to make my metaprogramatical monster readable. I've been playing with this very problem in the past few days
 
I'm just a Smug Lisp Weenie who would have liked to see GOOL make a comeback.
It's not that I don't see what he means, but I bet you could make a typed lisp if you really cared about a compiler which checks for you shooting yourself in the foot. Something akin to Clojure's type hints comes to mind.
There are folk who've said that Lisp and typing are fundamentally incompatible, including the late Erik Naggum and Paul Graham, but I think they were just lacking in imagination. I've no reason to think you couldn't go nuts with typing and still be very Lispy.

I looked briefly at Shen some time ago, which, at least at the time, was just a language built straight on top of Common Lisp as a big macro compiler.
 
  • Like
Reactions: Yotsubaaa
You have Clojure's core.typed which is based on work previously done in Racket.
But the holy grail I guess would be a type system such that the compiler is aware of it and optimizes for it.
You could do something like that if you went straight for code generation from lisp and gave up on run time dynamism.
 
There are folk who've said that Lisp and typing are fundamentally incompatible, including the late Erik Naggum and Paul Graham, but I think they were just lacking in imagination. I've no reason to think you couldn't go nuts with typing and still be very Lispy.

I looked briefly at Shen some time ago, which, at least at the time, was just a language built straight on top of Common Lisp as a big macro compiler.
That's absurd, unless they're very specifically referring to a particular dialect like Common Lisp. But even then it's doubtful. Lisps (including Common Lisp) are just s-exprs with some kind of evaluation strategy applied to it. There's basic type checking engines and algorithms that you can apply to any basic lambda calculus. The best, most useful one is Hindley-Milner, but there's also simpler / more lenient / more flexible ones out there too.

Now personally, when I want strong typing, I just use a language more oriented to it, like Ocaml, and I intentionally use Lisp (specifically Scheme) when I want the flexibility.

But it's surely not impossible, or really even difficult, to add strong typing to a lisp language.
 
That's absurd, unless they're very specifically referring to a particular dialect like Common Lisp. But even then it's doubtful. Lisps (including Common Lisp) are just s-exprs with some kind of evaluation strategy applied to it. There's basic type checking engines and algorithms that you can apply to any basic lambda calculus. The best, most useful one is Hindley-Milner, but there's also simpler / more lenient / more flexible ones out there too.

Now personally, when I want strong typing, I just use a language more oriented to it, like Ocaml, and I intentionally use Lisp (specifically Scheme) when I want the flexibility.

But it's surely not impossible, or really even difficult, to add strong typing to a lisp language.
Type systems you say? There's an awesome talk about that
 
That's absurd, unless they're very specifically referring to a particular dialect like Common Lisp. But even then it's doubtful. Lisps (including Common Lisp) are just s-exprs with some kind of evaluation strategy applied to it.
They're both Common Lisp supremacists, and Naggum despised Scheme. So for them, Common Lisp is absolutely not just an evaluation strategy for s-expressions.

Neither of them struck me as knowing much type theory, though, so I don't think there was much value in what they had to say on the matter. Personally, I find it difficult (though not impossible) to imagine a statically typed Common Lisp, and it would be a monumental bit of engineering to make the thing fast. The big deal with static types for Ocaml and Haskell programmers, besides ensuring correctness, is that they can be erased. But to a Common Lisper, types are the minimum amount of metadata that they want to see on any value they get their grubby hands on, and they expect to be able to get their hands on just about any live value of any Common Lisp program running on their machine.
 
I used to be really into assembly programming.

I wanted to write an MS-DOS rpg, but I came to the conclusion that real mode was too constrained for what I really wanted to do.
I gave up once I realized that I would basically have to create an entire, small OS if I wanted a full 32-bit protected mode game.
There were some other issues too.

I also learned AVR, and ARM32 assembly languages. For various projects.
 
Sorry if this sounds dumb, but what should I learn about programming after college? I'm going to be getting a degree in CS soon, and yet I don't feel at all like a real programmer. The only things I can do with what I've learned is make games in Unity and Unreal Engine 4, but that feels less like programming and more like perverting the work of others with my autism (even though I use C++ instead of blueprints for UE4). What skills should I try to develop?
 
I used to be really into assembly programming.

I wanted to write an MS-DOS rpg, but I came to the conclusion that real mode was too constrained for what I really wanted to do.
I gave up once I realized that I would basically have to create an entire, small OS if I wanted a full 32-bit protected mode game.
There were some other issues too.
Could you have used DOS/4GW? I remember all the late DOS games using that back in the day.
 
Last edited:
Back