6 ms·
Yeah, I'm sick of the "static types and classes!!!" crowd, too. I've come to the conclusion that "mandatory and immutable" should be the default, but there are
by Roboprog 10y ago
Yeah, I'm sick of the "static types and classes!!!" crowd, too.
I've come to the conclusion that "mandatory and immutable" should be the default, but there are precious few languages in which that is the case, rather than some noise words that have to be plastered all over. (the noise words should be something like "dont_know_when_or_if" and "whacked_whenever_i_feel" for optional and mutable to make you cringe when you use such a local/parameter/return-value.
It's always funny (funny-sad) to read a project or a research paper that discovered "static types turned out not to catch as many errors as we thought it would".
We've made our turing tar pit, now we have to live in it :-(
... at least until we push the whole C-and-its-spawn edifice over the cliff.
- qwertyuiop924 10y agoWell, if you assume Static Types, or anything else, is the be-all-end-all. If you use a bit of common sense, you should be fine.
- Roboprog 10y agoI hear you. Compile time types can be useful, but again, I'm just weary of hearing from the people who want to make them mandatory, and seem unwilling to consider the tradeoffs. Enter the XML config file... :-( I ranted quite a bit lately about partial function application as well, but it's not appropriate for everything. But when when you're dealing with a crowd that has no idea that there are other ways of doing some things...
- qwertyuiop924 10y agoI mean, yeah. Mandatory typing isn't always The Right Thing, and XML config <english:word:grammar:adjective:insult value="sucks"/>. And it is a tradeoff. And partial application is never necessary. It's elegant and useful, and can save you a bit of typing, yes, but it's never needed. It's nice to be able to type: map (+ 3) a-list but I don't mind: (map (lambda (x) (+ x 3)) a-list) and in most Schemes, there's a macro called cut, which means you can do this: (map (cut + <> 3) a-list) Which is almost as nice as the first one, and works regardless of the position of the arg you want to apply. And it's no so much that the crowd doesn't know that there are other ways of doing things, it's that they reject them out of hand, because they're different.
- Roboprog 10y agoArgh. I've never done Scheme. In fact, it's been since the mid 80s when we dabbled in Common Lisp at school. Most of this stuff I had to be re-introduced to again looking at Ruby and doing some reading about 10 years ago. The first line looks odd to me, since there are just 3 expressions sitting there - no parens around map and the rest of the stuff. My ignorance is showing :-( ... but I don't want to write Java <= 7 style inner classes, either. I'll likely get a bad case of COBOL-fingers.
- qwertyuiop924 10y agoThat's because Scheme doesn't support partial applications (I mean, you can return lambdas, but your functions aren't curried by default). That's why we have to cut macro from the third line to fake it. Instead, the first line is Haskell, the best-known language to support that particular feature. I personally dislike it, but if you're demonstrating partial application, it's the language to do so. And in case you haven't realized it yet, Java is actually the new COBOL: Verbose, ugly, and very popular in industry.
- Roboprog 10y agoOh, I very much realize that about Java. I was so excited about Java, 20 years ago. (of course the industry alternative was C++, so I'd rather be shot in the foot than the head). I never saw any Simula 67 until VERY recently. Hmm. So its what Borland patterned Turbo Pascal 5.5 (and beyond) after, more or less. And Eiffel, as well. But the MIS industry keeps trying to rehabilitate a portable assembler for general application programming (C, C++, Java, ???)
- qwertyuiop924 10y ago...With the logic that it's performant, and it worked for Ken Thompson, not realizing that Unix is an order of magnitude less complex than the systems they're building, yes. Don't get me wrong, as a language I will defend C to the very end (C++ and Java, not so much), but it has a specific usecase: Low-level code, or code where you absolutely need the performance. If you're not in either area, stop. You shouldn't be using C. And, of course, Rust has been eating some of C's lunch of late...