The Mono project has a clear goal: to become the first-choice platform for Linux software development. Considering that Mono is an implementation of Microsoft’s .NET framework, that goal might sound particularly audacious to many Linux fans, says Edd Dumbill. In the meantime it was announced today that the SPARC port of the Mono JIT engine has been completed.
Now, lets hope SUN see this as an opportunity to the .net junkies out there that they can buy a big iron from SUN whilst being able to use the .net framework and serve aspx pages onto the net.
I’m also looking forward to the PPC port being completed. Hopefully soon Apple will see the benefit and create a C# wrapper around Cocoa.
Sun loves it ofcourse, They’d love to be compatible with microsoft but offering more. They perfer Java over everything and alot of people do- Java is improving fast and I do mean FAST. As for .NET, I think it satisfies Microsoft Windows junkies that want to take advantage of the scalability that these types of operating systems offer, then unix fans will start taking a look. I doubt that a person who dosent use windows will ever work with .Net unless if the windows crossovers show them the way.
I give Mono a thumbs up. Can’t wait to start offering .Net on Unix to customers!
`Redundant.
Of course it will continue to be in C for portability and other reasons. Nobody talks about the Linux kernel over here, we are talking about the Linux PLATFORM.`
Are you sure? Is there a possibility that these efforts will (and have) been ported to other *nix like operating systems (*bsd)? Really, the article title is misleading.
Yes, I am sure, just read on kerneltrap recent article about Linus talking about C and C++. C gives you better portability and this is important for Linux’s business.
Really you should try C#. It’s the nicest modern OOP language outthere. Still I prefer Java, though ’cause C# lacks good crossplatform GUI. I mean Windows.forms sucks on anything except Windows, and GTK# just sucks everywhere (but especially on Windows).
Can Apple fold this into Cocoa? .NET seems so far reaching – it encompasses so many things. How do you see .NET / mono implemented in Apple products? I want to get on the bandwagon now, but have fears.
It would be a huge investment of time and energy to learn, I wouldn’t want M$ to kill it. Yes, I did RTFA, there is a contingency plan in place, and there are folks (Novell) looking into potential snags with implenting mono. I still think it’ll be risky. I mean, these guys, if successful, are going to take the wind out of MS’s sail in a big way. By 2005, the mono team expects to have pretty much all the coolness promised by Longhorn (sans 3D UI and WinFS – enter Looking Glass and ??? for Linux — Quartz Extreme and BFS for OS X). I just don’t think Redmond will stand for that…
“I’m also looking forward to the PPC port being completed. Hopefully soon Apple will see the benefit and create a C# wrapper around Cocoa.”
Maybe I don’t think it would ever become a significant Framework/IDE on Mac OS X. It’s practically like QT, basically all it’s being used is to port KDE apps to Mac OS X, I have yet to see anybody use it by choice over Xcode or CodeWarrior. If you really want your windows apps just run them in Virtual PC or DarWine.
As someone looking to get into Linux development I seriously hope Mono doesn’t become the tool of choice. I still have yet to see a good reason for this project, if you don’t like your current IDE’s/Frameworks then create an easy to use framework/IDE. The only good thing I see Mono’s use for right now is in porting Windows apps over and thats about it.
The PPC port of the JIT compiler should have been priority one for the core runtime team after they got the JIT working on x86. God only knows how many more people out there use a PPC-based system than a SPARC-based system. Hell, just getting the MacOS X user base involved with making Mono into a serious competitor platform would have been reason enough.
So the SPARC port is complete now, but we PPC users have no working support for exception handling yet. How sad.
Right now I am having to decide which I want to learn in my spare time, desktop Python development with wxPython or .NET. The former works very well on OSX, Win32 and Linux. Something tells me, it’ll be the former.
They don’t have to implement it in their products, however, if the ability is there for third parties to use that particular language, what is the harm in that?
So apps developed for .NET on Windows could be easily ported to OS X if the mono project can get their frameworks to run on OS X? Wouldn’t that kinda obligate Apple to provide support for the mono frameworks in their OS as a way to re-assure developers? Know what I mean?
How does the Mono compiler and runtime compare to Microsoft’s, resource and performance wise?
http://librenix.com/?inode=3501
RTFA. Miguel is talking about desktop apps
Frankly, I had always hoped that Apple would come out with YellowBox for Windows (the old project that ported Cocoa To Windows NT) and then help GNUStep along so that Linux could also use Cocoa programs.
Beh, the monodevelop IDE looks really nice. I also like how he said C is dead (Slashdot reported it, but it doesn’t seem to be in the article). So much for my computer science class this semester.
Does anyone know anything about C#? What’s the advantage other than the compile on first-run thing that allows it to be cross-platform? Is it easier to write programs in than C/C++? How does it stack up against Objective-C?
So apps developed for .NET on Windows could be easily ported to OS X if the mono project can get their frameworks to run on OS X? Wouldn’t that kinda obligate Apple to provide support for the mono frameworks in their OS as a way to re-assure developers? Know what I mean?
That is assuming that they will bundle it with their operating system. They can easily provide support by working with mono developers thus the maintaining is pushed back onto mono/ximian/novell.
Frankly, I had always hoped that Apple would come out with YellowBox for Windows (the old project that ported Cocoa To Windows NT) and then help GNUStep along so that Linux could also use Cocoa programs.
I’m in total agreement. I love GNUstep but without Cocoa compatibility it’s not going to go very far. You can easily run GNUstep apps on MacOSX but not the other way around. This would be a huge step forward for cross platform programming and it could take the wind out of C#. As it stands though, things are looking pretty stagnant. I haven’t seen much new on the GNUstep front lately and the widgets still look exactly the same as they did on NeXT 10 years ago.
“Really you should try C#. It’s the nicest modern OOP language outthere. ”
Better than Smalltalk, huh?
[hornSwaggle]
“Yes, I did RTFA, there is a contingency plan in place, and there are folks (Novell) looking into potential snags with implenting mono.”
I would have thought that having to have a contingency plan, and having a big corporation “look into it” would have been a big hint for people, but…
[Kaiwainz]
” what is the harm in that?”
Time and effort wasted.
[Anonymous (IP: —.cpe.townisp.com)]
“Beh, the monodevelop IDE looks really nice. I also like how he said C is dead (Slashdot reported it, but it doesn’t seem to be in the article). So much for my computer science class this semester. ”
You hear the “It’s dead, Jim!” refrain a lot from those who have something to lose by the status quo remaining. How many times have we heard, “Apple’s dead!”, or “BSD is dead!”? As pointed out earlier “C” is going to be with us awhile.
…I don’t know about “preferred”. That’s a pretty strong statement. Is C++ the “preferred platform” to develop on Linux? Maybe on KDE, but not on Linux in general. Once you dismiss the FUDsters and the “Hey guys, I hate Microsoft too slashdweebs”, and look at Mono from a rational, technical perspective then developing with Mono makes a lot of sense.
The thing is, the majority of developers don’t care about open source or some insanse ideology about code. These people care about windows because it still represents the vast majority of the desktop marketshare. So for these people, Mono does make a lot of sense because they can develop on Windows and then port over to Unixes with a minimal effort. Is it going to 100% binary? No, probably not. But that’s not the point. The point is that they can now fathom a port to Unixes.
Now someone will bring up Java. Java is a good thing, but Sun seems to have fumbled the ball on major issues such as the GUI, VM sharing, language features for such a long time that a lot of developers just don’t care about it as a viable desktop application language. That’s not the most important issue with Java though. It’s a deployment problem. Most linux distros don’t and can’t re-distribute the JRE with their other packages. Forget about windows. Java is dead on the windows desktop. No matter how many lawsuits and how much whining Sun does, Java is not going to be redistributed with windows. Mono will be redistributed with distros once it hits 1.0, and .NET will be ubiquitous on windows eventually.
I don’t see KDE developers jumping ship to Mono and C# anytime soon. They already have a nice Framework and IDE to work with, but Gnome really needs something other than c to develop with. Python doesn’t cut it, because it’s just way too slow for many tasks. Perl is…well…Perl. The good thing about C#(and which is a PITA in Java) is that it’s trivial to leverage native c code with it. I think C# will eventually be a very important piece of the Gnome development kit because it leaps over C++ in development productivity. C++ is fine, but it has a steep learning curve and has warts of its own.
I could see MonoDevelop being “the” IDE for Gnome once it has good c/c++ support. I don’t see Anjuta or its various forks going anywhere. Kdevelop is very far ahead of Anjuta in terms of features of a modern IDE. Developers that work with VS.NET, IDEA, or Eclipse probably won’t touch it. Hopefully, someone will start working on a c++ parser for Monodevelop.
How does the Mono compiler and runtime compare to Microsoft’s, resource and performance wise?
Obviously, it’s not going going to be as fast as Microsoft’s implementation. Mono’s compiler is written in c#. By the way, Portable.NET’s compiler is written in c and is lightning fast. On my fast machine, I can compile all of Dotgnu’s(Portable.NET’s) class libraries in probably 20 seconds.
Currently the biggest problem of Mono (besides its name) is performance. If it wants to become the preferred platform it needs to provide good performance for two reasons: Competition with Java on linux and .NET on windows. Especially the second appears to me to be extremely important: If it is common sense that c# program can run on Windows and Linux equally stable, but the performance is significantly better on Windows, then it’s clear which OS to choose. And Mono’s performance is still very weak (Run e.g. scimark c#, performance is 1/3 – 1/2 of .NET 1.1). It might be unfair to critisize a 0.30 release for its performance, but they must solve this. The sooner the better.
Although Mono seems to get a lot of the headlines and has a bigger development community, DotGNU isn’t dead and does have a couple advantages over Mono.
(1) The compiler is written in c and is lightning fast.
(2) They’ve got a implementation of Windows Forms that doesn’t rely on Wine. It sits on top of X for Unixes and gdi for windows.
(3) It’s very portable. Mono is catching up on this front though with the JIT running on Sun and Macs now.
Performance issues are constantly being addressed. Of course, you want to get it right first and then tweak for performance, but if you check out the Mono mailing lists you’ll see performance improvements of orders of magnitude being found all the time. I’m sure Mono will be very fast eventually.
One of the major reasons I don’t use Java is because of its rather abysmal memory management. Some of the server applications I cache a lot of things into memory (upwards of 2-8 GB in some cases). Java is a rather big pig about memory and everything ends up being 2-4x bigger which blows budgets up rather quickly (GB DIMMs aren’t cheap).
How is .NET’s memory handling? Is everything just as bloated as Java?
before you start spreadind lies about Java, you better test it well. at job, i have a Celeron 1,7Ghz with 256 RAM – no problem with Java; app like NetBeans, JBuilder, aquafold, etc works pretty well. at home, i have a Celeron 300Mhz A (Mendocino) with 128 RAM and a hdd with U-ATA 33 – old machine, i bought it in ’99 – java is moving also pretty well, same apps (i develop in NetBeans and JBuilder).
Apps which i develop , also have decent start-up time and good response after loading – on Linux and Windows at home (dual boot).
so, .Net(Mono) don’t bother me because of MS, but no REALLY CROSSPLATFORM YET and the quality of implementation and features vs. Java; by the way, Tiger is coming
I hope Mono will not become the dominant development platform on Linux. We need diversity and there has been a great deal of diversity in the Linux world (which is good, despite people whining about the number of distros, KDE & GNOME, etc).
And I think it indeed will not. Some people still prefer native C/C++ & the Unix/Linux API. And of course there’s Java. And then there’s the “little languages league” (Ruby, Python, Perl, Tcl, etc) which make gain some strength if they unite under Parrot.
I hope Mono will not become the dominant development platform on Linux. We need diversity and there has been a great deal of diversity in the Linux world (which is good, despite people whining about the number of distros, KDE & GNOME, etc).
So you say there needs to be diversity, but don’t back it up.
Why is having two dominant desktops a good thing? The problem with having two dominant desktops is that the developer has to worry about dependency problems.
The thing is, the majority of developers don’t care about open source or some insanse ideology about code. These people care about windows because it still represents the vast majority of the desktop marketshare. So for these people, Mono does make a lot of sense because they can develop on Windows and then port over to Unixes with a minimal effort. Is it going to 100% binary? No, probably not. But that’s not the point. The point is that they can now fathom a port to Unixes.
——————-
So what does Mono bring to the table that Qt or wxWidgets does not? wxWidgets has a binding for GTK+, so Gnome developers can/should make use of it if they want to move away from their C based API.
With frameworks like wxWidgets and Qt, you get very good cross platform capability (just ported an app from Linux to Windows & OS X with minimal changes to the makefile), and you don’t get the performance issues traditionally associated with VM based languages.
Yes, I am sure, just read on kerneltrap recent article about Linus talking about C and C++. C gives you better portability and this is important for Linux’s business.
As for Linus talking about C and C++: The Kernel is of course a very special piece of software, and one has to take into account that many arguments in favour of C over C++ do not hold true in applications programming.
Second, for the portability argument. C is maybe more portable than C++, but not very much when you consider bigger projects. In large software projects, the bigger portability concerns have to do with choosing the right libraries and the right build environment. This is true with C and C++ I think. Plus, if you use C99 you gain virtually nothing in compiler independency over C++, because support for C99 is not really widespread.
“How is .NET’s memory handling? Is everything just as bloated as Java?”
If you use objects the overhead is comparable. Both use a fairly sophisticated generational garbage collector, so both carry about the same management overhead.
*But* in .NET you do not have to use heap-based objects for everything since it has value types which behave like the java primitive types and are allocated on the stack instead of on the heap. If you use value types wisely you do not have much memory overhead compared to C or C++.
IMHO value types are the real reason .NET is superior to java. Unfortunately it is difficult to explain to java developers who got used to the fact that everything except primitive types has reference semantics.
I was talking about applications that instantiate a lot of objects for data structures and would normally use up 4 GB of RAM. I’m talking in the tens of millions. Obviously small desktop applications don’t exactly fit into this category.
Every class in Java has a virtual table and synchronization primitives. In C/C++, you’d just create a struct or a non-virtual class to store data with, but you can’t do that in Java. That’s where quite a bit of the bloat comes from (the garbage collector and the fact that everything is on th heap is the other). As I understand it, C# has structs, so I thought maybe its memory management would be a little more sane than Java’s.
Don’t get me wrong. I have nothing against Java. Personally I think language wars are rather silly since it doesn’t exactly take a lot of energy to pick up another language. I just can’t use it for anything that has to manage a lot of data.
There’s nothing wrong at all with xwWindows or QT(well, if you don’t mind the licensing fees) and c++ for crossplatform development. The majority of my professional software development was done in c++ and I still don’t really like the language all that much. It’s powerful, but when you have to work with other people in it, then you tend to run into problems. People want to up the ante on the abstraction level. I’ve always said that what is nice about Java is not binary cross platformness, but the libraries. I’ll say the same thing about .NET.
Ooo. So it does support creating objects on the stack? Can you do that in C# or is it just a feature of .NET itself that can’t be directly controlled?
My only open question left then is the garbage collector and how much overhead per object it creates.
“In C/C++, you’d just create a struct or a non-virtual class to store data with, but you can’t do that in Java.”
Value Types do not have virtual methods and inheritance, so they have no virtual method table. They are perfect to store data. For example a Point in java is a full object with all the baggage that brings. In C# you would just define it as a struct and have no overhead at all.
From the article:
A great deal of serious end-user application coding on Linux still goes on in C or C++. Using Mono vastly reduces the amount of boilerplate code that must be written, along with the opportunity for bugs to creep in.
Such statements are almost always pure marketing speech. Every time I hear them, they sort of disqualify the speaker for me.
There are three grave problems with statements in this form in general.
The first problem is, on one side we have a development platform or framework (here Mono/.Net), and on the other side we have languages (here C and C++).
You can not compare a framework with a language.
The second problem is, that this statements oppose one language with two on the other side (A versus B and C). Thus they try to give the (false) impression that the arguments in favour of language A versus language B, also apply to language A versus language C.
Trying to fool the recipient is not a reasonable way of making your argument.
And the third problem is of course, that no evidence is given that the statement is true.
But leaving aspects of the rhetoric aside, I think this statement in particular is untrue. I see no way how C# reduces the amount of boilerplate code to be written. The support in C++ for generic programming is still stronger than that in C# in my opinion. And it will likely even be extended with the next big revision of the standard.
…provided there was a working .NET implementation on the platform, and I LOVE Windows. .NET, not java, is the right platform for Windows development. WIndows is 95% of the market. If I could target Linux using the SAME technologies (even if not the exact same API), that would be absolutely spectacular, and make Linux worth my time.
Anyone still remember one of the main reasons why GNOME was founded? Back in the day when the main rival was still named “Kool Desktop Environment”?
If my memory serves me, GNOME gathered a rather big following because of the fact that a lot of developers were avoiding programming C++ at all costs, preferring to run ol’ trusted C.
Granted, another reason for this issue was the ease of having bindings for scripting languages. Almost nothing is able to interface to C++ on a API level, as this forces a whole object model on you. Usually some rather big abstractions have to be used here, e.g. CORBA.
Now, if all your scripting languages use the .NET runtime, boilerplate _does_ shrink. You just need to port your interpreters. Quite some effort, but similar things have been done (Jython et al).
Personally, I’m rather reluctant when it comes to VM’s. Especially in the open source area, I don’t really see the advantages… But hey, maybe the great Microsoftian base classes will turn me from my conservative path… (As long as I don’t have to write Hungarian MFC any more…)
I always thought that GNOME came about as a reaction to KDE using Qt, which at the time wasn’t GPL compatible.
It’s hard to boil something down to a single reason. The license problems were an issue, too, but if that would’ve been the only one, GNOME would’ve been written in C++, too.
If I remember correctly, a lot of people didn’t like Qt’s MOC.
Although I’ve seen a steady decrease over the last few years, Unix is still the last refuge of C. While a lot of new programmers never get their hands that dirty, most old hands just have loads of experience in Bell Labs little beast…
And — all idiosyncracies aside — it’s still a good baseline to interface to. Nothing too esoteric, no forced object model, most languages have a good FFI to it, too.
If ikvm (java vm for mono) reaches maturity I would certainly go mono. Until then I’ll stick with Python and/or c.
Anyone still remember one of the main reasons why GNOME was founded? Back in the day when the main rival was still named “Kool Desktop Environment”?
>>>>>>>>>>>>
Yes I remember well the very first mails searching for new developers. It was the license of Qt that was the reason (Qt wasn’t free software then). The language was not the reason to start this project back then.
Main reason was to base everything entirely on free software:
>From: Miguel de Icaza <[email protected]>
>Newsgroups: comp.os.linux.announce
>Subject: The GNOME Desktop project
>Date: Sun, 17 Aug 1997 13:43:42 GMT
>Organization: none
>Lines: 103
>Approved: [email protected] (Lars Wirzenius)
>Message-ID: <[email protected]>
The GNOME Desktop project
(GNU Network Object Model Environment)
http://bananoid.nuclecu.unam.mx/gnome
* Goals
We want to develop a free and complete set of user friendly
applications and desktop tools, similar to CDE and KDE but based
entirely on free software:
– We want the applications to have a common look and feel, and
to share as many visual elements and UI concepts as possible.
– We want to use the GTK toolkit as our toolkit for writing
the applications.
The GTK toolkit (http://www.cs.umn.edu/~amundson/gtk and
http://levien.com/~slow/gtk/) is the toolkit written by
Peter Mattis, Spencer Kimball, Josh MacDonald, for the GNU
Image Manipulation Program (GIMP) project
(http://scam.xcf.berkeley.edu/~gimp).
– We want to encourage people to contribute code and to test
the code, so that the software will compile out of the box
by using GNU’s tools for automatic source configuration.
– We plan to export the GTK API through a procedural database
(which will in fact be an object database) to allow easy
integration with scripting languages and modules written in
other languages.
– We plan to use GTK/Scheme bindings for coding small
utilities and applications. When these bindings are more
mature, it should be possible to write complete applications
in Scheme.
* Some common questions regarding the project
Why don’t you just use/contribute to KDE?
KDE is a nice project; they have good hackers working on it and
they have done a very good job. Unfortunately, they selected the
non-free Qt toolkit as the foundation for the project, which poses
legal problems for those desiring to redistribute the software.
Why not write a free Qt replacement instead?
The KDE project -in its current form- has about 89,000 lines of
code, on the other hand, the source code for the Qt library has
about 91,000 lines.
Qt also forces the programmer to write his code in C++ or Python.
Gtk can be used in C, Scheme, Python, C++, Objective-C and Perl.
Also, we believe that KDE has some design problems (they have lots
of good ideas though) that we plan to fix.
Under what license does the GNOME fall?
As most GNU software, GNOME application code will be released
under the GNU GPL. GNOME specific libraries will be released
under the terms of the GNU LGPL.
Will you rewrite everything from scratch?
No. We will try to reuse the existing code for GNU programs as
much as possible, while adhering to the guidelines of the project.
Putting nice and consistent user interfaces over all-time
favorites will be one of the projects.
We plan on reusing code from KDE as well.
* Joining the GNOME mailing list:
We have created a mailing list for people interested in discussing
the development of this project. To subscribe, use this command:
echo ‘subscribe gnome’ | mail [email protected]
That’ll go well until Linux etc have locked themselves into using their .Net implemtnations and then Microsoft finding a way to screw them over. Sounds like conspiracy crap? Maybe so, but given that MS has an interest to make life difficult for other operating systems I’d be careful.
“Ooo. So it does support creating objects on the stack? Can you do that in C# or is it just a feature of .NET itself that can’t be directly controlled?”
When you create a new data structure, you have to decide wether you want a normal object with reference semantics and virtual methods or a value type with value semantics which is allocated on the stack and does not support inheritance.
C# does support this. If you write “struct Complex { double re,im; }” you get a value type that does not place a burden on the GC and has no memory overhead. It will consume exactly 16 bytes.
“My only open question left then is the garbage collector and how much overhead per object it creates.”
That is implementation dependent. But I think a generational garbage collector will be hard to do with less than two words (8 byte on a 32bit machine) overhead. This overhead is totally acceptable for large and medium objects, and for small container objects you use structs anyway.
“How does the Mono compiler and runtime compare to Microsoft’s, resource and performance wise?”
Obviously, it’s not going going to be as fast as Microsoft’s implementation. Mono’s compiler is written in c#. By the way, Portable.NET’s compiler is written in c and is lightning fast. On my fast machine, I can compile all of Dotgnu’s(Portable.NET’s) class libraries in probably 20 seconds.
But then again, does it really matter about the compile speed? The most important part is the JIT. If they can ultra tune the JIT and really push the button then any negative downsides of having a non-native compiler is made moot.
Regarding your previous most, you are 100% correct. Apart form the few slashdoters and anti-Microsoft, you wouldn’t believe the number of people I have come across that are excited about Mono and the possibilities it could mean. The ability to leverage their current team of ASP/VB/C# programmers whilst being able to run it on servers ranging from Solaris x86/SPARC to Linux x86 and MacOS PowerPC.
They’re able to get all the benefits of UNIX and able to utilise their existing team of developers. It is a win-win situation for the UNIX world. If it means there are MORE unix servers on the internet, does it really matter if they’re serving JSP or aspx pages?
I talked to one guy who was exatic that he will now be able to migrate his VB software to vb.net and be leverage the features in mono. What mono is doing is making it even EASIER to migrate to *NIX, hence, development should be encouraged.
Microsoft isn’t going to let Mono survive if it means Linux kills windows. So, until Miguel gets more than a verbal promise from 1 guy, you’d better look elsewhere.
it’s not only the boilerplate code that decreases the productivity, the whole plattform is designed for productivity and ease of use while C++ is a pain in the a** and one of the worst language in that respect. There is wide range of things that make up programming productivity and VisualStudio .NET introduced significant improvements. VB is by the way the most productive way writing code and I don’t tell this only because Microsoft advertises this on their VB website. It is the most productive language because of the easy to read syntax, the syntax is so expressive that unique feature are possible that are technically not possible with C syntax languages. I’m talking about background compilation to mark errors while typing, auto intent, auto complete and all the other unique VB code editor features. Honestly I think C#, Delphi and maybe some others can be almost as productive as VB but if VB is only 0.1 % more productive it’s still number one. If you don’t try it yourself you will never understand…
Why does he have to kill C to justify Mono ?
BTW, C hasn’t been a language for business application development for a while. For that kind of development there has been better alternatives. Even if Mono did not exist we would be just fine.
This quote is out of context. He just said that C is dead for him except for the JIT. That just means that he does no longer want to write GUI applications in C.
And I can understand him. Writing GUI applications in a low level language such as C has to be the biggest waste of developer time there is.
I’m coding VB at the moment (well I should be anyway) so lets look:
easy to read syntax, true it is very english like if a bit verbose.
the syntax is so expressive that unique feature are possible that are technically not possible with C syntax languages. Not sure about that one, where are the add and assign operators etc.
I’m talking about background compilation to mark errors while typing, any language designed to be interpreted can do that it’s just getting an IDE that can do it.
auto intent, true but any haft decent text editor has this one so not VB specific.
auto complete, Interdev intillisence also works for c#, X Code auto completes, Jbuilder does, …
and all the other unique VB code editor features such as a bad object model, poor seperation of code and UI, tendency towards .dll hell etc. C++ isn’t my my most liked language but VB isn’t a pannecia either. Hopefully C# will be better.
It is the most productive language because of the easy to read syntax,
Easy to read varies from person to person. Any syntax can be made easy to read if you understand it in the first place and it is clearly written. Similarly, VB syntax can be made hard to read just as easily. That being said, only C# and .Net really pulled me away from using VB for most of my work.
the syntax is so expressive that unique feature are possible that are technically not possible with C syntax languages. I’m talking about background compilation to mark errors while typing,
Background compilation depends on the language being designed as an interpreted language. Error checking doesn’t even require background compilation, as it can simply run through looking for common errors and checking references. Background compilation simply makes the task easier as these are the types of things compilers have to do to function properly.
auto intent,
Auto-indent was a feature of most of Microsoft’s editors as early as version 5, and probably earlier than that. VS.Net 2002 and 2003 auto-indent VB, C#, C++, J#, HTML, and probably any other language supported. If you actually meant to say auto intent, well, I don’t know what you are talking about.
auto complete
Also done in C# and C++. I’ve currently got the editor open with a solution containing projects in both C# and C++, I could just as easily add some VB if there was any reason to use some of my VB code in it, and the editor will behave in a similar fashion for all 3 languages. This was one of the major points in the development of the VS.Net and VS.Net 2003 IDEs, that every language would benefit from the same IDE/editor features.
and all the other unique VB code editor features.
The code editor for VB doesn’t really have any unique features. The best claim they ever had was IntelliSense, and that works with numerous languages now, and has been imitated in other code editors (if it wasn’t already present). Syntax colouring was something I had on emacs on Linux back in the mid-90s when I was in my first year of college. Most of the “unique” features of the VB IDE were not part of the code editor, and are now available for at least one other language, that being C#, and are being expanded into C++ and J# through the 2003 and Whidbey releases of Visual Studio.
Actually, Mono/C#/.NET — I can see why it’s of particular interest to software houses. They can reuse their Windows-fed programmers to develop for non-Windows platforms. There’s lots of cost savings there, and a greater opportunity to use the right tool for the job (be it UNIX, Linux, or Windows), which is something everyone wants.
However, the progress on Mono is more intriguing in that it’s reasonable to surmise that it may replace Microsoft’s .Net as the reference .Net imeplementation. If you are going to code, you code to the Mono standard rather than MS.Net.
Why? Mono’s transparent (you can see what it’s doing underneath), theirs is a much higher incentive for clean and careful coding and well-thought out separation of parts of the implementation (it’s designed to be ported to various platforms and relatively easy to read), and, frankly, the Mono team is far more productive than the MS .Net development team. Microsoft’s got several years head-start and quite a bit of resources deveoted to .Net, yet Mono is catching up quite rapidly.
Dream on.
Why are MS Windows developers going to target the sub-standards of Mono when they can use the full blown VS.Net IDE, IIS, SQL Server, Win2003 server, MSDN, etc. Cost savings ? Right.
Those developers just want to deploy on Linux as easy as they can. Well. Without MS direct support of Linux I don’t see that happening anytime soon. But dream on
Just wondering what is the difference between dotGNU and Mono? Which is more complete, fastest compiler, etc.
Background compilation depends on the language being designed as an interpreted language.
That’s not really true. I know several IDEs that compile native code on-the-fly. You don’t need an interpreter, just a fast incremental compiler, and a code-generation engine flexible enough to have “fast compile, low optimization” and “slow compile, high optimization” modes.
IIRC, VS.NET *does* feature somewhat-working background compilation for C#?
wonderful solution where the only problem was microsoft didn’t own the technology. Nice to wrest it away to an open platform but I cannot think of a bigger waste of time or energy since it’s just another crappy script environment without a linker and a bloated runtime, the evolution of visual basic, and now it’s been ported, whoopeee, hold me back from that one.
I know Visual C# has some features Visual VB .NET has like auto intent and auto complete but it’s a joke compared to VB .NET. VB .NET forces you how your code looks because it will format and complete the code while in C# you are free to set your braces, spaces and semicolons where ever you want, you are forced to do all this by hand and completion is a lot poorer, like no completion for enums and many other things. The syntax is as short as possibly but for me a lot harder than VB because the code parser used for the comfort features has similar problems with the syntax like my brain has. After all it depends on personal favor, for me C syntax is one of the worst of all syntaxes while VB is my favorite even with all the shortcomings VB .NEt has.
it’s not only the boilerplate code that decreases the productivity, the whole plattform is designed for productivity and ease of use while C++ is a pain in the a** and one of the worst language in that respect.
That is in parts the thing I wanted to argue. C++ is a language. So it is unreasonable to discuss it as a platform. Others have stated objections to your post, which I am not going to repeat here.
But I still like to reject the notion that .NET was “designed for productivity”. That statement is almost meaningless. Almost all languages are designed for productivity of some sort. To give one example, PostScript was designed to model printing output productively. It is always a matter of how you narrow down the meaning of productivity. If I wanted to shed a bright light on C++, and I want to do that, I could say that C++ was designed to make it feasible to design and use good productivity-enhancing libraries. In this way C++ is a “meta productivity enabler”. And C++ is quite a good tool for systems-programming.
And I personally can not see much features of C# which enhance productivity with respect to C++. Maybe something like “property members” which spare you some typing. But non-excessive typing does not cost you much. Maybe GC by default, but you can plug that into C++ implementations too.
” Still I prefer Java, though ’cause C# lacks good crossplatform GUI. I mean Windows.forms sucks on anything except Windows, and GTK# just sucks everywhere (but especially on Windows).”
Does anyone else see the irony in this statement? Hint: Substitute GTK# with what he prefers to program with.
That’s not really true. I know several IDEs that compile native code on-the-fly. You don’t need an interpreter, just a fast incremental compiler, and a code-generation engine flexible enough to have “fast compile, low optimization” and “slow compile, high optimization” modes.
Seems logical enough to me. So long as that is all true, it strengthens the point, though part of my argument was incorrect.
IIRC, VS.NET *does* feature somewhat-working background compilation for C#?
It’s possible that it does, but I haven’t found any information in the documentation that tells me whether or not this is how VS.Net does it’s error checking on C# (since the errors spit out are more or less the same as compiler errors, though a full compile may find additional errors). For that matter, it doesn’t really say anything about VB.Net, either, in terms of compiling on-the-fly. On the other hand, you can do some pretty major damage to a C++ program before it will complain until you hit the compiler.
No way, no how. Let’s make a Microsoft method OUR default method on Linux, shall we? Good grief…
Time to make FreeBSD Enterprise ready…
M$ is actuall SCO and there lot of signs that .Net is completely propietory. M$ is just enticing developers to look at Mono but they want you to use .Net in windoze.
So mono is just a cheese in .Net mouse trap.
I know Visual C# has some features Visual VB .NET has like auto intent and auto complete but it’s a joke compared to VB .NET.
The point is that those are not language features, they are features of the code editor, and, furthermore, are applied to other languages in the same editor.
VB .NET forces you how your code looks because it will format and complete the code while in C# you are free to set your braces, spaces and semicolons where ever you want, you are forced to do all this by hand and completion is a lot poorer, like no completion for enums and many other things.
You are free to do these things by hand because it doesn’t matter where you put them, as long as you don’t mangle your code. In general, it will align your braces, especially in if/else statements, but it doesn’t enforce particular coding practices on you. VB, on the other hand, can be configured to act the same way, but generally is a lot harder to follow if you don’t indent your code, therefore by default it prevents you from doing something extremely harmful to the readability of your code. Additionally, placing semicolons for you is very hard to determine, this isn’t VB, a line of code doesn’t complete just because you hit enter, and you don’t need special line wrap characters to make your code possible to read without scrolling sideways.
The syntax is as short as possibly but for me a lot harder than VB because the code parser used for the comfort features has similar problems with the syntax like my brain has. After all it depends on personal favor, for me C syntax is one of the worst of all syntaxes while VB is my favorite even with all the shortcomings VB .NEt has.
All of this is simply personal choice. I prefer braces because it organizes the code properly, and semicolons for much the same reason.
Parrot (the new JIT compiler/vm for perl 6, python, ruby, …) seems poised to become the dominant platform for development on Unix. From what I understand, it has all the important functionality of .net and mono plus the ability to compile to C to generate standalone applications that aren’t dependent on the framework. It’s also fully open source and is build on a long history of excellent Unix support, power and flexibility. Parrot doesn’t have a lot of mindshare right now but when I look around it seems like a better platform than Mono.
Can Microsoft pull the rug out from under Mono? Microsoft submitted parts of the .Net Framework to a standards body. Just like Netscape did with Javascript. Would this mean that AOL could hinder Microsoft’s use of JScript?
If Microsoft created a new version of .Net that made previous versions (1.1, 1.0) incompatible, wouldn’t this also hurt Windows developers as well as Mono developers?
If Microsoft did split the .Net developer community, wouldn’t this just mean that Mono applications couldn’t be used on Windows platforms? Mono applications could still be used on Linux. How easy would it be to change a Mono source file to compile on the Windows platform? How easy is it to compile a C++ source file on Linux then make the same file compile on Windows?
Considering Microsoft is using .Net heavily in Longhorn, I don’t think Microsoft would want to annoy developers by changing .Net anytime soon.
No.
Next question?
Parrot (the new JIT compiler/vm for perl 6, python, ruby, …) seems poised to become the dominant platform for development on Unix
It can’t be poised to become dominant if it’s vaporware. Parrot is years off for production work.
It’s also fully open source…
Mono is also fully opensource.
[/i]…and is build on a long history of excellent Unix support, power and flexibility.[/i]
Just meaningless jibberish that has nothing to do with the viability of Parrot.
Parrot doesn’t have a lot of mindshare right now but when I look around it seems like a better platform than Mono.
You say “from what you understand” when talking about Parrot so obviously you don’t know much about it, but then you say it seems to be a better platform than Mono even though its years off from being able to do able to development on.
By the way, I have a new VM that I’m designing call Parakeet that is poised to become the dominant Unix development platform….once I write a couple lines of code for it.
There’s 0% chance that Microsoft can pull the rug out of Mono because then they pull the rug out of their own developers too. Even if some future version of .NET is radically different from current incarnations then the old runtime and assemblies will still be there. The whole reason for Windows popularity has been backward compatiblity.
Guess what. KDE won’t become the preferred platform for Linux development.
“The point is that those are not language features, they are features of the code editor, and, furthermore, are applied to other languages in the same editor.”
the problem and the reason why it’s not possible with C# is in many cases the C syntax is not expressive enough to let the compiler and the code editor understand what’s wrong, what to suggest, what to format, what to indent etc. and therefor it cannot applied to C#. There are only curly braces while the VB code parser can look for things like End If, End Function, End Sub, End While, End Class, End Namespace, End Structure etc. When I learned C# as the first C syntax language the first time after using VB .NET for a very long time I was more than disappointed by the C# code editor. After a few months and projects I got used to it but I still don’t feel as easy VB
“The point is that those are not language features, they are features of the code editor, and, furthermore, are applied to other languages in the same editor.”
the problem and the reason why it’s not possible with C# is in many cases the C syntax is not expressive enough to let the compiler and the code editor understand what’s wrong, what to suggest, what to format, what to indent etc.
The terminology you use is plain wrong. In order for the code editor to make good suggestions there must be syntactic redundancy, and redundancy is the opposite of expressiveness.
the problem and the reason why it’s not possible with C# is in many cases the C syntax is not expressive enough to let the compiler and the code editor understand what’s wrong, what to suggest, what to format, what to indent etc. and therefor it cannot applied to C#. There are only curly braces while the VB code parser can look for things like End If, End Function, End Sub, End While, End Class, End Namespace, End Structure etc. When I learned C# as the first C syntax language the first time after using VB .NET for a very long time I was more than disappointed by the C# code editor. After a few months and projects I got used to it but I still don’t feel as easy VB
As a previous response (By El Pseudonymo) stated, what you’re looking at is redundant syntax. In VB you have just listed 7 bits of code that do the same thing to different structures. C# recognizes braces properly, it simply can’t do much more than give you hints that you may be missing braces if you don’t close them all. Additionally, you don’t have to place braces in many cases. On the other hand, the editor does a fairly good job of indenting braces properly to match opening braces (and conveniently it uses a style of indentation that I have used myself for 6 years; nice for me, not always for others, and VC++ uses a different style).
On the other hand, it doesn’t sound like you have much experience with C-style syntax, and I’ve seen similar arguments from long-time VB coders. I doubt I could really convince you otherwise, but your points are still more matters of preference than failures of the editor or the language.
I don’t think that MS will try to get royalties from mono, it would look bad. what they will do is enhance the proprietary parts of .net so much that most of the cool .net features will only be available using windows servers and clients. Mono will remain like a basic implementation which will never offer the same functionality and integrate well in windows enviroments.
I’m impressed… Looks like a MUCH better alternative to the venerial EMACS! 🙂
that could happen now, except the taking ownership, they could NEVER take ownership of your property.
Microsoft can screw their customers as they want. thats how they made so much money.
plus, if you dont use windows products at all, you are not subject to their audits
my company doesnt.
Why does everybody think C++ is so ‘hard’, did the colective IQ drop sometime in the recent past.
C++ is a fantastic tool for complex projects which need to run fast, in combination with the boost library its a pretty amazing tool.
Given, you need a certian level of skill, but it’s not a black art.
For higher level stuff, I would use Python.
M$ will destroy Mono if it ever becomes viable and Java is just ugly and still too god dammed slow!
C++ isn’t really that “hard”, but there’s lots of gotchas and historically you’ve had to dip into c to do OS specific stuff – the libraries haven’t been so hot. The other problem I’ve found out with using C++ for many years in a professional setting with other developers is that people tend to tailor C++ style to their own needs. This can be somewhat mitigated by group standards, but you still can’t eliminate it all. Straight C doesn’t have such problems because you’ve mostly just got structures, functions, and some macros. With C++ you got classes, templates, global functions, macros, weird-ass object hierarchies, people not knowing how to do OO properly.
By the way, when you say M$ you just look like a slashdweeb and lose any credibility you might have had. And since you’re not an insider in Microsoft you are clueless to what Microsoft’s intentions are regarding Mono.
Oh, and Python is just way too slow for many tasks.
When you say Java is to ungly, do you mean the language or the gui’s? I’d agree that the gui’s can be ugly, but the language is definitely not. I’ve heard many people say that C# is uglier as a language than java.
Re Java, I meant both, it’s a triumph of marketing over common sence IMHO.
Yes Python is slow, that why we have C++ .
On my computer I have the Eclipse IDE for Java etc and the Eric Python IDE (Python ontop of QT).
Starting Eclipse is like rasing the Titanic, the Eric IDE just kills it for usability and speed.
Oh, and Roy personal attacks over the internet give you tremendous credibility.
I’ve tried to learn C++ several times, but while trying to understand the OO concepts, kept getting lost in the semantics. I find C# to be much more straight-forward in this regard. I’m sure that the layout of C++ is the way it is for specific reasons, but C# just seems much more thought out, IMHO .. boxing/unboxing not withstanding
After I’ve gotten a firm grasp of C# (I’m up to interfaces at the moment), I plan to try and tackle C++ again, this time having a much better understanding of OOP before going in.
The only reason someone could say that C# is uglier than Java is because C# has more features than Java….not as many now that Sun has woken up to some badly needed features that Java has been lacking for many years. It’s funny that Sun was defending not having variable length argument for so many years and now it’s part of the language. Finally, a proper printf for Java.
.NET is the future, im sure of it.
Right now I making proyect with C# and the performance is very good.
I’ve tried mono also, ain’t bad, is gettin mature, I never saw a better way for programing in Linux.
I’m curious as to why you have a problem with boxing and unboxing? All that boxing does is convert value types to object references. You might want to take a look at pre-1.5 Java to see why it’s a good thing.
As far as learning c++ goes, learning c# first can’t hurt, but I’ll go against the grain of conventional thought and would advocate learning c before learning c++. The reason I give is because C is a much simpler language than c++, and you’re not as likely to get overwhelmed with all of the c++ features when you make the transition. Pointers tend to be tricky for c++ newbies.
All our client apps that were written in swing can now run in linux with zero code change.
if you think Java swing is not there check these out.
http://www.jetbrains.com/idea/index.html
http://www.thinkfree.com/products/pd_write20.jsp
http://jgoodies.com/
Have to disagree with you there too Roy…
Modern C++ is a completly different frame of mind to C.
People trying to write C++ from a C point of view is exactly what leads to bad C++ code, I have seen this first hand.
With the STL one very rarely has to deal with low level C style memory management.
Obvously sometimes you have to goto that level (e.g when dealing with platform API’s), but it should be a last resort.
The point I try to make when I advocate learning C first over starting off with templates and C++ is not to learn C for the sake of learning C, but to learn the syntax that is common to both languages without getting bogged down on all the C++ details. The thing is, functions and aggregation of data is something that is common to both C++ and C. Now, it’s true that if you get someone that has been hacking straight C for yearss they might have a hard time switching to C++, but that’s not the type of person I’m referring to. Actually, believe it or not, I’ve seen it go in the other direction too. I’ve seen people that know C++ pretty well, but once they get down in the trenches of straight C they start getting confused even though C++ is almost a superset of C.
#1 The metal laf in Java is ugly. Just check out JGoodies to see some very nice looking UI’s. I hope this framework is adopted by all.
#2 Java *WAS* slow. JDK 1.5 really rocks speed wise.
Bob: Most certainly those linked app’s look nice. I will have to try the new JDK, currently on my computer I have 1.4.2, and all the Java apps I have tried have been slow (running and starting). When I said I thought Java was ugly, I meant the syntax (verbose).
Roy: Your points are valid, but now C++ is almost becoming a ‘meta’ language. Sure they share the nuts and bolts, but the large scale structures in C++ have evolved far beyond C. I feel it is important to get grip on the higher level things first, such as std::string vs char*, as these are the constructs which allow properly trained C++ developers to be IMHO just as productive in development of none GUI apps as Java/C# developers.
It’s all about using the right tool for the right job.
based on how purdy they are. Going by “looks” of a language, COBOL is an anomaly then (being by far and away the most widely used business language ever), and running a distant second in biz use to that is legacy VB (beauty may be skin deep, but ugly goes straight to the bone…not only is VB syntactically a disaster, under the hood it’s even worse). Languages are only as good as the platform they run on. ANSI C++ is quite clean once you wrap your head around it, however VC++ on Win32 is a completely different animal, thus the advent of .Net. I suspect that *nix faces a similar paradigm with the underlying API’s, why not try to wrap that all up in a clean easy to use framework? Java itself is a platform, Sun dropped the ball on naming the language and the platform the same thing. The java language is quite nice, very terse and explicite syntax (much like C#), however the Java platform is being used in cases where it was never initially intended to be used. Try making a native function call in Java, it’s a mess. As far as C++ goes, at least in the Windows world, there really is simply no reason to learn it anymore. Managed code runs almost as fast as C++, and it’s expected in the near future to actually outperform C++…I hope the same holds true for whatever framework ultimately makes it’s presence on *nix. If you really want to generalize, the .Net framework is really just an idea…to tie up all the messy underlying system API’s into a nice easy to use package without having to worry about the messy details of memory management, pointer cleanup, etc. IMHO, any OS could use a similar idea.
The company I work for has a huge legacy codebase of spagetti VB code. For exactly the reason you state, good access to system tools, quick UI dev. They are a telco, and the ironic thing is that they are now having problems sealing deals with major players simply because of the subtle shifting to Linux in the server market.
Hindsite is always 20/20 of course, yes platform specific tools will allow you to go places very quickly… and then stay there.
Just downloaded jdk1.5, it still loads like a sack of potatoes falling down the stairs, but the resulting programs look good.
Only time will tell I guess…
Just want to make some things known about some comments.
Many people suggest that Microsoft could develop much better .net extensions leaving Mono in the dust.
You see the great thing is that the open source community can do the same. Nice isn’t it? I don’t understand this thinking where the people behind mono will just stagnate. You must not understand this project very well if you don’t see that mono is going well beyond just implementing Microsoft’s stuff. In fact I would guess that they chose the wine way of doing windows.forms simply because it’s not their top priority. Or in other words it’s provided for backwards compatibility but if you are a linux developer you are going to stick with their tried and true linux technologies (GTK#, etc.)
And the great thing about the open source version is you can expect them to be cross platform as well (eventually).
So don’t make these dumb comments. Sure Microsoft has every freedom to try to add their own stuff but so does everyone else. If you’re going to develop a linux app (which is what this is about) you won’t be using windows.forms and the other windows stuff, you’ll be using .net with linux libraries.
*it’s provided for backwards compatibility*
Meant to say it’s provided for windows .net compatibility
I really don’t know if this entire topic is not being blown out of proportion. I mean no matter what happens Java will still be big (IBM and Sun will make sure of that), as well as the other traditional languages.
.Net will be a nice option to have and a great way to lure windows programmers though (I guess if it lures enough then it will certainly the development platform of choice).
As far as C++ goes, at least in the Windows world, there really is simply no reason to learn it anymore. Managed code runs almost as fast as C++, and it’s expected in the near future to actually outperform C++…
There is “Managed” C++ too. Also, Speed is not everything. But it is not true that “Mangaged” code can outperform native compiled code. In the end, the machine can only execute native code. So with Managed code you have to compile to native code + you have the verifying of the program code. This will always take more time than simply compiling to native code.
*wrong*
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dn…
there are dozens of other references. C++ as a business language is all but dead on windows (except in very specialized cases, mainly those dealing w/ interop).
*wrong*
What exactly do you think is wrong?
That Mangaged C++ exists? In a Product FAQ about Visual C++ at Microsofts site there is stated “The /clr compiler option enables the use of Managed Extensions for C++ and creates an output file that will require the .NET Framework common language runtime at run time.”
So I think Managed C++ exists.
That speed is not everything? Okay, that is only my personal opinion.
Or that “managed” code can not outperform native code? I think my reasoning is clear. The overhead of an additional interpretative step in program execution can not get below zero. I think this is a clear fact.
I’m not so sure about that. See: http://swpat.ffii.org/players/microsoft/index.en.html the sources are a bit out of current date, though.
Excuse me, that should have been http://swpat.ffii.org/patents/effects/cifs/index.en.html
Actually we should say NO to EITHER proprietary system Java or .NET under Linux.
If there is really a pressing need for managed (actually meaning interpreted) software over native code software under Linux than what we should be doing is making PYTHON a complete language, (with a do while type loop and a switch case statement which it currently lacks) and with wxPython and wxWidgets (which use containers or “sizers” for GUI development much like Java and .NET do) this could form a fully OPEN SOURCE answer to the problem of managed software under linux that could TRUELY go cross platform as well because of its open source nature.
Actually I’m not completely anti proprietary. My first post here suggested that Troll Tech adopt an inexpensive license for QT use by “shareware” developers under Linux and “shareware” friendliness in licensing is one of the reasons I promote WxWidgets now. “I believe that the software companies of a Linux future will be coming from the small proprietary “shareware” and open source “donationware” companies that will sprout under Linux today as we get more of a “free speach” and less of a “free beer” attitude. (Hint to shareware and donationware developers, GAMES usually lead the way to this change in attitude.)
However I DO STRONGLY insist on FOSS based on FOSS ONLY for OS and platform level software so that it cannot fall under the control of a single “multinational” corporation such as Microsoft or Sun Microsystems. This is why I say we should work to make Python with WxWidgets a more complete language and the managed software system for Linux and NO to Java and .NET IN ANY FORM including MONO.