Follow Slashdot blog updates by subscribing to our blog RSS feed


Forgot your password?
Check out the new SourceForge HTML5 internet speed test! No Flash necessary and runs on all devices. ×

Comment Re:More accessible alternatives? (Score 2) 162

It depends on exactly what you are after. Sedgewick has/had a few books called "Algorithms in C++/Pascal/??" that was decent light coverage. "Algorithms + Data Structures = Programs" by Wirth is pretty good, but I don't think it was ever translated out of Pascal. And the current modern approach is Google (I only recommend that one as a supplement).

P.S.: One of the Sedgewick books had several errors in the algorithms, so be sure you don't get the first edition.

Comment Re:The dumbing down is real (Score 1) 162

Well...there are partial orderings where the order can only be determined between parts of the covered domain, but global consistency is a requirement. I can imagine cases where time at which something was noticed was blended with the value of what was noticed which could yield contradictory interpretations if you ignored the time, and various other permutations.

The GPs actual claim is, as you say, rubbish, but it may be a simplified abstraction of an underlying true statement. (Or he could be a troll.)

Comment Re: Why not extend "Concrete Mathematics"? (Score 2) 162

Introduction to Algorithms by Cormen et. al. is a good book and covers part of the same space.

I do agree that he uses MIX more than is needed, but it's necessary for a part of what he covers. For other parts C would be a superior substitute. And while I keep several works on algorithms on my shelves, and rarely turn to Knuth, we something isn't covered well elsewhere, that's where I turn.

Comment Re:The "math" of AOCP very important in real world (Score 2) 162

Some of them *are* just like programmers. Others... well, be kind.

That said, all of the higher level languages tend to obscure computational complexity to the point where I can frequently only tell exactly which approach is better by measuring after writing the code in more than one way. Too much magic dust between the level at which I'm writing at and the level it compiles to. But I still think that to be a decent programmer you need to understand things like index registers, storage allocation, and probably accumulators, even though no current chip has them (at the assembler level...probably at the microcode level).

OTOH, if I'm working at the assembler level, then synchronizing thread data visibility is beyond me. (Well, so is most stuff. I haven't done assembler language programming on any modern chip. The last one was the Z80.)

But without the assembler background (MIX would count) you can't build a good mental model of C, and without a good mental model of a basic compiler language, you can't really understand a dynamically allocated vector (or array, depending on your language).

I'm not sure that starting at the top, Python/PHP/Ruby/Scratch/Logo/etc., and building your understanding down will ever work. I haven't seen any good examples. (OTOH, I've certainly seen examples of starting at assembler and then not being able to build up, so perhaps.)

It used to be said that a good programmer tried to learn a new language every year. But that was back when languages were both very different and small. Still, I'd recommend that any programmer work his way through some sort of assembler, C, Scheme, Erlang, and Java. C++ is too big to include. Ada and Eiffel would be good additions, but don't add anything really important. Smalltalk seems to be dieing out, but you should pick up the Scratch dialect, which shouldn't take as much as a week. If you want you could substitute Logo or Lisp for Scheme. The idea here isn't to really master the languages. Just to learn them enough to create something fairly simple, a bit beyond "Hello, World", but not necessarily as fancy as tic-tac-toe.

And anyone who does that counts as a "real programmer", even if they prefer to use Javascript or php...or even bash. Some others will also count as "real programmer", because being a "real programmer" is a matter in interest rather than skill or experience. An inclusive test isn't an exclusive test.

FWIW, I once taught someone to code in Fortran, and he went on to become a professional programmer, but he wasn't a "real programmer", because his interests were in business and astrology, not programming. He *was* a skilled programmer. He was quite intelligent. But that wasn't where his interests were, so he wasn't a "real programmer".

Comment Re:Good idea, bad name (Score 1) 164

There haven't been that many stories, but a few stories have gotten a large amount of publicity, often repeatedly. And there's selection bias, too.

This doesn't prove that it's an incorrect assumption that Tesla drivers try to get the car to drive itself. Just a week ago I saw an electric wheelchair jay walking diagonally across a four lane boulevard (official speed limit 35 mph) while the driver of the wheelchair was busily engaged in texting on their phone. But notice that nobody EVER claimed THAT was safe behavior. So if anything that's evidence that renaming the "autopilot" wouldn't help;

Comment Re:One obvious improvement (Score 1) 188

I've got to disagree...though not totally. ISTM that overloaded operators need to be marked, rather than eliminated. I once suggested that overloaded operators be enclosed in pipe chars, e.g. |+|, but nearly any mark would do. And this be only used for operators. I also wanted to allow alternative symbols, names, etc. to be used for operators, but there I ran into the precedence problem

Comment Re:Readability? (Score 1) 188

The language that's easy to read is the one you know well. I've used Python enough to think that it's easier to read than C or often C++ code that does the same thing. C's problems is indirections via multiple levels of pointers and macros. With C++ it is just that the language as a whole is too large, and I only know parts of it well, though it can include C's problems as well (but it doesn't need to).

