Earlier this week, a post written by programmer and teacher Bill Sourour went viral. It's called "Code I'm Still Ashamed Of."
In it he recounts a horrible story of being a young programmer who landed a job building a website for a pharmaceutical company. The whole post is worth a read, but the upshot is he was duped into helping the company skirt drug advertising laws in order to persuade young women to take a particular drug.
He later found out the drug was known to worsen depression and at least one young woman committed suicide while taking it. He found out his sister was taking the drug and warned her off it.
By sake of comparison, take a look at the ACM Code of Ethics and Professional Conduct (Adopted by ACM Council 10/16/92.)
(Score: 2) by tangomargarine on Wednesday November 23 2016, @04:24PM
The world would be a much better place if every use case really had a standard general-purpose language that worked efficiently, prevented stupid designs instead of encouraging them, and was open and free across all platforms. Unfortunately everyone smart enough to build such a language has either sold out, filled the language with all the flexibility that junior devs need to hang themselves, or both.
Efficient, Flexible, Safe: Pick any two.
Efficient and flexible but not safe - C/++ and other low-level stuff
Efficient and safe but not flexible - overly-narrow stuff? having a hard time coming up with an example
Flexible and safe but not efficient - Java and other JVM-ish stuff with more safety features
But maybe I'm just a dumb kid.
"Is that really true?" "I just spent the last hour telling you to think for yourself! Didn't you hear anything I said?"
(Score: 2) by meustrus on Wednesday November 23 2016, @05:50PM
Exactly. This category should belong to domain-specific languages like SQL, but SQL has lots of gotchas depending on the database you're using. Clearly we are missing something, because it should be easy to be Safe if you are not Flexible.
Flexibility is overrated anyway. It's good when you're writing a throwaway script that you own and watch the output of, because flexibility makes it easy to write. But when you're writing production code that you need to share with others and deploy without much visibility, flexibility allows you (and your fellow devs) to do very stupid things. The developer should be prevented from doing stupid things by compile errors. Not doing stupid things is why we spurn `goto` and prefer generic templates to explicit casts everywhere. There are more stupid things we should not do, like forgetting to check units (feet vs meters), concatenating user input directly into code statements going into an `eval` (or an SQL execution), and mutating the state of objects shared between multiple threads. Even languages like Java fail at protecting developers from these gotchas.
If there isn't at least one reference or primary source, it's not +1 Informative. Maybe the underused +1 Interesting?