Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm still a beginning programmer; I've been at it for 2 years. I've learned to work with a few languages, a bit of web development technologies, a handful of libraries, frameworks, and IDEs.

But over the past two years (and long before I even started, really), I keep hearing references to these...things. A million of them. Things such as C#, ADO, SOAP, ASP, ASP.NET, the .NET framework, CLR, F#, etc etc. And I've read their Wikipedia articles, in-depth, multiple times, and they all mention a million other things on that list, but I just can't seem to grasp what it all is. The only thing I've taken away with any certainty is that Microsoft is behind all of it. It sounds almost like a conspiracy.

Are all these technologies just for developing on the Windows platform? What is .NET? Do some software developers dedicate their entire career just to that side of things? Why would I want to get into it, and what advantage does...whatever it is...have over all the other technologies there are?

I hope this makes sense. It's a broad question, but inside it there's a very specific question asking about something I don't know the name of. Hopefully you can grasp my confusion.

share|improve this question

closed as not a real question by Jarrod Roberson, Tom Squires, Doug T., Walter, S.Robins Jun 11 '12 at 0:29

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

3  
For instance, despite noting constant references to C# on the internet and on SO and on bookshelves, I've never once heard anyone in my entire computer science department mention the language, for anything. Contradictions such as this leave me wondering whether I'm in isolation as part of a minority, or whether it's in fact not a very popular language, despite appearances. I don't even know when it would commonly be used. My point is I really don't know what all this Microsoft stuff is about, or where it's used, or how or why or by who or how popular it is. That's what I'm trying to learn. –  Aerovistae Jun 9 '12 at 21:04
11  
Yes. There are 2 Dark Sides basically: Open Source and Microsoft. You are on the right Dark Side. Whatever you feel is just a disturbance. –  user7071 Jun 9 '12 at 21:06
5  
It's a better language, a better platform. Visual Studio is amazing. And if you don't have any requirements to run on any other platforms besides Windows (excluding the use of Mono) it is a pleasure to work with. Stackexchange is a Windows shop. –  Andrew Finnell Jun 9 '12 at 21:19
4  
@Marco I'd like to take a look at this license you speak of. Can you link a reference to it? –  Andrew Finnell Jun 9 '12 at 21:19
6  
"I've never once heard anyone in my entire computer science department mention the language, for anything." As Edsger Dijkstra once said, “Computer science is no more about computers than astronomy is about telescopes.” I don't completely agree with this but the point is, a CS degree is about learning theory, not specific technologies. I got my MSCS degree 35 years ago, and most of the algorithms etc. we learned are still relevant. But the languages we used (Algol 68, FORTRAN, COBOL, UNIVAC assembler) have either disappeared or are little used. –  tcrosley Jun 9 '12 at 23:54

4 Answers 4

up vote 8 down vote accepted

I work currently as a C# developer and have for the past 4 years; with some Java, C++, C, perl and others in the past. This will bias my answer to some degree (but at least now you know).

I just can't seem to grasp what it all is.

C#

Object oriented programming language that aimed to provide an alternative to Java with lessons learned. It's largely expanded past that, and (imo) sits as the current standard for OO development until something better comes along (which will be or likely look like Scala imo).

ADO

This is simply the name for Microsoft's libraries for database access.

SOAP

This is some trickery to make HTML do more than it was designed to do, and isn't really Microsoft specific.

ASP

This is the name for Microsoft's dynamic web page generation technologies (in general).

ASP.NET

Originally ASP worked on older technologies. When .NET came around, it was updated to be a better fit with marketing (and technology to be fair).

the .NET framework

The .NET framework represents a bunch of interworking bits to support programming. In general, it is a bytecode specification, a runtime for that specification, JIT compilation stuff and a bunch of standard libraries for it. The closest analog is the JVM.

CLR

The common language runtime is the runtime in the .NET framework.

F#

F# is a functional programming language modeled off of OCaml that compiles into CIL (which is what the .NET framework bytecode is).

Are all these technologies just for developing on the Windows platform?

Some are. Most are not in theory, but pretty much are in practice. C# and F# for example are just languages. They have open standards and can be (and are) implemented for non-windows systems.

Do some software developers dedicate their entire career just to that side of things?

Windows development? Sure. It's still far and away the most used OS on non-mobile devices. .NET? No. It hasn't been around long enough to encompass an entire career, and while it might be used for years to come I would not build a career around it alone. Bigger and better things always exist for a disciple so immature.

Why would I want to get into it, and what advantage does...whatever it is...have over all the other technologies there are?

Take a look at your preferred job search site. Otherwise, that's a language debate that this isn't the proper forum for. Personally, I find C# to be the best current language for me, for general purpose programming. It provides the least impediments to getting things done.

Microsoft provides free compilers/IDEs for their stuff. The best way to learn how it differs is to play around with it.

