Hard Light Productions Forums
Off-Topic Discussion => General Discussion => Topic started by: Kosh on January 21, 2008, 10:47:10 pm
-
I decided not to necro the old thread about this. The professor "clarified" (http://developers.slashdot.org/developers/08/01/22/0217200.shtml) his position by saying that dumbing down the curriculum is hurting CS students. Any thoughts?
-
Java is a good introduction to object orientation, without all the confusing pointer thing of C++, learning only Java would not be a good idea, but it can actually be quite useful as part of a course, not for the language itself, but for the theories behind it.
Of course, now C++ is supposed to be replaced by C#, that may all become moot, I'm hearing mixed reports on the effectiveness of the on-board memory management, so I'm still deciding whether to learn C++, or just go straight for C#, which I have to learn for Uni anyway, depends greatly on relative performance.
-
I think the professer's point this time seemed to be about the dumbing down of the CS cirriculm and not so much an attack on java itself, if i interpreted it correctly.
-
I think it's a little of both. Actually, it sounds a lot like the article in the Ada thread, except without the exaggerated insistence on Ada and exaggerated anti-Java statements. This one sounds more like the one that you can maybe take seriously.
But regardless, and somebody feel free to smack me for this :p, I think there is a role for people who aren't as serious about programming. As long as the universities themselves are fine, people who are seriously interested will seek out the more rigorous curriculum and will get the better jobs.
Somebody's gotta fix bugs, after all... :p
-
C# will NEVER replace C++
C++ is a platform independent standar
C# was created by microsoft under the "embrace and extend philosophy"
Java should NEVER be taught first - you should have to learn to do things yourself (memory allocation) first so when you later learn languages that do it for you then you don't lost when you have to do memory management.
I know a bunch of tlaented java coders who acn NEVER switch to C++ because they just cannot wrap their brains around memory management.
-
Well, the first thing they got us to learn was Pascal, which made me laugh because I was writing in Pascal before most of the kids in my class were born :nervous:
I don't really know much about the difference between the two languages apart from the whole automated garbage disposal routines, I haven't looked closely at either language. I suppose my main concern is performance, if C# is like Java with its' 'Hang on a minute, I'll be right back' mentality then it's not really suited for what I want to do.
-
yes C# is M$'s version of java
-
yes C# is M$'s version of java
Oh God... expecting to see a flux of graduated Computer Science students who know nothing about memory management because of this and Java.
What is the thing with the automatic memory management, why do they want to have it everywhere?
For those who know, how much of Windows XP is coded with C++? And what is the main programming language with Vista?
Mika
-
http://www.libing.net.cn/read.php?1243
Microsoft: Literally everything at Microsoft is built using various flavors of Visual C++ - mostly 6.0 and 7.0 but we do have a few holdouts still using 5.0 :-( and some products like Windows XP use more recent builds of the compiler. The list would include major products like:
* Windows XP
* Windows NT (NT4 and 2000)
* Windows 9x (95, 98, Me)
* Microsoft Office (Word, Excel, Access, PowerPoint, Outlook)
* Internet Explorer (including Outlook Express)
* Visual Studio (Visual C++, Visual Basic, Visual FoxPro) (Some parts of Visual Studio like the Base Class Libraries that ship with the .NET Framework were written using C# but the C# compiler itself is written in C++.)
* Exchange
* SQL
There are also "minor" products like:
* FrontPage
* Money
* Picture It
* Project
* and all the games
I would venture to guess a pretty large chunk.
I did have a thought, what if the universities start teaching Computer Engineering majors nothing but Java? Usually in CpE you only need to take one or two programming classes, so often the people are n00bs at it.
-
You mean software engineering or computer science?
With computer engineering, you're supposed to learn something about hardware as well. Teaching Java-only for computer engineering would be, well, stupid. I don't think you could teach Java very well for that, as I don't know of any embedded circuits that come natively with a Java VM. (Would that even be a VM anymore? :p)
By all rights, something in CE should be taught using a lower-level language, at least C.
With Software Engineering, I could at least see you specializing in something like physics or art or some kind of business/education software and never really needing to know about memory management, because the computers/applications you'd be using would mostly be mathematical or UI-based in nature. You'd be shooting yourself in the foot if you learned only Java and ever wanted to do anything else, but I think you could successfully lead a programming career with just Java.
I can just see it now...
"So I built this media player. It's awesome! It's got an LCD twice the size of an iPod, has an 80G solid state drive, but it only costs half as much to make with my connections as it costs to buy an iPod."
"Sweet, play something on it."
"Err...I can't."
"What? Why not? You've been working on it for 6 months, isn't it done?"
"Yeah, I'm sure it is. It powers on and everything."
"So what's wrong?"
"Well, I can't actually do anything with it. You need to know how to at least compile a C program to do anything with it."
"Oh, that sucks. Well, I guess we can always wait 'til Apple invents it, and then reverse-engineer their software."
"Sweet! That's a great idea!"
-
I just mentioned that because of a comment on the thread in slashdot about that. Yeah, I've never seen any computer drivers written in Java either........
-
yes C# is M$'s version of java
Oh God... expecting to see a flux of graduated Computer Science students who know nothing about memory management because of this and Java.
What is the thing with the automatic memory management, why do they want to have it everywhere?
For those who know, how much of Windows XP is coded with C++? And what is the main programming language with Vista?
Mika
Can I just say that 15 years ago, old men were complaining that programming was dying because people were learning C instead of traditional COBOL, Pascal or Assembly language? Whlst there are certainly advantages to understanding C++, this is beginning to sound more like 'I had to do it, so why shouldn't they?'.
-
Can I just say that 15 years ago, old men were complaining that programming was dying because people were learning C instead of traditional COBOL, Pascal or Assembly language? Whlst there are certainly advantages to understanding C++, this is beginning to sound more like 'I had to do it, so why shouldn't they?'.
I think there is a difference. Cobol was a batch processing language with multiple incompatible dialects, pascal is a script language, and assembly isn't a high level language.
-
That only gives more weight to Flip's argument though. As the differences between C++ and assembly, pascal or cobol are much larger than the C++ to Java difference.
-
It's quite interesting the amount of points of view there actually are on this. I was talking to my tutor today about C++ and C# (He teaches C#) and he was of the opinion that C++ is harder to teach (which makes sense, I grew up with stuff like indexed indirect referencing, it's not always easy to get your head around it though), and that too many C++ coders don't use object oriented coding and tend to take a monolithic approach instead.
Oddly enough though, when I mentioned Polymorphism, he accused me of going over to the Dark Side..... :wtf:
-
:lol:
He's right about OO often being avoided in favour of monolithic code. If I had money for every time I've been told that it's not worth it...
-
Java should NEVER be taught first - you should have to learn to do things yourself (memory allocation) first so when you later learn languages that do it for you then you don't lost when you have to do memory management.
This.
-
c was the first language i learned and i still dont get pointers very well. all the pointers is why i have trouble understanding freespace's code.
-
The problem here is, what happens if you don't need to know how to memory manage? To quote the lecturer, 'If I wanted to write a game, I'd use C++, if I wanted to make sure a nuclear reactor didn't overheat, however, it's the last language in the world I would rely on'.
The thing is, with stuff like Windows, it does a lot of screwing around with memory all the time, that can lead to errors with C++ programs purely because the OS is faffing around with memory at the same time you are. Now, I'm not saying that's a good thing or a bad thing, but it is a thing that programmers in the future will have to consider.
-
anyone with a software engineering degree that doesn't know how to do memory management has a degree not worth the paper it is printed on..
memory management is one of the BASIC requisites of ANY fancy program. Automatically memory managers sometimes have undesirably behavior at critical points.[let's not talk about java, because it's just a performance ****hole end to end]
-
I fully agree that memory optimisation and control is indeed a prime factor in coding efficiently, I also agree that automatic memory management has speed issues, however, there are disadvantages and advantages to both techniques, certainly, for a fancy program, like a 3D Game or the like, manual memory management has its advantages (though even this is getting reduced in the sheer speed of modern systems), however, from a coding point of view, C++ coders have enough time looking for memory leaks to learn to hate doing it. Now, the worlds greatest coder would never leave a memory hole, but when a large percentage of the business market is not looking for fancy programs, only fast, easy to use and easy to alter solutions, then in those respects languages like Java or even Visual Basic actually have a considerable use.
Edit: To put it in Layman's terms, I was hoping my idea would be do-able in C#, not because I can't do all the memory management stuff, but because, quite frankly, I don't want to have to, yes, it's faster executing, yes, it's more professional and yes, it's a frustrating PITA that Id avoid if at all possible ;) As it is, I think the memory management speed and lack of portability are suggesting that C++ may be the better option.
-
I could see java, vb or C# taught as 101 & 102 classes, as a starter course. You don't need to know about memory management at that point. However at 103 and/or up switch to C/C++ and learn memory management and also do assembly. That way you have an understanding of how a program works so you won't be battling over pointers when your still trying to figure out while-loops.
-
i'm not saying automatic memory management is a bad thing, i'm saying languages with it as default are a bad teaching tool, because the new programers in the making don't learn things they should be learning
java and "performance" don't go in the same sentance :D
-
But at what point should they learn that about memory management? Definintely not in an intro class, besides intro classes aren't used by just CS majors only. Also they should probably learn how to debug before venturing into memory management, that way they'll have an understanding of how to fix an assignment they're working on, instead of getting frustated because they can't get it to work. (been there done that LOL)
-
There's a reason nobody pays for Java based programs.
-
Yeah. The reason is cause they do. They pay large amounts of money for them.
:rolleyes: @ some of the moronic comments about Java on this thread.
-
netware was written in java, and i doubt it was free
-
anyone with a software engineering degree that doesn't know how to do memory management has a degree not worth the paper it is printed on..
memory management is one of the BASIC requisites of ANY fancy program. Automatically memory managers sometimes have undesirably behavior at critical points.[let's not talk about java, because it's just a performance ****hole end to end]
Amen. I have horrible experiences with automatic memory management in Scheme, which doesn't seem to function well under any sort of processor load.
The problem, as I see, is that if code is finished unoptimized, the end result is slow, which of course can be covered with faster machines. This on the other hand, drives up the demand on faster hardware, while the software could have been made to run on lower end systems if coders would have bothered.
Can I just say that 15 years ago, old men were complaining that programming was dying because people were learning C instead of traditional COBOL, Pascal or Assembly language? Whlst there are certainly advantages to understanding C++, this is beginning to sound more like 'I had to do it, so why shouldn't they?'.
Unfortunately it is not that from my point of view. I see the memory access and allocation as a only way to code efficient programs in scientific computing, or anything related to graphics in general.
Mika
-
Unfortunately it is not that from my point of view. I see the memory access and allocation as a only way to code efficient programs in scientific computing, or anything related to graphics in general.
Mika
:yes:
make them learn the hard way.. then they can learn to use the "nice" languages with automagic stuff
people pay through the TEETH for java programs... yet i cringe every time i run across a website running java - because i know it's going to take me 10x longer to load that page than the longest possible acceptable runtime for a generated page