PDA

View Full Version : C#?


Pages : [1] 2

Alaa
03-02-08, 11:29 AM
What benefits do I get after learning C#? What kinds of software that get developed on C#? Finally, what other languages do you recommend?

Thanks.

dxx
03-02-08, 12:58 PM
You don't really explain a great deal about who this "I" person is. Are you a developer already? All answers are relative.

Assuming you're a n00b -


1) You'll gain the benefit of being able to write your own applications. This is something I, as someone largely dissatisfied with the majority of the general-purpose output of most commercial developers, find immeasurably useful. You, for example, might install an adware-laden tweak app to change your system settings after a fresh reinstall of Windows. You might need to install two, as one doesn't offer all the options you want. I spent an hour coding my own. I win.

2) ...lots. I can't imagine any 3D programmers using it as their primary choice (although D3D functionality is available), but it serves most purposes nicely when it comes to producing GUI and command-line applications for both Windows and Mobile (that is, WinCE, etc) platforms.

3) I don't so much recommend, more just prefer Visual Basic. It's the simplest language there is, it's the quickest to write apps in, and its object-oriented design fills me with inner joy. Having dabbled in other languages, I've not seen anything more pleasingly obedient than VB. But then, I don't write any low-level code or deal wth anything that needs break-neck performance, so my perception of it isn't universal.

jcrox
03-02-08, 01:24 PM
C# is often used with ASP.NET for web applications

Alaa
03-02-08, 03:12 PM
I am thinking about working as a programmer (in a company) after I graduate (Or anything related to database if I failed in programming :D). So, I decided to ask here to get more knowledge about how this stuff works after graduation. Thanks for the already posted replies but if you have more advice, feel free to post more replies.:) And yeah I am still a n00b. :D

yehuda
03-03-08, 03:32 AM
You can build .NET applications using C# (including asp.net sites).
In case you didn't already, check these sites:
http://www.asp.net/
http://msdn2.microsoft.com/en-us/vcsharp/default.aspx

walterman
03-03-08, 02:36 PM
It's the heart of .NET

It's also the perfect language for Java programmers that want to start into .NET

It's really easy to write applications for mobile devices, web, databases, ...

The best part of .NET & with difference is the IDE.

I can debug an application & change the code on the fly, move the execution flow, check the content of the objects, change them, ... connect to databases & use them to fill the controls, ...

The tools for the programmers is the area where Micro$oft shines the most.

You also can write Direct3D applications easily, and you can use the XNA to develop for your 360 too.

The performance of C# is very good too. It isn't C++ of course, but, really fast too. Also, it's easy to multi-thread an application with C#. It even has components to create background workers.

Personally, i love C# & .NET. The best thing that Micro$oft has created. They make my developer life more easy :)

Alaa
03-03-08, 03:42 PM
Thanks for your great replies. :) walterman, I like C# too and I want to start my way in it from now on. Anyone has books to recommend? From beginners books (to fill in the gaps of the fundamental stuff in my head) to advanced ones.

I also want to have a background about Visual Basic, SQL and to be specific oracle. Is this a perfect combination of knowledge in programming?

ViN86
03-03-08, 09:28 PM
What benefits do I get after learning C#? What kinds of software that get developed on C#? Finally, what other languages do you recommend?

Thanks.
if youre going to start programming, i would start with C and C++ since these are the two most accepted languages. then move on to proprietary MS stuff like C# and VB.

you will also find that when you move onto the MS stuff, they will be ridiculously easy because much of the memory/variable management that C and C++ require, are taken care of by MS's languages/IDE's.

jcrox
03-03-08, 10:14 PM
if youre going to start programming, i would start with C and C++ since these are the two most accepted languages. then move on to proprietary MS stuff like C# and VB.

you will also find that when you move onto the MS stuff, they will be ridiculously easy because much of the memory/variable management that C and C++ require, are taken care of by MS's languages/IDE's.

I think that's more of a regional thing, there are no C and C++ jobs in my area, there are very few .NET jobs of any sort in my area, they're almost all Java

ViN86
03-03-08, 10:19 PM
I think that's more of a regional thing, there are no C and C++ jobs in my area, there are very few .NET jobs of any sort in my area, they're almost all Java
from my experience, if you know C/C++, you can apply this across many other languages, and you can get a job. i agree though, it's a regional thing.

rhink
03-04-08, 12:49 AM
Thanks for your great replies. :) walterman, I like C# too and I want to start my way in it from now on. Anyone has books to recommend? From beginners books (to fill in the gaps of the fundamental stuff in my head) to advanced ones.

I also want to have a background about Visual Basic, SQL and to be specific oracle. Is this a perfect combination of knowledge in programming?

C#, VB, even Java will have less of a learning curve than C++. As far as what's a "perfect combination", it depends on what you want to do, I guess. I'd be happy going the rest of my life without touching VB again, but to each his own. I don't think I'd be happy with most of your typical web/database programming jobs out there, so there's things I tend to de-emphasize the importance of.

