1,112 karma · joined May 28, 2023
Maybe we both just got bad first expression with most popular, but unfortunately not a good language? =)
Nim compiler has an embedded VM, so any Nim code (that doesn't rely on FFI) can run at compile time.
> 2003
> PATH is a programming language that is similar to Brainfuck. This intuitive language requires a simple grasp of two dimensional space, one requirement that almost no other programming languages have.
But I've also built a simple chooser program for multiple todo files and notes. A very simple cli program that does basic fuzzy search over file names.
For example, I can type `mem mov` to open a `movies.note` file in notes directory. If I use a full name with `.note` extension and it doesn't exist - it will create a new note with that name and open it in editor immediately. It makes it easy to create new notes on the fly and open them in a few keystrokes.
For editing I use neovim with auto-save enabled, so I can keep editor open all the time without forgetting to save.
I also hate the mobile apps that designed to be always on, always listening or nagging. So, I have the policy: if the app is only useful occasionally and it is active but I didn't start it - I disable it. And I'll enable an app when I need it, not whenever it wants me to use it.
All the languages you listed do not support function overloading. Qualified imports and namespaces exist to avoid name clashes first, dependency tracking is just a bonus (and a chore).
In my experience, it's even faster to git clone, open a project in neovim and navigate with LSP than browsing code with some online interface.
Python doesn't have a notion of public/private symbols (no, "__" prefix does absolutely nothing). It also doesn't have a good type system, so it can't have function overloading.
This is why you're required to qualify almost all imports in Python, to avoid name clashes.
Nim doesn't have this problem and also "fixes" a lot of other shortcomings[1] of Python.[2]
[1] - https://github.com/yugr/python-hate
[2] - https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programm...
type
Foo = range[1 .. 10]
Bar = range[0.0 .. 1.0] # float works too
var f:Foo = 42 # Error: cannot convert 42 to Foo = range 1..10(int)
var p = Positive 22 # Positive and Natural types are pre-defined
[0] - https://nim-lang.org/docs/manual.html#types-subrange-types 1) tmpfs is mounted to /tmp
2) available size on /tmp is very low
3) my free ram indicator in status bar is red
And then I tried downloading some files while looking at htop. It was immeduately obvious that it was the problem causing the hangs.Until about a year ago, whenever I would try to download moderately large files (>4GB) my whole system would grind to a halt and stop responding.
It took me MONTHS to figure out what's the problem.
Turns out that a lot of applications use /tmp for storing files while they're downloading. And a lot of these applications don't cleanup on fail, some don't even move files after success, but extract and copy extracted files to destination, leaving even more stuff in temp.
Yeah, this is not a problem if you have 4X more ram than the size of files you download. Surely, this is a case for most people. Right?
There's just one problem: they don't integrate with desktop without an additional application. We need a feature where dropping an AppImage into "~/.local/share/applications" would automatically detect it as a ".desktop" file and make it appear in the DE menus.
I can think of couple:
- Toolchain size: Nim, Zig ~100MB; Rust >1.5GB
- Compilation Times
- Micro-dependency Culture int main() {
// this should be properly formatted
return 0;
};"fuck, it's python!" *throws it in the garbage*
Suddenly, everything in this crazy world is starting to make sense.
I remember using it to run some Lolipop (Android 5) games that are no longer working since Android 7-9.
Some people use VMOS to sandbox apps that require google services, so their main Phone OS stays clean from this garbage.
Also, since Huawei is famously prohibited from using google services on their devices, Huawei users often use VMOS to circumvent this restriction for selected apps that wont work without GMS.
Smaller binaries, faster execution, proper metaprogramming, actual type safety, and you don't need to bundle a whole interpreter just to say "hello world"
a(axe).b(baz, bog).c(cid).d(dot)
vs d(c(b(a(axe), baz, bog), cid), dot)Most editors choke at couple MB, Vis can open 10 Gigabyte text files with zero delay.
Roguelike community has a saying - "losing is fun". And while I only played a few traditional rl games and finished none of them, I had great experience while constantly "losing" only a few hours into the run.
In most roguelites I play, losing isn't fun - it's frustrating. There is often very little variety in earlier stages of the game, so if you're bad (and I am) you're stuck replaying the same section for hours, only to get good RNG, go 1 level farther and immediately die to some new mechanic or difficulty spike.
One exception is The Binding Of Isaac, this is probably the best roguelite game I've ever played and nothing comes even close.