“The combination of Mono, Gtk#, C#, Glade, Glade# and Monodevelop will get you knocking out desktop and Web apps like a pro in no time. The best part is that Gtk# is available on both Windows and Linux, so it’s pretty easy to make a cross-platform application that uses the .Net framework on Windows, and Mono on Linux.” Read more here.
Did MonoDevelop ever its kinks worked out? I tried it on at least 3 different distros, all built from source, and everytime, inevitably, it would lock up the desktop until I killed it from a virtual console.
Hell, I don’t even know if its MonoDevelop’s problems. It actually seemed to be somewhat related to Monodoc, but it could’ve been gtk# (most likely) or something else with its myriad of dependencies.
You should probably specify the version(s) you used, otherwise you’re just going to receive a bunch of “it works fine for me” comments.
I once had a problem with monodevelop in conjunction with xfwm4 for example, but nothing that resembled “locking” the desktop. For me the biggest kink in the program is finding a compelling reason to use it.
Note that MS codes Visual Studio in C++ and COM. I just can’t believe C# is the right tool for the right job in an IDE.
Care to explain why it wouldn’t be the right tool for the job?
Well, your assumption that Microsoft does not use C# in Visual Studio is incorrect. Visual Studio contains 7.5 million lines of code (http://blogs.msdn.com/danielfe/archive/2005/12/16/504847.aspx) according to Dan Fernandez, one of Visual Studio product managers).
Its true that it is not a 100% managed application, but this is the norm for most older software. Its only new software that is written using managed languages. There is no point in throwing existing working and tested code just for the sake of being a managed language.
Hosting the CLR or Mono runtimes in your application is just another tool to help developers get the most out of their existing work.
Miguel.
Well, I had read that VS2005 was basically a C++ product and, being a user, I still believe it because the responsiveness feels more C++ than C#. But I read your link and here’s a quote from the blogger
——————-
“For those of you that refuse to believe, here’s an estimate of the lines of managed code in Microsoft applications that I got permission to blog about:
* Visual Studio 2005: 7.5 million lines
——————-
Huh? 7.5 MILLION lines of c# code in VS? I don’t want to seem obtuse – but I just don’t believe it. Doesn’t pass my bullshit meter.
By the way, I’m a c# programmer and support mono’s efforts, but simply think that there are more suitable languages for apps like IDE’s and Text Editors than
C#.
Huh? 7.5 MILLION lines of c# code in VS? I don’t want to seem obtuse – but I just don’t believe it. Doesn’t pass my bullshit meter.
Doesn’t pass mine either. It sounds like they’ve included absolutely any managed code that is bolted on to Visual Studio in the form of add-ons and libraries (the SDK, framework and the runtime) and said “Look, Visual Studio has C# code in it!”. We all know that’s not true. Visual Studio is not written with C# or with .Net.
There we go again – the Mono project and Mono people trying to back up untrue Microsoft bullshit.
I used the “.NET or Not” tool and Visual Studio 8 contains 487 managed libraries out of 1,495 files. And 11 programs included with .NET host the CLR.
Those 487 managed libraries make up 179 megabytes of space. A quick extrapolation from Mono’s own libraries puts the code that shipped in my version of Visual Studio at 2 million lines of code.
Am using the small edition of Visual Studio here: not enterprise nor architect, so the only debatable piece is whether enterprise and architecture features make up for another 5.5 million lines of code.
Miguel.
You could give the Mono Live CD a try:
http://www.mono-live.com/
it’s pretty easy to make a cross-platform application
like java does it since many years
And C since the beginning of Earth.
There’s no point in talking about Java here, unless you’re interested in participating in a flamewar.
I didn’t realize that I could run C binaries on multiple platforms. Interesting…
I think the point that collinm was making takes the form of a question. Why does Mono exist? Is it a yardstick or example when discussing the performance of inferior VMs? Is it to bolster MS against a competing technology? Does it contain anything new or compelling? What possible reason justifies the existance of Mono?
What possible reason justifies the existance of Mono?
What possible reason justifies the existance of Java?
Who said you can run C binaries on multiple platforms?
To answer your other question, what justifies the existence of Mono is that some people wanted to write Mono. It’s very simple, I’m surprised you had to ask.
The fact that a lot of developers are interested in Mono and a lot of developers are using Mono is also something for you to think about. Now, back on topic.
Binaries are not *that* important if code is cross-compilable. But it is unfortunate that with Linux you don’t have binary compatibility even on a single platform! It would indeed be nice if we Linux users had click-and-forget software installation, just as Win users do.
It would be great if it were possible to write a program and put it in a web page for everybody to download and use with no need to find people to build 20 subtly different packages for just the past four versions of Redhat, Suse, Ubuntu, Debian and Mandrake, leaving everybody else to the pain of building their own package.
Will Mono achieve this, or will we reach the hilarious situation where a Mono-GTK package runs on a single version of Linux plus on every version of Windows?
It would indeed be nice if we Linux users had click-and-forget software installation, just as Win users do.
We already have – we just don’t like it, when we meet it.
It’s not a problem downloading a distro-independent binary package, unpack it and run it from a folder in /home/[user] or from a folder on the desktop or whatever.
We also have a Mac-inspired approach. Few use that as well. We have autopackage. Few use that as well.
That won’t happen until people stop thinking of Linux as an operating system and start thinking of Debian GNU/Linux sarge, Red Hat Enterprise Linux 4, etc, as operating systems.
For the people who still think of Linux as an operating system and insist on supporting “Linux x86” as a platform, full compatibility will only happen when the standards manage to make these different systems (Debian, Red Hat, etc) almost fully compatible. That’s a slow process.
Why does Mono exist?
http://mail.gnome.org/archives/gnome-hackers/2002-February/msg00031…
Summary: the CLI (Common Language Infrastructure) ISO standard, which Mono implements, more easily permits a multi-language environment with garbage collection (yay productivity), value types (helps with performance), and features to better support multiple languages (try getting a C compiler to efficiently target Java bytecode — it can’t be done, while Portable.NET already provides a C compiler for IL).
In particular, the cross-language support means that instead of needing to provide a GTK+ binding for each language, we can instead bind GTK+ once (in Gtk#), and all .NET languages can then use GTK+. Instead of needing N independently maintained libraries, you need one.
This simplifies maintenance, requires less memory on the system (you don’t have N libraries duplicating each others functionality, assuming you have apps in multiple languages running simultaneously), and allows developers to be more efficient with their time.
Is it to bolster MS against a competing technology?
No. It’s just the realization that MS can come up with good ideas, and that good ideas should be used, wherever they come from.
What possible reason justifies the existance of Mono?
It allows developers to be more productive than they would be otherwise. As such, it’s being used in 7 (or more) Novell products, and is also used by Imeem (http://www.imeem.com), MedSphere, and other companies.
It should be noted that Mono is not limited to just providing the libraries that .NET provides. Mono also ships a number of additional libraries, from command-line argument handling (Mono.GetOptions.dll: http://www.go-mono.com/docs/index.aspx?tlink=0@N%3aMono.GetOpti…), Unix integration (Mono.Posix.dll: http://www.go-mono.com/docs/index.aspx?tlink=0@N%3aMono.Unix),
wrapping Mozilla’s Gecko rendering engine (Gecko#), and more.
I can actually stand to use GTK+ when used w/ the C# binding. Not so bad.
To me at least, the future would seem more bright if it became the primary choice for GTK+ apps.
Edited 2006-01-22 01:07
The future would be even brighter if lisp became the primary choice for language bindings on GTK.
http://www.gigamonkeys.com/book/
Which lisp? What binding? Why would the future be brighter?
Any one of the implementations supported by the bindings. If your favorite implementation isn’t supported, maybe you should be support in it?
Bindings here http://common-lisp.net/project/lambda-gtk/
I won’t be able to give a thorough reason for why the future would be brighter, but just take into account that C# and other ‘modern’ languages are only recently getting features that have been built into lisp (and matured) for decades. Lisp itself dates back 45 years, just 6 months younger than Fortran, which means it is a very mature language to use.
Eric Raymond said in his book ‘How to be a Hacker’, “Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot.”
And don’t forget Greenspun’s Tenth Rule:
“Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.”
The biggest problem Lisp has today is a lack of comprehensive libraries, which would be fixed if there were more people available to help build them. Even so, you can find a list of libraries at cliki.net
So even if you think I am full of it, you probably can’t help but be intrigued by a language that has had such things spoken about it. Wouldn’t you like to know what all the rage is about?
Edited 2006-01-22 08:02
Not all Common Lisp environments support callbacks in their FFIs, so that should be loads of fun. There’s a dearth of performant free implementations of Common Lisp for Win32, too. The age of lisp on the whole, rather than Common Lisp, is also fairly insignificant. Fortran being older would of course then be more compelling for some reason that is unknown to us.
Please don’t take this the wrong way, but citing Eric Raymond’s advice is completely uncompelling because the sum total of Eric Raymond’s development experience is dismal. Peter Norvig makes a much better class of person to promote Lisp with.
Lisp is certainly an interesting family of languages, but since the average programmer when presented with Lisp runs away complaining about parentheses, the future of Gtk with Lisp as the dominant binding would probably look barren. That is if we entertain the possibility.
>”Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.”
So why does CLisp implement the other half too? Just kidding but the point can be made easily that CLisp is bloated. You should be aware that Lisps age dose not just mean stability and well tested but also warts, lots of them and the separate implementations can still be bugy, same goes for libs.
Anyway if you don’t read it already start reading PlanetLisp, you get some of the bad point with the good.
P.S.: you should look at these GTK Lisp bindings, they are still alive:
http://common-lisp.net/project/cells-gtk/
Though I can’t argue the deep techincal merits of Lisp beyond macros, I do know that CL implementations like SBCL can out-perform C in benchmarks, that CL is more terse than many other languages and that it has more features than most (all?) programming languages. Bloated in what sense of the word?
Benchmarks:
Benchmarks suck; if you look at 3 different benchmarks you get 3 or more different measures of speed. I pity anybody that chooses his language based on benchmarks.
Bloat:
Common Lisps was created by unifying previous preexisting Lisp dialects, you can argue that there is lots in there that shouldn’t be in there (libs). But since bloat is personal taste opinions may vary.
Features:
I give you that CLisp has more features then most programming languages but not all. Look at Erlang, Mercury and Alice, research in programming languages has not ended with Lisp.
Since this thread is heading strongly in the Lisp direction I want to include a link to the blog entry by a Microsoft programmer that writes about his opinion on Lisp, it brings up a few nice relations of Lisp to C# and .NET. I liked it immensely.
http://blogs.msdn.com/sriram/archive/2006/01/15/lisp_is_sin.aspx
True, benchmarks can be inaccurate. But then again, what do we have to give us an idea about the performance of programming languages? Perhaps people should just try it and see for themselves? Orbitz and ITA software have (http://www.paulgraham.com/carl.html)
I’ve read that blog entry. It says something that people already know: other languages are still catching up to lisp feature-wise. Then again, one must read the many comments on that blog entry to get the whole picture.
If you look at the language shootout [1] you will see that Lisp doesn’t perform as good as C or other function programming languages. Does that mean I think Lisp is slow? NO. I still think that benchmarks are mostly meaningless. If you know a bit about computing then you should know that compiled languages are faster then interpreted (no JIT) languages, that functional languages often are tuned for computationally intense computing and that an optimizing compiler is faster then a non optimizing compiler. I’d rather trust commonsense, experience and my own test then some benchmark.
>I’ve read that blog entry. It says something that people already know: other languages are still catching up to lisp feature-wise.
That’s not what I wanted you to get out of the blog.
>”with folks like Patrick Dussud 4 architecting the CLR, we have sufficient Lisp influence :-)”
That’s what I wanted you and others to get from this. There are lots of smart Lisp guys out there, some work for Microsoft on .NET and others are part of the Gnome and MONO community, but not all of them program actively in Lisp nowadays. Think about it, Emacs uses a Lisp, Gimp a Scheme, Gnucash a Scheme and so on, yet their programmers also program in C, C++, Java, C#, Python, Ruby and what not. Do you really think they need converting?
[1] http://shootout.alioth.debian.org/sandbox/benchmark.php?test=all&la…
Right, I agree that benchmarks can be inaccurate.
I’m not sure if you know, but CL implementations like SBCL can compile to machine code, which makes it fast and probably not noticably slower than C in most tasks.
Many people don’t even consider Lisp anything more than an academic language. There are many myths about Lisp that keep people from considering it what it is meant to be–a general purpose language. PCL (http://www.gigamonkeys.com/book/) perfectly illustrates that CL isn’t just a play-thing from college, it’s a powerful, oft-overlooked language that has many practical benefits.
Many people just code in C++, Python, Ruby, etc. because of popularity. They see that so many people use those languages, so obviously they must be the best (which couldn’t be further from the truth http://paulgraham.com/iflisp.html. They never consider other languages. They probably learned Java in CS class and probably haven’t considered other alternative languages.
Sure, there are languages that might be more powerful than lisp, but do they have practical merits? Probably not on the level lisp has.
Edited 2006-01-22 20:20
Give me some credit, I know SBCL is compiled but I still don’t have an interest in it or other Lisp dialects, OCaml, Erlang, Slate and Dylan are a lot more interesting to me. But I’m not learning any of them right now, with C, C++, Java, C#, Ruby and Python (and vestiges of other languages) in my head there is just no way I will cram more stuff in until what is in has sufficiently settled.
P.S.: You do know that there are about 10 Lisp and Scheme dialects for .NET/Mono you could use?
Edited 2006-01-22 20:50
Sorry, didn’t mean to sound like I’m talking down to you or anything.
To tell you the truth, I looked once on mono-project to see if there was any lisp activity and I didn’t see any, but now that I’ve looked closer there is. Too bad that it was a 0.6 release about two and a half years ago
Plus I did some checking and there seem to be major disadvantages in implementing Lisp in .Net (see: http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/…)
I’ll definitely give Mono and DotLisp a try (when FC5 is released methinks ). It would be the best of both worlds if an ANSI Common Lisp compiler was implemented in .Net.
(Funny how the conversation came full circle back to the original topic.)
Also look at L-Sharp [1] and Bigloo [2], L-Sharp doesn’t try to be pedantic abut being 100% Lisp and Bigloo is a Scheme.
L-Sharp is interesting since the guy behind it knows his Lisp and .NET, but he wants to go more for scripting (I don’t know if that is interesting for you). I still think it’s the most interesting .NET Lisp.
[1] http://www.lsharp.org/
[2] http://www-sop.inria.fr/mimosa/fp/Bigloo/
Edited 2006-01-22 23:19
After a heated discussion on #lisp (where I ask why there isn’t more support for a Lisp .Net implementation), I seems that any .Net Lisp will undoubtedly be something less than lisp, unless very significant effort were put into it. Lispers are more interested in FFI to C rather than .Net (which a .Net Lisp would be, a FFI to .Net), since it is less work and yields more useful products.
So although I may still try out some .Net/Mon Lisp stuff, I have my doubts that any current implementations’ will be useful (except for simple scripting tasks, which seems almost backwards considering what Lisp was originally meant for). L-Sharp does seem interesting since it aims to be like Arc (Paul Graham’s try at a Lisp dialect).
Anyway, good conversation when all is said and done. I guess I am now more familiar with the situation in both the Lisp and .Net worlds. I’m also more familiar with the anti-Lisp attitude people have
> Eric Raymond said in his book ‘How to be a Hacker’,
> “Lisp is worth learning for the profound enlightenment
> experience you will have when you finally get it; that
> experience will make you a better programmer for the
> rest of your days, even if you never actually use Lisp
> itself a lot.”
I totally agree with that, and I’d call it the main reason to learn Lisp.
> And don’t forget Greenspun’s Tenth Rule:
>
> “Any sufficiently complicated C or Fortran program
> contains an ad hoc, informally-specified, bug-ridden,
> slow implementation of half of Common Lisp.”
I know that this rule is accepted to be true by many Lisp fans, but did anyone ever care to provide proof for it? The observant eye may also notice that fans of *any* system repeat such phrases again and again when comparing it to competing systems, be it Lisp, Java, C#, Linux, Windows, Mac, …
– Morin
I thought all the smug Lisp monkeys had jumped ship to Haskell by now.
I’m a new lisp monkey and I’m not being smug. I’m advocating the use of an alternative (and many would say more powerful) language to be more common-place in the GNOME community. I’m simply making Lisp more visible.
Lisp weenies don’t like static typing.
> Lisp weenies don’t like static typing.
This always puzzles me. Whenever I write a program in Lisp, the first thing I curse is the lack of static typing. Finding all type errors (usually forgetting to convert some value before sending it to a function), fixing typos, and similar things always takes me at least as much time as writing the code itself, whereas with a static type system it would be fixed in seconds.
Haskell is a good comparison when it comes to types. In a Haskell program, as soon as the compiler accepts my code at all, it almost always correct (this is by experience). Now if Haskell only had Lisp-like macros, and some implementation that doesn’t suck at performance…
– Morin
author says GTK# on windows isn’t as fast as running it on Linux.
Anybody ever measure? I use PyGTK and Ruby/GTK on windows and it sure seems blindingly fast to me. Would GTK# be any slower?
Maybe if you’re painting a big bitmap pixel by pixel windows GTK might be slower than linux, but it would be interesting to see real numbers.
youknowmewell wrote:
The future would be even brighter if lisp became the primary choice for language bindings on GTK.
http://www.gigamonkeys.com/book/
Python + PyGTK seems like a pretty nice combo.
What advantages does Common Lisp have over Python?
BTW, I just read this:
http://reddit.com/blog/2005/12/on-lisp.html
which I think was linked to from an osnews poster a while ago. It outlines a switch that one site made from Lisp to Python. Pretty interesting reading.
Edited 2006-01-22 04:06
That switch was largely done for two reasons.
1. Past mistakes that the reddit folks thought would be corrected easier if the code was rewritten (like we haven’t heard that before)
“Regardless of Python, reddit was begging for a rewrite. Whether it was the best decision to do it all at once is up for debate, but I’m very pleased at the way it turned out. We nabbed a number of lingering glitches at once– glitches that would have been messy to fix incrementally because they were rooted in the early designs of reddit.”
2. They picked Python because they knew it and it is popular. Which means it has lots libraries that they needed that (maybe) lisp doesn’t have.
“One of the biggest issues was the lack of widely used and tested libraries. Sure, there is a CL library for basically any task, but there is rarely more than one, and often the libraries are not widely used or well documented.”
However, the funny thing is that they mention that reddit’s code is “… not incredibly complex, and we could use almost all of the old HTML, Javascript, and CSS from the original version, a rewrite seemed the easiest solution. The entire task took less than a week, with 80% of the code written in a single weekend.”
There are logical deficiencies here, which leaves a bad taste in my mouth. Regardless (I don’t want to take this off-topic any further), the world needs more lisp.
“Practical Common Lisp”
http://www.gigamonkeys.com/book/
Finalist in the 2006 Jolt awards for Best Technical book of the year.
Read the book to find out what features Lisp has that Python doesn’t (you won’t them, they’ll find you).
Edited 2006-01-22 05:36
for a long time i was a vocal mono critic.
i hated seeing .dll/.exe files on my linux box.
i hated the fact that we were aping an ms platform.
i hated the mystery of the patent issue.
i hated the fact that despite the above, mono seemed to perform well.
i got over the .exe issue, okay it smells funny but its four meaningless chars.
i got over aping ms when i realized that at this point .net wsa not going to “take over” even if microsoft wanted it to; at best it is just a faster/safer way to write windows programs.
i got over the patent issue when i realized that microsoft had much much bigger fish to fry, that mono was not a “threat” to it, and that potential patent issues are more pervasive than just the mono world.
c# is a good drop-in replacement for c++.
the mono/clr vm is turning out to be a decent multi-language platform.
lots of apps are running on it.
debian accepted it.
okay, now i can install it.
> debian accepted it.
And, incredibly surprisingly, Red Hat!!!
Weeeeeh.. people have learned a new buzz word
C#/mono is fine. So is java. So is a gazillion other solutions.
It’s nice to see mono accepted, though the .exe ending is disturbing. And mixing it with GTK+ yields nice results on my Gentoo box. Fits in perfectly with the rest of the GUI apps.
C¤/mono is not going to “take over”, but it’s going to get a quite nice marketshare. But it’s not replacing anything.
Mankind does not replace technology. Mankind supplements technology.
(Edit: Added Mankind-sentences)
Edited 2006-01-22 14:45
Everyone should also check out the Matisse gui builder in the new Netbeasn 5….
Excellent stuff
http://www.netbeans.org
can anyone tell me the differences between the two? i have recently started playing with objective c and cocoa. I think it is amazing how easy it is to do things with the gui. I played with e17 before on linux for my app with gui writing needs but none of that stuff made sense to me. One of my friends keeps telling me to learn lisp, but i told him i’m happy with objc 😉
can anyone tell me the differences between the two [lisp and objective-c]?
They’re completely different. 🙂
Objective-C is Smalltalk-style object-oriented programming constructs on top of C, complete with method calls being implemented as message passing and limited compile-time type safety.
In short, Objective-C is yet another OO language. It has its own unique features and drawbacks, but that’s the short of it.
Lisp, on the other hand, isn’t an OO language. It’s a functional language. “Functional” describes the programming paradigm; C is procedural, Objective-C is procedural with OO extensions, and functional programming describes a style that is heavily focused on recursive algorithms and the lack of assignment. (For those keeping score at home, there’s also a logic paradigm, which best describes the semantics of make(1) and Prolog.)
It takes awhile to get your head wrapped around it, which is why really good programmers understand it: it changes your outlook, makes you aware of alternative approaches, and expands your mind.
You might try reading these:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
http://www.joelonsoftware.com/articles/TestYourself.html
really great tool, i tried….