Fires of Heaven Guild Message Board  

Go Back   Fires of Heaven Guild Message Board > General forums > Development
User Name
Password
Or, use your gamerDNA username: (more...)
ForumSpy Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
Old 06-24-2008, 10:34 PM   #31 (permalink)
Hachima
Registered User
 
Join Date: Oct 2004
Posts: 1,758
I've been assigned projects that have failed and have had to get them back on track. Sometimes complete class redesigns to get stuff to even work correctly. Something that has helped my thinking process is a book by Martin Fowler called Refactoring.

Amazon.com: Refactoring: Improving the Design of Existing Code (The Addison-Wesley Object Technology Series): Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts: Books

I wish I had a digital copy for some easy reference to go over it again =p.
Hachima is offline   Reply With Quote
Old 06-24-2008, 11:53 PM   #32 (permalink)
dak
Uhhhng
 
dak's Avatar
 
Join Date: Mar 2002
Location: France
Posts: 4,268
God I am glad I decided not to persue a programming job after high school Thanks for leaving us with Mrs. Herbert Mr Owens...you jerk.
__________________
Only Douche bags mess with the "Internets" points.

RIP Spiderman-Troupe 2002-2008
dak is offline   Reply With Quote
Old 06-25-2008, 01:41 AM   #33 (permalink)
slitz
euro scum
 
slitz's Avatar
 
