Faqa's .NET rant

GEC: Discuss gaming, computers and electronics and venture into the bizarre world of STGODs.

Moderator: Thanas

User avatar
Faqa
Jedi Master
Posts: 1340
Joined: 2004-06-02 09:32am
Contact:

Faqa's .NET rant

Post by Faqa »

So, programmers(those in the business sector, at any rate), we're well into MS's .NET revolution, and it's a dream come true, ain't it? No icky memory management, a kick-ass IDE, lots of pre-made stuff that lets you concentrate on the fun parts of system design and all. Of course, there's the performance price to pay, but .NET is a business platform, not a gaming one, or a language you'd use for anything requiring instant responses. So that's OK, too.

Just one problem - this shit is making coding far too democratic. It's no exaggeration to say you could sit the average person in front of Visual Studio 2005, and have him coding stuff on his own within a lesson or two. I've seen and helped it happen. Fine, you say? Well, yes. But in another sense, not so fine. VS2K5 kids inherently develop lazy habits. You've got all this fun auto-indenting, all these XML comments, all this auto-completion.... Who needs a lot of comments, right? Jeebus only knows how they'd organize their code without MS's toy. I actually had one guy complain that he didn't see why we should work with a tool because it didn't have auto-completion!

And, as Durandal pointed out way back when(search on the term "Visual Studio", for kicks), it takes coding into the realm of magic. Whaddya mean HOW does the click event happen?! It just DOES! References? Pointers? Huh? It puts these coders at the mercy of the big companies who churn out the languages. Languages become a product rather than a tool. Further, with so many elements handed to you on a platter, you forget how to design properly. I was handed today 5 .exe files. That were identical save for a few background images and DB tables accessed. That's an extreme example, but it does show the ease of use of .NET and the dangers of said same. Using a one-line XML file that divided it's content using a symbol(read: VB "Split" function.... :roll: ).

Someone with no habits, no knowledge, nothing, can create a program with little to no understanding of what he just did. And what does that make him? A locked-in MS consumer, a slightly different version of the average Windows user. I am serious.

Of course, I'm not condemning .NET. Far from it. Managed code is an awesome innovation, the platform and tools allow you to accomplish much, much more for your goal without getting bogged down.... But I'm wondering. What will the next generation of programmers be like? Will they know how to program? Or will they know how to code, like wizards saying the magic words and paying Microsoft/Sun/whatever for more words? It's a problem.

(If this is too ranty, mods, move it to the OT, of course)
"Peace on Earth and goodwill towards men? We are the United States Goverment - we don't DO that sort of thing!" - Sneakers. Best. Quote. EVER.

Periodic Pwnage Pantry:

"Faith? Isn't that another term for ignorance?" - Gregory House

"Isn't it interesting... religious behaviour is so close to being crazy that we can't tell them apart?" - Gregory House

"This is usually the part where people start screaming." - Gabriel Sylar
User avatar
Dahak
Emperor's Hand
Posts: 7292
Joined: 2002-10-29 12:08pm
Location: Admiralty House, Landing, Manticore
Contact:

Post by Dahak »

What you will see more and more, with SOA and Web Services becoming more and more important, is "Programming in the Large", where you just click together your business logic with small functional services that you don't have programmed and, indeed, don't need to know how to "program".
Image
Great Dolphin Conspiracy - Chatter box
"Implications: we have been intercepted deliberately by a means unknown, for a purpose unknown, and transferred to a place unknown by a form of intelligence unknown. Apart from the unknown, everything is obvious." ZORAC
GALE Force Euro Wimp
Human dignity shall be inviolable. To respect and protect it shall be the duty of all state authority.
Image
User avatar
Beowulf
The Patrician
Posts: 10621
Joined: 2002-07-04 01:18am
Location: 32ULV

Post by Beowulf »

Solution: make sure they know their shit before you hire them. How do you write a linked list class, etc. There are always going to be people who have little clue what they're doing. See script kiddies.
"preemptive killing of cops might not be such a bad idea from a personal saftey[sic] standpoint..." --Keevan Colton
"There's a word for bias you can't see: Yours." -- William Saletan
User avatar
Faqa
Jedi Master
Posts: 1340
Joined: 2004-06-02 09:32am
Contact:

