I am not a physicist so this may seem simple minded. What if our standard candle measurements aren't that accurate, and the universe is older and larger than we think? Wouldn't that explain the expansion rate without dark energy and anti-gravity?
I have both the C# and C++ 2005 Express versions. Not a single problem with installation or operation. I also like the IDE. The big plus for me is the excellent EMACS emulation, and the ability to customize the IDE. I really don't like an IDE that hogs the whole screen. I can set the miscellaneous windows to auto-hide and have all editor window on the screen.
I can understand a company doing this (sort of), but I have never seen it. And I have worked at places that process some very sensitive information. Usually you spend your last two weeks finishing up as much as you can and making sure someone else understands what you are working on. If you really wanted to steal something, you could do it before you give your notice.
I did have one disturbing thing happen once. I came into the office on my last day at work and my workstation would not boot. I was afraid people would think that I had trashed it out of spite. It turns out that the Sys Admin had backed it up and wiped it. He was preparing it to send over to another department. So I was off the hook.
What happened to a computer language that is intuitive and very easy, that anybody can learn?
The thing is, most programming languages are designed for professional programmers. We work on programs that can run into the hundreds of thousands or even millions of lines of code. Our main problem is not typing. Managing complexity is the problem. Most of the programming constructs that make a small program verbose (functions, classes, libraries, etc.) make it easy to partition a large program into parts that interact in well defined ways, thus reducing the complexity of the system.
My question is this: According to TFA the express editions will be downloadable. Does this mean that they will be free, or will they cost $49 like the boxed versions?
This is probably the number one reason. I have worked on several projects where re-use was a goal, and the software produced was difficult to understand, error prone, badly documented, and inflexible. Re-use is possible though, the best examples are the Java and.Net libraries which are very good.
Another problem is that the technology changes rapidly enough that a re-usable library can become obsolete rather quickly. I don't know how many user interface libraries I have written (starting with an X-Window/Motif library) that are pretty much worthless in may current job.
It seems to me implicit types are only useful when you can't specify a type name because you're using anonymous types.
That seems to be the biggest argument for implicit typing. But why didn't they just introduce a keyword that just applied to anonymous types instead of making the entire language more error prone and less readable. You would be able to type
var c = new {Name = "Fred);
But not
var x = 5;
var y = 5.0;
When you really meant:
double x = 5;
float y = 5.0F;
For over a decade computer science gurus have preached that implicit typing is a bad idea, and most of the non-scripting languages (C++, Pascal, Java, Modula 2, etc.) have followed that lead. Now, Microsoft is taking a big step back toward VB, something I find inexplicable.
"Some programmers are fundamentally better", which is a fairly wide-spread folk belief, backed only anecdotally usually.
There is a book called "Peopleware" where the authors did a study on programmer differences. They found that differences of 10 to 1 in productivity were not uncommon. This was on easy tasks that any competent programmer should be able to do. I would guess that on hard problems the difference would be even greater.
The hard part of hiring great programmers is recognizing them in the interview. I take part in a lot of interviews, and I have been completely wrong both ways, thinking first rate programmers are bad hires and thinking bad programmers are good hires. Some good programmers are a little different than most people. Sometimes they are unimaginatively different.
Right. That's why Apple will never switch to Int... No, wait. That's one thing I don't understand about the switch. Apple makes its money on hardware. If OS X can be hacked to run on every Intel box, Apple stands to lose big time. They must have some way figured out how to insure that OS X runs only on Apple hardware.
Having a Masters or a Doctorate does not automatically allow you to do architecture on any project.
Recently, I interviewed a recent grad who said his goal was to be a system architect, but he realized it took years of experience and you need to see a lot of good designs by smart people. I thought this was a very insightful statement. Another recent grad working at our company also interviewed him and said, "He doesn't know anything about design, he doesn't know UML."
I have seen gifted programmers right out of college, but design requires more than just knowing UML.
It's funny, I was following this convention for a system I wrote, and a human interface "expert" required me to change everything to "Yes, No, Cancel".
I would not call C++ exceptionally self documenting, but well written C++ can be very elegant. There is a chapter in Meyers Effective C++ titled, "Say what you mean and mean what you say." My copy is at work, but he mentions that the use of const, virtual functions, abstract functions, and other constructs can reflect design decisions. Also, the proper use of constructors and destructors can ensure that objects are always initialized properly, that an object stays valid over its life time, and releases its resources when it goes out of scope. Proper (as opposed to wild and "creative") uses of operator overloading and copy constructors can produce elegant easy to read and understand code.
Unfortunately, you are no safer, but everyone has less privacy
I agree that any improvement in safety is minimal (at least with current technology). But the loss of privacy is pretty minimal too. Every time I use a credit card, order pizza, etc., people can determine my name. It's no big deal.
If I'm getting on an airplane, I feel better that everyone has to show an ID. We live in a world where terroism is not a joke. Altough, I have to admit, most hijackers do have valid IDs.
Here are some rules of thumb that I apply (for what it's worth).
Minor syntactic things like using !p verses p == NULL rarely make a difference. I try for clarity, modularity, and simplicity when I code. This comes in handy when you have to optimize latter. Few people know what code a compiler generates, and even fewer know what kind of code will be generated for version 3.0, or for the next generation of processors.
Profile your code. You will often be surprised where the bottlenecks are.
Consider using a better algorithm when you optimize. As a corollary, know the strengths and weaknesses of various algorithms and data structures. Fortunately, this is a lot easier than understanding compiler generated code.
I/O considerations can result in a big win. Try to minimize I/O by caching. Also, writing out large array of items will be much faster that writing out one element at a time. Serialization in object oriented languages such as Java and C# can have some quirks. For example, serializing an array of Points can be put slower than serializing an int array of X values and an int array of Y values.
When possible put your objects on the stack, instead of the heap. Besides being more efficient, it also is less error prone with regard to memory leaks and pointer errors.
If the rest of the government were breaking even or running a surplus, then Social Security would only be a small problem. Unfortunately, the government as a whole is deeply in debt and the problem is getting worse by the hour. As the baby boomers start to retire (in 2015 or so) tax revenue will decrease, and expenses for Social Security, Medicare, and other health and retirement benefits will increase.
As an added problem, the falling dollar and balance of payments problem will make investments in Treasury Bills by non U.S. entities less attractive. The U.S. government will have to raise interest rates in order to borrow the money it needs to service the deficits. Paying interest on the national debt is already a major expense; higher interest rates will make the problem worse.
In short, I think we are brewing the perfect economic storm. The Republicans are proposing gimmicks and tax cuts, and saying that deficits don't matter. The Democrats are saying there is no problem and are proposing increases in health care benefits. We are all doomed.
it would explain why we suck at math but most scientific and technological innovations happen here
I think the real explanation is that while our high schools are not that great, our colleges are pretty good, and some of them are among the best in the world.
I have two kids in high school who are straight A students. We have three computers, including a computer in each kid's bedroom. I don't know how they would get through school without a computer. They use the internet for research, prepare professional looking reports using MS word, use PowerPoint for their classroom presentations, and use e-mail to communicate with other students when doing group projects. Our kids know what's expected of them, and they get it done, plus we are lucky enough to have a public high school where most kids take their school work seriously.
Microsoft has adapted C++ to.Net with the same skill and elegance that they used when they adapted C++ to COM. In other words, it's a mess. I have programmed in both C# and managed C++ and its easier for an experienced C++ programmer to learn C# than managed C++. Even Microsoft realizes their mistakes and are correcting some of them in C++ 2005 (the beta is essentially 2005). The main advantage of C++.Net is that it will be easier to port over existing C++ applications. New development should be in C#.
Surround yourself with the best people you can hire, beg, borrow, or steal. Your team should include a few "old hands" who have been through a number of projects before. Listen to what your people say, try to get them what they need, and try to insulate them from extraneous demands on their time.
I doubt that any large company will pay any attention to you unless you start eating into their profits. Any if you start eating into their profits you are going to be rich. SCO and the like won't sue you since their legal bills would be greater than any money they could get out of you. IANAL so please don't sue me if my advice turns out to be bad.
The scientist's job is more than discovering facts (I think your post implies this). They also have to develop theories, which add structure to the facts, and allow us to extrapolate to observations that haven't been made yet. You are right in that "truth" is an alien concept to science, since new facts can prove inconsistent with a theory.
I am not a physicist so this may seem simple minded. What if our standard candle measurements aren't that accurate, and the universe is older and larger than we think? Wouldn't that explain the expansion rate without dark energy and anti-gravity?
I have both the C# and C++ 2005 Express versions. Not a single problem with installation or operation. I also like the IDE. The big plus for me is the excellent EMACS emulation, and the ability to customize the IDE. I really don't like an IDE that hogs the whole screen. I can set the miscellaneous windows to auto-hide and have all editor window on the screen.
I can understand a company doing this (sort of), but I have never seen it. And I have worked at places that process some very sensitive information. Usually you spend your last two weeks finishing up as much as you can and making sure someone else understands what you are working on. If you really wanted to steal something, you could do it before you give your notice.
I did have one disturbing thing happen once. I came into the office on my last day at work and my workstation would not boot. I was afraid people would think that I had trashed it out of spite. It turns out that the Sys Admin had backed it up and wiped it. He was preparing it to send over to another department. So I was off the hook.
The thing is, most programming languages are designed for professional programmers. We work on programs that can run into the hundreds of thousands or even millions of lines of code. Our main problem is not typing. Managing complexity is the problem. Most of the programming constructs that make a small program verbose (functions, classes, libraries, etc.) make it easy to partition a large program into parts that interact in well defined ways, thus reducing the complexity of the system.
My question is this: According to TFA the express editions will be downloadable. Does this mean that they will be free, or will they cost $49 like the boxed versions?
This is probably the number one reason. I have worked on several projects where re-use was a goal, and the software produced was difficult to understand, error prone, badly documented, and inflexible. Re-use is possible though, the best examples are the Java and .Net libraries which are very good.
Another problem is that the technology changes rapidly enough that a re-usable library can become obsolete rather quickly. I don't know how many user interface libraries I have written (starting with an X-Window/Motif library) that are pretty much worthless in may current job.That seems to be the biggest argument for implicit typing. But why didn't they just introduce a keyword that just applied to anonymous types instead of making the entire language more error prone and less readable. You would be able to type
var c = new {Name = "Fred);But not
var x = 5; var y = 5.0;When you really meant:
double x = 5; float y = 5.0F;For over a decade computer science gurus have preached that implicit typing is a bad idea, and most of the non-scripting languages (C++, Pascal, Java, Modula 2, etc.) have followed that lead. Now, Microsoft is taking a big step back toward VB, something I find inexplicable.
There is a book called "Peopleware" where the authors did a study on programmer differences. They found that differences of 10 to 1 in productivity were not uncommon. This was on easy tasks that any competent programmer should be able to do. I would guess that on hard problems the difference would be even greater.
The hard part of hiring great programmers is recognizing them in the interview. I take part in a lot of interviews, and I have been completely wrong both ways, thinking first rate programmers are bad hires and thinking bad programmers are good hires. Some good programmers are a little different than most people. Sometimes they are unimaginatively different.
Check out Petzold's Windows Programming in C#. Hello World is copyrighted. Seriously.
Right. That's why Apple will never switch to Int... No, wait. That's one thing I don't understand about the switch. Apple makes its money on hardware. If OS X can be hacked to run on every Intel box, Apple stands to lose big time. They must have some way figured out how to insure that OS X runs only on Apple hardware.
Anakin's father was Jar Jar.
Having a Masters or a Doctorate does not automatically allow you to do architecture on any project.
Recently, I interviewed a recent grad who said his goal was to be a system architect, but he realized it took years of experience and you need to see a lot of good designs by smart people. I thought this was a very insightful statement. Another recent grad working at our company also interviewed him and said, "He doesn't know anything about design, he doesn't know UML."
I have seen gifted programmers right out of college, but design requires more than just knowing UML.
Uh Oh. What if the octopus is the crown of creation and humans are just here for their amusment. That would explain a lot.
It's funny, I was following this convention for a system I wrote, and a human interface "expert" required me to change everything to "Yes, No, Cancel".
I would not call C++ exceptionally self documenting, but well written C++ can be very elegant. There is a chapter in Meyers Effective C++ titled, "Say what you mean and mean what you say." My copy is at work, but he mentions that the use of const, virtual functions, abstract functions, and other constructs can reflect design decisions. Also, the proper use of constructors and destructors can ensure that objects are always initialized properly, that an object stays valid over its life time, and releases its resources when it goes out of scope. Proper (as opposed to wild and "creative") uses of operator overloading and copy constructors can produce elegant easy to read and understand code.
I agree that any improvement in safety is minimal (at least with current technology). But the loss of privacy is pretty minimal too. Every time I use a credit card, order pizza, etc., people can determine my name. It's no big deal.
If I'm getting on an airplane, I feel better that everyone has to show an ID. We live in a world where terroism is not a joke. Altough, I have to admit, most hijackers do have valid IDs.
Here are some rules of thumb that I apply (for what it's worth).
Minor syntactic things like using !p verses p == NULL rarely make a difference. I try for clarity, modularity, and simplicity when I code. This comes in handy when you have to optimize latter. Few people know what code a compiler generates, and even fewer know what kind of code will be generated for version 3.0, or for the next generation of processors.
Profile your code. You will often be surprised where the bottlenecks are.
Consider using a better algorithm when you optimize. As a corollary, know the strengths and weaknesses of various algorithms and data structures. Fortunately, this is a lot easier than understanding compiler generated code.
I/O considerations can result in a big win. Try to minimize I/O by caching. Also, writing out large array of items will be much faster that writing out one element at a time. Serialization in object oriented languages such as Java and C# can have some quirks. For example, serializing an array of Points can be put slower than serializing an int array of X values and an int array of Y values.
When possible put your objects on the stack, instead of the heap. Besides being more efficient, it also is less error prone with regard to memory leaks and pointer errors.
If the rest of the government were breaking even or running a surplus, then Social Security would only be a small problem. Unfortunately, the government as a whole is deeply in debt and the problem is getting worse by the hour. As the baby boomers start to retire (in 2015 or so) tax revenue will decrease, and expenses for Social Security, Medicare, and other health and retirement benefits will increase.
As an added problem, the falling dollar and balance of payments problem will make investments in Treasury Bills by non U.S. entities less attractive. The U.S. government will have to raise interest rates in order to borrow the money it needs to service the deficits. Paying interest on the national debt is already a major expense; higher interest rates will make the problem worse.
In short, I think we are brewing the perfect economic storm. The Republicans are proposing gimmicks and tax cuts, and saying that deficits don't matter. The Democrats are saying there is no problem and are proposing increases in health care benefits. We are all doomed.
it would explain why we suck at math but most scientific and technological innovations happen here
I think the real explanation is that while our high schools are not that great, our colleges are pretty good, and some of them are among the best in the world.
I have two kids in high school who are straight A students. We have three computers, including a computer in each kid's bedroom. I don't know how they would get through school without a computer. They use the internet for research, prepare professional looking reports using MS word, use PowerPoint for their classroom presentations, and use e-mail to communicate with other students when doing group projects. Our kids know what's expected of them, and they get it done, plus we are lucky enough to have a public high school where most kids take their school work seriously.
Microsoft has adapted C++ to .Net with the same skill and elegance that they used when they adapted C++ to COM. In other words, it's a mess. I have programmed in both C# and managed C++ and its easier for an experienced C++ programmer to learn C# than managed C++. Even Microsoft realizes their mistakes and are correcting some of them in C++ 2005 (the beta is essentially 2005). The main advantage of C++ .Net is that it will be easier to port over existing C++ applications. New development should be in C#.
Surround yourself with the best people you can hire, beg, borrow, or steal. Your team should include a few "old hands" who have been through a number of projects before. Listen to what your people say, try to get them what they need, and try to insulate them from extraneous demands on their time.
I doubt that any large company will pay any attention to you unless you start eating into their profits. Any if you start eating into their profits you are going to be rich. SCO and the like won't sue you since their legal bills would be greater than any money they could get out of you. IANAL so please don't sue me if my advice turns out to be bad.
The scientist's job is more than discovering facts (I think your post implies this). They also have to develop theories, which add structure to the facts, and allow us to extrapolate to observations that haven't been made yet. You are right in that "truth" is an alien concept to science, since new facts can prove inconsistent with a theory.