HOWEVER, I agree with vin about just starting with C++ (though if you already know a little of something else, I could certainly understand that biasing your decision). The main difference in learning curve is memory management, and learning pointers. Understanding how pointers/referencing works is going to make your life easier in darn near any language, including the ones referenced above (though you can get away without it in most garbage collected languages, it still helps). The main difference is, going from C++ to Java or a .NET language is pretty simple- going the other way, not so much, because you'll be clueless when it comes to memory management and pointers if you go that route.

I learned C++ out of "C++ How to program" by Deitel and Deitel... adequate... nothing spectacular... /shrug. Of course the C++ Bible is "The C++ Programming Language" by Stroustrup, but it's more of a reference volume than a textbook. Though if you have a little bit of programming experience under your belt, that may suffice.

I learned Java out of "Java in a nutshell". Still more of a reference book.... though again, once you have an object oriented language under your belt, it's not that hard to move between 'em with a little bit of sample code to get you started.

I do think you should pick a language and master it. Once you've done that's relatively easy to pick up another language from a few code samples and online references, esp one with a similar paradigm (ie, once you pick up the basic concepts and syntax of any OOP language, it's pretty friggin simple to start coding in a different one pretty quickly).

Alaa
03-04-08, 08:42 AM
C#, VB, even Java will have less of a learning curve than C++. As far as what's a "perfect combination", it depends on what you want to do, I guess. I'd be happy going the rest of my life without touching VB again, but to each his own. I don't think I'd be happy with most of your typical web/database programming jobs out there, so there's things I tend to de-emphasize the importance of.

HOWEVER, I agree with vin about just starting with C++ (though if you already know a little of something else, I could certainly understand that biasing your decision). The main difference in learning curve is memory management, and learning pointers. Understanding how pointers/referencing works is going to make your life easier in darn near any language, including the ones referenced above (though you can get away without it in most garbage collected languages, it still helps). The main difference is, going from C++ to Java or a .NET language is pretty simple- going the other way, not so much, because you'll be clueless when it comes to memory management and pointers if you go that route.

I learned C++ out of "C++ How to program" by Deitel and Deitel... adequate... nothing spectacular... /shrug. Of course the C++ Bible is "The C++ Programming Language" by Stroustrup, but it's more of a reference volume than a textbook. Though if you have a little bit of programming experience under your belt, that may suffice.

I learned Java out of "Java in a nutshell". Still more of a reference book.... though again, once you have an object oriented language under your belt, it's not that hard to move between 'em with a little bit of sample code to get you started.

I do think you should pick a language and master it. Once you've done that's relatively easy to pick up another language from a few code samples and online references, esp one with a similar paradigm (ie, once you pick up the basic concepts and syntax of any OOP language, it's pretty friggin simple to start coding in a different one pretty quickly).
Thanks for your reply. I started learning Java in my university then I took a small course about C++ and YES I was clueless when it came to pointers! :D But things went well later.

Anyway, in Java I could create GUI and I learned about OOP:Inheritance-Encapsulation-Exceptions I don't know if there were other stuff but I don't think they were deep enough to make me fully everything. So, I want to make a clean start to make up for everything I missed. btw, what language is mostly used in modern games?

Also don't forget to enlighten me with your "perfect combination". :)

jcrox
03-04-08, 10:37 AM
Video Games, as least modern ones like Crysis or Call of Duty, are a completely different animal

Alaa
03-04-08, 01:47 PM
Video Games, as least modern ones like Crysis or Call of Duty, are a completely different animal
Damn! I wanted to create my own Crysis! :D How different, by the way?

walterman
03-04-08, 01:52 PM
Thanks for your reply. I started learning Java in my university then I took a small course about C++ and YES I was clueless when it came to pointers! :D But things went well later.

Anyway, in Java I could create GUI and I learned about OOP:Inheritance-Encapsulation-Exceptions I don't know if there were other stuff but I don't think they were deep enough to make me fully everything. So, I want to make a clean start to make up for everything I missed. btw, what language is mostly used in modern games?

Also don't forget to enlighten me with your "perfect combination". :)

You need a solid OOP knowledge for almost any language today. Personally i think that you should have some basic concepts about CPUs before starting with pointers in C.

Games are usually written in C++ (and maybe with some SSE intrinsics, which i highly doubt). They also use HLSL to write the shader programs. Assembler is rarely used today, the compilers do a very good job, but, it was a must in the past when we had i486 66 MHz machines to run DooM 1 / Duke3D / Quake 1 / ... Today you can use SSE intrinsics in C++ to optimize your apps, or you also can use the Intel C++ classes, which are highly optimized, and from my experience, much more easy to use than the intrinsics.

Alaa
03-04-08, 02:04 PM
You need a solid OOP knowledge for almost any language today. Personally i think that you should have some basic concepts about CPUs before starting with pointers in C.

Games are usually written in C++ (and maybe with some SSE intrinsics, which i highly doubt). They also use HLSL to write the shader programs. Assembler is rarely used today, the compilers do a very good job, but, it was a must in the past when we had i486 66 MHz machines to run DooM 1 / Duke3D / Quake 1 / ... Today you can use SSE intrinsics in C++ to optimize your apps, or you also can use the Intel C++ classes, which are highly optimized, and from my experience, much more easy to use than the intrinsics.
Thanks for the info. So, what do you recommend beside learning C# in the future?

walterman
03-04-08, 02:38 PM
C/C++/C#/Java

You can cover a lot of fields with those languages. And you said that you have SQL knowledge too.

Alaa
03-04-08, 02:51 PM
I will probably have SQL knowledge in the next 2 years. Thanks for your much appreciated help! :)

rhink
03-04-08, 07:08 PM
Thanks for your reply. I started learning Java in my university then I took a small course about C++ and YES I was clueless when it came to pointers! :D But things went well later.

Anyway, in Java I could create GUI and I learned about OOP:Inheritance-Encapsulation-Exceptions I don't know if there were other stuff but I don't think they were deep enough to make me fully everything. So, I want to make a clean start to make up for everything I missed. btw, what language is mostly used in modern games?

Also don't forget to enlighten me with your "perfect combination". :)

Dunno if there is a "perfect combination".... like I said, it depends on where you want to go. C# and SQL probably isn't going to help you write crysis, but skills gained working with C# could certainly apply. Like others said, C or C++ is going to be used in most games, just for performance reasons (no one wants Crysis freezing for 5 seconds in the middle of an intense moment to garbage collect!). I suppose the byte code style languages (ie, Java) with JIT compiling could be fast enough, you'd still have to be very cautious about managing the garbage collector, though.

Alaa
03-05-08, 01:29 PM
I was just kidding. :) I just want to learn stuff for job opportunities.

