this post was submitted on 07 Jan 2024
903 points (94.3% liked)

Programmer Humor

24730 readers
1631 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 329 points 2 years ago (3 children)

Yes the compiler/interpreter can figure it out on the fly, that's what we mean by untyped languages. And as stated both have their merits and their faults.

Elon doesn't know what the words mean and just chimes in with his AI future BS.

[–] [email protected] 93 points 2 years ago (1 children)

And as stated both have their merits and their faults.

Yes! Just because a compiler could guess the type doesn't mean it should. Elon didn't understand the meme at all.

[–] [email protected] 2 points 2 years ago (2 children)

why would you not want it to? what circumstance, other than an integer not given an explicit type, could it guess wrong?

[–] [email protected] 24 points 2 years ago (3 children)

Dynamic vs Static is a huge debate that I'm not qualified to answer. My personal preference is static because I like to know my mistakes at compile time instead of after running and something weird happens. That goes along with my preference that all variables should be declared at the top of a function.

https://hackernoon.com/i-finally-understand-static-vs-dynamic-typing-and-you-will-too-ad0c2bd0acc7

[–] [email protected] 5 points 2 years ago (1 children)

I almost upvoted but for that last sentence. Code block scopes are most intuitive, and JavaScript has become a better language since it gained them.

[–] [email protected] 1 points 2 years ago* (last edited 2 years ago) (1 children)

Yeah I use it too. But when I have to read somebody's code or my own from a while ago, I prefer everything labeled at the top. That way I can read the top, jump anywhere, and know what is going on without looking at any other lines.

It's a preference that can be argued like dynamic typing.

[–] [email protected] 2 points 2 years ago* (last edited 2 years ago)

I guess you could make a rule of declaring your variables at the top of their scope, be it a class, a function or a code block. That would give clarity without needlessly expanding any scopes.

[–] [email protected] 4 points 2 years ago

I'm not talking about dynamic vs static though. I'm talking about static typing with or without compiler type inference a la Rust or C++'s auto

(note that Java making generic parameters optional does not count since that is, in fact, dynamic typing)

[–] [email protected] 2 points 1 year ago

I also prefer static typing but I like it when it is implemented like kotlin where type inference is still great, I think dart also works like that

[–] [email protected] 3 points 2 years ago (1 children)

Well, if there is nof fixed (explicit or implicit) type it's imposible for the compiler to optimise your code. Also imho programming with typed languages is way easier because your IDE can recognize function argumentd before you compile/run. I tried python and found it baffling how anyone can get any work done with it :D

[–] [email protected] 2 points 1 year ago

I used Python almost exclusively before I learned Rust and inevitably became a full time Rust bro, and the answer is "slowly and with a lot of crashes" :P

anyway, as I said in another comment, I'm not talking about static vs dynamic typing, I'm talking about static typing with vs without a compiler that can do type inference. C++'s auto will default to floats if you don't tell it the type of a number which is pretty brain dead, and there are scenarios where it's helpful to write out a type that could be inferred for readability/guaranteed correctness's sake, but apart from that I can't think why having most of your types be implicit would be bad

[–] [email protected] 8 points 2 years ago (4 children)

Untyped as in written? Or is this programming term I'm not familiar with?

[–] [email protected] 35 points 2 years ago (3 children)

Programming term. Variables in programming languages can hold different types of data, such as whole numbers, floating point numbers or strings of characters ("text"). Untyped languages figure out on the fly what can and cannot be done to the content of a variable, while typed languages strictly keep track of the type of content (not the value) to catch bugs and improve performance, for example.

[–] [email protected] 8 points 2 years ago

Ah! Thank you for the explanation. That makes much more sense now.

[–] [email protected] 4 points 2 years ago

Very concise explanation!

[–] [email protected] 1 points 2 years ago (1 children)

Any untyped languages that don't care what is in the variable, assumes you know what your doing, and YOLOs it?

[–] [email protected] 4 points 2 years ago

Np necessarily. Usually errors are detected at runtime and reported as such. So you will see where your program failed, but it usually crashes nonetjeless. Keep in mind that crashes are usually better than continuing some undefined behavior.

[–] [email protected] 8 points 2 years ago* (last edited 2 years ago) (1 children)

By typed they mean declairing a type for your variables.

In some languages, variables needs to be told what kind of data they can hold. That's it's type. For instance a number without decimals would be an integer type. While text might be a string type or a list of character types.

Other languages don't require types and sometimes don't even support them. They will just infer the type from the data that's in the variable.

If you see Elon Musk please explain this to him.

[–] [email protected] 4 points 2 years ago

If you see Elon Musk please explain this to him.

I'm an idiot, and I still don't think I could dumb it down to his level.

[–] [email protected] 1 points 2 years ago

Might be able to call assembly untyped. Everything beyond that I think would be called either statically or dynamically typed, maybe weakly typed?

[–] [email protected] 8 points 2 years ago (2 children)

Even in untyped can't you explicitly set your type either with declarations or wrapping the value in quotes for a string or something?

[–] [email protected] 29 points 2 years ago

Depends on the language. There is no explicit typing in JavaScript, for example. That's why Typescript was invented.

[–] [email protected] 5 points 2 years ago (1 children)
[–] [email protected] 5 points 2 years ago

Ah, that could be problematic