this post was submitted on 14 Jan 2026
54 points (98.2% liked)

Programming

24475 readers
249 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

I know JavaScript is a very special boi but c’mon, you’re embarrassing me in front of the wizards.

top 30 comments
sorted by: hot top controversial new old
[–] melfie@lemy.lol 12 points 3 days ago* (last edited 3 days ago) (1 children)

So a Reduced Instruction Set Computer with a superfluous instruction that even x86_64 doesn’t have? 🤔

[–] brian@programming.dev 6 points 3 days ago

wait until you hear about jazelle

[–] bitcrafter@programming.dev 31 points 4 days ago (1 children)

If only we had built the web on top of a language that did not have such insane handling of its numbers in the first place...

[–] arty@feddit.org 4 points 3 days ago (1 children)

Could you recommend a language with a sane handling of 64b-NaN-to-32b-int conversion?

[–] bitcrafter@programming.dev 14 points 3 days ago (1 children)

There are tons of languages that let you represent integers directly as integers rather than having everything be a float so that you do not have to worry about this problem at all.

[–] arty@feddit.org 2 points 3 days ago (3 children)

So by insanity you mean having just one number type?

[–] BatmanAoD@programming.dev 13 points 3 days ago (2 children)

Yes. Types are good. Numeric operations have specific hardware behavior that depends on whether you're using floating-point or not. Having exclusively floating-point semantics is wildly wrong for a programming language.

[–] holdenweb@freeradical.zone 3 points 2 days ago (1 children)

@BatmanAoD IMHO both JavaScript and PHP were hacks. When introduced they were indeed excellent hacks, making difficult things possible for the first time. In as sane world they would have been discarded as prototypes, but once human greed enters the picture (and in the capitalist world that is ALL the time) sense goes out of the window and the gold rush begins. This is far from a new story (cf. California 1849).

A collage of images relating to the California gold rush of 1849. https://www.britannica.com/topic/California-Gold-Rush

[–] BatmanAoD@programming.dev 2 points 2 days ago

I have managed to mostly avoid needing to code in either language, but my strong inclination is to agree that they are indeed hacks.

[–] arty@feddit.org -5 points 2 days ago (1 children)

Types are good

Opinions vary on this topic, apparently. There’s a proliferation of untyped languages.

[–] BatmanAoD@programming.dev 2 points 2 days ago (2 children)

There's a proliferation of dynamically and/or softly typed languages. There are very few, if any, truly untyped languages. (POSIX shells come close, though internally they have at least two types, strings and string-arrays, even if the array type isn't directly usable without non-POSIX features.)

[–] FizzyOrange@programming.dev 0 points 1 day ago (1 children)

TCL & CMake are fully stringly typed. Both pretty terrible languages (though TCL can at least claim to be a clever hack that was taken far too seriously).

[–] BatmanAoD@programming.dev 1 points 1 day ago

Oof, yeah, those count. The fact that CMake was best-in-class when I wrote C++ professionally was...awful.

[–] bitcrafter@programming.dev 2 points 2 days ago

Forth is arguably an example of a truly untyped language.

[–] bitcrafter@programming.dev 6 points 3 days ago (1 children)

The whole reason why an entire instruction was added to ARM to facilitate conversion to integers is because people need integer semantics from their numbers and so the language has to support this efficiently. Thus, in practice there already two number types, it's just that they have been merged together in this incredibly messy way so that you have the worst of both worlds.

[–] arty@feddit.org -3 points 2 days ago (1 children)

JS just implicitly does what you, typed language developer, would have to do explicitly

[–] sukhmel@programming.dev 3 points 2 days ago

JS just implicitly does what

…it wants, also sometimes it's far from what you want or even could expect

[–] FizzyOrange@programming.dev 6 points 3 days ago (1 children)

Yeah. I think the smallest number of number types you can reasonably have is two - f64 and arbitrary precision integers types. One of the few good decisions Python made.

[–] arty@feddit.org 4 points 4 days ago (1 children)

I wonder how it is with nan etc in other languages

[–] CombatWombatEsq@lemmy.world 2 points 4 days ago (1 children)

I’d definitely read a blog post about this, so if you decide to look into it you should write something up and post it. Maybe it’s standards based?

[–] arty@feddit.org 6 points 3 days ago

I don’t think I’ll dive deeper than quoting Wikipedia:

Most fixed-size integer formats cannot explicitly indicate invalid data. In such a case, when converting NaN to an integer type, the IEEE 754 standard requires that the invalid-operation exception be signaled.

For example in Java, such operations throw instances of java.lang.ArithmeticException.

In C, they lead to undefined behavior, but if annex F is supported, the operation yields an "invalid" floating-point exception (as required by the IEEE standard) and an unspecified value.

In the R language, the minimal signed value (i.e. 0x80000000) of integers is reserved for NA (Not available).[citation needed] Conversions from NaN (or double NA) to integers then yield a NA integer.

Perl's Math::BigInt package uses "NaN" for the result of strings that do not represent valid integers.