Post by Faqa »

Destructionator XIII wrote:There will always be incompetent programmers regardless of the language. Before .NET (well, still, actually), Visual Basic took heat for this same thing. And javascript.

The problem isn't with .NET, it is with poor training.
You cannot pose as a programmer knowing only VB. The IDE wasn't built properly for that, and the performance was unacceptable(and I personally loathe the syntax, but that's just me).

Javascript? A scripting language is never gonna match full-fledged programming. Besides, for it's field(Web), it can sometimes get the job done on it's own, and will ALWAYS be neccesary. Particularly in server-code-happy enviorments like ASP.NET.

I can get the VB analogy, Dest, but Javascript?

Of course, .NET isn't the problem. It's a terrific tool. It's the mentality it inspires. Never has it been easier to produce a vapidly airheaded program with so little technical smackdown.

EDIT: Crap. Thanks, Beowolf, I knew I was missing a term. Script kiddies. .NET is quite capable of creating a generation of script kiddies.
"Peace on Earth and goodwill towards men? We are the United States Goverment - we don't DO that sort of thing!" - Sneakers. Best. Quote. EVER.

Periodic Pwnage Pantry:

"Faith? Isn't that another term for ignorance?" - Gregory House

"Isn't it interesting... religious behaviour is so close to being crazy that we can't tell them apart?" - Gregory House

"This is usually the part where people start screaming." - Gabriel Sylar
User avatar
Faqa
Jedi Master
Posts: 1340
Joined: 2004-06-02 09:32am
Contact:

Post by Faqa »



The problem isn't javascript itself: it is people who think being able to cut and paste javascript functions into their own webpage makes them good programmers. Same mentality showing up in a different place. There are many sites that use javascript in a poor, disjointed fashion, obviously written by someone who didn't truely understand what he was doing. I should have elaborated on this in my first post, sorry.
Ah. Yes, half the javascript on the web is incomprehensible. Point made, though I had no idea the problem was so severe.

As to your edit.... Y'know, I'd say "Amen", but that might imply I had a fraction of your history in the field....