Absolution
03-07-08, 11:56 PM
Ill throw in my two cents of ramble.

c# is a wonderful language to learn if you aren't doing anything too advanced (which is probably 90% of programmers out there), to be honest, if your developing any general windows application, c# is the way to go. Its relatively fast, easy to program in, and has a solid framework. You don't have the odd bugs and memory leaks of c++.

If you want to get into low level stuff, such as programing drivers, c++/asm is what you need. It offers higher performance and it also can be optimized better than c#.

If you guys want to know something fun about 64bit programing, I'll tell ya. There should be a performance increase from applications that are build from the ground up in x64 instruction set. Most people would have you believe that there is nill performance gain. Well, thats cause:

1) The application is running in 32bit compatibility mode
2) The application was compiled in x64 but written primarily for x86
3) The program is compiled in x64, yet still uses the x86 instruction set (see FarCry x64).

The thing about Far Cry, it keeps switching instruction sets in game (yes, you can do that). Thats why there is no performance increase. Almost all games (well written games) write a lot of their math calculation (think vectors) in pure assembly, such as Far Cry. However, when they recompiled it in x64, they never modified these math libraries - so they are still running in x86! BAD CRYTECH!

So ya, a lot of games use SSE - but a lot don't use them correctly.

Alaa
03-08-08, 03:17 AM
And what about business solutions for companies? Is C# useful in that area?

Imbroglio
03-08-08, 09:06 AM
And what about business solutions for companies? Is C# useful in that area?
it really depends on the company. most companies use java (non-gaming companies) because it is a widely used and accepted language. One that same note, the company I work for also writes pro*c (sql infused C) and sqr (proprietary oracle forms). Since the company uses C, they are more apt to hire C devs without java experience then they are to hire java devs without C experience. From a corporate standpoint we can't afford people that don't understand or use proper memory management. OOP skills are beneficial but imho aren't nearly as difficult to pickup than correct memory handling.

sql is beneficial, but when looking for jobs try not to make a big fuss about it, as most people can pick it up in a matter of days. If I were you I'd start with the basics, java or c/c++ then move on to .net from there, more doors will open for you with java and c/c++ knowledge than anything else.

Banko
03-15-08, 12:13 PM
Dunno if there is a "perfect combination".... like I said, it depends on where you want to go. C# and SQL probably isn't going to help you write crysis, but skills gained working with C# could certainly apply. Like others said, C or C++ is going to be used in most games, just for performance reasons (no one wants Crysis freezing for 5 seconds in the middle of an intense moment to garbage collect!). I suppose the byte code style languages (ie, Java) with JIT compiling could be fast enough, you'd still have to be very cautious about managing the garbage collector, though.
C# is also a JIT compiled language... And in C# you can actually create unsafe code where you manage pointers on your own and garbage collect on your own if you need the performance.

t3hl33td4rg0n
03-20-08, 05:31 PM
I think that's more of a regional thing, there are no C and C++ jobs in my area, there are very few .NET jobs of any sort in my area, they're almost all Java

Here in NE ohio, almost all job openings are .net, VB, asp, MSSQL, etc.