7 ms·
Falsehoods programmers believe about programming
- 0xcde4c3db 9y ago> Compiled languages are always faster. More like: there is such a thing as a "compiled language".
- sparkie 9y agoThere's such thing as an uncompilable language, so in the universe of all programming languages, the set of compilable languages is the compliment. But the article isn't talking about that. It's referring to the canonical implementations used by each language, which is occasionally, but rarely, both compiled and non-compiled.
- pygy_ 9y agoDo you have an example of a language that can be interpreted but not compiled (formally a language such that there exists a valid program that can be interpreted but not compiled into machine language)?
- sparkie 9y agoKernel cannot be reasonably compiled because compound operatives can depend entirely on user input data. For example, the presence of string->symbol means that a user could insert a custom operator into an environment at runtime then evaluate the expression to which it refers. There's now way to account for this at some theoretical 'compile time', unless you're JIT compiling after every external input, which I'm pretty sure is what we'd call interpretation.
- pygy_ 9y agoSo it can't be statically compiled, although it doesn't require an interpreter provided a full language compiler is part of the runtime of compiled programs whose input can update the code... Interesting... very meta :-)
- roryisok 9y agoThat points to an article saying java is sometimes faster than c++. Maybe I'm just being dumb but isn't java compiled too?
- b4lancesh33t 9y agoI think the author must have meant AOT compiled.
- jghn 9y agoYou see some people refer to Java as a compiled language because of its compilation to byte code You see other people point out that Java is not a compiled language as it’s only converted to byte code. This is one of the few tech pedantic debates where I’ve chosen to not pick sides
- jimmaswell 9y agoNot a good sign when the very first item is entirely subjective.
- zAy0LfpBZLC8mAC 9y agoSo, you think it is entirely subjective that programming has an ethical impact, and objectively it doesn't?
- jimmaswell 9y agoA classic way it's phrased is "is a gun manufacturer responsible for murder?" It's an age old debate with a lot of people arguing either side.
- zAy0LfpBZLC8mAC 9y ago... which is just an idiotic question to ask. The answer is ultimately uninteresting because it is essentially nothing more than a reflection of the definitions used in evaluating the question. The interesting question is whether the decisions and actions of a gun manufacturer can influence the well-being of humans, and even more importantly, how they do so, as it is just obvious that they can, and in the consequence how gun manufacturers should behave if they are to maximize their positive impact on humanity.
- tempodox 9y agoHowever you define your ethics, programming covers such a large spectrum that you can't objectively assert those areas never intersect.
- walshemj 9y agoAnd if we accept that developers are "engineers" (no arguments about chartered or PE status) then the IEEE is quite clear that engineers do have do behave in an ethical way.
- catshirt 9y ago> There is no ethical impact of my job; I build technological systems and it’s up to others how they use them. well that's certainly a controversial way to start a list. does being a knife maker have the same ethical impact? edit: lol @ 3 instant downvotes for my comment above. @dang please start banning these thoughtless cunts. unqualified downvoting is as unsubstantial and inflammatory as it gets. edit 2: on second thought, this whole list is just a list of shit no one actually believes. no wonder we're arguing.
- sparkie 9y agoThat depends on the function of the knife. If the knife is meant for buttering bread, then obviously no. If you're creating a combat knife then absolutely, yes. Which is precisely the point made in the article. It's not about what you're making, it's about what you're making it for.
- catshirt 9y agoso if i can repurpose someone else's example: you're suggesting that if i make a knife for buttering bread and it kills someone because i was careless in my creating of the knife, there is "obviously" no ethical impact because my intent was good? and this leads to my real point. find me 1 programmer who perpetuates this myth that there exists an engineer who says its impossible for their job to invoke ethics. funny that the top of this list says it's a "falsehood programmers believe" yet not a single person here wants to take that side. either it's painfully obvious or it's not a myth. pick one.
- Semiapies 9y agoThe problem is that in programming, if you build a halfway decent butter-knife, the NSA will use it to pry open your window and eavesdrop on you with it, the CIA will torture people with it, and various dictatorships will stab dissidents in the eyes with it. It's not like bad actors only use Obviously Evil Software. They use many of the same tools we use for similar tasks. The more general software is, the more bad actors are using it, too. Now, sure, if you're working on Disposition Matrix 2.0 assassinating selection system, or a botnet framework, the moral and ethical fallout is obvious. Short of that, things quickly get a lot murkier, and at some point, the creators of, say, gcc just aren't to blame for every harmful thing compiled with it. At some point, it's simply not a falsehood.
- catnaroek 9y ago> at least the outcome of integer maths is always defined. Assuming you mean “integer arithmetic”, the answer is a resounding yes, it's well-defined. Of course, so-called “machine integers” are not a faithful model of the integers, and, in particular, so-called “signed integers” in C aren't a faithful model of anything nice.
- fanf2 9y agoWhat is the result of INT_MIN / -1 ?
- catnaroek 9y agoThere was a point to using “so-called” and scare quotes around “signed integers”. Find it. Hint: There's no such thing as a “minimum integer”.
- mcphage 9y ago> Assuming you mean “integer arithmetic”, the answer is a resounding yes, it's well-defined. Given that the topic of this article was falsehoods about programming—no, the author did not mean "integer arithmetic". However, even in the case of mathematics, this isn't true—there are a lot of non-standard models of arithmetic, and which you choose depends on what you're trying to do with it: https://en.wikipedia.org/wiki/Non-standard_model_of_arithmetic https://en.wikipedia.org/wiki/Non-standard_model_of_arithmet...
- catnaroek 9y ago> However, even in the case of mathematics, this isn't true—there are a lot of non-standard models of arithmetic Believe it or not, there are people who use actual integers in computer programming. Not everyone is stuck with C and its ilk. > However, even in the case of mathematics, this isn't true—there are a lot of non-standard models of arithmetic Meaning is to be found in the axioms themselves, not in models.
- mcphage 9y ago
- spicymaki 9y agoI have this hypothesis that everything I believe is wrong. Probably best not to cling too tightly to beliefs.
- chewbacha 9y agoStrong opinions, loosely held.
- logicallee 9y agoCan you explain this? What is a "strong opinion" then?
- chewbacha 9y agoA strong opinion is one that makes an assertion and allows for decision making. It’s a little cheeky but the point is that having an opinion is important in making decisions, but be willing to change your opinion in light of new information.
- logicallee 9y agoSo it is like a boss who says, "No, we're definitely not doing that." "But boss, the vendor just announced (xyz tidbit)". "Okay, we are definitely doing that." So it was "strong" because of the word "definite" (it was clear a decision was made) but in fact was open to change in light of the new information? (because it only took a small tidbit to change it) Is this what you're describing?
- chewbacha 9y agoNot quite, it’s not about the forcefulness it’s about the assertion. It’s also not about the size of information required to overturn. It’s more about the humility of accepting your previous opinion was wrong. For example, we might have the opinion at our company that REST is the way to build communications over a stateless connection. If a team presents a reason to build RPC and makes a case, it’s allowed to do it. Another example might be style conventions. Strong opinions here lead to consistently written code. But in some cases a new style will work better and we can change direction. Or a different style fits this file better than all others. We don’t want to be so hemmed in by our opinions so as to be inflexible to different approaches to the same problem. But that doesn’t mean having no opinion.
- deleted 9y ago[deleted]
- b4lancesh33t 9y agoList of article themes that are played out
- IshKebab 9y agoTerrible list. Lots of things are straw men, or just wrong. And do we really need another one of these lists? Next we'll be back to "X considered harmful". Ugh.
- chewbacha 9y agoLists considered harmful.
- deleted 9y ago[deleted]
- dang 9y agoCould you please not respond to what you feel is a bad article by posting a bad comment? I understand the temptation, but there's no information here, and we're hoping for a little better than "ugh".
- IshKebab 9y agoI don't see why I should have to really. Have you heard the argument that bullshit is a lot easier to create than to refute? Anyway fine: > There is some innate affinity for computer programming which you must be born with, and cannot be taught. Clearly true. Anyone who has been to a non-profit educational school knows there are some people you simply could not reach to program. Of course more people could program than do, but that isn't what he said. > Compiled languages are always faster Nobody sane would claim this. People say compiled languages are generally faster, which is true. Besides his link refuting this is to Java, which is compiled! (Just In Time). > at least the outcome of integer maths is always defined Yes it is in nearly every programming language. > every computer on sale today (2017) uses two’s complement notation for negative numbers. To a rounding error, yes this is true. His link is to a computer from the 60s. Seriously. > every computer on sale today uses a register width that’s a multiple of eight bits. Again, probably 99.9999999% do. Actually... Probably more. I could go on.
- spookylukey 9y ago> There is some innate affinity for computer programming which you must be born with, and cannot be taught. This being a falsehood is a matter of considerable debate, and it's impossible to prove (There are certainly some people with very low ability for computer programming, to the point of effectively useless. How would you prove this was entirely nurture and not nature?). This is a not a good candidate for a "list of falsehoods" article.
- beisner 9y agoNobody will argue that there are certain things you must be born with in order to learn to program. If you are born without a brain - literally without the brain organ - you likely will not end up a successful programmer. This is an absurd reduction, but the point is that there is a necessarily a set of physiological properties one must possess to program. The question is then whether a small group of people possess them, or whether a much larger group do. I err on the side of the latter; while there are definitely aspects of programming today that are pretty inaccessible (I’m looking at you, arcane Unix shell conventions and invocations), the fundamental practice of reducing abstract tasks into fundamental steps is a skill that I believe most humans have the ability to learn.
- mannykannot 9y agoFrom a purely logical point of view, it might not belong on a falsehoods list, but it would sit very well on a "useless notions" list, right before "anyone can be taught to program".
- ryanmarsh 9y agobug-free computer hardware is completely deterministic This. The CPU has been a chaos box for at least the past 17 years. If not longer.
- known 9y agoReminds me http://programmer.97things.oreilly.com/wiki/index.php/Write_Code_for_Humans_not_Machines http://programmer.97things.oreilly.com/wiki/index.php/Write_...
- apple4ever 9y ago"Swift is a good language"