Yeah, I got the rundown, assembler, C/C++(starting from the position of asking "Yeah, well where's C+?"), basic theory behind the hardware, etc(even a little Perl and Unix. I've been pondering whether or not I should find a way to send these VS2K5 kids to Perl boot camp.... :twisted: ), all the OO principles... but certainly don't possess the level you describe.

I do quite agree that programming is a skill that requires craploads of knowledge and experience. But it's.... ruder form, shall we say, is far more accesible. Write a little connecting code, slap together some objects if you're really enterprising, and off you go.
"Peace on Earth and goodwill towards men? We are the United States Goverment - we don't DO that sort of thing!" - Sneakers. Best. Quote. EVER.

Periodic Pwnage Pantry:

"Faith? Isn't that another term for ignorance?" - Gregory House

"Isn't it interesting... religious behaviour is so close to being crazy that we can't tell them apart?" - Gregory House

"This is usually the part where people start screaming." - Gabriel Sylar
User avatar
Arrow
Jedi Council Member
Posts: 2283
Joined: 2003-01-12 09:14pm

Post by Arrow »

Faqa wrote:Write a little connecting code, slap together some objects if you're really enterprising, and off you go.
You could do the same thing MFC (or even Borland's Form Builder) long before .NET was ever dreamed of.

We're always going to have bad coders, but making programming more accessible is a good thing, as will draw more people into the field, and hopefully they'll pursue a real education (both in school and in the office) and learn how to write good code. I've seen a lot of C, C++ and Fortran code written by old schoolers, usually self-taught, that was absolutely horrible. I had one Fortran program I was supposed to convert to C++ and Java, and it was so poorly written (mainly due to "job security") that I had to throw out the code and work from white papers. Another time I using a A/D board, with a poorly written driver, and I had to code around a lot of the behaviors in order to get it work (and the real kicker - I had to edit the libraries' header file to adjust some #defs to have the right values). And then there's the C++ programmer that a coworker of mine, having never done C++ before, after decades of using assembly and Fortran 4, wrote. Talk about overkill on the templates and on operates (WTF? Add two boards together?!? HUH?!!!).

And I can't let this go without mentioning some idiots I've seen on gamedev.net, who write their own (broken) Win32 code because they can be bother to learn MFC. This was years ago, but come on, its not that hard to learn!

Currently, one of my coworkers is teaching himself .NET, and we'll probably start using it widely in the office after our next project. As long as it talks to hardware, I'm game.

Anyway, enough comments from me.
Artillery. Its what's for dinner.
User avatar
Netko
Jedi Council Member
Posts: 1925
Joined: 2005-03-30 06:14am

Post by Netko »

I'm lucky in that my faculty is known for bashing your head in with a proper foundation before building on it in the more advanced laungages. I finished my second year now, and I've to date done C/C++ (mostly C - next semester I will do a graphical UI for the first time, yay!), some database work (SQL), assembly on a school processor (FRISC) and ARM, not to mention the EE basis of computing. Sure, from now on in its mostly .NET and some Java (plus some assembler stuff), but that is because the basics have been drilled in (an otherwise excellent program would get you 0 points if you messed up pointers and memory management and this is a program you need to write on paper, without any assistance from VS and the like). Sure, VS is still prefered because of its integration potentials (automatic grading tools and the like), but in pure C it doesn't help you that much.

Still, considering the size of the industry, I don't belive your entry level buisness software programmer needs this kind of education, not to mention that it's both expensive, takes relativly long and produces an expensive product (I can expect a salary almost double the national average after the probationary period). If he is content being just that I don't see a reason not to allow him to live in his little C# bubble. Same with colledge graduates who attended easy colledges which did all this stuff backwards (Java first, etc.). As long as there are colledges/unis who make no excuses about their program being tough but teaching you the stuff correctly, you can have the unwashed masses. Besides, I want to command as large a price premium as I can for my education :P
User avatar
phongn
Rebel Leader
Posts: 18487
Joined: 2002-07-03 11:11pm

Post by phongn »

Beowulf wrote:Solution: make sure they know their shit before you hire them. How do you write a linked list class, etc. There are always going to be people who have little clue what they're doing. See script kiddies.
Doubly-linked toroidal linked-list FTW! That said, I can feel some of my skills at building data structures and whatnot eroding as I don't use 'em as much anymore.
Faqa wrote:You cannot pose as a programmer knowing only VB. The IDE wasn't built properly for that, and the performance was unacceptable(and I personally loathe the syntax, but that's just me).
What the heck? Why can't you be a competent programmer knowing only VB? And, for that matter, its performance is quite acceptable for its intended task of rapid-application development for business tools. Plenty of useful things have been written in it, and written well.
Javascript? A scripting language is never gonna match full-fledged programming. Besides, for it's field(Web), it can sometimes get the job done on it's own, and will ALWAYS be neccesary. Particularly in server-code-happy enviorments like ASP.NET.
JS is a fairly powerful language, IMHO. Yes, it's web-only but it is much more than its early LiveScript roots.
Of course, .NET isn't the problem. It's a terrific tool. It's the mentality it inspires. Never has it been easier to produce a vapidly airheaded program with so little technical smackdown.
Good thing most of the .NET guys at my school were shoved through the C/C++ world first :D
User avatar
Durandal
Bile-Driven Hate Machine
Posts: 17927
Joined: 2002-07-03 06:26pm
Location: Silicon Valley, CA
Contact:

Post by Durandal »

Wow, I posted that almost two years ago! It's amazing how my stance on the issue hasn't changed at all. What have changed are my feelings toward C++. After working with Objective-C, I find C++ to be a complete mess, a totally inelegant language for OOP. Apparently, the guy who invented OOP (Alan Kay) agrees. with me. :) But alas, it is highly portable and very fast, even if it has monstrosities like virtual functions.

We've got a sort of similar thread going on over in the MacAch over at ArsTechnica.

