3 ms·
But have you used statically typed langauges? Unless you've used both you won't be aware of the advantages. The big one for me is inheriting other people's cod
by mattmanser 13y ago
But have you used statically typed langauges? Unless you've used both you won't be aware of the advantages.
The big one for me is inheriting other people's code bases, in dynamic languages they're a complete and utter nightmare, especially when written by incompetent programmers, which seems to make up a worryingly large number of programmers. Or someone just learning and not aware of conventions.
You just can't assume a method or function actually does what it says it does. Or returns what it says it does. And you can't even see what it's expecting or what things are being passed to it. You have to fine-toothcomb the method, it slows you down massively.
I have worked on a fair few bad code bases now and luckily for me the majority of that's been in static languages. It makes it so much easier.
Some of the other advantages of static typing include:
1. having incredibly good auto code completion
2. never having to remember or look up a method signature
3. to refactor massive chunks of code almost completely fearlessly
4. to fix crap code without any fear of breaking anything else
5. as long as you name your methods well, never having to annotate anything mundane (depending on your audience ofc)
There are also other things like that tend to go hand-in-hand because they're usually explicit, like not worrying about implicit conversion (apart from VB with option explicit off).
I've used both quite a lot over the last 10 odd years professionally programming and I've recently been thinking that I would actually prefer a mix, static typing on boundaries like method entry and new object declartion and dynamic everywhere else. I know little about compiler or language design, so I'm not sure it's even possible. C# kinda gets close with the var keyword, but the various disadvantages of static typing still rear their head quite a lot.
As a slight aside, People on HN always seem to talk as if they only write new programs, not maintain old ones. Am I the weird one for frequently having to pick up code that was written by someone else? Who often had coded themselves into a corner and then made up some excuse as to why they couldn't keep the client anymore?
- k__ 13y agoI had to do some stuff in Java at university, it felt too clunky most of the time. :\ When using libraries, their functions always wanted their arguments to be some strange classes or implement some of their interfaces, which always seemed like big overhead to me. Stuff like Smalltalk, PHP and JavaScript felt much faster in development speed.
- danbruc 13y ago...and breaks much more often at runtime.
- mattmanser 13y agoYou actually can't see the advantage of statically typed languages unless you've worked on a non-trivial codebase. I've never used Smalltalk, but the other two you mention suffer from massive problems when you get to a certain size codebase. I'm extremely wary of saying this, but I generally think that uni professors/tutors can't program. Basically unless they've written a large open source program or actually worked in the industry for a lot of years, they're probably going to be useless programmers. And even then, there's a good chance they're useless programmers. That may be a slightly old fashioned view, but most lectures I've seen from unis online tend to completely miss the point of basic concepts (OO being the most common one). And it's rare to meet graduate CS who can actually program anything on their own from scratch. Google's fine, but cut & pasting code you don't understand and changing random stuff as it sounds kinda right, that's not programming, that's a bloody rain dance. Programming is a skill that needs years of work before you're even vaguely good. And the worst part is you're almost constantly suffering from the Dunning-Kruger effect, thinking you're much, much better than you actually are. I probably still am. It's one of the reasons we see security holes time and time again, novices don't even realise the problem exists! For example, I have no idea what to do with crash dump in windbg. I wouldn't even know where to start. Is that a massive knowledge gap? But give me a stack trace of a problem & the source in almost any web language and I'd probably be able to fix it, even if I've never used the programming language before.
- k__ 13y agoYeah, this is probably true... But I have to say, my programming prof. was rather fond of Java. Biggest part of the lecture on OOP was about type systems (and I hated it lol). Most of the stuff I learned about programming, I didn't learn in university, but at work. But since my experience with Java at university was so bad, I searched for jobs in different languages, like JavaScript. A few years ago I tried to learn Scala, because it seemed like a better Java to me. But somehow I never got along with it. The type-system seemed logical, but it had so much other stuff around that made starting rather difficult, so I went back to JavaScript.