|
Re: "No sliver bullet" is in the fine print
|
Posted: Dec 6, 2006 6:01 PM
|
|
> > > > > To create complex requirements and to translate > > those > > > > > requirements into properly working software. > > > > > > > > I said it's about solving problems. This sounds a lot > like > > solving problems. The complexity part is usually > > unnecessarily human generated. > > 'Solving problems' includes fixing a flat tire.
True.
> > > > > That sounds like the same thing I said, but it uses > a > > > lot > > > > more syllables. Personally I like to make the > > > requirements > > > > as simple as possible but alas, as simple as > possible > > > > isn't always simple :-( > > > > > > I don't know what that has to do with what I am > saying. > > > > You mentioned complex. I've seen plenty of systems > where > > complexity is written in that doesn't need to be there. > > Sometimes system really are complex. Most of the time a > > simple problem is over architected. I don't know where > you > > fall in this continuum. I'll be optimistic and assume > like > > you like simple when possible. > > You didn't get the point then. The work I do is to > automate complicated processes. Usually they are vastly > more complex than they may seem from a distance. > Multiplying a number by 2 faster is not important in this > s context. It's kind of banal. > > > > > > > > I don't doubt that, but to call bit-twiddling in > and > > of > > > > itself menial is a gross generalization. Many great > > > pieces > > > > of software require bit twiddling and wouldn't be > > able > > > to > > > > meet requirements in any other way. > > > > > > That's clearly your assumption, yes. > > > > > > > It's an assumption based on personal experience. You > can > > doubt it if you want. You are entitled to your opinion, > > flawed though it may be. > > Sorry, I forgot that you hold all the knowledge of the > universe and know of every possible approach to a given > problem. >
I'm glad you finally realize that.
> I know it's hard to believe that your skills could become > obsolete but I see it all the time. The COBOL and RPG > developers I work with are always sure there is no better > way. > > > > > > If someone needs to drop down to a lower level > > > > > abstraction, it's not a sign that the language is > > > > great. > > > > > It's a sign that something is missing. > > > > > > > > I don't see how that signifies something is > missing. > > > Maybe > > > > lower level of abstraction was the wrong phrase. In > > > some > > > > instances you have to reduce the number of > > instructions > > > > executed or do something clever to get the same > > result > > > in > > > > a more efficient manner. Bit shifting to divide by > 2 > > > and > > > > Duff's Device are probably the two most well known > > > > instances of this. I don't understand how a higher > > > level > > > > of abstraction will get you the required > performance > > > > improvements in cases like that. > > > > > > Why do you think these optimizations have to be made > a > > > human? > > > > > > > If the compiler or runtime environment has limitations, > > who else is going to do them? > > I never mentioned a runtime or an environment. What about > a compiler? >
Most of the high level languages people speak of have a runtime, like python, C#, java, small talk, etc. I do believe I said "compiler or runtime".
> > I don't doubt that in most > > cases the runtime or compiler does a great job, but > > sometimes there are limitations. Compilers and runtimes > > need to be written to the general case. In many > instances > > a much more optimal solution can be written to solve > your > > particular problem. That would be the difference > between > > theorizing about how to solve a problem and actually > > solving it. > > Whatever. Developers said the same thing when the first > high-level languages came out. >
Amazingly, it's still true!
> > You are missing the point. C++ sucks compared to a lot > > of > > > languages for the higher abstractions. It's ugly, > > > inelegant and overcomplicated. To use it in team > > > development without major maintenance issues you need > > to > > > restrict the syntax to a small subset of what is > > > available. That in itself is costly and inefficient. > > > > > > > That is your opinion. I disagree. I've seen plenty of > C++ > > that would be mistaken for your beloved java. > > We aren't talking about Java and I don't know how many > times I have to say that I think it's got a lot of > problems. In any event, if that's the case, the > developers restricted 'the syntax to a small subset of > what is available' so it seems like a poor way to argue > that I am wrong. >
Ok. Abstractions leak all the time. Because of that I have specific needs from time to time to get closer to the metal than these abstractions allow. Taking that ability away from me impairs my ability to solve problems.
> > > > Python is the language I use at home for a > > > > lot of things and I've never dropped down to do C > bit > > > > twiddling. In the couple of cases I've had to I've > > just > > > > done the whole program in C++ (none of the projects > > > were > > > > very big) because I had access to both types of > > > > programming and did not have to switch development > > > > environments, runtimes or modes of thought. > > > > > > Why not take what you needed at the low level and > make > > it > > > reusable for yourself and others in Python? > > > > > > > I can reuse the C++ if I want or need to. From python > if > > I'm so inclined. I work better coding the whole initial > > solution in one place. That's just how I work. > > Seems like a limitation to me. >
Ok.
> > > > > The problem I see with all this power that C++ > > gives > > > > you > > > > > is that a lot of people get off on it. I can't > > count > > > > the > > > > > number of times I've seen people write the most > > > > cockamamie > > > > > crap in the name of optimization. Some of the > > time, > > > > the > > > > > effect is actually negative, most of the time, it > > has > > > > no > > > > > detectable effect on performance and most of the > > rest > > > > of > > > > > the time, the effect isn't worth the effort or > the > > > > > cancerous effect it has on the code base. > > > > > > > > > > > > > I don't see this as being a problem with the > > language. > > > I > > > > see this as a problem with the person using the > > > language. > > > > I would rather have the freedom to do what I want > > than > > > to > > > > have the language restrict me, much in the same way > I > > > > would rather let somebody say something that I find > > > > offensive than to have my own speech restricted. > > > > > > I used to think like that. Then I found out there is > a > > > lot more freedom in not having to think about all > that > > and > > > just getting stuff done. > > > > > > > I've had to clean up great swaths of code generated by > > people with that mindset. Good to know job security > won't > > be a problem for me. > > And I've fixed uncountable numbers of bugs written be > people with your mindset. >
Cool.
> > > > Basically you just said that programming languages > > are > > > > becoming lisp, which was invented as a notation for > > > > describing computations, not as a programming > > language > > > per > > > > se, which is probably why it has survived in a > > > relatively > > > > unaltered state for about half a century. Sounds > very > > > Paul > > > > Graham to me. > > > > > > Lisp is a very narrow approach to the problem. I > also > > > think it's a kind-of a cop out. It seems kind of > like > > it > > > was designed to be easy for the person writing the > > parser, > > > not the person using it. > > > > > > > You can read about why LISP was designed the way it was > > instead of guessing. You said "Programming languages > are > > becoming really powerful syntaxes for expressing > processes > > and not just mnemonics for micromanaging the hardware." > > That's a pretty fair summary of what McCarthy says here > > And from that you make the leap that I'm talking about > LISP. That's pretty illogical. >
How so? I'll assume with your quick response you didn't get through the entire paper. Lisp was create specifically as a notation to express functions, which is how we express processes for a computer. Seems completely logical to me.
> > > > > I think C++ has it's place. It's just not as the > > > > primary > > > > > development tool for most software. It's vastly > > > > overused. > > > > > > > > I would say that it is vastly misused if what you > > > describe > > > > as the current state of the use of C++ is true. I > > don't > > > > think most people grossly misuse the language in > the > > > way > > > > you imagine. > > > > > > Really? You think that all the C++ jobs out there > are > > for > > > working on projects that require writing system level > > > code? I'd say it's probably a lot of teams that > > need > > > people to help keep their homemade GUI from falling > > down > > > or similar things. > > > > > > > I can quote somebody I know to answer this one "That's > > clearly your assumption, yes." > > I never stated it as if it were a fact, did I? >
Nope, but you seem full of plenty of opinions about what is wrong with C++ and how you think people "probably use it" that one might wonder what your opinions are based on.
> > > So why use a language that is so punishing if you > don't > > > need the low-level stuff. Personally I don't think > > much > > > of templates in C++ either. It's the most effective > > > obfuscation tool I've ever seen. It's the kind of > > thing > > > that bugs me about C++. Instead of coming up with > > clean > > > designs, developers use a bunch of fancy tricks. > > > > A lot of us don't find C++ punishing. Really. > Intricate, > > complex, sometimes difficult, yes. But not punishing. > > Yes a wonderful tool. Intricate, difficult and complex, > who could ask for more in a tool. But that's what you > like about it, right? It's a macho thing.
It allows me to solve certain problems that are either very hard or impossible to solve with other tools. If that's macho, then yeah, it's a macho thing.
|
|