Comment Re:The toxic community worries me. (Score 1) 188

I've looked at Nim a couple of times, most recently earlier this month. I didn't get much beyond looking, as I need various libraries as well as the basic language, but it did look interesting. If you only need one or two external libraries it might be worth your while to look at it more deeply than I did.

But I really doubt that their code generation averages as fast as decently hand-crafted code. But it may well be a lot faster to write.

Comment Re:That is correct (Score 1) 158

You've got your definition, I've got mine. If you don't like mine, let's hear yours. (Mine would include not doing things that are clearly going to leave you in a situation that is worse, from your own evaluation, than the current situation, and which you have reason to know will have that result...unless, of course, all the alternatives would lead to even worse results.)

Comment Re:That is correct (Score 1) 158

Well, we know of no fundamental law against it. I would claim that humans are NOT a counter-example existence proof, because to claim we're intelligent flies in the face of a large body of evidence to the contrary. So it may be impossible.

But it's clearly possible to get as close to intelligent as humans are, because there *IS* an existence proof. It may (hah!) require advanced nano-mechanics, but I really, really, doubt it.

That said, it doesn't take that much intelligence to be a threat to human existence. Just being able to issue the necessary commands with the required authority.

That said, while I do consider AIs to be an existential threat to humanity, I consider them LESS of a threat than the current political system. There's a reasonable chance that they'll have sufficient foresight and strong enough ethical constraints that they'll avoid the problem.

Comment Re:AI does what AI is programmed to do (Score 1) 158

FWIW, we can't understand current deep-learning systems either. Different people understand different parts of them. Some understand fairly large parts, but nobody understands the complete program.

FWIW, that was even true with Sargon 40 years ago, and that wasn't an AI in any reasonable sense. It was basically an alpha-beta pruner and an evaluation function. And I understood a LOT of it, but not by any means all. (The source code was printed as a book for the Apple ][, but it naturally didn't include the systems routines, etc.)

People have limits on the complexity that they can understand. It varies slightly between people, but rarely exceeds certain bounds. I tend to call this our "stack depth" though that's clearly a poor analogy. But "working memory" can be measured (inexactly, it's true), and any idea too complex to be held in working memory can't be understood. We handle this by breaking it up into communicating modules, but the communication puts limits on the kinds of ideas we can handle. This is why when parallel programming I tend to use a simplified message-passing actor model. But some things can't be handled that way. If you doubt, try to imagine (visualize) a rotating tesseract. I have trouble even with a simple general quadratic curve and need to solve it and plot it out unless it's in one of a very few special forms.

Comment Re:They are right by the current definition of AI (Score 1) 158

You are making unreasonable assumptions about it's motivational basis. Here's a hint: It won't be analogous to any mammal, though it may be able to fake it so as to seem understandable.

That said, it *might* destroy all humans, possibly by causing us to destroy each other. Were I an AI, and had I decided upon that as an intermediate goal, I think I'd proceed by causing the social barriers against biological warfare to be reduced.

Comment Re:Good Idea! (Score 2) 36

They have NOT re-established their reputation as a reputable technology company. That's going to take a LOT of work. Possibly as much as it took to build it in the first place, and they not only destroyed something that had taken decades to build over the course of a year, they repeated the offense multiple times by doing things like hiring people to put root kits into their devices, and then offering a "repair" that left you vulnerable to trivial attacks.

It's going to take lots of time and effort to repair their reputation. One good device that isn't yet known to be backdoored isn't going to do the job.

Slashdot Top Deals

"The vast majority of successful major crimes against property are perpetrated by individuals abusing positions of trust." -- Lawrence Dalzell