Here's my basic opinion. People being brought into programming using Java are being cheated and frankly, getting it easy. Learning how to view variables and objects as collections of bytes helps you understand what's going on. There were plenty of students in my courses (actually, probably all of them except me) who would be completely lost if they didn't have the C++ string class and freak out if they had to work with character arrays.

I developed a rule for programming when I was learning C++: Never use a vector where an array will do. Now, if you forego the use of a class for something simpler and end up implementing a couple of your own functions to work with it, you're "reinventing the wheel" and are actually docked points. Teachers actively discourage students' exploration of writing their own code!

When I interviewed at Apple, one of the things they had me do was write down an implementation of memcpy(...) on a piece of paper. Thank fucking God I was one of those stragglers who occasionally liked to "reinvent the wheel", otherwise I'd have been fucked and probably not been hired.
Damien Sorresso

"Ever see what them computa bitchez do to numbas? It ain't natural. Numbas ain't supposed to be code, they supposed to quantify shit."
- The Onion
User avatar
Netko
Jedi Council Member
Posts: 1925
Joined: 2005-03-30 06:14am

Post by Netko »

Durandal wrote:I developed a rule for programming when I was learning C++: Never use a vector where an array will do. Now, if you forego the use of a class for something simpler and end up implementing a couple of your own functions to work with it, you're "reinventing the wheel" and are actually docked points. Teachers actively discourage students' exploration of writing their own code!
I can see their logic if the class focuses on OOP, however I agree that by never letting them learn what is underneath it all (do they even explain what a class is actualy composed of and how it functions or is that considered an advanced knowledge learned in a later course?) they are seriusly shortchanging them as programmers. While needing to know how to implement each of the major data structures in 5 diffrent ways is probably not that useful in everyday programing, I'm also sure it gives you a much clearer picture of what is going on.
User avatar
Dennis Toy
BANNED
Posts: 2072
Joined: 2002-07-20 01:55am
Location: Deep Space Nine

Post by Dennis Toy »

Here's my basic opinion. People being brought into programming using Java are being cheated and frankly, getting it easy. Learning how to view variables and objects as collections of bytes helps you understand what's going on. There were plenty of students in my courses (actually, probably all of them except me) who would be completely lost if they didn't have the C++ string class and freak out if they had to work with character arrays.
I wouldn't touch JAVA with a 10ft pole. JAVA is the most overblown, badly designed piece of crap program i had to work with. Getting a simple "Hello World" program to work is labor. First you have to initiate a base class in the top and then you had to create a class and even then you had to create another class just to get it to print.
You wanna set an example Garak....Use him, Let him Die!!
Crazy_Vasey
Jedi Council Member
Posts: 1571
Joined: 2002-07-13 12:56pm

Post by Crazy_Vasey »

Dennis Toy wrote:
I wouldn't touch JAVA with a 10ft pole. JAVA is the most overblown, badly designed piece of crap program i had to work with. Getting a simple "Hello World" program to work is labor. First you have to initiate a base class in the top and then you had to create a class and even then you had to create another class just to get it to print.
What?

Code: Select all

public class HelloWorld
{
    public static void main(String[] argv)
    {
        System.out.println("Hello, World!");
    }
}
That's it. No base classes or extra classes to print. Just a container class and a method call.
User avatar
phongn
Rebel Leader
Posts: 18487
Joined: 2002-07-03 11:11pm

Post by phongn »

Durandal wrote:Here's my basic opinion. People being brought into programming using Java are being cheated and frankly, getting it easy. Learning how to view variables and objects as collections of bytes helps you understand what's going on. There were plenty of students in my courses (actually, probably all of them except me) who would be completely lost if they didn't have the C++ string class and freak out if they had to work with character arrays.
Character arrays are evil - that said, the API for C string handling is well documented and a competent student should be able to figure them without difficulty. Still, I like my std::string :P
I developed a rule for programming when I was learning C++: Never use a vector where an array will do. Now, if you forego the use of a class for something simpler and end up implementing a couple of your own functions to work with it, you're "reinventing the wheel" and are actually docked points. Teachers actively discourage students' exploration of writing their own code!
Well, the STL is probably much more optimized than any student's class. There is much to be said for exploration, but if the STL is there, why not use it? Also, the overhead for std::vector is trivial compared to an array.
When I interviewed at Apple, one of the things they had me do was write down an implementation of memcpy(...) on a piece of paper. Thank fucking God I was one of those stragglers who occasionally liked to "reinvent the wheel", otherwise I'd have been fucked and probably not been hired.
I suppose it'd depend on what type of programming you'd like to do - is that really important for an application programmer? Certainly, it's useful for an OS programmer but not neccessarily as much elsewhere. That said ... how hard is it to reimplement memcpy?
User avatar
Netko
Jedi Council Member
Posts: 1925
Joined: 2005-03-30 06:14am