Join Date: Aug 2002
Location: Sweden
Posts: 819
-9 Internets
Quote:
Originally Posted by Fog View Post
However, I can say without reservation that a bachelor's degree doesn't mean you're a good programmer, and I guarantee there are courses much worse than mine in this regard -- I gather that some schools teach completely with Java now, which seems like a complete recipe for disaster.
I really hate statements like this, sounds almost always like it's a C/C++ programmer saying "hey! you're a java programmer so I'm so much better than you!". Of course I'm biased since I am a Java programmer...
Anyhoo, no, the complexity of Java isn't in lambda functions (even though closures are due in 7 I think?) nor is it in memory management or recursion, but Java references aren't as simple as people seem to think (due to lack of knowledge) since Java always pass by value (which is easier to work with 99% of the time but that 1% will screw it up for you big time if you don't understand it).
Not understanding the garbage collector is another big no no, while you think you can just forget about memory control totally when programming Java, anyone that have been programming since 1.4 know that PhantomReference, SoftReference and WeakReference are must haves.
But the real complexity of Java is in its frameworks, as it should be in my opinion. Taken a look at JEE specification?

While obviously it's bad to just have seen Java as the only programming language in your life, the same could be said about any other programming language, including C or C++. There is a lot in C and C++ a Java programmer can learn from but there is also a lot in Java that a C/C++ programmer can learn from...
Imo, one shouldn't skip any programming paradigms... Functional, imperative, objective and VM-based languages should all be part of your education.

Yes, Java does abstract a lot that is used on a regular basis in C/C++, but most of the stuff is trivial stuff that is taken to a higher level because well, most of the time business methods is what matters in Java.
__________________

Last edited by slitz : 06-25-2008 at 01:45 AM.
slitz is offline   Reply With Quote
Old 06-25-2008, 02:30 AM   #34 (permalink)
Fog
Registered User
 
Join Date: Feb 2006
Posts: 1,657
+5 Internets
Quote:
Originally Posted by slitz View Post
I really hate statements like this, sounds almost always like it's a C/C++ programmer saying "hey! you're a java programmer so I'm so much better than you!". Of course I'm biased since I am a Java programmer...
Anyhoo, no, the complexity of Java isn't in lambda functions (even though closures are due in 7 I think?) nor is it in memory management or recursion, but Java references aren't as simple as people seem to think (due to lack of knowledge) since Java always pass by value (which is easier to work with 99% of the time but that 1% will screw it up for you big time if you don't understand it).
Not understanding the garbage collector is another big no no, while you think you can just forget about memory control totally when programming Java, anyone that have been programming since 1.4 know that PhantomReference, SoftReference and WeakReference are must haves.
But the real complexity of Java is in its frameworks, as it should be in my opinion. Taken a look at JEE specification?

While obviously it's bad to just have seen Java as the only programming language in your life, the same could be said about any other programming language, including C or C++. There is a lot in C and C++ a Java programmer can learn from but there is also a lot in Java that a C/C++ programmer can learn from...
Imo, one shouldn't skip any programming paradigms... Functional, imperative, objective and VM-based languages should all be part of your education.

Yes, Java does abstract a lot that is used on a regular basis in C/C++, but most of the stuff is trivial stuff that is taken to a higher level because well, most of the time business methods is what matters in Java.
I was probably wrong to pick on it. I agree that you could make similar criticisms of any language. Like you said, people should learn a lot of languages with plenty of variety.

Anyway, I love programming in C#, so I certainly don't mean to shit on Java for being too abstract, or something.

(By "should" I mean from a personal perspective. Like I said, I'm not completely sure as to whether an academic understanding of computer science is going to make someone a better programmer if they don't have to apply what they know.)
Fog is offline   Reply With Quote
Old 06-25-2008, 06:11 AM   #35 (permalink)
Tenks
Registered User
 
Join Date: Nov 2003
Posts: 517
I would say that most schools teach exclusively in Java now because there is no point to learn all the memory management issues that arose with C/C++. Outside of a certain small minority no programs in these languages anymore. Even Microsoft writes a large chunk of their programs in C# these days. I believe the latest SQL Server client was written in C#.

As stated, with garden variety computers having 2 GB of memory these days your standard run-of-the-mill programmer doesn't require a deep knowledge of memory management. For the most part, C# and Java do a "good enough" job of MM and GC that the programmer does not have to be burdened with this. I have noticed a large sum of "old school" programmers cringe in the face of languages that make their lives easier. Maybe they are concerned that programming will get to a point where anyone can do it, I honestly do not know. However, keeping track of a ton of variables and calling their destructor method in them is tedious. Not skillful. 95% of the time Java does it when you would do it anyways manually. However, for graphics engine developers they require that 5%.

I respect C++ programmers. I honestly wish I knew the language better than I do. I recognize the raw power the language has and how you can make the computer your absolute bitch with the language. Its truly an amazing language that I think will be written in for quite some time to come still. However, do not think that programmers that want the computer to do some of the work to ease the tedious crap we have to do as any lesser.

Code:
ArrayList al = new ArrayList(); al.add(1) al.add(2) al.add(3) for(x=0;x LESS THAN al.size();x++){print al.get(x);} //I thought code wouldn't cause issues with gator signs, oh well you get the idea
Ok, thats a Java(ish) 1.4 example, which was made easier in 1.5 to

Code:
ArrayList al = new ArrayList(); al.add(1); al.add(2); al.add(3); for(int i : al){print i;}
Ok, Java 1.5 made our lives easier. Now lets look at a language running in the JVM -- Groovy -- to make our lives even easier.

Code:
Way #1 (smallest) [1,2,3].each{print it} Way #2 (medium) [1,2,3].each{ number -> print number } Way #3 (Dynamic casting) def list = [1,2,3] list.each{print it} Way #4 (Static casting) List list = [1,2,3] list.each{print it}
Ok that was pretty easy. Got rid of all the Java overhead. As Slitz said -- Java's beauty is in its open source. Things like Spring and Hibernate are feats of awesome. Staying in a C++ mindset will leave your technical skills pretty archaic in time. I know COBOL programmers that claimed that language was here to stay forever :P

Last edited by Tenks : 06-25-2008 at 06:14 AM.
Tenks is offline   Reply With Quote
Old 06-25-2008, 07:07 AM   #36 (permalink)
Tripamang
Registered User
 
Join Date: Jul 2002
Posts: 2,026
-7 Internets
C++/C will probably have it's place for quite some time to come. C is just a nicer way of doing assembler, and C++ is just a better structure of C. I do both C# and C++/C programming, each has it's place. The embedded market is huge on C, and I don't see that changing any time soon due to IC limitations. You can't be a prick about memory on a unit that only has 8k of it

I'm not sure if higher level languages will be able to replace C/C++, at the bottom of it all you have to have the language you build all the tools from.. C/C++ are those languages.

COBOL: the worst if not most wordy language out there is still in use today, theres over 300 COBOL programmers working at a bank in my city. It's by no means being implemented in new software, but you'd be surprised how many large mainframe based banks still use it. I may hate on COBOL but it did infiltrate the industry in a way; SQL queries still give me creepy COBOL flash backs.
__________________
Black Atom - Crescent of the Red Moon - Red Moon Federation

Tripamang is offline   Reply With Quote
Old 06-30-2008, 07:55 PM   #37 (permalink)
AladainAF
Registered User
 
AladainAF's Avatar
 
Join Date: Aug 2002
Location: Texas
Posts: 2,242
Quote:
Outside of a certain small minority no programs in these languages anymore.
I don't know many drivers written in C# (but maybe theres some?)

I am also a little worried about things like..

Quote:
As stated, with garden variety computers having 2 GB of memory these days your standard run-of-the-mill programmer doesn't require a deep knowledge of memory management.
Right, and this is why we have a lot of code out there that is generally full of memory leaks, or other such bad coding. While I agree that "deep knowledge of memory management" isn't totally necessary, you can't do what the "standard run-of-the-mill" programmer does and rely on crap like the garbage collector in .net to take care of your poor memory management in your code.

Not bitching really - I'm not a whole lot of a coder myself (I do stuff here and there), though in my job I do source-level debugging of java, C#, C++, python, and ruby. I see a lot of this kinda thing though from time to time with our "new" coders, and it drives me nuts. We even had one .net app exceed 1000 window handles and crash because he wasn't destroying his objects (or something to that effect, basically he was relying on the garbage collector to clean it up - I don't know the correct terminology).

Just because theres 2gb of memory around and computers are so fast, really shouldn't mean that bad code or poorly optimized code should be written =\
AladainAF is offline   Reply With Quote
Old 07-01-2008, 03:07 AM   #38 (permalink)
slitz
euro scum
 
slitz's Avatar
 
Join Date: Aug 2002
Location: Sweden
Posts: 819
-9 Internets
Quote:
Originally Posted by AladainAF View Post
I don't know many drivers written in C# (but maybe theres some?)
No well C# and Java both use Virtual Machines that they run on, meaning all instructions will be sent to a virtual machine, which is then sending the instructions to the underlying OS. So the virtual machine itself have to be written in language that support machine instructions, which is in C in most cases. This of course is a very basic description of VM based languages, but it's for that reason you can't really have a "real" driver written in Java/C#.

Quote:
Not bitching really - I'm not a whole lot of a coder myself (I do stuff here and there), though in my job I do source-level debugging of java, C#, C++, python, and ruby. I see a lot of this kinda thing though from time to time with our "new" coders, and it drives me nuts. We even had one .net app exceed 1000 window handles and crash because he wasn't destroying his objects (or something to that effect, basically he was relying on the garbage collector to clean it up - I don't know the correct terminology).
This problem have nothing at all to do with the GC however since you don't normally explicitly tell GC to clean up, it will work whether you tell it or not. The only thing that could screw up the GC (in your example at least) is a infinite loop, that will continue to eat memory since all the memory references are still active, but infinite loops are hardly a Java/C# or even a Garbage Collector problem....

The way a GC work (basics yet again) is that it will "free up" references that are no longer in use, whenever needed. Meaning, it won't free up memory unless you explicitly told the GC to do it, when you're using 2 out of 32mb.
Whenever it reaches a point where it's starting to run out of memory however, it will go through the references that has been queued up in the GC (unused ones), remove them and thus free up memory. I'll repeat, you don't have to explicitly tell the GC of unused references in most cases.
So you can't really go wrong with a GC in the sense that you forget to tell it to clean up, you can however go wrong with thinking references are due for garbage collecting when they are still in a active scope.

As said before, the GC mechanism is a lot more complicated than people seem to think and it's a lot more useful (when understanding the mechanics) than people give it credit for, so please stop blaming the wonderful GC for being responsible of breeding a bunch of bad programmers 8)
__________________

Last edited by slitz : 07-01-2008 at 03:10 AM.
slitz is offline   Reply With Quote
Old 07-01-2008, 03:34 AM   #39 (permalink)
Fog
Registered User
 
Join Date: Feb 2006
Posts: 1,657
+5 Internets
In C#, if you're not careful, it's easy to spawn a new object or form or control and accidentally leave a live reference to it somewhere, so the GC never cleans it up. It can be a real pain in the ass to track down.
Fog is offline   Reply With Quote
Old 07-01-2008, 04:24 AM   #40 (permalink)
slitz
euro scum
 
slitz's Avatar
 
Join Date: Aug 2002
Location: Sweden
Posts: 819
-9 Internets
Well yes that's true, but you would have the exact same problem if you wouldn't use a garbage collector, since you in fact totally forgot about the scope of the object.
__________________
slitz is offline   Reply With Quote
Old 07-01-2008, 04:35 AM   #41 (permalink)
Fog
Registered User
 
Join Date: Feb 2006
Posts: 1,657
+5 Internets
Quote:
Originally Posted by slitz View Post
Well yes that's true, but you would have the exact same problem if you wouldn't use a garbage collector, since you in fact totally forgot about the scope of the object.
That's true, in a way. However, if you're writing something in C++, then you're forced to keep track of all your objects, so it'll be a habit for you to think about such things. If you're doing it in C#, then the garbage collector is sufficient 99% of the time, and fails "silently" the other 1% when you write some poor code and leave a reference to an object hanging somewhere. It's a more subtle error, since you're not used to having to consciously worry about such things often in C#.

In my opinion, this is all just a good discussion of why you should use a good profiler to check your code, no matter what language it is in
Fog is offline   Reply With Quote
Old 07-01-2008, 05:13 AM   #42 (permalink)
slitz
euro scum
 
slitz's Avatar
 
Join Date: Aug 2002
Location: Sweden
Posts: 819
-9 Internets
Quote:
Originally Posted by Fog View Post
That's true, in a way. However, if you're writing something in C++, then you're forced to keep track of all your objects, so it'll be a habit for you to think about such things. If you're doing it in C#, then the garbage collector is sufficient 99% of the time, and fails "silently" the other 1% when you write some poor code and leave a reference to an object hanging somewhere. It's a more subtle error, since you're not used to having to consciously worry about such things often in C#.

In my opinion, this is all just a good discussion of why you should use a good profiler to check your code, no matter what language it is in
As you most likely know, you still have to pay attention to the references you're using even if you don't explicitly have to deal with every single one of them. I really don't think one can blame the GC for bad habits and while I understand your line of thought, I really don't believe in throwing in inconveniences (it is a inconvenience having to deal with object cleanups explicitly all the time) to force a certain habit.

The problem as I see it is rather people teaching Java doesn't focus on the GC enough to tell students that it does matter (most people don't know how GC is working, they just know it's bad since well that's what the C/C++ cool kids are saying).
Don't forget that premature optimization is a anti-pattern that comes at great costs as well (obviously programs running out of memory is always bad though 8) ), so always optimizing for memory is as bad as never caring about memory.

And yes, good knowledge of profilers is worth a lot! 8)
__________________

Last edited by slitz : 07-01-2008 at 05:20 AM.
slitz is offline   Reply With Quote
Old 07-01-2008, 10:07 AM   #43 (permalink)
Fattyfat
Administrator
 
Join Date: Dec 2004
Location: ftw tx
Posts: 293
+4 Internets
I finished school with a 4yr CS degree and good grades. I was easily picked up in the aerospace industry as a software engineer. The job was easy and I learned a lot. I was able to finish my masters and stayed for 6 years.

Then I made the switch to the gaming industry...

The last 4-6mo before I applied for my current job, I started working on a side project with some of the other people on these boards creating a simple mmo called newbieworld.

According to the guy who hired me, the fact that I worked on this project made more of a difference than my 6 years of experience and masters combined...

What I would say to you is, find a way into the gaming industry if that is what you want to do. Then begin moving up from inside. Once you are in it becomes a lot easier to do what you want.
Fattyfat is offline   Reply With Quote
Old 07-01-2008, 12:11 PM   #44 (permalink)
Chrisb3
Farming negs
 
Chrisb3's Avatar
 
Join Date: May 2007
Location: Wigan, England
Posts: 1,076
-64 Internets
Thinking about perhaps being a tester first, and perhaps working on a codeportfolio while I gain some experience. Anyone have any experiences doing that?
__________________
Dominara, Lv80 Shadow Priest: EU-Sylvanas. Working on Malygos.
Chrisb3 is offline   Reply With Quote
Old 07-01-2008, 12:16 PM   #45 (permalink)
x1hundredregrets
Reactor Zero
 
x1hundredregrets's Avatar
 
Join Date: Dec 2002
Posts: 319
-5 Internets
Quote:
Originally Posted by Chrisb3 View Post
Thinking about perhaps being a tester first, and perhaps working on a codeportfolio while I gain some experience. Anyone have any experiences doing that?

You're probably better off looking for an internship or a junior programmer position. You'll probably get paid more than a tester would (15-20 USD per hour for an internship, probably something like 50k per year as a junior programmer). Plus, you'll get to build up a codebase and portfolio and will probably end up testing a lot of your own code anyway.
x1hundredregrets is offline   Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
uberguilds network



All times are GMT -7. The time now is 01:41 AM.


Powered by vBulletin® Version 3.6.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0 RC6