5 ms·
I have worked with strong and no type systems, and have found that the absence of a type system is extra work. Instead of the compiler telling me exactly what
by DarkKomunalec 9y ago
I have worked with strong and no type systems, and have found that the absence of a type system is extra work.
Instead of the compiler telling me exactly what something is, what I can do with it, and if it makes sense to pass it to some function, I have to figure all of that out myself, greatly slowing me down.
Edit: It occurs to me I have yet to hear an answer to my question of how types hinder anything, especially if they are inferred. The only exception is the trivial requirement of sometimes having to cast between numeric types.
- emodendroket 9y agoYeah, you basically make initial implementation easier at the expense of maintenance and debugging, which sounds like a good tradeoff until you think about the relative amount of time you spend doing one thing vs the other.
- loup-vaillant 9y ago> at the expense of maintenance and debugging, Do you realize how insane that sounds? Static typing makes programs harder to debug? Harder to maintain?? On the contrary, static typing helps debugging and maintenance: changes that break invariants are more likely to be caught by the type system. This speak of tradeoff sounds wise on the surface, but this is hardly a tradeoff at all. For many people (including me), a good static type system makes prototyping and maintenance easier.
- emodendroket 9y agoIt probably sounds insane because you have interpreted my post to mean the exact opposite of what I intended.
- loup-vaillant 9y agoYour comment sounded like this to me: > Yeah, you [DarkKomunalec] basically [use static typing to] make initial implementation easier at the expense of maintenance and debugging It was not clear that "Yeah" was an approval (and not a dismissal), and it was not obvious that "you" was a general "you" (and not a personal "you" directed at DarkKomunalec). Nevertheless, you were still talking about a tradeoff, and I personally see none: in my experience, dynamic typing makes initial implementations harder (or longer), because so many errors are caught too late. Static type systems have a much tighter feedback loop.
- cwyers 9y agoMany, many people have a very different amount of time spent doing each that what you imagine. There's a lot of scripting code that is written once and then never maintained.
- emodendroket 9y agoIf your claim is "Python is great for toy scripts" then fine, I don't have any issue with that.
- sametmax 9y agoBut you are a dev. These people are not. Code is not their product.
- Verdex_2 9y agoI really like type systems. I think that if you take the time to learn about type theory, then you are more likely to create better solutions (both with code and in life in general). However, it isn't free. Type theory is a kind of math that most people have very little exposure to, so there's going to be a lot of work in order to start becoming proficient. Additionally, there's more than one type of type theory. Are you using a system F like system? Are you going to have sub-typing? Is it going to be structural sub-typing? Maybe you want row polymorphism. Is there going to be a kind system? What about higher order poly kinds? Dependent typing? Intensional or extensional? Additionally, there's more than one type of implementation of these type systems. Ocaml functors ... is it a generative or applicative functor? Haskell ... are you using gadts, functional dependencies, or type families? In the end I think that type systems will eventually be able to get you a completely typed experience that feels exactly like a completely dynamic experience, but with compile and design time checks that always make you feel good about the experience. However, I don't think we are quite there yet and I don't think you can expect everyone to be able to take the time to get sufficiently familiar with an arbitrary type system in order to be productive with it.
- kiriakasis 9y agoi would be pleasantly suprised to find an extensional type system in a mainstream language :)