Post by Netko »

phongn wrote:I suppose it'd depend on what type of programming you'd like to do - is that really important for an application programmer? Certainly, it's useful for an OS programmer but not neccessarily as much elsewhere. That said ... how hard is it to reimplement memcpy?
It's trivial, but you have to know how to allocate memory and use pointers, which is the point I guess.
Last edited by Netko on 2006-07-18 10:27am, edited 1 time in total.
User avatar
Beowulf
The Patrician
Posts: 10621
Joined: 2002-07-04 01:18am
Location: 32ULV

Post by Beowulf »

phongn wrote:I suppose it'd depend on what type of programming you'd like to do - is that really important for an application programmer? Certainly, it's useful for an OS programmer but not neccessarily as much elsewhere. That said ... how hard is it to reimplement memcpy?

Code: Select all

void *memcpy(void *dest, const void *src, int bytes) {
  for(int i=0; i< bytes; i++)
    *dest++ = *src++;
  return dest;
}
Haven't actually tried to compile this, but should be a decent reinvention of the wheel.
"preemptive killing of cops might not be such a bad idea from a personal saftey[sic] standpoint..." --Keevan Colton
"There's a word for bias you can't see: Yours." -- William Saletan
User avatar
Netko
Jedi Council Member
Posts: 1925
Joined: 2005-03-30 06:14am

Post by Netko »

That would be the really really unsecured version.
User avatar
Beowulf
The Patrician
Posts: 10621
Joined: 2002-07-04 01:18am
Location: 32ULV

Post by Beowulf »

mmar wrote:That would be the really really unsecured version.
If you try to access memory reserved for the OS, you'll end up with an access violation, and your program crashes. On windows, at least, your program can't access the memory of other programs without going through contortions to do so. *shrug* In any case, no specification was made other than: reimplement memcpy.
"preemptive killing of cops might not be such a bad idea from a personal saftey[sic] standpoint..." --Keevan Colton
"There's a word for bias you can't see: Yours." -- William Saletan
User avatar
phongn
Rebel Leader
Posts: 18487
Joined: 2002-07-03 11:11pm

Post by phongn »

My question was rhetorical in nature - I know how to do it :P
User avatar
Beowulf
The Patrician
Posts: 10621
Joined: 2002-07-04 01:18am
Location: 32ULV

Post by Beowulf »

Destructionator XIII wrote:Problem with that is using a void pointer without an explicit cast. If you don't cast it, you can't deference the void pointer. (And you declared a variable in the wrong place for C, but that is a trivial matter).

This would work though:

Code: Select all

void *memcpy(void *dest, const void *src, int bytes) {
  for(int i=0; i< bytes; i++)
    *(unsigned char*)dest++ = *(unsigned char*)src++;
  return dest;
}
Since an unsigned char has a sizeof() == 1, it will work for the bytes.

I'm pretty sure that aligning the copy to the size of the machine's register width would be much more efficient too, but that is outside the scope of the simple requirement.
Oops. Did say I hadn't tried to compile it. And to think, I had pointed out exactly this to someone I was tutoring not that long ago. Efficiency would probably end up invoking Duff's Device. The variable declaration is fine if using a C99 compiler. They added the ability to declare variables anywhere in a block in C99.
Phong wrote:My question was rhetorical in nature - I know how to do it :P
I know.
"preemptive killing of cops might not be such a bad idea from a personal saftey[sic] standpoint..." --Keevan Colton
"There's a word for bias you can't see: Yours." -- William Saletan
User avatar
Faqa
Jedi Master
Posts: 1340
Joined: 2004-06-02 09:32am
Contact:

