this post was submitted on 17 Aug 2024
712 points (95.4% liked)

Programmer Humor

32476 readers
544 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

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

But one compiling error is Java is 7 run time errors in python.

There is a type error and you couldn't have known it beforehand? Thanks for nothing

[–] [email protected] 10 points 3 months ago (4 children)

With type annotations, this problem is mostly alleviated in practice, while still keeping the productivity gains of duck typing.

[–] [email protected] 12 points 3 months ago (3 children)

In my experience, Python's type annotations are annoying as hell, because there's no inference.

[–] [email protected] 4 points 3 months ago (1 children)

You can use mypy and/or Pydantic.

[–] [email protected] 11 points 3 months ago (1 children)

Neither of those provide type inference? Type inference is when you give the compiler only occasional type hints and it can still figure out what the types are behind the scenes.

For example:

name = "World"
greeting = "Hello " + name
compile_error = greeting / 42

In a type-inferred language, the compiler would automatically know that:

  1. the first line is of type String, because it's trivially initiated as one.
  2. the second line is of type String, because String + String results in a String.
  3. the third line is non-sense, because greeting is a String and cannot be divided by a number. It could tell this before you run the program.

Mypy on the other hand can only tell these things, if you give the first two lines an explicit type hint:

name: String = "World"
greeting: String = "Hello " + name

Having to do this on every line of code is extremely noisy and makes refactoring annoying. I can absolutely understand that Python folks think you get productivity gains from duck typing, if this is the version of static typing they're presented.

And we did excessively use mypy + type hints + pydantic on my most recent Python project. These are not the silver bullet you think they are...

[–] [email protected] 2 points 2 months ago

If you're going to post a code example, at least check that it works. Here's your example, with no type hints, giving me errors both from the LSP, and when trying to run via mypy: https://imgur.com/a/Hq5Y5Gt.

load more comments (1 replies)
load more comments (1 replies)
load more comments (38 replies)