And building a water pump that can lift a gallon of water 200 feet while fitting in a 4 foot radius is impossible with today's materials... unless you are a tree. Bones and muscles have a compressibility to them. Your joints and muscles act in coordination to act as shock absorbers. Your tendons can hold tremendous tensions in them creating very impressive spring forces. My eye has a quantum efficiency that rivals most CCDs. My ear drum can detect acoustic vibrations which oscillate at the width of an atom. Bacterial chains called bionites can grow and be harvested into ropes with 100-1000 times the tensile strength of steel.
Just because I can't build it doesn't mean it can't exist. I can't think of a mechanical analog to the growth of an abalone shell or a giant sea snail's shell.
This is typical Don Box (which is good). Have you read "Essential COM" or attended WinDev? Don states things as he sees them, states the pros and the cons to facilitate understanding. I see nothing bad about him stating that.NET will have limitations due to a protocol used under the hood.
Most of.NET does not "need" HTTP. The current implementation of the SOAP crap all runs over HTTP over port 80, but the CLR, the call by name method of RPC, and other goodies are independent of the HTTP protocol. I think that the article makes a good point: web services that take time won't really work so well over HTTP without cheap workarounds. The fact that once a request has been submitted to a web service that the client has to continually poll for status until the processing is completed is very wasteful. The bandwidth for the polls is just waste and the processor time to make and process the polling is a waste.
I don't think that Microsoft can blame HTTP for the reason that.NET fails. Microsoft chose the technology to use. There's not much in.NET that Microsoft did invent. They can just as easily blame XML, SOAP, JIT compilers, a standard library, an unstable OS, etc. I'd rather they get the opportunity to blame developers like me who used to work for a Microsoft only shop who moved to free alternatives for implementation like PHP and JAVA (don't flame me for the Java choice, there are just some things that I can't do in PHP that I need to do).
One could argue that the companies that employ this kind of screening method are the ones that a person like you should try to avoid anyway. Who wants to work at a place where your coworkers look down on you because you didn't sit through 4 years of school? Of course, when times are tough, ANY job is attractive. But don't make a career out of a place that can't make you happy.
Get a job at a university working in a lab as a code monkey. The hours are good, the benefits are great, and the pay sucks. But, you get experience, and you often get to work with really bright people. Of course you will also get the opportunity to work with tyrants and anti-social freaks, but that just makes it more like the real world.
Sad but true. I work for a 35 person company in the US, and our HR director has stated that "yes, he worked here from X to Y" is all that anyone can expect from the company. Way to make an individual in a small company feel like a cog in a large corporation!
CCS CS 20 at UCSB is supposed to be a CS course geared toward using "real-world" problem solving techniques. So, I told students that they could buy, download, and copy any program and turn it in as long as it didn't violate a copyright or license agreement. Then the trick was to give them problems that they couldn't easily find such solutions.
One assignment: modify this open source program to fix an assigned bug.
Another assignment: Modify this (Same) open source program and add a feature that they've been wanting for a while.
It's not like the solutions aren't readily available and well documented, it's just like in the real world: it hasn't been done here yet.
As long as intro courses use textbook problems with textbook solutions, students should be penalized for not doing their own work. The point in these classes is to provide an educational foundation. As soon as the foundations are laid, the students should be given work that isn't straight out of a textbook, and should be allowed to use any legal method of getting a solution. It's not like they'll find an exact solution, so they will have to do some tweaking and patching to get it to work anyway.
This was the philosophy my teaching cohort and I presented to the college Provost and the head of the CS department. They bought into it and gave us the class.
Fortunately, if an object supports IDispatch, then you can import it into Visual C++ using class wizard. It handles the wrapping for you by making a nice class that exposes every function with all of the obvious parameters (which must be rebuilt through class wizard if you break binary compatibility).
Caveat 1: Class wizard will not import any public enums from your VB classes into C++.
If you want a standard DLL, you can use the C++ class as a wrapper for the ActiveX DLL.
Caveat 2: You now have the overhead of a DLL that has the overhead of an ActiveX DLL, but if that saves your architecture, it is probably worth it.
You can write a little script to automate the process of creating wrapper class DLLs if you are really tricky.
NOTE: I wasn't that tricky. I used Rational Rose and built a template file in Rose that did a wrapper DLL for me. Rose is a very expensive tool if all you are using it for is to generate wrapper classes.
Actually, TCO is Total Cost of Ownership. Just because the installation CD is free for Windows and free for Linux doesn't mean that TCO isn't the issue. Indeed, saving $199 per Windows CD doesn't make Windows much cheaper in the long run.
I would argue that TCO is the issue to switch to Linux, independent of purchase price.
Actually, it is redundant, and a copyright violation. This is the point from the point/counterpoint article in the onion. The counterpoint was that we should act with focused rage.
I'm also wondering how many of these applications that were developed, assuming this thing wasn't just dreamt up by a PR department, were done so using pre-built components
Read the paper, none of the applications were built, period. Maybe they modelled them assuming pre-built applications, but the study was on the models entered into the CostXpert Tool, not on actual data. The paper was written by someone who works for the company that makes the CostXpert Tool and published by Borland. There is no reason to assume that anything in the study is valid, since the paper states that there is no empirical data possible due to the recent release of Kylix.
I just noticed something even worse, the guy who wrote the article works for the company that makes the costXpert tool. So, Borland publishes a white paper written by the maker of the tool that says that Borland's software will reduce your development costs. Absolutely useless.
I think it telling that there was no actual data used in this report. The models were the parametric models presented by the costXpert tool. This whole study is nothing more than a statement that the people who make the project cost modelling software believe that Kylix would reduce your development cost by a factor of two. The article itself states that the tool has not been in the market long enough to obtain actual metric data.
In other words... we just released this tool. Nobody has used it enough to give us real figures, but this company, who also couldn't possibly have real figures (for the same reason), thinks that we'll save you a bundle.
Ada has largely gone away. I am working under a NAVY contract right now, and none of our code is Ada. Only big companies that have a lot already invested in Ada are using it on the contracting side.
However, we do have to use NT4SP6 because Win2K has not been approved yet. What a load of crap.
Come on people, this is (meant to be) funny, not a troll. It doesn't even remotely try to make a sound argument. A troll would say:
For embedded systems: C# has a defined bytecode that can be JIT compiled onto a variety of special purpose chips without rewriting anything.
Web Programming: C# has built in XML and network support, and don't forget that because everything tunnels over port 80, no firewall will prevent your code from executing!
Instead, all of the statements are absolutely absurd. Maybe you don't think it is funny, but it is absolutely NOT a troll. Trolls try to say things that have a basis in reality but are completely non-constructive for the purposes of discussion to have people respond (I'm not sure where the line to Flamebait is, but...). This is just a joke.
Too late, one of California's Nuclear reactors already is running on a 40 Million dollar multiply-redundant Windows NT network. I know of a contractor in San Diego who was trying to get 6 million to redo the whole thing using FreeBSD when he heard that they were having problems even with the multiple backup systems.
California does double fine in work zones, and in some places where people crash a lot (like the Jimmy Dean intersection on 46), they just post a sign that says "double fine zone." Voila! Screw you if you want to actually pass the 5 semi's that are in front of you.
I agree that government contracts are quite stabilizing. Unfortunately, they are stabilizing in both directions. I work for a contractor. Mind you, it isn't a very big one, but we still get effected by the recession. Why? Because you can't grow a small company on just defense contracts alone. A big company that sells billion dollars in Airframes can have decent profit margins. We can't. Sure, we don't have to worry about being downsized or paying the bills, but we do have a lot of talent and would like to do a bit of IR&D. Fortunately, our president is one of the best management types I've met. He's managed to secure a bit of funding and found an avenue for commercial products even in this economy.
a backhoe is a metal monster weighing in at several tons. It is used for such tasks as digging out ditches and wells. It runs on deisel and is not generally *held*. I think that is why the AC said you were embarassing yourself. The origional poster below you was inferring that asking such trivial questions were likely to get wrong answers (a similar analogy: you don't interview pilots by asking them to fly a kite). I see his point, though the manner was a bit rude
Where do you live? There are cities in New Mexico (Anyone here from alamagordo?) with that average, but there aren't many 6 figure incomes (yeah, I know that *too* many would raise the average, but...). You have to be in a sizeable, poor city to support that kind of average/outlyer combination.
I often think about moving to central Illinois and taking a job for less pay just so that I could buy a house. Well, that and half of my college buddies are going to UIUC for grad school.
Find somewhere that is hiring entry level people. Thought there is quite a saturation in that market, people are still hiring. Because it is an entry level position, you are more likely to be hired on your interviewing skills than on your resume. It is your responsibility to be aggressive. Where I work, we still hire entry level people. I don't say this to offend you, but unfortunately for people like you, your resume has little to do with whether you come to work for us. It is a catch-22 in the sense that we may not let you interview based on your resume. However, I recently graduated from college, and an old friend who even more recently graduated bumped into me. We got to talking and I asked him what he was doing for a job. He said that prospects weren't good because of the market. I told him that was bullshit and that my company was hiring an entry level programmer. I told him to apply and preface on his cover letter that I recommended him. His resume looked like a real piece of crap (formatting and content)! However, we brought him in because I recommended him. I knew the guy had the analytic skills we were looking for. However, he didn't even have the academic background on the experience we wanted (we wanted a person who could do basic DB stuff. He took the course on parallel computing instead of the DB course. Apparently you get to choose quite a few elective courses in CS). On the other hand, he did well in the interview. I actually had him interview with a number of people even though he was going to be working for me. Anyway, it took him a couple of weeks to ramp up, but now he is a productive member of the team. He's still entry-level, but he has the skills to say when something is too tough for him and has the skills to look stuff up when no one else can train him.
That was long-winded. The point: Entry level positions exist, but you need something other than your resume to get the job because of the market. You need to go out and meet the people who are hiring. My boss goes rock climbing--join a weekend climbing group. The president of the company goes running--join a running group. I drink--hang out in bars. Hang out in coffee shops. Meet people informally and start networking. You need to be (forgive me) proactive. Send in your resume for those entry level positions. Call about the position. Show up in person. Follow up on it. We actually have given a walk-in an interview. It doesn't happen frequently, but it does happen. Once you have your foot in the door, stay with the crap job for a year. Now you have something to build on.
In Santa Barbara, California, it's about $1000 per room per month. I have a small one bedroom place for $895 per month (water/trash included). Less than an hour drive away, you can get a 2 bedroom condo (with a small yard and a garage) for around 800 per month. Santa Barbara has 80,000 people. Goleta (basically a part of SB) has another 60,000. That's not a very big market, so when the economy was good, a new influx of 1000 people has a measurable effect on the housing situation. Ericsson, Raytheon, and some other big companies have offices here, and there were a number of startups that entered the market. The university has about 20,000 people (I think that includes staff). Those forces kept more than 100% of people with skills employed (my company hired one guy in a city that is three hours away, and several from cities that are 1 hour away). That has changed, and there are quite a few people out of work. However, I think that rent will likely remain high throughout the economic downturn. This is unfortunate for me. Even at my wages, I don't have much hope of making a 20% downpayment on a $500,000 house, which is about the right price right now for a 2 bedroom house (one bedrooms aren't that much cheeper). The fact is that there isn't a whole lot of new housing development, but the University is growing, and people want to stay in the area. We call it the Palm Tree Effect--people sell their houses elsewhere and end up living with a roommate just to live here.
Finding a tech job here is extremely difficult if you aren't a specialist. Companies are hiring (we are trying to hire roughly a person a week), but enough companies have gone belly up that the job pool is saturated for non-specialists. Still, good skills are hard to come by. We only have one QA engineer and one more starts tomorrow. We've been trying to get a department of three QA engineers for several months. We want to hire another tech writer. We want to hire a couple more programmers. The company wants to hire more management. So, in many respects there is a shortage of talent.
A more interesting question is the current value of studying C after learning an object-oriented language. The tradeoff there is much more difficult, and I don't have a strong opinion one way or another.
I don't think that it is a tradeoff at all. One of the biggest places where there is a clear shortage of developers is in the embedded arena. That arena is still dominated by lower level languages like C. Does that help the "Computer Scientist?" probably not. Does that help the average student get a job after college? Certainly. Plus, think about how much example source code you can find online in C. I actually learned Delphi because all of the best documented examples of writing device drivers for Windows was in Delphi. I already knew PASCAL, so it wasn't that difficult. Once I knew enough to read the example programs, I learned more because it interested me. Now I feel comfortable in the language enough that I could apply for a job and not be bullshitting when I said that I could be productive using Delphi.
Back to Computer Science. Is there an advantage to learning C after an object oriented language. It depends on the object oriented language. There is perhaps little academic value in teaching C after C++, Java, or Delphi, simply because all are fairly C-like in their syntax, and can be reduced to illustrate any concept that can be illustrated in C (treating C++ as "a better C"). However, if the language choice for the OOP is something like LISP, then I think that there is a lot to be learned by using a procedural language. In that case, It'd probably be worthwhile to teach a class in C++ just to compare the vast differences in OOP facilities in the two languages.
You bring up a good point. I use VB+ADO on a regular basis to implement data manipulation routines (I turn it into a COM object and call it from a C-app). Honestly, is there anything easier for manipulating databases than using the ADO library in VB? I do a lot of my database stuff using OLE DB in Visual C++, but the dynamic accessors sort of suck, and the static accessors really suck.
I've used the Database library object for Perl for a mySQL database before. That was really sweet (hash table rowsets are great), but it still wasn't as user friendly as the ADO library for Visual Basic. Has anyone used a friendly DB library (I don't care which language) that they can compare to VB+ADO? And no, straight SQL is not the way to go for most applications, and if it were, almost any DB library would do then.
To move back on topic, I took a CS course that used VB (and pascal, and C) in high-school. I thought that it was wonderful. Having the IDE handle the binding of GUI objects to code events was fantastic... for me to poop on! Seriously, while it gave me a great sense of accomplishment to create GUI applications so fast, I didn't learn ANY fundamentals of programming... Unless click, copy, and past are programming fundamentals.
I did not mean to offend. I meant "Garbage Spewing" as the ability to instantiate unnamed or undeclared objects, and meant it more as an advanced feature that is the inverse to garbage collection. Perl allows this as well, but I would never teach it in an introductory course on object orientation. Perhaps I should have termed it transparent dynamic memory allocation?
I have never programmed in LPC, and my ignorance was clear. However, I think that my point is valid. A language that is *incredibly* coder friendly may be more of a hinderence to teaching the basics of object oriented coding than a benefit. Learn OOP on a language that still puts most of the work on the programmer, like C++ -- because I think that OOP should start while some of the basics are still not set in, and therefore my favorite choice for OOP -- Lisp -- shouldn't be used either (because Lisp is also too friendly and so doesn't offer the same lessons in stupidity). Maybe as a second or third course. Then, show off the power of OOP by using a language that does have automatic garbage collection, anonymous objects, good polymorphism (Javascript, IIRC, allows you to call myobject->myfunction() without shitting on you if myfunction isn't a member of myobject), and other features.
When polymorphism and garbage collecting (or in this case garbage spewing) are taken care of by the language, it tends not to be a good language for a base level computer science course. AFTER the basics of programming (and even object oriented programming) are taught, should someone consider a language like LPC.
With C, being so close to the hardware, it is often easy to see which calls waste the most time. It is easy to see where memory is allocated and deallocated. It is easy to find "beginner" mistakes.
if (x=5)
always seems to execute. WHY? These things allow students to make a mistake that can be learned from. A student should NEVER learn Perl as a first langauge. Why? Because even the shittiest of code seems to "do what it should." That is no way to learn the basics. CS courses are not designed to teach one language and then send students off into the work force. Chosing a language like Java seems to support that mentality, though. What happens when a CS student who learned on Java tries to get a job programming C on embedded systems? There are many pressing reasons to learn Java, C++, and Perl at some point durring the CS curriculum, but why start with one of those and then drop down to the less expressive languages like 68K assembly and C?
I see the reason not to start with something like 68K assembly: too frusterating for a first langauge. But C has some wonderful compiler warnings (assignment in a comparison statement generated compiler warnings when I was taking a C class) and syntax rules that are easy to fix and not too forgiving as to teach bad programming habits.
Besides, there is a lot of history and lore to be learned when taking entry level CS courses, and Java just doesn't have the history behind it to make it for those purposes. No "and this was the logical error that caused a whole sewage processing plant to shut down. So remember those break statements."
Just because I can't build it doesn't mean it can't exist. I can't think of a mechanical analog to the growth of an abalone shell or a giant sea snail's shell.
Models are useful, but don't take them too far.
Most of
I don't think that Microsoft can blame HTTP for the reason that
One assignment: modify this open source program to fix an assigned bug.
Another assignment: Modify this (Same) open source program and add a feature that they've been wanting for a while.
It's not like the solutions aren't readily available and well documented, it's just like in the real world: it hasn't been done here yet.
As long as intro courses use textbook problems with textbook solutions, students should be penalized for not doing their own work. The point in these classes is to provide an educational foundation. As soon as the foundations are laid, the students should be given work that isn't straight out of a textbook, and should be allowed to use any legal method of getting a solution. It's not like they'll find an exact solution, so they will have to do some tweaking and patching to get it to work anyway.
This was the philosophy my teaching cohort and I presented to the college Provost and the head of the CS department. They bought into it and gave us the class.
Caveat 1: Class wizard will not import any public enums from your VB classes into C++.
If you want a standard DLL, you can use the C++ class as a wrapper for the ActiveX DLL.
Caveat 2: You now have the overhead of a DLL that has the overhead of an ActiveX DLL, but if that saves your architecture, it is probably worth it.
You can write a little script to automate the process of creating wrapper class DLLs if you are really tricky.
NOTE: I wasn't that tricky. I used Rational Rose and built a template file in Rose that did a wrapper DLL for me. Rose is a very expensive tool if all you are using it for is to generate wrapper classes.
I would argue that TCO is the issue to switch to Linux, independent of purchase price.
Actually, it is redundant, and a copyright violation. This is the point from the point/counterpoint article in the onion. The counterpoint was that we should act with focused rage.
Read the paper, none of the applications were built, period. Maybe they modelled them assuming pre-built applications, but the study was on the models entered into the CostXpert Tool, not on actual data. The paper was written by someone who works for the company that makes the CostXpert Tool and published by Borland. There is no reason to assume that anything in the study is valid, since the paper states that there is no empirical data possible due to the recent release of Kylix.
See my post above.
I just noticed something even worse, the guy who wrote the article works for the company that makes the costXpert tool. So, Borland publishes a white paper written by the maker of the tool that says that Borland's software will reduce your development costs. Absolutely useless.
In other words... we just released this tool. Nobody has used it enough to give us real figures, but this company, who also couldn't possibly have real figures (for the same reason), thinks that we'll save you a bundle.
However, we do have to use NT4SP6 because Win2K has not been approved yet. What a load of crap.
For embedded systems: C# has a defined bytecode that can be JIT compiled onto a variety of special purpose chips without rewriting anything.
Web Programming: C# has built in XML and network support, and don't forget that because everything tunnels over port 80, no firewall will prevent your code from executing!
Instead, all of the statements are absolutely absurd. Maybe you don't think it is funny, but it is absolutely NOT a troll. Trolls try to say things that have a basis in reality but are completely non-constructive for the purposes of discussion to have people respond (I'm not sure where the line to Flamebait is, but...). This is just a joke.
I often think about moving to central Illinois and taking a job for less pay just so that I could buy a house. Well, that and half of my college buddies are going to UIUC for grad school.
That was long-winded. The point: Entry level positions exist, but you need something other than your resume to get the job because of the market. You need to go out and meet the people who are hiring. My boss goes rock climbing--join a weekend climbing group. The president of the company goes running--join a running group. I drink--hang out in bars. Hang out in coffee shops. Meet people informally and start networking. You need to be (forgive me) proactive. Send in your resume for those entry level positions. Call about the position. Show up in person. Follow up on it. We actually have given a walk-in an interview. It doesn't happen frequently, but it does happen. Once you have your foot in the door, stay with the crap job for a year. Now you have something to build on.
Finding a tech job here is extremely difficult if you aren't a specialist. Companies are hiring (we are trying to hire roughly a person a week), but enough companies have gone belly up that the job pool is saturated for non-specialists. Still, good skills are hard to come by. We only have one QA engineer and one more starts tomorrow. We've been trying to get a department of three QA engineers for several months. We want to hire another tech writer. We want to hire a couple more programmers. The company wants to hire more management. So, in many respects there is a shortage of talent.
I don't think that it is a tradeoff at all. One of the biggest places where there is a clear shortage of developers is in the embedded arena. That arena is still dominated by lower level languages like C. Does that help the "Computer Scientist?" probably not. Does that help the average student get a job after college? Certainly. Plus, think about how much example source code you can find online in C. I actually learned Delphi because all of the best documented examples of writing device drivers for Windows was in Delphi. I already knew PASCAL, so it wasn't that difficult. Once I knew enough to read the example programs, I learned more because it interested me. Now I feel comfortable in the language enough that I could apply for a job and not be bullshitting when I said that I could be productive using Delphi.
Back to Computer Science. Is there an advantage to learning C after an object oriented language. It depends on the object oriented language. There is perhaps little academic value in teaching C after C++, Java, or Delphi, simply because all are fairly C-like in their syntax, and can be reduced to illustrate any concept that can be illustrated in C (treating C++ as "a better C"). However, if the language choice for the OOP is something like LISP, then I think that there is a lot to be learned by using a procedural language. In that case, It'd probably be worthwhile to teach a class in C++ just to compare the vast differences in OOP facilities in the two languages.
I've used the Database library object for Perl for a mySQL database before. That was really sweet (hash table rowsets are great), but it still wasn't as user friendly as the ADO library for Visual Basic. Has anyone used a friendly DB library (I don't care which language) that they can compare to VB+ADO? And no, straight SQL is not the way to go for most applications, and if it were, almost any DB library would do then.
To move back on topic, I took a CS course that used VB (and pascal, and C) in high-school. I thought that it was wonderful. Having the IDE handle the binding of GUI objects to code events was fantastic... for me to poop on! Seriously, while it gave me a great sense of accomplishment to create GUI applications so fast, I didn't learn ANY fundamentals of programming... Unless click, copy, and past are programming fundamentals.
I have never programmed in LPC, and my ignorance was clear. However, I think that my point is valid. A language that is *incredibly* coder friendly may be more of a hinderence to teaching the basics of object oriented coding than a benefit. Learn OOP on a language that still puts most of the work on the programmer, like C++ -- because I think that OOP should start while some of the basics are still not set in, and therefore my favorite choice for OOP -- Lisp -- shouldn't be used either (because Lisp is also too friendly and so doesn't offer the same lessons in stupidity). Maybe as a second or third course. Then, show off the power of OOP by using a language that does have automatic garbage collection, anonymous objects, good polymorphism (Javascript, IIRC, allows you to call myobject->myfunction() without shitting on you if myfunction isn't a member of myobject), and other features.
With C, being so close to the hardware, it is often easy to see which calls waste the most time. It is easy to see where memory is allocated and deallocated. It is easy to find "beginner" mistakes.
if (x=5)
always seems to execute. WHY? These things allow students to make a mistake that can be learned from. A student should NEVER learn Perl as a first langauge. Why? Because even the shittiest of code seems to "do what it should." That is no way to learn the basics. CS courses are not designed to teach one language and then send students off into the work force. Chosing a language like Java seems to support that mentality, though. What happens when a CS student who learned on Java tries to get a job programming C on embedded systems? There are many pressing reasons to learn Java, C++, and Perl at some point durring the CS curriculum, but why start with one of those and then drop down to the less expressive languages like 68K assembly and C?
I see the reason not to start with something like 68K assembly: too frusterating for a first langauge. But C has some wonderful compiler warnings (assignment in a comparison statement generated compiler warnings when I was taking a C class) and syntax rules that are easy to fix and not too forgiving as to teach bad programming habits.
Besides, there is a lot of history and lore to be learned when taking entry level CS courses, and Java just doesn't have the history behind it to make it for those purposes. No "and this was the logical error that caused a whole sewage processing plant to shut down. So remember those break statements."