<p>It’s not so much the <em>kind</em> of software that matters. I’m talking about “software” in a sort of averaged-over sense - like in taking all problems for which neither party is at a distinct disadvantage and imagining what the trend would be.</p>
<p>I just feel that CS/SE majors are, on average, at an advantage with regard to general-purpose programming than their CE counterparts. CS, SE, and CE are not about programming, none of them; but it is a skill that, arguably, is most important to the SE, then the CS, and finally the CE major. I can try to make some points with supporting material if you don’t intuitively agree with this claim.</p>
<p>“When did I say otherwise. There is no excuse for badly written C or Assembly, no reason why it cant be as nice as some people precieved liking of java and the rest of hll’s.”</p>
<p>Good point. I would say that certain languages are better suited to certain applications. Thinks like C and Assembly generally have poor economies of language features and small&large scale development, but good economies of execution and of compilation.</p>
<p>There is something inherent to ASM and C that makes them less readable and maintainable than other higher level languages. Acknowledging the facts is the first step to dealing with them… and they can be dealt with.</p>
<p>“Good point. I would say that certain languages are better suited to certain applications. Thinks like C and Assembly generally have poor economies of language features and small&large scale development, but good economies of execution and of compilation.”</p>
<p>Large scale development projects in C make generous use of macros and object libraries so that it often feels as if you are programming in macros and subroutines as much as in the language itself.</p>
<p>“There is something inherent to ASM and C that makes them less readable and maintainable than other higher level languages. Acknowledging the facts is the first step to dealing with them… and they can be dealt with.”</p>
<p>I think that there’s the built-in assumption that someone else reading the code will understand it as well as the writer resulting in a tendency to under-comment the code. There’s also this feel of C in that you can code very, very fast and that comments slow you down. I do a moderate amount of inline assembler programming and do try to take advantage of macros where possible to keep the code maintainable, modular and externally understandable.</p>
<p>Lol I like how this threads purpose seems to have changed…
It’s funny, though I see jobs out there for it, I seem to be seeing a use for Java less and less besides it’s relative ease compared to say C++. C++ just seems like such a more powerful language when I look at the amount of libraries written for it already. Then again I guess if you want control C would be the main man, at least for higher level prog. ;). Of course for ease there also are the windows managed languages which, though only will run on a windows platform, are quite useful when you’re sure you are going to in a Windows Environ…
Just my two cents I suppose.</p>
<p>Oh yeah…some people just naturally code better than others and some just work harder at becoming better at it, that’s how you can see non-CS majors who are better programmers than CS majors.</p>
<p>Well I thought this thread was about CS vs CEN degree holders. Of ther two in my opinion the Cs people tend to be better programmers.</p>
<p>Now as for this</p>
<p>
</p>
<p>The vast majority of non CS/CEN degree holders who hold jobs as programmers are usually much better programmers than the educated ones. If I was an employer and had the choice between a non educated person with 5-10 years of hobbyist experience vs a new CS/CEN Grad from a top school. I would choose the hobbyist almost always, as to be honest most CS/CEN students suck when they come out of school. Ive yet including myself to see a good programmer come out of college when school is all that they have.</p>
<p>Same way, no English major becomes a great writer with a English degree. Expereince Speaks everything. So just because you have a CS degree, really means nothing in our world. Your job is easily had by just about anybody who has more experience then you.</p>
<p>BirdEye, exactly what I was thinking. Programming is about experience. Besides, CS students are not really computer programmers. They just use programming as a tool to do their work (which are things like theory, algorithms, solving complexity problems, etc…)</p>
<p>Not to belittle anyone’s programming related degrees, but I see high school students write really amazing programs to do all kinds of things… and they haven’t taken any degree-classes.</p>
<p>There are actually lots of jobs that use the theory though and a lot of programmers wouldn’t have the theoretical background that the CS major has. I came from the IS route into software engineering and there were discussions in meetings that completely went over my head. Picking up an MSCS cleared that up and I learned a lot of stuff that I was missing for a large-scale software engineering operation.</p>
<p>Well, it depends more on the person than the major. You won’t be even close to competent at programming if your only exposure is 2 intro classes of a CS degree. That said, I think CS simply attracts more students who enjoy general programming than, say, EE.</p>
<p>About the language choice:</p>
<p>I’m not really sure why so many people like to trash Java or similar languages (C# is actually one of my favorites). It’s not the language to go with for resource-limited situations or when you need to squeeze maximum performance out of your program, but that’s only a subset of programs. You can even make decent games, one of the most demanding software applications, using Java and JOGL. Why wouldn’t CS departments teach it? Ideas like recursion and algorithms and their efficiency are more immediately important.</p>
<p>Edit: before anyone says there are “practical” reasons for learning X language or Y framework, that’s never been the point of CS. It’s a scientific field, not a vocational one.</p>
<p>I think that Java insulates the CS student from the hardware giving the student a black box feel for hardware. I think that CS students should have an appreciation and understanding of the hardware but then I do a lot of assembler programming.</p>
<p>Yes, it does, but that’s sorta the point. All CS students should have a basic appreciation by taking Computer Organization and Architecture, which usually includes some assembly coding, but it’s not directly relevant to coming up with algorithms.</p>
<p>If you go to around 8:30-10:00 he basically says the same thing: CS is about idealized conditions where we take certain things for granted and reduce constraints. The last thing he says shows exactly why CS isn’t made obsolete as new technology comes out. We don’t WANT to deal with limitations of hardware because it limits us to what can only be done in the present.</p>
<p>Lots of departments do. However, I didn’t say CS programs don’t or shouldn’t teach anything practical… that’s ridiculous. I’m merely saying it wouldn’t make sense to choose a particular language solely based on its prevalence in industry.</p>
<p>“Yes, it does, but that’s sorta the point. All CS students should have a basic appreciation by taking Computer Organization and Architecture, which usually includes some assembly coding, but it’s not directly relevant to coming up with algorithms.”</p>
<p>At lunch yesterday, I asked other engineers about the percentage of theory in their CS programs and I think that we came up with 20 to 30 percent. That leaves a lot of practice in current majors. Having some appreciation for the hardware, even in introductory classes can help you to understand the importance of efficiency and understand the motivation for algorithms. Indeed there are algorithms geared to common hardware environments that would work poorly on vastly different environments.</p>
<p>“If you go to around 8:30-10:00 he basically says the same thing: CS is about idealized conditions”</p>
<p>That would be fine if CS majors were about CS. Most of it isn’t CS.</p>
<p>I just don’t understand why Java is chosen for intro classes if not for the fact that it is popular. If you want the class to emphasize how a computer works, teach C/asm. If you want to emphasize CS concepts, then teach a functional language.</p>
<p>This reminds me of the part in the MIT lecture posted where the lecturer talked about how you can’t amplify a signal by a million times by cascading a lot of amplifiers. An amplifier circuit isn’t really a multiplication.</p>
<p>Moral: Having a basic understanding of what goes on underneath the abstractions is useful because often those abstractions are not perfect ones.</p>
<p>“I just don’t understand why Java is chosen for intro classes if not for the fact that it is popular. If you want the class to emphasize how a computer works, teach C/asm. If you want to emphasize CS concepts, then teach a functional language.”</p>
<p>There are lots of players pushing and pulling on the CS curriculum. Many large software engineering companies with large C projects want an emphasis on C. Academics like Scheme. Lots and lots of smaller companies that want CS grads use Java.</p>
<p>What language you start with is sort of irrelevant.</p>
<p>Any good CS major should graduate: (1) having seen a variety of languages, including ASM, C, C++, Java, Scheme, Prolog, etc.; (2) with enough knowledge to quickly become productive using any of the aforementioned languages; (3) with enough theoretical and practical background to be competent, if not fluent, in most kinds of projects.</p>
<p>I think most good CS programs do these three things, and what more could you want?</p>
<p>All this shouting about abstractions by lazy developers. “I don’t like C/C++, I’d rather the virtual machine just wipe my *** for me”. CS students should learn the hardware! Is it any wonder why the rate of physical computing power is asymptotically on it’s way to infinity while most software projects today are doomed to failure?</p>
<p>lol well I guess as said before the point would be…If your a CS grad, you should be able to pick up just about any programming language pretty fast (at least the OO languages).
Whats was this topic about again? lol</p>