share|improve this answer
3  
Good answer, but a couple of inaccuracies. SOAP is nothing like what you've suggested, it's a protocol for XML data tranfers via web services, and Windows isn't as common as you suggest in the server space. –  pdr Jun 9 '12 at 22:51
    
Netcraft says MS has about 20% of the webserver marketplace. Internal to companies that figure will be larger, but there a server is pretty much a Windows 'PC' that sits on a shelf. –  gbjbaanb Jun 9 '12 at 23:43
    
There is more non-mobile development done than servers... –  Telastyn Jun 9 '12 at 23:53
    
"The closest analog is the JVM" - I'd say the closest analog to the JVM is the CLR. While the .NET Framework is the CLR + a whole bunch of other stuff (esp. the whole class library it contains). –  stmax Jun 10 '12 at 1:13
1  
@pdr: He probably meant "HTTP", not "HTML". SOAP is commonly transported over HTTP, although it can use other transport protocols. –  tdammers Jun 10 '12 at 13:21

Every software development/IT company develop plenty of technologies, evolving constantly. This is true for Microsoft, for Oracle, for any other major actors of software industry.

As a developer, you have to keep updated of those new technologies. Like a person who administers a datacenter must know what are the new servers, routers, firewalls available on the market, what a new cutting edge server brings, what are the new techniques of server cooling, why some new UPS is so much better than some old one, etc., a developer has to know in general what are the new technologies available and how he can benefit from them.

In all cases, remember that:

  • There are lots of technologies and you have to know what are they about, but you don't have to use them daily or to learn them deeply.

    When working as a .NET developer, I know that Workflow Foundation exists and I can summarize more or less what is it about, but I certainly don't know WF deeply because I never learnt it, since I don't need it for the moment. On the other hand, I use ASP.NET MVC daily and should spend a lot of time to learn more about it.

  • Some technologies are new, some are old, some are obsolete. If you want to learn Metro, fine, you'll probably find how to use it. If you want to learn MFC, well, it's quite obsolete, but still used. If you want to read plenty of articles about WinFX, there might be more useful things to learn. Select carefully what to learn before learning it.

  • Some people are using wrong names for a technology. For example, you may read articles about ASP. Unless they are written ten years ago, chances are that the author makes a confusion between ASP (and old and very crappy language) and ASP.NET (a new and crappy framework).

  • Don't be afraid by names. Microsoft, like many other companies, like inventing fancy names for their technologies: Entity Framework, WPF, Metro, Azure, etc. Despite those fancy names, those technologies remain ordinary ORMs, presentation frameworks or Cloud solutions, nothing more.

share|improve this answer
    
+1 for note about fancy names. If there was a tradition to name all lumps of bits something like "IEEE 209798.09.part 2" nobody would ever notice that software exists. –  user7071 Jun 9 '12 at 21:30

.Net is a platform. In this instance, that basically means "a suite of tools and languages that work together". It's not a conspiracy, just a company trying to offer as many tools as there are problems.

.Net all hinges around a runtime called the CLR, this is equivalent to the JVM - you don't code directly on it, you use another language like C#, VB.Net, F# or many others (including LOLCode if you want). This is in the same way that not only Java runs on the JVM but also Scala and Clojure for example.

ADO is a data access layer, ASP & ASP.NET are frameworks for writing webpages and SOAP is not specific to .Net but a (bad)protocol for webservice communication. A lot of these tools have been deprecated or superseded, but the internet doesn't have a sell-by date and you will still see references to these tools all over the place.

In closing, C# is an excellent language and if you're bothered by Microsoft then look into the Mono Project which is a project which has successfully ported the CLR (the virtual machine) to Linux and Mac.

share|improve this answer
    
last sentence-->"ato port"<-- is that a typo? "The internet doesn't have a sell-by date"-->great line. –  Aerovistae Jun 9 '12 at 23:32
    
Yes, a typo - it seems an edit got missed somewhere, tyvm. Fixed. –  ChrisAnnODell Jun 10 '12 at 10:01

The main thing to remember is that 90% of desktops run Windows. So if you have a high-quality tool, even if it targets only those 90%, it's probably still worth your time compared to going cross-platform. Many Microsoft tools are similar in nature to tools you may already be familiar with, but are generally vastly superior in implementation.

For example, C#. C# is kinda like Java, except they added a whole bunch of features to make using the language actually worth the time of the developer, like lambdas, strong generics, and operator overloads, and the Microsoft-provided libraries like LINQ and WPF are of a vastly higher quality than those available in Java. The CLR is equivalent to the JVM.

F#- it's a functional language built on the CLR.

Of course, in my experience, CS departments aren't interested in whether or not something is good to produce programs in, and would never deign to stoop to picking a language because it's useful or something like that.

ASP.NET, it's a web technology that allows you to write web pages in C# that run on the CLR. Java tried something similar with JSP, I think, but as far as I'm aware the implementation was a disaster and the technology is basically completely unadopted, whereas ASP.NET was quite successful.

The .NET framework, generally, is the set of the CLR and all the languages and libraries that Microsoft package with it.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.