We buy more than half of all electronic devices and more than half of all computer games...
Are you sure about that? I would find it surprising if that were true--especially the games part.
Anyway, it doesn't surprise me women use the internet more. That is something I always expected would happen. First of all, there are more women than men so women will have slightly more numbers. Second, internet has great potential to replace or complement social relationships. Women seem to be more into "social stuff" than men.
Having said that, I think most geeks will be men. So tech-oriented websites, for example, will be dominated by men. It remains to be seen if I'm right...
ANSI/ISO standard C++ code runs on any machine with a C++ compiler just like Java code runs on any machine with a JVM.
I don't know THAT much about languages but I don't think C++, even written to ANSI specs, would be machine compatible across platforms. Wouldn't things like 'little endian vs big endian' cause problems? I am assuming those problems don't exist in C# since it uses a VM (that's my impression). In any case, most people don't write ANSI standardized code.
Most people do a job that they hate because they have to pay the bills. I wish they could/would do a job that they like instead.
It is my view that this is not possible under capitalism...
Well, I think if they're not good at their job, they should be fired. If you can't handle the job and aren't qualified, then you have no business doing the job. You may think this makes no sense, but I don't think people with no skill should be doing skilled jobs.
The whole notion of a skilled job is purely arbitrary in my opinion. So-called unskilled labour has the same issues (some people who are good, many who are not). If my assertion that the majority of people are bad is correct, then what you are proposing cannot be done. You are literally asking for the majority of computer engineers, or chemists, or lawyers, or doctors, or drivers, or teachers, or deliveryperson, or whatever, to be fired. The few who are good cannot do all the jobs. That's why people who are not good are working in the first place. Analogy to this is school. Only a minority of people are good (in the sense that they do the work, perform well at school, etc). Yet you cannot only have schools for these good people. You need schools for everyone.
I don't think you should develop languages so that bad programmers can make bad software.
One doesn't develop a language for that reason. Instead, newer languages are progressive in some manner. If you are a bad programmer, you will be bad anyway--it doesn't matter if it's a high level language or not. It's just that, higher level languages allow bad programmers to pass themselves off as average. But that is never the intention. I am sure that the computer scientists who create new languages never have the intention of building a language for bad programmers.
Seriously what is C++ missing as far as high level goes?
This whole argument depends on what you perceive to be a higher level language. To ME, languages progress over time. The higher level languages are the ones that have more "features" than the lower level ones. Generally, this means that higher level languages automate more things than lower level languages. That's how I look at languages. I know a lot more can be said but that's my rough vision.
Given that, C++ is a high level language but C#/Java/Python/Javascript/etc is even higher. What's C++ missing? Well, I'm not an expert on all these languages but things like garbage cleanup, and write-once-run-anywhere, among others, are things found in higher level languages. The fact that I can write C#, Java, or Python code and run it on any machine (with a VM/interpreter/whatever) makes them a higher level language.
C++ will never have these capabilities. Even if, as another poster in this thread says, you write using standard ANSI C++ standard, it isn't exactly machine-compatible. Correct me if I'm wrong but wouldn't things like memory system (eg. little endian vs big endian) cause problems? I presume that those problems don't exist in C# (I am not an expert on C# but that's my impression).
So, aside from the fact that C++ allows access to the low level depths of C, how exactly is Java a higher level language? Do you call it that because it does garbage collection, or what?
I'm not an expert on Java (or many other languages either). Well, things like garbage collection would definitely make it HIGHER. I haven't done java programming in a while but doesn't java also have things like better object oriented classes (eg. better inheritence, abstract classes, etc). But I think the main reason it is a higher level language is because java code can run on any machine. The higher up you go on the language hierarchy, the less the dependence on the underlying machine architecture. AT the lowest levels (say assembly), code is heavily dependent on the processor and memory subsystem. At the highest levels (say vbscript or javascript or python), code is totally independent of machine architecture. Java certainly has that feature (whether in practice java runs uniformly across all platforms is another issue).
I disagree. I would assert that since the vast majority of programmers are bad, they need to be fired.
You are going to totally disagree with me since you seem like a conservative. It is my opinion that jobs are simply human economic slavery (stop rolling your eyes;) ). What this means is that the vast majority of people in a particular profession don't really want to be there. If a person was rich, I am sure they would be doing something else. This is the case with the VAST majority of people. Just to give you an idea, the vast majority of programmers probably aren't even tech-savvy. Many don't even read slashdot or keep up or whatever. Therefore, I don't know how you can honestly call for the vast majority of programmers to be fired. If the vast majority of programmers should be fired because they are "bad", then the same should apply to police officers, doctors, scientists, sanitation workers, and so forth. What you are saying makes no sense. I can understand why you are saying it though. You are probably a capitalist (like most conservatives) so you seem efficiency. You seem to create a totally efficient world where humans are operating at 100%. Unforutnately for you, it isn'g going to happen. You literally have to replace humans with robots for that to happen.
It's their fault that jobs are outsourced to India because they can't produce a product of adequate quality.
What I said uniformly applies to everyone. By going to another country, it isn't going to change things unless Indians (or anyone else for that matter) are better. I expect bad programmers in India just like in USA. In any case, jobs are being outsourced for financial reasons--not quality.
I think they'll keep using C++ with the libraries they've developed over the years because to keep pushing the envelope in their fields, they have to increase their processing requirements.
There is a lot of investment in existing code. So it's not as if they will be thrown out just because a new language is popular (although, doing so will create jobs for programmers a la Y2K problem). A lot of companies, especially banks, used COBOL well after it was "extinct". So when I say that Pixar (or whoever) will switch, I am saying that all new code will be in, say, C# and the existing C/C++/whatever will be replaced at some point.
For me to write a better/faster/smaller program would take a lot of time, and the compiler does it faster than I would.
That is the same reason you will switch from your beloved C++;) to a higher level language in the future. Your fate is written on the wall. I can see it;)
Yeah... languages don't necessarily incorporate all the good features of older ones. Furthermore, some languages, that are arguably superior, never become popular and end up being forgotten/ignored.
You also point out an important point: the underlying capabilities of computers has changed over time. Speed and memory were big in the past; not anymore. Things like distributed code will probably be more important in the future than now.
Overall, however, the pattern has been that the dominant language is superior (in most respects) to the previously dominant one.
Yes, Plato's Republic is the basis for fascism. It is neither democracy, nor monarchy.
I don't know much about Plato's Republic but I have never heard anyone consider it to be fascist of any kind. If anything, it seems to be the basis of democracy.
I do however, want to build a better future. Also, if there is one thing that is missing from this world it is romance...
By romantizing the past you are simply deluding yourself. World HAS progressed over time whether you think so or not.
I would argue technological advancements have done much to rob us of our humanity.
What are you doing on Slashdot then?:) Are you just spying on the evil technology-oriented inviduals?;) In any case, technology is neutral. If humanity has lost its ways, it's its own doing. I agree to some degree that technology is not being used in the best manner. However, that is humanity's fault.
Spielberg is no artist.
Spielberg is no more an artist than Shakespeare. So yes, if you consider anyone popular to be lacking artistry thenyou might be right.
I have also never considered anything dramatic to be particularly artistic.
Your definition of art is very narrow. Why do I get the feeling that you are the type of person who would consider classical music to be art but not techno music?
I have my vision, and you have yours... Perhaps we will meet on the battlefield someday and see which triumphs.
I'm the non-violent type. I hope I don't end up on any battlefield.
Free to do what? That is the important question.
Humans should be free to do whatever they want, within some reason of course (eg. I shouldn't be free to kill you). If someone wants to hang around doing nothing, that's perfectly ok with it. If someone wants to spend their whole life trying find an alternative energy to modern fossil fuels, that's fine. If someone wants to contemplate the meaning of existence, they should be allowed to do that. If someone wants to spend all their time debating on internent message boards;) they should be free to do that.... People should be free to do whatever they want. Clearly this does not sit well with you because you want yourself--as well as all humans--to have some purpose. You still haven't figured out that the purpose of life is to figure out your own purpose. Instead of worrying about others and trying to force people into your mould, you should spend time contemplating how YOUR life should be...
Why should someone know about assembly language when the higher level languages have absolutely nothing to do with it? Even worse, why should someone know machine language when hardly anyone can touch that?
I'm not saying that a computer developer shouldn't know these things. It certain helps and universities should--and do--teach them, but they only help a few developers. I'm not really sure how useful these things are for software development. As higher and higher languages are used, I predict that future developers won't even learn these things.
C/C++ development might involve knowledge of assembly programming (after all, you CAN access registers, stack pointers, etc, and inline assembly code if you wanted). But C# and Java probably will abstract away assembly language. And higher level ones after that (say Python, Javascript, VBscript, or whatever) will totally disallow you from touching assembly. That's what I see happening.
Software development isn't language dependant, it's paradigm dependant.
That's true but I disagree with your main point. Higher level languages DO speed up development time. If they didn't why would someone pick one language over another (when they are both the same "types" of languages). For instance, why would anyone pick Java over C++?
That is to say, it makes it impossible for a bad programmer to screw up an easy task while making it more difficult for a good programmer to accomplish a more difficult task.
Since the vast majority of programmers are bad*, higher level languages should be chosen, and will ultimately win out.
* This applies to anything. In any field, only a small, finite, number of people are good. The rest are not good and simply in it for the money and could care less.
Am not. And you are an arrogant and self-righteous asswipe for putting that in caps.
It's not in caps; it's bold. It is a heading that's why it's bold. I guess I could have picked a better title. I didn't mean to pick you out or anything (sorry if it seemd that way).
The balance of payments in and out of the country is conserved... The fact that there is growth over time does not change that fact.
THe balance of payments is theoretically zero because it is sort of like an "accounting" concept. That doesn't prove anything. In any case, some countries have negative balance of payments in practice. A country like USA has negative balance of payment so I don't know what your point is. Read the first two points in this article and check out the graph.
I don't know why you are looking at balance of payments. It doesn't show anything. In theory, whether a country has ZERO trade or VERY HIGH trade, the balance of payments will be balanced. How does this prove that what passes for "trade" these days is good? What you are arguing is akin to arguing whether a business is doing well or not by looking at the balance sheet. The balance sheet ALWAYS balances so doesn't show anything.
You sound like the victim of third-world political indoctrination.
Really? The so-called 3rd world is more influenced by capitalism than anything. Otherwise, they wouldn't be signing these blatantly one-sided "free trade" agreements. In any case, you don't know who I am, what I am, or where I am. Stereotyping can lead to mistaken assumptions so I suggest you lay off attacks like that.
Anyone who engages in an economic discusion and uses the terms "Marxist" and "Capitalist" is giving himself away as phony.
Whoever said I was what the capitalist establishment would call 'an economist'? I am not saying I'm an expert on this or anything. If anything, I don't agree with what passes for "economics" these days.
Put down that Communist Manifesto you are holding and pick up an eco textbook.
What passes for economics these days is nothing more than capitalist economics. The day will come when all of you are shown to be a bunch of fools. You guys are nothing more than the modern day alchemists. Capitalism WILL collapse...
Australia is becoming more conservative by the day. This essentially means supporting imperialist aims of USA* in order to get some favours in return. Extradicting a citizen to a foreign country for no crimes committed is ludricrous! This is even more silly given the nature of the internet with typical users unable to understand all the laws of every country. What's next? Everyone memorizing the laws of 191 countries (as recognized by the UN)?
Conservative-types love to preach nationalism and how their citizens are all cool and all, but when citizen lives and their livelihoods are under threat, they are the first ones to ship people off.
Lastly, it should be noted that the cooked up charges by the US prosecutors can only be dreamed up in a capitalist society. How the hell can you charge a guy for $60(??) million in damages** when you can't even prove that anyone that pirated the goods would be willing to pay for it? I'm not ignoring the crime but it is truly pathetic when courts allow large corporations (and only them) to charge for POTENTIAL losses.
I urge citizens of the world to protest against policies which imprison people for potential losses without any solid basis. I also urge citizens everywhere to resist corporate favours passed under imperialist aims of country.
Sivaram Velauthapillai
* Yes, forcing down your own laws (in this case US laws) on other countries is imperialist in nature. This is just like the Romans claiming everyone must follow their laws.
** Charging such high damages pretty much ensures that the defendent, if convicted, faces extremely harsh punishment. Even organized criminals, who actually kill, never get charged that much in damages!!! It wouldn't surprise me if people ended up serving more time in jail for computer crime than organized criminals:( Oh, defrauding investors (a la Enron, Martha Stewart, Worldcom, etc) will also cost you less jail time than computer crime.
Platonist. I advocate the society proposed in Plato's Republic. The superclass should be philosopher kings.
Are you being serious or what?
I am referring more to the prosperity and culture which was fostered in Italy, France, and Germany prior to twentieth century. How many great philosophers, composers, artists came from that age?. The west today has no Michaelangelo, or Leonardo da Vinci, or Mozart... Western culture, for all intents and purpose is dead and has been for a half century.
Obviously you are living the past. Like conservatives of all stripes, you miss the past. Your vision is nothing more than a romanticized past. The people during the Renaissance seem great because Europe didn't have anything before it (dark ages). Things have changed. Right now we have science which has replaced a lot of things. The Leonardo da Vincis and the Michaelangelos have been replaced by the Einsteins, Plancks, and Hawkings. The Mozarts have been replaced by Steven Spielbergs, Stanley Kubricks and John Williams. Film has replaced plays and operas. Clearly you haven't gotten over such changes.
Then you will have to give some careful thought to alternatives, and the true motivation of existence.
Most humans are slaves to the capitalist overlords. Until they are free their true potential will neve show.
Bugs happen in implementations of standard libraries too. Being standard doesn't decrerase it.
Standard library bugs are more easily detected (since many people use it) and are fixed more quickly. If you write your own library or use a 3rd party vendor, the reliability will be worse.
And you're right, not everyone should write a TCP/IP library- you buy one or find one on the web.
These ones won't be as dependable. I'm not saying you shouldn't do it. If it suits you, go ahead. But their quality is worse. If Microsoft finds a bug in their C# library, you are pretty sure it will get fixed. If you find a library on the net you are not quite sure--it may get fixed today or next year.
In any case, no one is forcing you to use these libraries. There is nothing stopping you from plopping down your own library and using it.
THis is just not true. Just like any other languge, the majority of bugs occur due to logical, not syntax, errors. Thse are the bus that are hard to find and expensive to fix. These kind of bugs are quick.
Pointer errors fall into the logical category. They clearly are not syntax or else the compiler would pick it up. Pointer errors ARE a HUGE problem in the C/C++ world. If you don't believe me, why do you think operating systems started allocating specific memory area for each software? Why is Longhorn (and.NET) limiting memory usage by an application to specific areas? It's because memory leaks, memory corruption, and others are the biggest problem plaguing software--and nearly all of these are due to pointer problems. If you still don't believe me, let's wait until Longhorn comes out and we'll see how good the software is. If what I am saying is right, applications written in C# will be less buggy than C++.
No, you don't. You avoid bugs with error handling. Exceptions are a poor way of doing it. It breaks the logical flow of the program, and encourages laziness. Exceptions are a way of trying to avoid doing actual error checking, and is a huge source for bugs.
If you can do error checking, you should do that foremost. You only use exception handling if you can't do error checking. An an example, games don't do much error checking because it slows things down. Instead they rely on exception handling (at least in the performance critical areas). In contrast, a typical application should do error checking. If you are not doing error checking and relying on exception handling, your methodology is wrong.
So to sum up, if someone is doing exception handling instead of error checking, they are making a mistake. They are two different things and can't really replace each other (for instance, exception handling doesn't really tell you what is going on because the exception may be caused by a whole hoard of issues whereas error checking tells you exactly where the problem is). So I guess we kind of agree on this issue: people shouldn't be using exception handling when error checking is sufficient.
False. The "higher level" languages are no faster to program in than C or C++.
Wait 3 years and tell me if this is true. Higher languages are ALWAYS faster to program in than lower level ones. Historically this has always been true IN GENERAL (of course there are some minor exceptions). Assembly takes longer to program than C; C takes longer than C++; and C++ should take longer than C#. The features added by higher level languages always speed up development. For example, drawing a window using assembly takes an insane amount of time. In C, it would take quite a while too. In C++, it would be much quicker.
C# and Java (although I think C# will kill off Java) will dominate in a few years. Things that took you 1 hour now will probably take 30 min in C#.
That may be the wost argument of all. First off, as computing power increases, so do features and bloat. Enough so that it completely eats up the Moore's law gain. Secondly
Any complex piece of software is going to have to reuse proven libraries and strategies to be successful. Imagine having to rewrite the STL every time you needed a container class.
I'm not sure if your message is directed at me because I agree with everything you say:)
That brings me to a related point, and that is the irony of some developers' irrational fear of technology.
A technologist fearing technology sounds oxymoronish but it's true:( People should always be willing to learn new technologies yet many in the field don't. Perhaps it's tight deadlines and pressure, or maybe people in the field just aren't into technology (i.e. not really tech-savvy like on Slashdot), but whatever the hell it is, it isn't good.
The whole point of universities is to teach you to learn. Universities aren't there to teach you C or C++. They are there to instill confidence in people so that they will learn any new language/technology that they face in the future. If someone encounters C#, they should learn that--not abandon it. Unfortunately, it seems universities have completely failed in this matter (although the fact that employers don't hire based on this might have something to do with it).
why am I not allowed to use any of the thousands of libraries and class systems?
Well you CAN use your own library. It just depends on the details. For instance, if you don't like the, say, standard network libraries, you can purchase your own or design your own. There is nothing stopping you from overriding or using your own. Of course, there are some basic ones that are required. But this goes for any language. I mean, even C++ has basic libraries (such as the math libraries, or vectors, and so on).
I don't really think the higher level languages are really limiting you too much. Yes, you lose some power; but you gain some improvements. The main downside to higher level languages is speed, but since computing power always increases, this isn't a big deal.
And you need to understand memory because the machine does. You cannot abstract it away. However, I'm not saying don't use higher level memory abstractions, just understand what's being abstracted.
Memory is abstracted ANYWAY. I'll bet that your understanding of memory is very different from the underlying truth (depends on your knowledge though--this might be a losing bet on my end:) ). The understanding of memory by programmers (computer scientists) is an abstract version of the reality (as understood by computer engineers). As you move into higher and higer programming languages, it becomes more abstract. For example, programming in assembly pretty much meant that you need to know about individual registers on the, say, x86 processor. When you program in C, your knowledge is a little bit more abstract (not quite the same degree as assembly). If you go even higher into C++, you hardly deal with registers. Furthermore, in Java you hardly deal with any memory at all (since you odn't have pointers). Basically, memory gets abstracted more and more as you move up. I don't see anything wrong with that. If you are programming in C# or Java, you can't even access memory locations so what knowledge is required regarding memory?
Having said that, I agree with you that it is always good to have an understanding of what is going on. The real question is, where do you draw the line?
Not wanting to understand what a pointer is is a terrible reason to use a VM based language.
I agree! Using a higher level language because you don't want to understand pointers is a terrible decision. HOWEVER, using a higher level one because you want to minimize bugs caused by pointers (of which there are many in C and C++) is a great idea. I would hope that higher level languages become popular because of the features they offer (eg. less bugs due to less probability of manipulation of pointers; quicker development; etc), and not because you can't understand the lower level language. If you can't--or don't want to--learn lower level programming language concepts then you shouldn't even be programming. Higher level languages "dumb down" programming but that's not why I support them; I support them because they are superior.
The thing that bothers me is the argument that high-level == VM based languages. That holds no water whatever.
I'm not necessarily talking about a language with a VM, although the two emerging ones (C# and Java) do have it. I am also arguing in favour of higher level ones like Python or Javascript (these are interpreted). In any case, C# and Java ARE higher level than C++.
C++ is plodding along with it's "high level" + "no paying for what you don't use" philosophy and doing quite well with it.
You could have used that argument 20 years ago in favour of assembly (instead of C). Or 10 years ago in favour of C (instead of C++). Yet, the higher level ones won out. If you don't like the higher level emerging languages you can stick with a lower level one that you like. However, by doing so, you give up the benefits
So what type of fascist are you? Who will be the "superclass" under your system? Are you a neo-Nazi? Or White Supremist? Or...?
Only through unity of purpose towards an aesthetic ideal can civilization prosper. Only with the guidence of enlightened leaders can peace be maintained.
Well, history seems to suggest otherwise. The last time an "enlightened" leader wanted to unify certain people and create a super civilization, he caused the deaths of 50 million, and ended up killing more of "his kind" than anyone else in history.
I suggest you prepare yourself, as the revolution will come in your lifetime.
I think that is the only point I agree with. I DO expect a revolution within my lifetime. I predict this will happen when capitalism collapses...
You are overlooking the advantages of higher level languages: less bugs and quicker to develop. I disagree with your comments:
1)Standard library? Standard libraries just kill innovation by making everyone default to one way of doing it. Look at he Java libraries- frequently clunky, poorly designed, and some parts are just laughed at. Libraries shouldn't be decided by the standards comittee. Let people write libraries on their own, and let competition bring out the best. Just about anything you want a library for you can find with a quick google.
People writing their own libraries can result in way more bugs. Using a standardized library means that you know it works and exactly what it does. This is why they are so popular. No one wants to write their own TCP/IP library. They want to use an existing, throughly tested one.... In any case, what you are saying can still be accomplished. If a language has horrible libraries, use your own. No one is stopping the "innovation" that you cite.
2)C's "funky arrays" are necessary if you want to have arrays as pointers. I'll take the power of pointers over the negligible gain of a capacity field any day. I also don't WANT the compiler adding any code for me- I'll do my own bounds checking, thanks.
You will do a FAR WORSE job doing bounds checking than the compiler or interpreter. Also, compilers these days are more efficient than programmers. Using pointers is more flexible but it is far more risky. The vast majority of problems (and hard to debug issues) in C are from pointer problems.
4)Exception handling? Bleh. Exceptions break the logical flow of the code. The idea that we can all of a sudden jump to an arbitrarily high error block at any time is what makes C++ and Java so hard to debug.
Exception handling can be better. I don't think it is that great in any of the popular languages that I know of. But back to your point, they are important. Again, you avoid bugs with exception handling.
The more I see other languages, the more I think C is really optimal.
C is optimal if you don't care about some things (such as bugs, development speed, etc). What the higher level languages provide are development speed and simplicity at the expense of performance and flexibility. I personally think that higher level languages will always rule. As a matter of fact, I expect all future applications (in many years from now) to be written in scripting languages. I think something like Pyton (or a future language like that) will dominate. It sounds crazy but I think it will happen. As computing power increases higher level languages and scripting languages will become more attractive.
And to become PM, you should have a higher moral than the common CEO.
Since when? Not really... To start with, nearly all politicians are liars. They break their promises all the time. This pretty much means that they cannot have any high moral ground. A prime minister is just a politician that has more power than others.
In theory, you pay taxes for the infrastructure the governement provides. By profitting from the canadian infrastructure, but hiding his profits from the canadian governement, he morally stole something from the canadian people.
He didn't HIDE his profits. He just minimized paying taxes. Find me one corporation or business that doesn't do this. Even YOU have probably done this. The only difference, however, is that you cannot afford to stash your account in some bank in a far-away country. Wealthy people and corporations can. Private businesses spend millions trying to avoid paying taxes and using all the loopholes. This is pretty much the norm. Ask any accountant or financial officer in a corporation.
As the owner of his company he had to choose if he wanted to maximise his personal fortune, or give his country a just part of his profits.
Everyone, except some truly altruistic people, will maximize their personal wealth. It is not reasonable to expect the prime minister to not do something that others take for granted.
There is the huge conflict of interest : the best for Canada would be to pass laws that stop or at least restrain this tax avoidance. The best for his company would be to pass laws who make it even easier.
There are FAR WORSE things than that. Take Bush for instance. He has pretty much handed his friends in the oil industry whatever they wanted. Bush has weakened all sorts of environmental regulations (Cheney even made up his policy by consulting oil executives only). Don't expect the politicians to do anything to hurt themselves.
Oh, and it's not capitalism either. Capitalism is all about free market. Subventions disturb the market and are therefor bad.
But allowing big companies to escape taxes while providing them with the same infrastructure is a form of hidden subventions and therefor a Bad Thing even in liberal theory.
No, it's capitalism all right. Capitalism calls for lowering of taxes so I don't know where you get the idea that "escaping" taxes was bad thing. In fact, (pure) capitalism calls for aboslishment of all corporate taxes. In any case, I don't see anything insidious or hidden happening (you do).
The system that we have currently isnt capitalism. The corporated world demands (and gets:( ) lower taxes, less social system, but as soon as you touch their subventions, they cry foul!
My theory is that capitalism will result in corporations ruling the world. So far I seem to be right...
After saying all that, I can only conclude one thing. You hold the prime minister's position in high regard. In contrast, I don't. My philosophy is 'expect the worst when it comes to econopolitics'. This goes for the PM or anyone else...
What I am about to say applies to capitalism in general (so don't assume it's just the computer industry; what I say should equally apply to, say, farming).
You are wrong
I think your understanding of capitalism is completely wrong. There is NO SUCH thing as CONSERVATION under capitalism. This is why capitalism can increase the wealth (eg. GDP) of a country. In fact, trade can increase the wealth of all countries that engage in it*. If your assertion were correct, this wouldn't happen (the total wealth in the world will be constant). Your conservation principle is automatically violated by the growth in wealth.
Why some don't support the present
There are many reasons people are against what is happening. Clearly some people are racist and don't want to see "other kind" get jobs. Some people on this message board have already shown that. Then there are others who are clueless when it comes to economics and somehow think that they "own" the jobs (whatever that means). I'm not any of these. I'll tell you why I'm against so-called "free trade" and the most popular form of capitalism today, neo-liberal economics.
I'm not a capitalist, and I'm not a nationalist either. I could care less about countries (I can't wait until all countries dissapear). The problem with so-called free trade is the following. We know for sure that trade benefits countries. However, the benefits can be shared in many different ways. One country can benefit completely, or the other, or in a mixture of some sort. *I* claim that what is happening is that the benefits of trade accrues to the shareholders and their corporations (what Marxists would call capitalists). I further claim that what passes for "free trade" these days is nothing more than an attempt by capitalists to undermine worker rights and environmental regulations, among others. Capitalists have always been angry for the success of the socialist policies enacted in defense of the workers (eg. minimum wage, inability to fire without cause, mandatory paid holidays, etc). You just need to read popular press or economist opinions over the last 50 years to see what I mean. What is happening now is simply removing the regulations placed by socialists in the past. When you move to a poor country, all these regulations dissapear IN THE LONG TERM.
The worker, either in India or in USA, do not benefit--although some may or may not benefit in the short term. The American worker loses because their wages are driven down (close to zero). The Indian worker loses because their job is temporary** and nothing more than a transit job. Overall, workers are worse off. A job which provided good working conditions all of a sudden doesn't have these worker benefits. I am a socialist and to me, it seems like everything we*** fought for and won won is slowly being eroded. For instance, a country like USA or Canada mandates the number of hours you work or the number of vacation days you get. The poorer countries either don't have as strong of a regulation or don't enforce it. When a job moves from USA to say Mexico, you automatically lose the worker benefits.
So that's why I am against what passes for free trade these days. Make no mistake about it: I'm in favour of trade. But the type of trade I like is called fair trade (a concept foreign to capitalists).
Capitalist defense
Finally, I'll mention what the capitalists are saying about all this. A lot of capitalists like their country so it's not as if the American capitalists are out to destroy their country. The capitalist argument was mentioned by Thomas Friedman in one of his previous articles that was mentioned on Slashdot. Basically, it says that countries benefit from trade (true) and USA, in this case, will create superior jobs to replace those lost through innovation (questionable). Of course, capitalists like Friedman don't mention that the shareholders and their corporations are the ones that benefit in the end.
Your argument is moot since C is an older, hence more "primitive" (I'm going to get flamed by the cavemen for this;) ), language. One would expect C to have less modern features than say C++ or Java. What you are doing is akin to a C programmer pointing out a bunch of flaws with assembly...
For instance, you point out that C doesn't have inheritence. Well, obviously C isn't an object oriented language and it was inserted into C++ (and all other languages after that).
A lot of people don't look at languages the way I do, but let's face it. The older languages are "worse*" than the younger ones. I think of all this in an evolutionary framework. C# evolved from Java; Java evolved from C++; C++ evolved from C; and so forth.
(* When I say worse, I'm mainly talking about features and changes that fix past problems. Clearly lower level languages are more powerful but they are worse. For instance, I would consider a language without array checking to be inferior to one that has it EVEN if the one that checks is slower. Similarly, having pointers in a language is inferior to not having them since pointers have been shown to cause many of the bugs in programming (at least when C was popular in the 90's). Clearly pointers are faster and more powerful; however, I consider it worse from an evolutionary point of view).
I think you are wrong in the LONG TERM (what you are saying is true in the short term over the next few years though). What you are overlooking is the rise in computational power. As computers get more and more powerful, the benefit of using higher level, albeit slower, languages will diminish. So the day WILL come when C# (or for that matter even higher level languages like Python) replace C++.
If you don't believe me, just look at the history of languages. Why do you use C++? Why not, say, assembly? Why did programmers switch to C++ from cobol or fortran?
When computing power became adequate for the task at hand, programmers started using C++ instead of C or assembly. The same reason applied when people switched to C from assembly.
So, you are wrong. Pixar Studios, weather forecasting labs, and others WILL switch to C#/Java/etc at some point. The question is when. I personally think it will happen much sooner than you think. Since Longhorn is supposed to be focused on.NET, I imagine the computing power will be sufficient at that point for companies (and hence programmers) to start using C#. For computationally intensive software it will take longer (say 5 to 8 more years) but it WILL happen.
It is my theory (nothing fancy) that higher level languages will always continue to replace lower level ones. The benefits of higher level languages are just too good, assuming the computing power is there.
This is actually an interesting thread... the original guy supports a two-tier language system (high level and low-level) but he says C++ sucks... you say C++ is great but high level ones suck... I say, high level ones rule and low level ones will dissapear... of course, I'm speaking about the long term. Nothing is going to change over the next year but after that, we'll see...
I think we are getting into a debate over high-level programming languages vs low-level. You clearly value low-level lanagues while I support high-level ones.
The idea that a C/C++ program is more likely to be buggy than a VM that is also a C/C++ program is a bit off. They are both C/C++ programs...
That is not really correct. The difference, you see, is that the higher level lanaguage already provides the features whereas YOU have to program them yourself in lower level languages. The VM is less likely to be buggy, or even if it were the bugs would be fixed more easily/quickly, because it is standardized. One person/team/whatever writes the VM and many people use it. Therefore bugs will be detected more easily, many will test the system, and so forth. If YOU were doing it, only you and perhaps a few others will do those things. If the VM is buggy, the problem will be resolved very quickly. If YOU make a mistake how long will it take before someone observes it?
I have a theory that programmers should understand memory.
Why is that necessarily if the programming language "abstracts away" the memory system? Why would you need to know about memory in C# when you don't really have any control over it? What you are saying only makes sense if one is using low level languages.
I also have a theory that next programmers will complain about having to use end-paren and close-bracket... "we're only intested in begining the function parameter list... the computer should close it for us!
Yes that will happen (no joke). What's wrong with it? This is no different that expecting the standard programming libraries to have math functions, whereas assembly and other lower-level languages don't even have them. Automated closing of brackets may seem silly but having existing math functions seemed silly at one time too. If you don't buy this math example (I admit it sucks:) ) how about graphics? At one time you had to draw everything pixel-based, but nowadays you hardly do anything at that level. Programmers expect their languages/libraries/systems/whatever to do that. In a similar manner, I think the day will come when programmers will expect the IDE or the compiler to automatically end closing brackets.
I think you value low level programming languages over high level ones. My theory is that high level languages will replace all low level languages in the future*. This is a natural progression as computer processing power increases. Just like how C replaced Assembly/Cobol/Fortran, and how C++ replaced C, C# and Java will replace C++, and maybe something even higher level (say Python, Ruby, or some futuristic language) will replace C# and Java.
(* Obviously you need low level languages for some things. So when I say low level languages will be replaced, I certainly am not saying that assembly, C, etc will dissapear completely. There might still be a 1% of the industry that will use it. )
What's happening with Internet II? I haven't heard much about it lately. Is there still progress being made or did people dump that?
Sivaram Velauthapillai
We buy more than half of all electronic devices and more than half of all computer games...
Are you sure about that? I would find it surprising if that were true--especially the games part.
Anyway, it doesn't surprise me women use the internet more. That is something I always expected would happen. First of all, there are more women than men so women will have slightly more numbers. Second, internet has great potential to replace or complement social relationships. Women seem to be more into "social stuff" than men.
Having said that, I think most geeks will be men. So tech-oriented websites, for example, will be dominated by men. It remains to be seen if I'm right...
Sivaram Velauthapillai
lol hehe :)
Sivaram Velauthapillai
ANSI/ISO standard C++ code runs on any machine with a C++ compiler just like Java code runs on any machine with a JVM.
I don't know THAT much about languages but I don't think C++, even written to ANSI specs, would be machine compatible across platforms. Wouldn't things like 'little endian vs big endian' cause problems? I am assuming those problems don't exist in C# since it uses a VM (that's my impression). In any case, most people don't write ANSI standardized code.
Most people do a job that they hate because they have to pay the bills. I wish they could/would do a job that they like instead.
It is my view that this is not possible under capitalism...
Well, I think if they're not good at their job, they should be fired. If you can't handle the job and aren't qualified, then you have no business doing the job. You may think this makes no sense, but I don't think people with no skill should be doing skilled jobs.
The whole notion of a skilled job is purely arbitrary in my opinion. So-called unskilled labour has the same issues (some people who are good, many who are not). If my assertion that the majority of people are bad is correct, then what you are proposing cannot be done. You are literally asking for the majority of computer engineers, or chemists, or lawyers, or doctors, or drivers, or teachers, or deliveryperson, or whatever, to be fired. The few who are good cannot do all the jobs. That's why people who are not good are working in the first place. Analogy to this is school. Only a minority of people are good (in the sense that they do the work, perform well at school, etc). Yet you cannot only have schools for these good people. You need schools for everyone.
I don't think you should develop languages so that bad programmers can make bad software.
One doesn't develop a language for that reason. Instead, newer languages are progressive in some manner. If you are a bad programmer, you will be bad anyway--it doesn't matter if it's a high level language or not. It's just that, higher level languages allow bad programmers to pass themselves off as average. But that is never the intention. I am sure that the computer scientists who create new languages never have the intention of building a language for bad programmers.
Sivaram Velauthapillai
Seriously what is C++ missing as far as high level goes?
This whole argument depends on what you perceive to be a higher level language. To ME, languages progress over time. The higher level languages are the ones that have more "features" than the lower level ones. Generally, this means that higher level languages automate more things than lower level languages. That's how I look at languages. I know a lot more can be said but that's my rough vision.
Given that, C++ is a high level language but C#/Java/Python/Javascript/etc is even higher. What's C++ missing? Well, I'm not an expert on all these languages but things like garbage cleanup, and write-once-run-anywhere, among others, are things found in higher level languages. The fact that I can write C#, Java, or Python code and run it on any machine (with a VM/interpreter/whatever) makes them a higher level language.
C++ will never have these capabilities. Even if, as another poster in this thread says, you write using standard ANSI C++ standard, it isn't exactly machine-compatible. Correct me if I'm wrong but wouldn't things like memory system (eg. little endian vs big endian) cause problems? I presume that those problems don't exist in C# (I am not an expert on C# but that's my impression).
Sivaram Velauthapillai
Reverting to personal, ad hominem, attacks? Don't you have anything better to say? I guess not...
Sivaram Velauthapillai
So, aside from the fact that C++ allows access to the low level depths of C, how exactly is Java a higher level language? Do you call it that because it does garbage collection, or what?
;) ). What this means is that the vast majority of people in a particular profession don't really want to be there. If a person was rich, I am sure they would be doing something else. This is the case with the VAST majority of people. Just to give you an idea, the vast majority of programmers probably aren't even tech-savvy. Many don't even read slashdot or keep up or whatever. Therefore, I don't know how you can honestly call for the vast majority of programmers to be fired. If the vast majority of programmers should be fired because they are "bad", then the same should apply to police officers, doctors, scientists, sanitation workers, and so forth. What you are saying makes no sense. I can understand why you are saying it though. You are probably a capitalist (like most conservatives) so you seem efficiency. You seem to create a totally efficient world where humans are operating at 100%. Unforutnately for you, it isn'g going to happen. You literally have to replace humans with robots for that to happen.
I'm not an expert on Java (or many other languages either). Well, things like garbage collection would definitely make it HIGHER. I haven't done java programming in a while but doesn't java also have things like better object oriented classes (eg. better inheritence, abstract classes, etc). But I think the main reason it is a higher level language is because java code can run on any machine. The higher up you go on the language hierarchy, the less the dependence on the underlying machine architecture. AT the lowest levels (say assembly), code is heavily dependent on the processor and memory subsystem. At the highest levels (say vbscript or javascript or python), code is totally independent of machine architecture. Java certainly has that feature (whether in practice java runs uniformly across all platforms is another issue).
I disagree. I would assert that since the vast majority of programmers are bad, they need to be fired.
You are going to totally disagree with me since you seem like a conservative. It is my opinion that jobs are simply human economic slavery (stop rolling your eyes
It's their fault that jobs are outsourced to India because they can't produce a product of adequate quality.
What I said uniformly applies to everyone. By going to another country, it isn't going to change things unless Indians (or anyone else for that matter) are better. I expect bad programmers in India just like in USA. In any case, jobs are being outsourced for financial reasons--not quality.
Sivaram Velauthapillai
I think they'll keep using C++ with the libraries they've developed over the years because to keep pushing the envelope in their fields, they have to increase their processing requirements.
;) to a higher level language in the future. Your fate is written on the wall. I can see it ;)
There is a lot of investment in existing code. So it's not as if they will be thrown out just because a new language is popular (although, doing so will create jobs for programmers a la Y2K problem). A lot of companies, especially banks, used COBOL well after it was "extinct". So when I say that Pixar (or whoever) will switch, I am saying that all new code will be in, say, C# and the existing C/C++/whatever will be replaced at some point.
For me to write a better/faster/smaller program would take a lot of time, and the compiler does it faster than I would.
That is the same reason you will switch from your beloved C++
Sivaram Velauthapillai
Yeah... languages don't necessarily incorporate all the good features of older ones. Furthermore, some languages, that are arguably superior, never become popular and end up being forgotten/ignored.
You also point out an important point: the underlying capabilities of computers has changed over time. Speed and memory were big in the past; not anymore. Things like distributed code will probably be more important in the future than now.
Overall, however, the pattern has been that the dominant language is superior (in most respects) to the previously dominant one.
Sivaram Velauthapillai
Yes, Plato's Republic is the basis for fascism. It is neither democracy, nor monarchy.
:) Are you just spying on the evil technology-oriented inviduals? ;) In any case, technology is neutral. If humanity has lost its ways, it's its own doing. I agree to some degree that technology is not being used in the best manner. However, that is humanity's fault.
;) they should be free to do that.... People should be free to do whatever they want. Clearly this does not sit well with you because you want yourself--as well as all humans--to have some purpose. You still haven't figured out that the purpose of life is to figure out your own purpose. Instead of worrying about others and trying to force people into your mould, you should spend time contemplating how YOUR life should be...
I don't know much about Plato's Republic but I have never heard anyone consider it to be fascist of any kind. If anything, it seems to be the basis of democracy.
I do however, want to build a better future. Also, if there is one thing that is missing from this world it is romance...
By romantizing the past you are simply deluding yourself. World HAS progressed over time whether you think so or not.
I would argue technological advancements have done much to rob us of our humanity.
What are you doing on Slashdot then?
Spielberg is no artist.
Spielberg is no more an artist than Shakespeare. So yes, if you consider anyone popular to be lacking artistry thenyou might be right.
I have also never considered anything dramatic to be particularly artistic.
Your definition of art is very narrow. Why do I get the feeling that you are the type of person who would consider classical music to be art but not techno music?
I have my vision, and you have yours... Perhaps we will meet on the battlefield someday and see which triumphs.
I'm the non-violent type. I hope I don't end up on any battlefield.
Free to do what? That is the important question.
Humans should be free to do whatever they want, within some reason of course (eg. I shouldn't be free to kill you). If someone wants to hang around doing nothing, that's perfectly ok with it. If someone wants to spend their whole life trying find an alternative energy to modern fossil fuels, that's fine. If someone wants to contemplate the meaning of existence, they should be allowed to do that. If someone wants to spend all their time debating on internent message boards
Sivaram Velauthapillai
Why should someone know about assembly language when the higher level languages have absolutely nothing to do with it? Even worse, why should someone know machine language when hardly anyone can touch that?
I'm not saying that a computer developer shouldn't know these things. It certain helps and universities should--and do--teach them, but they only help a few developers. I'm not really sure how useful these things are for software development. As higher and higher languages are used, I predict that future developers won't even learn these things.
C/C++ development might involve knowledge of assembly programming (after all, you CAN access registers, stack pointers, etc, and inline assembly code if you wanted). But C# and Java probably will abstract away assembly language. And higher level ones after that (say Python, Javascript, VBscript, or whatever) will totally disallow you from touching assembly. That's what I see happening.
Sivaram Velauthapillai
Software development isn't language dependant, it's paradigm dependant.
That's true but I disagree with your main point. Higher level languages DO speed up development time. If they didn't why would someone pick one language over another (when they are both the same "types" of languages). For instance, why would anyone pick Java over C++?
That is to say, it makes it impossible for a bad programmer to screw up an easy task while making it more difficult for a good programmer to accomplish a more difficult task.
Since the vast majority of programmers are bad*, higher level languages should be chosen, and will ultimately win out.
* This applies to anything. In any field, only a small, finite, number of people are good. The rest are not good and simply in it for the money and could care less.
Sivaram Velauthapillai
Am not. And you are an arrogant and self-righteous asswipe for putting that in caps.
It's not in caps; it's bold. It is a heading that's why it's bold. I guess I could have picked a better title. I didn't mean to pick you out or anything (sorry if it seemd that way).
The balance of payments in and out of the country is conserved... The fact that there is growth over time does not change that fact.
THe balance of payments is theoretically zero because it is sort of like an "accounting" concept. That doesn't prove anything. In any case, some countries have negative balance of payments in practice. A country like USA has negative balance of payment so I don't know what your point is. Read the first two points in this article and check out the graph.
I don't know why you are looking at balance of payments. It doesn't show anything. In theory, whether a country has ZERO trade or VERY HIGH trade, the balance of payments will be balanced. How does this prove that what passes for "trade" these days is good? What you are arguing is akin to arguing whether a business is doing well or not by looking at the balance sheet. The balance sheet ALWAYS balances so doesn't show anything.
You sound like the victim of third-world political indoctrination.
Really? The so-called 3rd world is more influenced by capitalism than anything. Otherwise, they wouldn't be signing these blatantly one-sided "free trade" agreements. In any case, you don't know who I am, what I am, or where I am. Stereotyping can lead to mistaken assumptions so I suggest you lay off attacks like that.
Anyone who engages in an economic discusion and uses the terms "Marxist" and "Capitalist" is giving himself away as phony.
Whoever said I was what the capitalist establishment would call 'an economist'? I am not saying I'm an expert on this or anything. If anything, I don't agree with what passes for "economics" these days.
Put down that Communist Manifesto you are holding and pick up an eco textbook.
What passes for economics these days is nothing more than capitalist economics. The day will come when all of you are shown to be a bunch of fools. You guys are nothing more than the modern day alchemists. Capitalism WILL collapse...
Sivaram Velauthapillai
Australia is becoming more conservative by the day. This essentially means supporting imperialist aims of USA* in order to get some favours in return. Extradicting a citizen to a foreign country for no crimes committed is ludricrous! This is even more silly given the nature of the internet with typical users unable to understand all the laws of every country. What's next? Everyone memorizing the laws of 191 countries (as recognized by the UN)?
:( Oh, defrauding investors (a la Enron, Martha Stewart, Worldcom, etc) will also cost you less jail time than computer crime.
Conservative-types love to preach nationalism and how their citizens are all cool and all, but when citizen lives and their livelihoods are under threat, they are the first ones to ship people off.
Lastly, it should be noted that the cooked up charges by the US prosecutors can only be dreamed up in a capitalist society. How the hell can you charge a guy for $60(??) million in damages** when you can't even prove that anyone that pirated the goods would be willing to pay for it? I'm not ignoring the crime but it is truly pathetic when courts allow large corporations (and only them) to charge for POTENTIAL losses.
I urge citizens of the world to protest against policies which imprison people for potential losses without any solid basis. I also urge citizens everywhere to resist corporate favours passed under imperialist aims of country.
Sivaram Velauthapillai * Yes, forcing down your own laws (in this case US laws) on other countries is imperialist in nature. This is just like the Romans claiming everyone must follow their laws.
** Charging such high damages pretty much ensures that the defendent, if convicted, faces extremely harsh punishment. Even organized criminals, who actually kill, never get charged that much in damages!!! It wouldn't surprise me if people ended up serving more time in jail for computer crime than organized criminals
Platonist. I advocate the society proposed in Plato's Republic. The superclass should be philosopher kings.
Are you being serious or what?
I am referring more to the prosperity and culture which was fostered in Italy, France, and Germany prior to twentieth century. How many great philosophers, composers, artists came from that age?. The west today has no Michaelangelo, or Leonardo da Vinci, or Mozart... Western culture, for all intents and purpose is dead and has been for a half century.
Obviously you are living the past. Like conservatives of all stripes, you miss the past. Your vision is nothing more than a romanticized past. The people during the Renaissance seem great because Europe didn't have anything before it (dark ages). Things have changed. Right now we have science which has replaced a lot of things. The Leonardo da Vincis and the Michaelangelos have been replaced by the Einsteins, Plancks, and Hawkings. The Mozarts have been replaced by Steven Spielbergs, Stanley Kubricks and John Williams. Film has replaced plays and operas. Clearly you haven't gotten over such changes.
Then you will have to give some careful thought to alternatives, and the true motivation of existence.
Most humans are slaves to the capitalist overlords. Until they are free their true potential will neve show.
Sivaram Velauthapillai
Bugs happen in implementations of standard libraries too. Being standard doesn't decrerase it.
.NET) limiting memory usage by an application to specific areas? It's because memory leaks, memory corruption, and others are the biggest problem plaguing software--and nearly all of these are due to pointer problems. If you still don't believe me, let's wait until Longhorn comes out and we'll see how good the software is. If what I am saying is right, applications written in C# will be less buggy than C++.
Standard library bugs are more easily detected (since many people use it) and are fixed more quickly. If you write your own library or use a 3rd party vendor, the reliability will be worse.
And you're right, not everyone should write a TCP/IP library- you buy one or find one on the web.
These ones won't be as dependable. I'm not saying you shouldn't do it. If it suits you, go ahead. But their quality is worse. If Microsoft finds a bug in their C# library, you are pretty sure it will get fixed. If you find a library on the net you are not quite sure--it may get fixed today or next year.
In any case, no one is forcing you to use these libraries. There is nothing stopping you from plopping down your own library and using it.
THis is just not true. Just like any other languge, the majority of bugs occur due to logical, not syntax, errors. Thse are the bus that are hard to find and expensive to fix. These kind of bugs are quick.
Pointer errors fall into the logical category. They clearly are not syntax or else the compiler would pick it up. Pointer errors ARE a HUGE problem in the C/C++ world. If you don't believe me, why do you think operating systems started allocating specific memory area for each software? Why is Longhorn (and
No, you don't. You avoid bugs with error handling. Exceptions are a poor way of doing it. It breaks the logical flow of the program, and encourages laziness. Exceptions are a way of trying to avoid doing actual error checking, and is a huge source for bugs.
If you can do error checking, you should do that foremost. You only use exception handling if you can't do error checking. An an example, games don't do much error checking because it slows things down. Instead they rely on exception handling (at least in the performance critical areas). In contrast, a typical application should do error checking. If you are not doing error checking and relying on exception handling, your methodology is wrong.
So to sum up, if someone is doing exception handling instead of error checking, they are making a mistake. They are two different things and can't really replace each other (for instance, exception handling doesn't really tell you what is going on because the exception may be caused by a whole hoard of issues whereas error checking tells you exactly where the problem is). So I guess we kind of agree on this issue: people shouldn't be using exception handling when error checking is sufficient.
False. The "higher level" languages are no faster to program in than C or C++.
Wait 3 years and tell me if this is true. Higher languages are ALWAYS faster to program in than lower level ones. Historically this has always been true IN GENERAL (of course there are some minor exceptions). Assembly takes longer to program than C; C takes longer than C++; and C++ should take longer than C#. The features added by higher level languages always speed up development. For example, drawing a window using assembly takes an insane amount of time. In C, it would take quite a while too. In C++, it would be much quicker.
C# and Java (although I think C# will kill off Java) will dominate in a few years. Things that took you 1 hour now will probably take 30 min in C#.
That may be the wost argument of all. First off, as computing power increases, so do features and bloat. Enough so that it completely eats up the Moore's law gain. Secondly
Any complex piece of software is going to have to reuse proven libraries and strategies to be successful. Imagine having to rewrite the STL every time you needed a container class.
:)
:( People should always be willing to learn new technologies yet many in the field don't. Perhaps it's tight deadlines and pressure, or maybe people in the field just aren't into technology (i.e. not really tech-savvy like on Slashdot), but whatever the hell it is, it isn't good.
I'm not sure if your message is directed at me because I agree with everything you say
That brings me to a related point, and that is the irony of some developers' irrational fear of technology.
A technologist fearing technology sounds oxymoronish but it's true
The whole point of universities is to teach you to learn. Universities aren't there to teach you C or C++. They are there to instill confidence in people so that they will learn any new language/technology that they face in the future. If someone encounters C#, they should learn that--not abandon it. Unfortunately, it seems universities have completely failed in this matter (although the fact that employers don't hire based on this might have something to do with it).
Sivaram Velauthapillai
C++ is a high level language.
:) ). The understanding of memory by programmers (computer scientists) is an abstract version of the reality (as understood by computer engineers). As you move into higher and higer programming languages, it becomes more abstract. For example, programming in assembly pretty much meant that you need to know about individual registers on the, say, x86 processor. When you program in C, your knowledge is a little bit more abstract (not quite the same degree as assembly). If you go even higher into C++, you hardly deal with registers. Furthermore, in Java you hardly deal with any memory at all (since you odn't have pointers). Basically, memory gets abstracted more and more as you move up. I don't see anything wrong with that. If you are programming in C# or Java, you can't even access memory locations so what knowledge is required regarding memory?
Yes, but C#/Java is even higher.
why am I not allowed to use any of the thousands of libraries and class systems?
Well you CAN use your own library. It just depends on the details. For instance, if you don't like the, say, standard network libraries, you can purchase your own or design your own. There is nothing stopping you from overriding or using your own. Of course, there are some basic ones that are required. But this goes for any language. I mean, even C++ has basic libraries (such as the math libraries, or vectors, and so on).
I don't really think the higher level languages are really limiting you too much. Yes, you lose some power; but you gain some improvements. The main downside to higher level languages is speed, but since computing power always increases, this isn't a big deal.
And you need to understand memory because the machine does. You cannot abstract it away. However, I'm not saying don't use higher level memory abstractions, just understand what's being abstracted.
Memory is abstracted ANYWAY. I'll bet that your understanding of memory is very different from the underlying truth (depends on your knowledge though--this might be a losing bet on my end
Having said that, I agree with you that it is always good to have an understanding of what is going on. The real question is, where do you draw the line?
Not wanting to understand what a pointer is is a terrible reason to use a VM based language.
I agree! Using a higher level language because you don't want to understand pointers is a terrible decision. HOWEVER, using a higher level one because you want to minimize bugs caused by pointers (of which there are many in C and C++) is a great idea. I would hope that higher level languages become popular because of the features they offer (eg. less bugs due to less probability of manipulation of pointers; quicker development; etc), and not because you can't understand the lower level language. If you can't--or don't want to--learn lower level programming language concepts then you shouldn't even be programming. Higher level languages "dumb down" programming but that's not why I support them; I support them because they are superior.
The thing that bothers me is the argument that high-level == VM based languages. That holds no water whatever.
I'm not necessarily talking about a language with a VM, although the two emerging ones (C# and Java) do have it. I am also arguing in favour of higher level ones like Python or Javascript (these are interpreted). In any case, C# and Java ARE higher level than C++.
C++ is plodding along with it's "high level" + "no paying for what you don't use" philosophy and doing quite well with it.
You could have used that argument 20 years ago in favour of assembly (instead of C). Or 10 years ago in favour of C (instead of C++). Yet, the higher level ones won out. If you don't like the higher level emerging languages you can stick with a lower level one that you like. However, by doing so, you give up the benefits
So what type of fascist are you? Who will be the "superclass" under your system? Are you a neo-Nazi? Or White Supremist? Or ...?
Only through unity of purpose towards an aesthetic ideal can civilization prosper. Only with the guidence of enlightened leaders can peace be maintained.
Well, history seems to suggest otherwise. The last time an "enlightened" leader wanted to unify certain people and create a super civilization, he caused the deaths of 50 million, and ended up killing more of "his kind" than anyone else in history.
I suggest you prepare yourself, as the revolution will come in your lifetime.
I think that is the only point I agree with. I DO expect a revolution within my lifetime. I predict this will happen when capitalism collapses...
Sivaram Velauthapillai
You are overlooking the advantages of higher level languages: less bugs and quicker to develop. I disagree with your comments:
1)Standard library? Standard libraries just kill innovation by making everyone default to one way of doing it. Look at he Java libraries- frequently clunky, poorly designed, and some parts are just laughed at. Libraries shouldn't be decided by the standards comittee. Let people write libraries on their own, and let competition bring out the best. Just about anything you want a library for you can find with a quick google.
People writing their own libraries can result in way more bugs. Using a standardized library means that you know it works and exactly what it does. This is why they are so popular. No one wants to write their own TCP/IP library. They want to use an existing, throughly tested one.... In any case, what you are saying can still be accomplished. If a language has horrible libraries, use your own. No one is stopping the "innovation" that you cite.
2)C's "funky arrays" are necessary if you want to have arrays as pointers. I'll take the power of pointers over the negligible gain of a capacity field any day. I also don't WANT the compiler adding any code for me- I'll do my own bounds checking, thanks.
You will do a FAR WORSE job doing bounds checking than the compiler or interpreter. Also, compilers these days are more efficient than programmers. Using pointers is more flexible but it is far more risky. The vast majority of problems (and hard to debug issues) in C are from pointer problems.
4)Exception handling? Bleh. Exceptions break the logical flow of the code. The idea that we can all of a sudden jump to an arbitrarily high error block at any time is what makes C++ and Java so hard to debug.
Exception handling can be better. I don't think it is that great in any of the popular languages that I know of. But back to your point, they are important. Again, you avoid bugs with exception handling.
The more I see other languages, the more I think C is really optimal.
C is optimal if you don't care about some things (such as bugs, development speed, etc). What the higher level languages provide are development speed and simplicity at the expense of performance and flexibility. I personally think that higher level languages will always rule. As a matter of fact, I expect all future applications (in many years from now) to be written in scripting languages. I think something like Pyton (or a future language like that) will dominate. It sounds crazy but I think it will happen. As computing power increases higher level languages and scripting languages will become more attractive.
Sivaram Velauthapillai
And to become PM, you should have a higher moral than the common CEO.
:( ) lower taxes, less social system, but as soon as you touch their subventions, they cry foul!
Since when? Not really... To start with, nearly all politicians are liars. They break their promises all the time. This pretty much means that they cannot have any high moral ground. A prime minister is just a politician that has more power than others.
In theory, you pay taxes for the infrastructure the governement provides. By profitting from the canadian infrastructure, but hiding his profits from the canadian governement, he morally stole something from the canadian people.
He didn't HIDE his profits. He just minimized paying taxes. Find me one corporation or business that doesn't do this. Even YOU have probably done this. The only difference, however, is that you cannot afford to stash your account in some bank in a far-away country. Wealthy people and corporations can. Private businesses spend millions trying to avoid paying taxes and using all the loopholes. This is pretty much the norm. Ask any accountant or financial officer in a corporation.
As the owner of his company he had to choose if he wanted to maximise his personal fortune, or give his country a just part of his profits.
Everyone, except some truly altruistic people, will maximize their personal wealth. It is not reasonable to expect the prime minister to not do something that others take for granted.
There is the huge conflict of interest : the best for Canada would be to pass laws that stop or at least restrain this tax avoidance. The best for his company would be to pass laws who make it even easier.
There are FAR WORSE things than that. Take Bush for instance. He has pretty much handed his friends in the oil industry whatever they wanted. Bush has weakened all sorts of environmental regulations (Cheney even made up his policy by consulting oil executives only). Don't expect the politicians to do anything to hurt themselves.
Oh, and it's not capitalism either. Capitalism is all about free market. Subventions disturb the market and are therefor bad. But allowing big companies to escape taxes while providing them with the same infrastructure is a form of hidden subventions and therefor a Bad Thing even in liberal theory.
No, it's capitalism all right. Capitalism calls for lowering of taxes so I don't know where you get the idea that "escaping" taxes was bad thing. In fact, (pure) capitalism calls for aboslishment of all corporate taxes. In any case, I don't see anything insidious or hidden happening (you do).
The system that we have currently isnt capitalism. The corporated world demands (and gets
My theory is that capitalism will result in corporations ruling the world. So far I seem to be right...
After saying all that, I can only conclude one thing. You hold the prime minister's position in high regard. In contrast, I don't. My philosophy is 'expect the worst when it comes to econopolitics'. This goes for the PM or anyone else...
Sivaram Velauthapillai
What I am about to say applies to capitalism in general (so don't assume it's just the computer industry; what I say should equally apply to, say, farming).
You are wrong
I think your understanding of capitalism is completely wrong. There is NO SUCH thing as CONSERVATION under capitalism. This is why capitalism can increase the wealth (eg. GDP) of a country. In fact, trade can increase the wealth of all countries that engage in it*. If your assertion were correct, this wouldn't happen (the total wealth in the world will be constant). Your conservation principle is automatically violated by the growth in wealth.
Why some don't support the present
There are many reasons people are against what is happening. Clearly some people are racist and don't want to see "other kind" get jobs. Some people on this message board have already shown that. Then there are others who are clueless when it comes to economics and somehow think that they "own" the jobs (whatever that means). I'm not any of these. I'll tell you why I'm against so-called "free trade" and the most popular form of capitalism today, neo-liberal economics.
I'm not a capitalist, and I'm not a nationalist either. I could care less about countries (I can't wait until all countries dissapear). The problem with so-called free trade is the following. We know for sure that trade benefits countries. However, the benefits can be shared in many different ways. One country can benefit completely, or the other, or in a mixture of some sort. *I* claim that what is happening is that the benefits of trade accrues to the shareholders and their corporations (what Marxists would call capitalists). I further claim that what passes for "free trade" these days is nothing more than an attempt by capitalists to undermine worker rights and environmental regulations, among others. Capitalists have always been angry for the success of the socialist policies enacted in defense of the workers (eg. minimum wage, inability to fire without cause, mandatory paid holidays, etc). You just need to read popular press or economist opinions over the last 50 years to see what I mean. What is happening now is simply removing the regulations placed by socialists in the past. When you move to a poor country, all these regulations dissapear IN THE LONG TERM.
The worker, either in India or in USA, do not benefit--although some may or may not benefit in the short term. The American worker loses because their wages are driven down (close to zero). The Indian worker loses because their job is temporary** and nothing more than a transit job. Overall, workers are worse off. A job which provided good working conditions all of a sudden doesn't have these worker benefits. I am a socialist and to me, it seems like everything we*** fought for and won won is slowly being eroded. For instance, a country like USA or Canada mandates the number of hours you work or the number of vacation days you get. The poorer countries either don't have as strong of a regulation or don't enforce it. When a job moves from USA to say Mexico, you automatically lose the worker benefits.
So that's why I am against what passes for free trade these days. Make no mistake about it: I'm in favour of trade. But the type of trade I like is called fair trade (a concept foreign to capitalists).
Capitalist defense
Finally, I'll mention what the capitalists are saying about all this. A lot of capitalists like their country so it's not as if the American capitalists are out to destroy their country. The capitalist argument was mentioned by Thomas Friedman in one of his previous articles that was mentioned on Slashdot. Basically, it says that countries benefit from trade (true) and USA, in this case, will create superior jobs to replace those lost through innovation (questionable). Of course, capitalists like Friedman don't mention that the shareholders and their corporations are the ones that benefit in the end.
My Prediction
Your argument is moot since C is an older, hence more "primitive" (I'm going to get flamed by the cavemen for this ;) ), language. One would expect C to have less modern features than say C++ or Java. What you are doing is akin to a C programmer pointing out a bunch of flaws with assembly...
For instance, you point out that C doesn't have inheritence. Well, obviously C isn't an object oriented language and it was inserted into C++ (and all other languages after that).
A lot of people don't look at languages the way I do, but let's face it. The older languages are "worse*" than the younger ones. I think of all this in an evolutionary framework. C# evolved from Java; Java evolved from C++; C++ evolved from C; and so forth.
(* When I say worse, I'm mainly talking about features and changes that fix past problems. Clearly lower level languages are more powerful but they are worse. For instance, I would consider a language without array checking to be inferior to one that has it EVEN if the one that checks is slower. Similarly, having pointers in a language is inferior to not having them since pointers have been shown to cause many of the bugs in programming (at least when C was popular in the 90's). Clearly pointers are faster and more powerful; however, I consider it worse from an evolutionary point of view).
Sivaram Velauthapillai
I think you are wrong in the LONG TERM (what you are saying is true in the short term over the next few years though). What you are overlooking is the rise in computational power. As computers get more and more powerful, the benefit of using higher level, albeit slower, languages will diminish. So the day WILL come when C# (or for that matter even higher level languages like Python) replace C++.
.NET, I imagine the computing power will be sufficient at that point for companies (and hence programmers) to start using C#. For computationally intensive software it will take longer (say 5 to 8 more years) but it WILL happen.
If you don't believe me, just look at the history of languages. Why do you use C++? Why not, say, assembly? Why did programmers switch to C++ from cobol or fortran?
When computing power became adequate for the task at hand, programmers started using C++ instead of C or assembly. The same reason applied when people switched to C from assembly.
So, you are wrong. Pixar Studios, weather forecasting labs, and others WILL switch to C#/Java/etc at some point. The question is when. I personally think it will happen much sooner than you think. Since Longhorn is supposed to be focused on
It is my theory (nothing fancy) that higher level languages will always continue to replace lower level ones. The benefits of higher level languages are just too good, assuming the computing power is there.
This is actually an interesting thread... the original guy supports a two-tier language system (high level and low-level) but he says C++ sucks... you say C++ is great but high level ones suck... I say, high level ones rule and low level ones will dissapear... of course, I'm speaking about the long term. Nothing is going to change over the next year but after that, we'll see...
Sivaram Velauthapillai
I think we are getting into a debate over high-level programming languages vs low-level. You clearly value low-level lanagues while I support high-level ones.
:) ) how about graphics? At one time you had to draw everything pixel-based, but nowadays you hardly do anything at that level. Programmers expect their languages/libraries/systems/whatever to do that. In a similar manner, I think the day will come when programmers will expect the IDE or the compiler to automatically end closing brackets.
The idea that a C/C++ program is more likely to be buggy than a VM that is also a C/C++ program is a bit off. They are both C/C++ programs...
That is not really correct. The difference, you see, is that the higher level lanaguage already provides the features whereas YOU have to program them yourself in lower level languages. The VM is less likely to be buggy, or even if it were the bugs would be fixed more easily/quickly, because it is standardized. One person/team/whatever writes the VM and many people use it. Therefore bugs will be detected more easily, many will test the system, and so forth. If YOU were doing it, only you and perhaps a few others will do those things. If the VM is buggy, the problem will be resolved very quickly. If YOU make a mistake how long will it take before someone observes it?
I have a theory that programmers should understand memory.
Why is that necessarily if the programming language "abstracts away" the memory system? Why would you need to know about memory in C# when you don't really have any control over it? What you are saying only makes sense if one is using low level languages.
I also have a theory that next programmers will complain about having to use end-paren and close-bracket... "we're only intested in begining the function parameter list... the computer should close it for us!
Yes that will happen (no joke). What's wrong with it? This is no different that expecting the standard programming libraries to have math functions, whereas assembly and other lower-level languages don't even have them. Automated closing of brackets may seem silly but having existing math functions seemed silly at one time too. If you don't buy this math example (I admit it sucks
I think you value low level programming languages over high level ones. My theory is that high level languages will replace all low level languages in the future*. This is a natural progression as computer processing power increases. Just like how C replaced Assembly/Cobol/Fortran, and how C++ replaced C, C# and Java will replace C++, and maybe something even higher level (say Python, Ruby, or some futuristic language) will replace C# and Java.
(* Obviously you need low level languages for some things. So when I say low level languages will be replaced, I certainly am not saying that assembly, C, etc will dissapear completely. There might still be a 1% of the industry that will use it. )
Sivaram Velauthapillai