This article by Prashant Sridharan provides an introduction and overview of Microsoft’s four .NET programming languages: Visual Basic .NET, Visual C++ .NET, Visual C# .NET, and Visual J#. According to the author, programming languages are used to build a variety of solutions, and each language contains unique features and benefits that make it best suited to certain kinds of applications. The article starts by explaining the overall benefits of .NET, and then reviews the unique capabilities and strengths each of these four Microsoft .NET programming languages.
I can program “Hello World” with 1 line in VB.NET while it would take 10 lines and a header file with GNU C.
That is because VB does it for you. They hide all the header stuff behind the scenes. GNU C/C++ and such do not, they are “vanilla” if you wish to call it that, and makes the programmer decide what he needs to use and what not to use.
Agreed. .NET does every thing for you. I would choose GCC any day over .NET because in GCC I have total control over everything.
If you want complete control, your only choice is assembly. By using GCC you are already on a higher abstraction level, don’t bash languages that “hide the details”.
Each to his own, I tend to use whichever language is best suited to the job at hand.
VB does have some advantages in certain environments – deadlines are real, and being able to take someone elses code and use/modify it in a short amount of time is paramount to meeting these.
I find that VB helps to make it easy to read and get a level of understanding of the code in a short amount of time.
C/C++/Ada on the other hand, while being “better, faster, stronger” languages usually take much longer to attain an understanding of unfamiliar code.
I like .NET, not neccesarily because of the languages, but because of the (mostly) consistent API and the documentation around it, this makes my job easier.
is Delphi. You have Deadlinie – do Delphi
Need Formular – do it Delphi
komfortrable for programmers now in .NET.
I highly recommend you try
Herrmann
Everything good that applies to C# is also true about Java. You can design a form in seconds in Visual Studio .NET (+$1,000) and the same is true with Borland JBuilder, IBM WebSphere (also +$1000). But in Java world you have more choice. You can do the same thing absolutely free in NetBeans (and Eclipse’s forthcoming version).
If you think that the default look and feel of Swing based clients are not nice, please take a look at the free JGoodies Looks Look and Feel (www.jgoodies.com) and Alloy Look and Feel (www.incors.com)
.NET server costs you much too but you can go with JBoss and Tomcat for free in the Java world…
I read in a blog that .NET’s widgets are not even as good as MFC’s widgets…
Say goodbye to .NET and welcome to Java! Writing programs in Java saves a lot to all the organisations that may want to switch to another OS…
dizzey@
anime $ cat bra.c
int main(void){printf(“hello world
“);}
dizzey@
anime $ gcc bra.c
dizzey@
anime $ ./a.out
hello world
dizzey@
anime $
the forum wouldnt allow backslash ‘n’ and turned it to just n
Hehe, good point. Can’t argue with that
I have coded some in many languages, I think the most advanced thing I ever managed in C++ was a calculator.
Just about any language can “hello world” in one line, I remember in VB6 I dragged and dropped a browser module, sext box, and button to a form.
I then added one_line_of_code to the button to output text1.text to the browser module.
A GUI web browser with one line of code, try that in C++
Stop pitching the multi-language thing. Its not a reality, other than c#, vb.net, c++(and some j#/++). In which case I would fathon to say, that c# gets the most attention.
How many teams have moved a bunch of cobol programmers to cobol.net?
In reality, whats the point? Object Oriented cobol? Whats that? VB to VB.NET is not a small leap, I would image cobol to cobol.net would be much greater.
There is enough differences that they might as well learn something else like c#.
In fact I would say java to c#, or c# to java would be easier than any of the other transistions.
Actually, moving to cobol.net makes a lot of sense to those that are so far removed from actually writing code(for a minute maybe). Then they come to their senses. Instead of retraining their stubborn old cobol programmers, it would cheaper to farm the work out to India and have their app re-written with java or c#
Although bear in mind that the code that allowed you to do that was most probably written in C++…
“We’re always going to have a half a million or 50 million religious VB programmers. But guess what? We have VB in .NET. And now we have Java language in .NET. We’ve even got COBOL!” – Tim Huckaby, President and CEO, Interknowlogy
Now, folks, I am a VB/ASP hack– but I sure don’t feel religious about VB. Who aside from Bill G. and Steve B. feel religious about VB? Maybe familiarity breeds contempt or something, but I don’t feel excited about it. It’s hard to feel excited about a language tool that is bound to one platform– Windows– and which, though having a lot of supplied libraries, add-ins, and controls, still feels like a play language. Java interests me because of its cross-platform nature and object-orientation, C and C++ for their power, Python for its simplicity and versatility. VB? Well, the syntax is a little simpler than all but Python, but that’s about all I can say for it. I really am ready to move on, and it won’t be to any .NET language.
The same is true with Apple’s XCode and Safari Webkit…
If it works. Assuming said languages have similar features, and can leverage the features of each other, you could have one department write the backed to an application in C#, then another set of programmers take their docs and use VB.NET to “script” that backend and rapidly develop a GUI.
#1: Cocoa (objective C) can do a webbrowser without any code
#2:
int printf(const char * restrict format, …); int main(int argc,char** argv) { printf(“Hello World
“); return 0; }
There is one line Hello World without any include files.
You can even do that browser thing in Linux with QT Designer…
http://www.trolltech.com/images/screenshots/designer/linux.gif
I think you have to use the QTextBrowser class… in QT Designer you just have to drop it in your main form…
The point of having COBOL.NET is not to allow programmers to write an entire .NET framework application in COBOL, but to allow you to use all of your existing buisiness logic that is in COBOL with applications that would otherwise be written in other languages such as C#. This is the whole point of the CLR… you can pull parts of code from many languages into a single application. Say you have some big number-crunching application written in FORTRAN on a mainframe somewhere that you want to move to the desktop as stand-alone. Why re-write the entire application in a new language when you can create the interface in say VB.NET and still use all of your FORTRAN code through the .NET runtime? Again, that is the point of it all.
How are pointers a ‘unique feature’??? Wow, Microsoft invented accessing memory! Too funny………….
“Microsoft’s four .NET programming languages”
Wasn’t there suppose to be 50 or something?
You forgot my favorite: Clipper.NET!
Heheheh.
Wasn’t there suppose to be 50 or something?
Yeah, where’s COBOL#?
Oh, too many bad memories to even be able to laugh at that
targeting .NET after all it’s just different syntax except C++ .NET which can handle both native and managed and even mix it. C# is cryptical for many, VB .NET is over the top for many but people are happy with whatever they are used to. Most of the time I used VB .NET but I’m not happy with it, I will try others. While I think C# is far from optimal imo I think it suck slightly less than VB .NET, other usually appear strange to me but I will try as many as I can before judging over them (try others instead of being a language/plattform zealot would be a good idea for quite a lot other OSNews readers as well)
“I can program “Hello World” with 1 line in VB.NET while it would take 10 lines and a header file with GNU C.”
in any case a module (one of the thousand reasons VB .NET is a mess) or a class is required when I remember right
“int printf(const char * restrict format, …); int main(int argc,char** argv) { printf(“Hello Worldn”); return 0; }”
when I remember right in JScript .NET it’s just
printf(“Hello Worldn”);
or
System.Console.WriteLine(“Hello Worldn”);
I think it can’t be much shorter
it’s a scripting language that aims to be compatible with Java Script/ECMA Script but requires like all .NET languages to be compiled to MSIL. The fifth and last MS .NET language
Don’t mean to be funny but isn’t that like 3 lines of code. I mean doesn’t the compiler pass over carriage returns in Objective C.
“Wasn’t there suppose to be 50 or something?”
The other languages are provided by ISVs, Universities, and Microsoft Research.
Here are links to a few other languages.
http://www.vsippartners.com/search.aspx?SearchText=&CompName=&ProdN…,
http://research.microsoft.com/search/Portal/Search
.” Hello World”
The number of lines it takes to program “Hello World” is of course the most important factor when considering which language to use.
still no anonymous functions, still no extensible syntax, still no mixins, still no tail calls, still no type inferencing.
microsoft’s language are still not powerful at all.
er, languages.
I like php# 😀
http://www.akbkhome.com/Projects/PHP_Sharp?click=1071198264
How efficient is .net compiled code? Note that as code is compiled into special .net opcodes so executing compiled .net code would have more overhead than what we normally think of as compiled code.
“still no anonymous functions, still no extensible syntax, still no mixins, still no tail calls, still no type inferencing…”
C# 2.0 gets generics, anonymous methods, iterators, and partial types. Mixins were mentioned at the PDC as being looked at currently, and possibly implemented in the Longhorn timeframe.
PDC Session
TLS320 – Visual C# “Whidbey”: Language Enhancements
http://microsoft.sitestream.com/PDC2003/TLS/TLS320.htm
C# 2.0 Specification
http://download.microsoft.com/download/8/1/6/81682478-4018-48fe-9e5…
Sneak Preview of C# Whidbey
http://download.microsoft.com/download/2/d/2/2d2b339a-95b9-4f0e-a76…
That writing one line of code to make a program is different than making a program which is only one line of code. Smalltalk can do the latter:
Transcript show: ‘Hello world’.
There, one message send to the global variable Transcript.
You can do it in zero lines of code. Just open up VB, make lblHi and then change lblHi caption to “Hello World.” Hit run and bam you have a “Hello World” program without having to go into the Code Window.
I read on a newsgroup that in Longhorn, the Win32 api will be interfaced to the CLR through some kind of layer. This may cause Win32 apps that are native compiled to be slower than their .Net counterparts. Something like the WOW (windows-on-windows) layer that was provided to support Win16 apps under Win32 in NT.
I am in the midst of writing an online game and would like to know if the above would happen. I want to avoid rewriting my game client apps to .Net after coding them for Win32. This will involve another field test in future that may frustrate gamers.
Please provide me with any links that you have that clarifies this issue. I have been unable to find any clear info on this.
-magg
Any body has an idea of this? I am writing PC games and would like to know if the .Net framework (sepecially managed DirectX) utilizes all the CPU’s cpabilities (eg, SSE-1-2-3, 3DNow). Any online references to this?
Thanks a mill.
-magg
You should try posting those questions to the Managed DX newsgroups at microsoft.public.win32.programmer.directx.managed
Web Version: http://communities2.microsoft.com/communities/newsgroups/en-us/defa…
You may want to call out Tom Miller in the subject line. He’s the dev lead and designer of MDX.
He also has a blog at http://blogs.gotdotnet.com/tmiller
and Managed DX was discussed on a recent .NET Show
http://www.msdn.microsoft.com/theshow/Episode037/
Transcript: http://www.msdn.microsoft.com/theshow/Episode037/Transcript.html
WRT Win32 on Longhorn, I don’t think there’ll be anything on the level of WoW (except when running on 64-bit Windows of course), but they may rewrite the subsystem in managed code. You shouldn’t need to rewrite for .NET unless you want to take advantage of its features or Longhorn-specific functionality. Performance of Win32 apps on Longhorn is supposed to be within a few percentage points of current performance. Plus, the hardware will be faster by then and should also help to mitigate any differences.
You can also check out the Longhorn groups here
http://www.msdn.microsoft.com/longhorn/community/newsgroups/default…
Apparently the current JIT compiler uses some CPU-specific optimizations (including SSE). More work in this area is planned for future releases.
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm…
C:>echo Hello World > hello.html
C:>hello.html
A GUI web browser with one line of code, try that in C++
—
The same is true with Apple’s XCode and Safari Webkit…
Actually you don’t need to write any line of code with XCode and the safari webkit 🙂
echo ‘200.times { puts “hello” }’ | ruby
I’m a 15 year C++ veteran and I know a good thing when I see it. The author of turbo pascal and delphi has really outdone himself this time. .NET fromn a pure technological perspective is just incredibly productive. The multiLanguage thing is a bit of a red herring because for languages like C++ you lost templates and stack based objects. They will be adding generics in the next release.
By far one of the most powerful concepts in .net is attributes, With a one line attribute, I can expose and method as a webMethod and it becomes a soap service. This includes datasets. I built a 3 tier client/server app in a few weeks with it. It would have taken me months in java or C++ (Well except for C++ builder). I dont care for m$ muself but you have to admit this is some slick stuff.
Before you make rash judgements, take a good look at what they’ve done here.
All this talk about java being open. One question for you. Has java turned even one line of code over to a standards body? nope. They can pull the carpet at any time and start charging for java.
you can opensource a C#/CLR implementation and they cant touch you. Of course this doesnt include ADO.net, winforms, etc. I hope they make the smart move and open that up too.
.NET is SO badly thought out. Here’s an example, both MS SQL and XML use the CIF format (yyyymmddThh:mm:ss) for dates. Yet .NET has no standard date formater for this (why?) and does not accept dates in this format so you have to format it manually.
This is just one example of the many headaches due to MS not thinking things through .NET gives me on a daily basis.
I am quite sure I am not leaving gcc for just another candybar. Despite all the promises, bells and whistles you still have to do some work, too.
Changing environments does not help there. I like my working environment as stable as possible, while at the same time moving along with time. That means that I do go along with new compiler and library versions, but I’m not going to change my basic working environment: vim, gmake and gcc.
These offer me a cross-platform development environment that I can use everywhere from Windows to Linux to Solaris, Irix or even good old DOS.
That is good, because it enables me to keep on using code that has been written (and debugged!) like 10 years ago without big problems. I might have to make some minor changes here and there, but the core of my code stays intact, making my end product robust and stable.
The whole .net thing is brand new and therefore not mature. This means that you don’t know how and where it will change and what it will look like in a year or so.
You don’t know how and when MS decides to change the IDE environment and wether or not you will be able to use your perfectly good code in it nor how long it will take to port or rewrite it.
Beside that, there’s no way to know if or when all these .NET things are going to be available on other platforms, too.
Especially with the current Unix revival in the form of Linux this is important. I’m not going to just leave this growing, open market for my competitors to walk into.
So, thank you, but my buzzword is ‘Cross platform’. Not .NET.
Of those, the only interesting proposals are the generics and the anonymous delegates. Explicit iterators are unnecessary when you’ve got closures, and partial types are just the ability to split up a class declaration into multiple files.
The coolest thing about anonymous delegates is that they appear to be a reasonable approximation of lambda. They’re proper closures, which means that if you do something like this (in python syntax):
def foo():
i = 0
return lambda (): i = i+1
f = foo()
Then ‘f’ will keep access to ‘i’ even after foo() returns. This construct, btw, is why iterators are unnecessary in a language with closures.
So yay for C#: it has only now just rediscovered a concept which was invented with lambda calculus in 1936:
http://en2.wikipedia.org/wiki/Lambda_calculus
“The whole .net thing is brand new and therefore not mature. This means that you don’t know how and where it will change and what it will look like in a year or so.”
I understand people fascinated by their 70’s command line technology but before you criticize newer technology you should learn the new technology first so you would know what you actually criticizing. Obviously you don’t know much about .NET if something at all. It’s 3 years old, the first version 1.0 was already mature and so is the actuall version 1.1. Changes are improvements that are welcome and break compatibility rarely. Additionally different .NET versions run side by side, different runtime versions and different library versions (no DLL hell). That’s why they had to create .NET, to fix problems of old technologies and add possibilities that was missing or painfully with the old technology. Nothing against C++ and a simple text editor but if you don’t need ultra performance it’s easier to use C# and a decent RAD IDE. Unfortunately there ain’t a C# IDE for Linux yet but it’s only a matter of time and there will be a decent GPL’ed IDE with all kind of advanced things like designers, refactoring etc.
We’ll do that the minute you learn and understand our 1970’s technoloy and figure out why what is old is new again
A follow-up to my previous rant: There was an interesting presentation posted recently by the guys who invented Erlang, a language used by Ericsson in mission-critical systems. Its a bit-OT, but if you’re having trouble thinking of how C# could possibly get any better, look here to get a taste of just how far it has to go:
http://www.erlang.se/euc/03/proceedings/0900Mike.ppt
“We’ll do that the minute you learn and understand our 1970’s technoloy and figure out why what is old is new again ”
I don’t want to be off topic here but as soon as I have the opportunity I’ll ask somebody to enlighten me what’s this command line thing is all about, wouldn’t mind some links
The advantages of a keyboard-oriented development environment (I’m going to refrain from saying GUI for reasons you’ll see in a moment) break down as follows:
1) Interacting with a GUI is cumbersome. It requires a lot of physical movement, and a total of mental processing. The minute you have to take your eyes of the current line of code to frob with some GUI widget or reach for the mouse, it breaks your concentration. Typing is, surprisingly, one of the most natural things for a human to do, because it closely resembles thinking to oneself. Editors like Emacs or Vi offer extremely powerful text manipulation features that can all be controlled from the keyboard. VS.NET is admirable in this respect in that it allows you a lot of keyboardability, but Emacs and Vi were designed with this in mind. The whole idea is to do everything you need to do, without breaking your concentration to deal with the interface.
2) Its immensely well-suited to advanced languages. Emacs and Lisp have a special symbiotic relationship. If you’re writing a Lisp program, you can take advantage of the fact that Emacs itself is also a Lisp program. You can extend the emacs environment by writing elisp functions much more naturally than you can by writing special VS macros or Eclipse plug-ins. The read-eval loop is also an extremely powerful thing. I too was a non-believer until I got some experience with Python. Read-Eval is the bomb. Basically, Read-Eval lets you edit the program as it is running. In iLisp (Emacs lisp mode), it looks like this:
… Lisp source file …
————— Seperator ————–
… Lisp interation window …
You define a function in the source file, then hit a hotkey to evaluate it in the interaction window. Then, you test it right there, no recompile, no nothing. How often are you in the middle of a function and are wondering if a statement will do what it think it does? I remember when I was writing my kernel, I’d make off-by-one errors all the time because i’d index wrong and get the fourth page instead of the third. Without read-eval, you have to finish the rest of the function, get the code to a compilable state, run it, and see if the result is as you expected. For deciding whether you want “pageVal” or “pageVal + 1”, it’s a complete time waster. Not only that, but you’ve completely destroyed your concentration, by having to deal with things that have nothing to do with the function you were writing. Well, with read-eval, you can just type in the statement right there, and get your results immediately. You can continue writing the function without having broken your train of thought. One especially powerful thing about Python is its documentation system. Documentation is integrated into the language itself. To get help about a function, you type “help(-something-)” into the read-eval loop. To get a list of all the members of an object, you type “dir(-something-).” Again, this is a huge boon because it allows you to get context-sensitive help without breaking your concentration to read through the full documentation.
3) If you’re working with multiple tools, the CLI will save you enormous amounts of time. Sure, if your tools are in your IDE, you can just hotkey to it, but what if they’re not? Going to the mouse, switching to another window, and figuring out where you are in the GUI is a lot more cumbersome than hitting a hotkey (shift + left or shift + right is what I use in Konsole), typing “cvs update”, and going back to coding.
Now, note that its not fundementally CLI vs GUI. The GUI is nice for lots of things. Emacs will give you class diagrams and calltips just like Visual Studio, but you can bet that they look nicer (asthetics are important) in VS. Also, while GUI builders are less important with toolkits that have proper layout managers (which Win32 and .NET don’t), its still probably nicer to do GUI design in a GUI. Of course, there is no reason why Emacs couldn’t be a GUI app and do these things. That’s why I referred to a keyboard-oriented editor rather than a CLI editor. Also, there is no reason GUI IDEs could not support powerful languages like Python and Lisp. Indeed, the expensive commercial Lisp IDE’s are GUI ones. Its just that, due to the way history has worked out, powerful keyboardable editors like Emacs and Vi haven’t gotten enough attention to fully developing their GUI potential, while most GUI IDE’s (except for the commercial Lisp IDE’s I just alluded too) haven’t fully developed their keyboardability and interactive programming environment.
As for links, I’ll give a few:
Nice article by ESR on Python:
http://www.linuxjournal.com/article.php?sid=3882
Wiki page about Apple Dylan. Apple’s Dylan was more GUI oriented, but the command-like like read-eval loop was still at the heart of it. Many people consider it one of the best development environments that exited, before or since: (note, discount any references to being slow or memory-hungry: this was in the early 1990’s when compiler technology was primitive compared to modern Dylan and Lisp compilers, and besides Apple Dylan never got further than a few developer releases)
http://monday.sourceforge.net/wiki/index.php/AppleDylanEulogy
To get a feel for the power of a top-level, you’re going to have to learn a few things. I’m tempted to suggest learning CL and Emacs + ilisp, but that’d scare anyone off. Instead, try DrScheme (www.drscheme.org) and learn Scheme with it. DrScheme ha a GUI, but its got the split file/read-eval-window thing I mentioned before.
The Lisp Machine was considered another of the most powerful development environments of all time. It took the integrated approach of Emacs and applied it to the whole OS (it ran on a Mac). It was before my time, but we’ve got a couple of Genera manuals in our library, and they’re fascinating to read. Look at the Lisp Machine history site:
http://kogs-www.informatik.uni-hamburg.de/~moeller/symbolics-info/s…
And read the section entitled “Genera: The Concepts”
Yes, the screenshots are dated, but this was running on a late 1980’s/early 1990’s Mac. Imagine that development on them had continued to this day and had nifty alpha-blended menus and lickable widgets. Come to think of it:
http://lemonodor.com/archives/images/mcl-5.0b-2.png