this post was submitted on 08 Sep 2023
546 points (94.2% liked)

Programmer Humor

19166 readers
1016 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 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] tram1 22 points 1 year ago (4 children)

I'm kind of a beginner... Can someone explain why you would make/use/have a dynamically and/or weak typed language? Is it just to not write some toInteger / as u64 / try_from()? I mean the drawbacks seem to outweigh the benefits...

[–] noli 22 points 1 year ago

The typical arguments for a dynamic typed language are that it takes less time to write something in it.

The benefits of static typed languages are that your development environment can be a lot smarter (ironically enough leading to faster development speed) and several classes of bugs being unable to happen. In a statically typed language, the IDE can detect if you're trying to call a function that takes a number but you're actually providing a string. In this case the IDE will let you know and you can immediately fix silly mistakes like that.

[–] Lmaydev 12 points 1 year ago* (last edited 1 year ago) (2 children)

If you are writing small and simple apps it will give you more velocity and much less boiler plate.

As apps grow it becomes harder to keep track of things and can quickly grow into a mess. You then start to need external tools to give you the features of a strong static type system.

Also from a web point of view you don't want the website to crash and burn with every error. JS will power through things like invalid types. Imagine if any error caused the website to just stop.

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

But a statically typed language would catch those errors before it even compiles...

[–] Lmaydev 3 points 1 year ago

The fact it doesn't need to be compiled is also a big reason why it's used on the web.

But I absolutely agree. I'm not a fan of dynamic typing at all.

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

Si you say I should use python for websites?

[–] [email protected] 14 points 1 year ago (1 children)

There's no real alternatives to JS "for websites" (meaning on the frontend, the part of your code that gets executed on your client's browser). That's what JS was invented for and what it does best.

I say "no real alternative" because technically we also have WebAssembly, which is a tool that allows you to run code written with any language on the web, but if you indeed are a beginner approaching to web development you should just forget about this for now and stick to JS as you learn.

Of course this doesn't mean that you can't use Python on your backend, your server.

[–] [email protected] 6 points 1 year ago (1 children)

Why should beginners approaching web development stay away from WASM? I've used it a few times to create online demos of software I made in Rust and it was a very simple and painless experience to get it working in a website. I consider myself a beginner and I have not run into any issues with it so far.

[–] CodeBlooded 8 points 1 year ago* (last edited 1 year ago)

WASM is simply further down the rabbit hole for someone who is new to programming (but not someone who’s already a programmer and just doesn’t focus on web dev today). You are likely far less beginner than you think if you’re making decisions like “I’m going to compile my software written in Rust targeting WASM so I can demo it.”

[–] Lmaydev 1 points 1 year ago

Unsafe rust is your best bet.

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

They used to be more attractive around the 2000s, before type inference became commonplace and when IDEs/editors were still a lot less powerful.

As for making a dynamically typed language, to my knowledge, they are actually easier to create than statically typed languages...

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

I prefer using JS because I can see the errors, while having to figure out which part generated the problematic JS code with errors when using something else.