Post by Faqa »



What happens is the CC's programming classes for the program are Intro to Programming with FORTRAN, then C++, and finally assembly.

The uni's programming classes for their CS program are Intro to programming with Visual Basic, then Java, then advanced Java, and finally .NET.

The university doesn't feel that any of the classes from the community college are relevant to their program, and thus does not transfer any of them in.
:banghead: :banghead: :banghead:

Which means no one in the Comp division knows their ass from a hole the ground. You want to transfer there because....?

What's the POINT of learning both Java and .NET? They're both useful for the same thing, programming OO without the lower levels. You can pick either one up as you go along.

And VB as an intro to programming?! Are they on crack?

That said, your curriculum is odd as well. Why not have Assembly at the begining?
"Peace on Earth and goodwill towards men? We are the United States Goverment - we don't DO that sort of thing!" - Sneakers. Best. Quote. EVER.

Periodic Pwnage Pantry:

"Faith? Isn't that another term for ignorance?" - Gregory House

"Isn't it interesting... religious behaviour is so close to being crazy that we can't tell them apart?" - Gregory House

"This is usually the part where people start screaming." - Gabriel Sylar
User avatar
Faqa
Jedi Master
Posts: 1340
Joined: 2004-06-02 09:32am
Contact:

Post by Faqa »

Destructionator XIII wrote:
What's the POINT of learning both Java and .NET? They're both useful for the same thing, programming OO without the lower levels.
Maybe their justification is both are useful in different jobs, and knowing only one locks you out of a portion of the job market.

Though, as you and I know, if you know one and the concepts behind it, learning the other is a relativly easy task.

Or maybe it is grants from Sun and Microsoft doing the talking.
Normally, I'd say the last. Considering the retards you seem to be working with, the first seems just as strong a possibility.
VB has a few advantages, like it is pretty easily accessable to newbies. I have a business friend who is not a programmer in the slightest who feels comfortable with VB since it is so easy to use and reads almost like English.

However, I don't think it is an appropriate starting point for CS majors. It promotes a few bad habits for professional programmers.
Learning programming from VB means starting from the assumption that programming is all about making the pretty buttons do this and telling pre-made tools to do that. That's not a programmer. Being able to comprehend ifs and loops doesn't make you a programmer. I'm not saying you should be able to spit out Half Life 2 in assembly, but come on. You need to know how to work against the computer, not against pre-made tools.
Why not start off a physics program with quantum mechanics? It is because assembly is pretty hard to learn and better approached if you already have a good idea what is going on. Only the most hardcore would remain if the first semester jumped to that level of difficulty.
I suppose the best approach would be to meld a low-level procedural language with assembly. My idea is that you should work your way up from the lower-levels, not get accustomed to magic memory games and THEN pop the hood to see how they work.

Gradually ramp up the difficulty in conjunction with other courses and I don't see the problem.
"Peace on Earth and goodwill towards men? We are the United States Goverment - we don't DO that sort of thing!" - Sneakers. Best. Quote. EVER.

Periodic Pwnage Pantry:

"Faith? Isn't that another term for ignorance?" - Gregory House

"Isn't it interesting... religious behaviour is so close to being crazy that we can't tell them apart?" - Gregory House

"This is usually the part where people start screaming." - Gabriel Sylar
User avatar
Durandal
Bile-Driven Hate Machine
Posts: 17927
Joined: 2002-07-03 06:26pm
Location: Silicon Valley, CA
Contact:

Post by Durandal »

mmar wrote:
phongn wrote:I suppose it'd depend on what type of programming you'd like to do - is that really important for an application programmer? Certainly, it's useful for an OS programmer but not neccessarily as much elsewhere. That said ... how hard is it to reimplement memcpy?
It's trivial, but you have to know how to allocate memory and use pointers, which is the point I guess.
Precisely. Whether or not something is important for what you want to do isn't really relevant. A computer science degree is about getting an education, not about becoming some glorified scripting monkey. But that's what it's rapidly heading toward because corporations end up having a lot of sway over smaller CS programs. State Farm told my university they wanted the students to know Java, not C++, so that's what happened. I didn't want to work for State Farm when I graduated, so why should I be subjected to their opinions about my education rather than my professors'?

