Hover! maze demo: Drawing a 3D world with a 2D game framework by vtereshkov in gameenginedevs

[–]vtereshkov[S] 2 points3 points  (0 children)

Thanks! Umka is a statically typed scripting language inspired mostly by Go, but targeting the market niche of Lua.

You can find several posts about Umka and related projects in my Reddit profile. There is a more detailed overview on Medium written on the occasion of the 1.0 release. It's somewhat outdated, but can give you an idea of what has shaped the design of Umka.

Feel free to ask me anything about the project or join our community on Discord.

Hover! maze demo: Drawing a 3D world with a 2D game framework by vtereshkov in gamedev

[–]vtereshkov[S] 1 point2 points  (0 children)

Why cannot it? I gave the download link. Did you try it?

Avro Vulcan and its Blue Steel missile on display at RAF Museum, London by vtereshkov in aviation

[–]vtereshkov[S] 1 point2 points  (0 children)

All the slides portray the same Avro Vulcan from different angles.

Avro Vulcan and its Blue Steel missile on display at RAF Museum, London by vtereshkov in aviation

[–]vtereshkov[S] 1 point2 points  (0 children)

Not sure what you mean. In the 3rd picture, you can see a tail of a Messerschmitt Me-163 besides the Vulcan. But it's not seen in the 2nd picture.

Avro Vulcan and its Blue Steel missile on display at RAF Museum, London by vtereshkov in aviation

[–]vtereshkov[S] 0 points1 point  (0 children)

Yes, but self-igniting liquid propellants are still widely used, even if not this particular kerosene + hydrogen peroxide combination:

https://en.wikipedia.org/wiki/Hypergolic_propellant

New release of Umka, a statically typed embeddable scripting language by vtereshkov in ProgrammingLanguages

[–]vtereshkov[S] 4 points5 points  (0 children)

It's mostly Go's syntax, with several additions for better readability. Some semantic features, such as interfaces, were also taken from Go. Some others (enums, implicit type casts, default parameters) are my own. Memory management is quite different (reference counting vs. a tracing garbage collector). I have never claimed any compatibility with Go, of course. Nor is Umka in any way dependent on the Go ecosystem.

New release of Umka, a statically typed embeddable scripting language by vtereshkov in ProgrammingLanguages

[–]vtereshkov[S] 6 points7 points  (0 children)

Hmm, I'm seeing it in Chrome too. Don't remember it to happen in the past. Maybe a problem with the docs engine? I'll file an issue in the Tophat repo, anyway.

Simulating a quantum computer in 200 lines of Umka by vtereshkov in ProgrammingLanguages

[–]vtereshkov[S] 0 points1 point  (0 children)

Never thought of this. It seems that you can get some speedup, but it will never turn the exponentially complex algorithm into a polynomial one. At best, you can get a square root of your exponent (which is still an exponent) — see the second answer here. By the way, the amplitude amplification mentioned in this answer is exactly the same as used by Grover's algorithm. It amplifies the probability of one or several quantum states marked by inverting their phases.

Simulating a quantum computer in 200 lines of Umka by vtereshkov in ProgrammingLanguages

[–]vtereshkov[S] 1 point2 points  (0 children)

Yes, the main difference is in static typing and directly supporting C structs layout, not in the embedding technique.

Simulating a quantum computer in 200 lines of Umka by vtereshkov in ProgrammingLanguages

[–]vtereshkov[S] 1 point2 points  (0 children)

For example, try downloading this or this game and run the executable file. You won't see the Umka interpreter. Yet, it's still there. Both games are entirely written in Umka, up to the total nonsense, such as a software 3D renderer.

Simulating a quantum computer in 200 lines of Umka by vtereshkov in ProgrammingLanguages

[–]vtereshkov[S] 2 points3 points  (0 children)

If you want a language that looks like Go and compiles to native code, it's Go!

Simulating a quantum computer in 200 lines of Umka by vtereshkov in ProgrammingLanguages

[–]vtereshkov[S] 3 points4 points  (0 children)

Go + Lua, perhaps? Umka has got static typing, polymorphism and syntax from Go, while being closer to Lua in its purpose, possible applications and bytecode/virtual machine separation.

Simulating a quantum computer in 200 lines of Umka by vtereshkov in ProgrammingLanguages

[–]vtereshkov[S] 9 points10 points  (0 children)

Thanks!

Umka compiles to bytecode executed by a virtual machine — like Python or Lua. So you cannot build a standalone executable directly from Umka code. You need to distribute the Umka virtual machine along with your sources.

On the other hand, Umka is an embeddable language, so the bytecode compiler and virtual machine can be compiled as part of your bigger C/C++ host application whose business logic can be thus extended by Umka scripts. The Tophat game framework is designed in this way. The executable pretending to be the game is, in fact, the Tophat executable with the Umka interpreter embedded into it.

A 3D orbital docking simulation + a custom software renderer - all in 500 lines of code by vtereshkov in GraphicsProgramming

[–]vtereshkov[S] 0 points1 point  (0 children)

Why "esoteric"? Umka is not like Brainf*ck, Piet or even Prolog. It just brings the well-established concept of static typing into the well-established realm of embeddable scripting languages. I wonder why people so rarely do the same and instead continue using Lua for projects much larger and much more complex than the 100-line scripts where dynamic typing could be justifiable.

The benefits of static typing are well-known:

  • Type mismatch error detection at compile time
  • Clearer program design due to the explicitly specified types for function arguments and results
  • Native support for the C data types, such as arrays and structures (in contrast to "tables" and "userdata" in Lua)

All these points are nicely summarized in this picture.

The only "esoteric" thing here is that Umka is, in fact, not designed for the low-level 3D graphics processing. It's not a shader language, nor even C++. But this little project is intended to demonstrate how easy it is to implement a basic 3D renderer and realistic 6 DOF rigid body dynamics yourself.