"If you think C++ is not overly complicated, just what is a protected abstract virtual base pure virtual private destructor, and when was the last time you needed one?" -Tom Cargill, C++ Journal, Fall 1990
The use of i and j as loop counters come from Fortran. Fortran IV had implicit typing based on the first letter of a variable name. I - M were implicity integer. I think of i and j as variables for when the language is too low-level to have foreach.
Take a look at boost::lambda. There's a proposal to include it in the standard. It lets you do the right thing, e.g.: for_each(a.begin(), a.end(), cout (1 + _1));
Not quite as sexy as a functional language, but useful w/minimal overhead.
You need to handle pointers and references, google for pointer swizzling. Garbage Collection by Richard Jones and Rafael D. Lins explains some of the issues involved. Alexei Andresceu's Modern C++ Design gives a sample implementation. This is one of the tasks that reflection, aspect-oriented programming or a meta object protocol makes easier, otherwise you need to add a.serialize() method to each object.
Switzerland has four official languages: German, Italian, French, and Romansch.
There's a quatrilingual phrase book available within Switzerland that you may find useful, it's called le langues suisse.
Ah, but our country (I'm American) was founded by religious zealots with guns. The Puritans came here because the Church of England wasn't strict enough. LDS, Scientology, 7th Day Adventist, Baptist, were all started here, it's really unfortunate.
If you want to amuse yourself, cross-reference religiosity rates with the UN's Human Freedom index. With the exception of Communist countries, most of the countries with low rates of religious belief are great places to live.
However, nobody uses it. I don't understand why. Some times ago, it may have been because compression was slow. But nowadays, it's no more a valid point.
Every significant market in the world has many legacy systems. This explains the popularity of C, Unix, Windows NT, gasoline engines, and the major religions of the Western world. Technical elegance is not a factor for the success of an idea, product, or technology; the market has it's own ideas about what it wants.
People are enthusiast for Jpeg2000. But why would Jpeg2000 be adopted while DjVu has never been?
1) Why don't people listen to Ralph Nader? I don't listen to him because I disagree with most of the Green party's policies. 2) Why do people listen to Britney Spears? T & A 3) Why do people eat Vitamin C and Echinacea in massive quantities? 4) Why do some people believe Creationism belongs in public schools? They're religious fanatics. The US has an awful lot of devoutly religious people and unfortunately they vote. 5) Why is Prozac(tm) legal and marijuana illegal? Anti-drug propaganda such as reefer madness. Marijuana doesn't support the Protestant work ethic.
I've got a Network+. It's basically the first 3 chapters of Cisco's CCNA. To prepare, I went to Boson Software and got one of their prep tests for it. Easy to get, but somewhat expensive, I'd stick with Cisco.
IBM's OS/400 has had a an OOFS since it's first release. The idea of metadata goes back quite awhile. Microsoft's new file system is hardly innovative, but they it's unlikely they stole the idea from Be.
Define ripped-off. Dave Cutler and his team came to Microsoft of their own free will. That the designs are similar is not accidental - he was the system architect for both.
Didn't see it because I use Proxomitron. It lets you use regexps to zap ads, and/. ads are already blocked.
Re:OT Seattle Computer Parts
on
iWarez
·
· Score: 1
There are lots of computer parts stores in the Seattle area. In Bellevue, there are at least 4 within a couple blocks of each other. From Seattle, take I-90 East to 148th Ave ?? (the exit is labeled Bellevue Community College), then continue North and turn left on NE20th (Northup Way). For you EE majors, go to VETco further west on NE20th.
These two libraries are the biggest causes of buffer overflows in C. Use a language or library with dynamically strings and the problem goes away. Unless you are writing a system utility or speed critical application, interpreted languages are a reasonable choice - you can always throw more hardware at a problem.
He wasn't repeating the tired old saw about how CLIs are easy to use. Point taken, I've often seen that particular myth on/., that's probably why it popped into my rant.
Michi was pointing out that even a well-designed GUI won't help someone who hasn't got a clue about what they're supposed to be doing. Agreed, I've had clients who had never seen a computer before.
You can actually cause more damage by putting a well-designed GUI in front of a clueless one. They don't have to guess about what commands are available - the commands are all right there in front of them. "Let's see... I want to add a new account, what's this 'root privilege' check box? I'd better check it just in case..."
Your example reminds me of the IRIX system administration tools. Part of designing a good GUI is hiding details that the average user doesn't need to see. Mac OS X has a command prompt, but you'll never need to use it unless you want to.
GUIs don't make life easier unless you actually know what you're doing, *AND* the GUI designer knew what they were doing too. It's somewhat depressing how few good GUIs there are. I'd like to see something inspired by Jef Raskin's ideas.
Fallacy 1: Computing is Easy Computer Science isn't easy, but overall computers have become much easier to use. Compare any modern PC with a PDP-11.
Fallacy 2: Computers Allow People to Do things They Could Not Do Otherwise The World Wide Web, expert systems, natural language translation, mathematics, many forms of automation. All of these technologies have a long way to go, but are still useful. Cheap PC hardware lets me solve many mathematics problems without perceptible delay. It's possible to do video editing on a PC that would have required an SGI just a couple years ago. The typewriter has none of these capabilities. Computers cannot help those who are unable or unwilling to think, but intelligent people have benefited greatly.
Fallacy 3: Computers Increase Productivity Of course they do, ever try managing a snailmail mailing list w/o mail merge? Consider all of the benefits of automation over the past 30 years. Thanks to Moore's Law, many applications no longer need to be written in C or assembly.
Fallacy 4: Programs Help Their Users I would make the argument that many tools have gotten sufficiently powerful that programmers are no longer needed. Much of the tedium of early computer use has been automated away.
Fallacy 5: If It's Graphical, It's Easy Please don't repeat the tired old saw about how CLIs are easy to use. A well-designed GUI is easier to use and has a shallower learning curve. Most of the flaws you are referring to are in Windows, classic MacOS was quite easy to use.
Fallacy 6: Computers are Getting Faster Computers are getting faster and making a crack at Microsoft doesn't change this. How many current applications are now IO-bound instead of CPU-bound? How many desktop PCs have cycles to spare for RC5 or SETI@Home? Look at how many programs are written in interpreted or safe languages and compare to 10 years ago. Compilers are faster and generate better code. Even Microsoft OSes are reaching acceptable levels of stability.
Fallacy 7: Programs are Getting Better I would argue that most desktop applications are close to feature complete. Those which aren't do improve with each release - Adobe Photoshop is an excellent example.
Fallacy 8: Programmers are Getting Better Computer Science is still in it's infancy, but it's becoming more scientific every day. Even at the mediocre school I'm attending, writing a Unix kernel is required to graduate. I predict software engineering will become "real" in 50 to 100 years.
Fallacy 9: Programming is About Date Structures and Algorithms What else would it be about? ADTs and object-oriented programming make complex tasks easier to deal with. Big O notation provides a means of evaluating performance of algorithms and shows you why you shouldn't use a bubble sort for a 1000 element array.
Fallacy 10: Open Source is the Answer For some problems, it's a reasonable solution. For others, it's foolish. If an inhouse application costs development money, it may be advantageous to open source it. Source code is also useful when a program is EOLed by its developers.
Fallacy 11: Standards all the Solution Standards may be foul compromises but they make cross platform development possible. Look at all of the different web servers, POSIX OSes, and C compilers out there and say that again with a straight face.
Fallacy 12: We are Making Progress Yes we are. 30+ years after their invention, garbage collection, object-oriented programming, safe languages, and type checking are all generally considered good ideas. Functional programming shows a great deal of promise, and formal proofs are feasible for real world applications, e.g. Praxis' Spark95. Telelogic has an SDL to C translator that will produce C source code from a specification.
Fallacy 13: The Industry Knows Where it is Going Does any industry? We've seen the second tech boom come and go, but overall software and hardware quality has been improving.
J is free, neat! Last time I looked at it, it was shareware. I've never run into a limitation on K, but I haven't written that many large programs in it. The commercial K license is $7500, or so last I heard. Nowadays KX seems to be marketing the database, not the language.
I'll second that. Morgan Stanley has a GPLed implementation for most Unices called A+. For a reference, pick up APL: the Language and its Usage, Learning APL: An Array Processing Language, or Ken Iverson's A Programming Language, from which the name of the language is derived. A modern variant which uses ASCII characters is K. Free as in beer, for FreeBSD, AIX, Linux, Win32.
"If you think C++ is not overly complicated, just what is a protected abstract virtual base pure virtual private destructor, and when was the last time you needed one?"
-Tom Cargill, C++ Journal, Fall 1990
The use of i and j as loop counters come from Fortran. Fortran IV had implicit typing based on the first letter of a variable name. I - M were implicity integer. I think of i and j as variables for when the language is too low-level to have foreach.
keyword ... drowyek dates back to Algol 60 or 68, iirc. It's also used by the inhouse CMU and DEC language BLISS.
I've always preferred CHAOSnet over RFC1149
Take a look at boost::lambda. There's a proposal to include it in the standard. :
It lets you do the right thing, e.g.
for_each(a.begin(), a.end(), cout (1 + _1));
Not quite as sexy as a functional language, but useful w/minimal overhead.
You need to handle pointers and references, google for pointer swizzling. Garbage Collection by Richard Jones and Rafael D. Lins explains some of the issues involved. Alexei Andresceu's Modern C++ Design gives a sample implementation. This is one of the tasks that reflection, aspect-oriented programming or a meta object protocol makes easier, otherwise you need to add a .serialize() method to each object.
Switzerland has four official languages: German, Italian, French, and Romansch.
There's a quatrilingual phrase book available within Switzerland that you may find useful, it's called le langues suisse.
If you want to amuse yourself, cross-reference religiosity rates with the UN's Human Freedom index. With the exception of Communist countries, most of the countries with low rates of religious belief are great places to live.
Speedometers in California police cars are yearly calibrated for exactly that reason.
Every significant market in the world has many legacy systems. This explains the popularity of C, Unix, Windows NT, gasoline engines, and the major religions of the Western world. Technical elegance is not a factor for the success of an idea, product, or technology; the market has it's own ideas about what it wants.
People are enthusiast for Jpeg2000. But why would Jpeg2000 be adopted while DjVu has never been?
Name recognition and support by major vendors.
According to Richard Zack's Underground History, Edison drank a lot of cocaine laced wine.
1) Why don't people listen to Ralph Nader?
I don't listen to him because I disagree with most of the Green party's policies.
2) Why do people listen to Britney Spears?
T & A
3) Why do people eat Vitamin C and Echinacea in massive quantities?
4) Why do some people believe Creationism belongs in public schools? They're religious fanatics. The US has an awful lot of devoutly religious people and unfortunately they vote.
5) Why is Prozac(tm) legal and marijuana illegal? Anti-drug propaganda such as reefer madness. Marijuana doesn't support the Protestant work ethic.
DARPA was a large investor in the 1980s AI boom and the DoD used AI technology to handle supply logistics during the Persian Gulf War.
I've got a Network+. It's basically the first 3 chapters of Cisco's CCNA. To prepare, I went to Boson Software and got one of their prep tests for it. Easy to get, but somewhat expensive, I'd stick with Cisco.
IBM's OS/400 has had a an OOFS since it's first release. The idea of metadata goes back quite awhile. Microsoft's new file system is hardly innovative, but they it's unlikely they stole the idea from Be.
Define ripped-off. Dave Cutler and his team came to Microsoft of their own free will. That the designs are similar is not accidental - he was the system architect for both.
Didn't see it because I use Proxomitron. It lets you use regexps to zap ads, and /. ads are already blocked.
There are lots of computer parts stores in the Seattle area. In Bellevue, there are at least 4 within a couple blocks of each other. From Seattle, take I-90 East to 148th Ave ?? (the exit is labeled Bellevue Community College), then continue North and turn left on NE20th (Northup Way). For you EE majors, go to VETco further west on NE20th.
Stupid /. lameness filter - the title should be stdio.h and string.h
These two libraries are the biggest causes of buffer overflows in C. Use a language or library with dynamically strings and the problem goes away. Unless you are writing a system utility or speed critical application, interpreted languages are a reasonable choice - you can always throw more hardware at a problem.
He wasn't repeating the tired old saw about how CLIs are easy to use. /., that's probably why it popped into my rant.
Point taken, I've often seen that particular myth on
Michi was pointing out that even a well-designed GUI won't help someone who hasn't got a clue about what they're supposed to be doing.
Agreed, I've had clients who had never seen a computer before.
You can actually cause more damage by putting a well-designed GUI in front of a clueless one. They don't have to guess about what commands are available - the commands are all right there in front of them. "Let's see... I want to add a new account, what's this 'root privilege' check box? I'd better check it just in case..."
Your example reminds me of the IRIX system administration tools. Part of designing a good GUI is hiding details that the average user doesn't need to see. Mac OS X has a command prompt, but you'll never need to use it unless you want to.
GUIs don't make life easier unless you actually know what you're doing, *AND* the GUI designer knew what they were doing too.
It's somewhat depressing how few good GUIs there are. I'd like to see something inspired by Jef Raskin's ideas.
Fallacy 1: Computing is Easy
Computer Science isn't easy, but overall computers have become much easier to use. Compare any modern PC with a PDP-11.
Fallacy 2: Computers Allow People to Do things They Could Not Do Otherwise
The World Wide Web, expert systems, natural language translation, mathematics, many forms of automation. All of these technologies have a long way to go, but are still useful. Cheap PC hardware lets me solve many mathematics problems without perceptible delay. It's possible to do video editing on a PC that would have required an SGI just a couple years ago. The typewriter has none of these capabilities. Computers cannot help those who are unable or unwilling to think, but intelligent people have benefited greatly.
Fallacy 3: Computers Increase Productivity
Of course they do, ever try managing a snailmail mailing list w/o mail merge? Consider all of the benefits of automation over the past 30 years. Thanks to Moore's Law, many applications no longer need to be written in C or assembly.
Fallacy 4: Programs Help Their Users
I would make the argument that many tools have gotten sufficiently powerful that programmers are no longer needed. Much of the tedium of early computer use has been automated away.
Fallacy 5: If It's Graphical, It's Easy
Please don't repeat the tired old saw about how CLIs are easy to use. A well-designed GUI is easier to use and has a shallower learning curve. Most of the flaws you are referring to are in Windows, classic MacOS was quite easy to use.
Fallacy 6: Computers are Getting Faster
Computers are getting faster and making a crack at Microsoft doesn't change this. How many current applications are now IO-bound instead of CPU-bound? How many desktop PCs have cycles to spare for RC5 or SETI@Home? Look at how many programs are written in interpreted or safe languages and compare to 10 years ago. Compilers are faster and generate better code. Even Microsoft OSes are reaching acceptable levels of stability.
Fallacy 7: Programs are Getting Better
I would argue that most desktop applications are close to feature complete. Those which aren't do improve with each release - Adobe Photoshop is an excellent example.
Fallacy 8: Programmers are Getting Better
Computer Science is still in it's infancy, but it's becoming more scientific every day. Even at the mediocre school I'm attending, writing a Unix kernel is required to graduate. I predict software engineering will become "real" in 50 to 100 years.
Fallacy 9: Programming is About Date Structures and Algorithms
What else would it be about? ADTs and object-oriented programming make complex tasks easier to deal with. Big O notation provides a means of evaluating performance of algorithms and shows you why you shouldn't use a bubble sort for a 1000 element array.
Fallacy 10: Open Source is the Answer
For some problems, it's a reasonable solution. For others, it's foolish. If an inhouse application costs development money, it may be advantageous to open source it. Source code is also useful when a program is EOLed by its developers.
Fallacy 11: Standards all the Solution
Standards may be foul compromises but they make cross platform development possible. Look at all of the different web servers, POSIX OSes, and C compilers out there and say that again with a straight face.
Fallacy 12: We are Making Progress
Yes we are. 30+ years after their invention, garbage collection, object-oriented programming, safe languages, and type checking are all generally considered good ideas. Functional programming shows a great deal of promise, and formal proofs are feasible for real world applications, e.g. Praxis' Spark95. Telelogic has an SDL to C translator that will produce C source code from a specification.
Fallacy 13: The Industry Knows Where it is Going
Does any industry? We've seen the second tech boom come and go, but overall software and hardware quality has been improving.
J is free, neat! Last time I looked at it, it was shareware. I've never run into a limitation on K, but I haven't written that many large programs in it. The commercial K license is $7500, or so last I heard. Nowadays KX seems to be marketing the database, not the language.
You could use the SPIM MIPS R3000 emulator. Available for Linux, Windows, and others.
I'll second that.
Morgan Stanley has a GPLed implementation for most Unices called A+.
For a reference, pick up APL: the Language and its Usage, Learning APL: An Array Processing Language,
or Ken Iverson's A Programming Language, from which the name of the language is derived.
A modern variant which uses ASCII characters is K. Free as in beer, for FreeBSD, AIX, Linux, Win32.