In my opinion, CS programs should follow the evolution of computer science itself from procedural programming. OOP was invented because there were some things that were too much of a pain in the ass with procedural programming. It didn't just fall out of the sky. Students should take the same steps and come to an understanding of why on their own. We shouldn't just be saying, "Procedural programming blows, trust us, so here are objects. Have fun."
Damien Sorresso

"Ever see what them computa bitchez do to numbas? It ain't natural. Numbas ain't supposed to be code, they supposed to quantify shit."
- The Onion
User avatar
Netko
Jedi Council Member
Posts: 1925
Joined: 2005-03-30 06:14am

Post by Netko »

Faqa wrote:
Why not start off a physics program with quantum mechanics? It is because assembly is pretty hard to learn and better approached if you already have a good idea what is going on. Only the most hardcore would remain if the first semester jumped to that level of difficulty.
I suppose the best approach would be to meld a low-level procedural language with assembly. My idea is that you should work your way up from the lower-levels, not get accustomed to magic memory games and THEN pop the hood to see how they work.

Gradually ramp up the difficulty in conjunction with other courses and I don't see the problem.
Seems I'm living your ideal program. Yes, it's scary for those not really into CS, but hey, your problem for choosing a program that is not suited for your talents (and there are in fact a lot of dropouts who get scared, especialy if it is there first time contact with programming - a classical example are straight A students who thought this would be an good carrer but never had an intrest in CS before). First semester we got introduction into C plus the EE basis for computing. Second semester is algorithms and data structures (C/C++, all of it was done with parallel old fashioned and OO implementations) plus assembly. Only on the third semester you start moving away from the low level stuff.
User avatar
Mad
Jedi Council Member
Posts: 1923
Joined: 2002-07-04 01:32am
Location: North Carolina, USA
Contact:

Post by Mad »

Durandal wrote:In my opinion, CS programs should follow the evolution of computer science itself from procedural programming. OOP was invented because there were some things that were too much of a pain in the ass with procedural programming. It didn't just fall out of the sky. Students should take the same steps and come to an understanding of why on their own. We shouldn't just be saying, "Procedural programming blows, trust us, so here are objects. Have fun."
That's sort of like how the program at the university I got my CS degree from went. First you learn to program procedural programming in C++ and you get some basic hardware and assembler knowledge. Once that's out of the way, you learn advanced data strucutres (learn how to implement major portions of C++'s Standard Template Library) and object-oriented programming (learn OO for C++ and Java).

Other languages are electives. Once you know those basics, moving to another language is simple.

And, eventually, the language you use typically doesn't matter. The focus goes away from how to code (the student should know this by now, in any language) and towards learning how to be a successfull programmer in the real world and what kinds of development processes companies use to (or, all too often, attempt to) deliver working software on time.
Later...
User avatar
Dahak
Emperor's Hand
Posts: 7292
Joined: 2002-10-29 12:08pm
Location: Admiralty House, Landing, Manticore
Contact:

Post by Dahak »

We didn't learn any language in particular apart from the introductionary lectures (data structures, sorting, all that jazz...) in the first two semesters, which were performed using Modula/Ada.
We had to do two one-year long software projects, one was in C++/Java, one in Java/VB/obscure other things.
And then we had a shitload of other things where programming language is irrelevant for the topic, like theoretical computer science.
The study was not about to learn to program, but to learn the principles.
Image
Great Dolphin Conspiracy - Chatter box
"Implications: we have been intercepted deliberately by a means unknown, for a purpose unknown, and transferred to a place unknown by a form of intelligence unknown. Apart from the unknown, everything is obvious." ZORAC
GALE Force Euro Wimp
Human dignity shall be inviolable. To respect and protect it shall be the duty of all state authority.
Image
Post Reply