Announcement

Collapse
No announcement yet.

Mono 2.6 Released, Supports LLVM Generation

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    Originally posted by BlackStar View Post
    I won't get into the KDE vs the world debate, we've been there before and there are more than enough threads for that discussion. I will simply state that KTorrent is not as efficient as uTorrent as far as disk space or memory consumption is concerned and that is a fact.

    Go on, check yourself: ktorrent and utorrent. The first uses a 2MB bootstrap installer (that then downloads Qt and half the internet for installation), while the latter is a 282KB standalone application.

    (Edit: see also kraftman's results above).

    *That's* the price you pay for going cross-platform (and if you think Qt is lightweight, you are either insane or you haven't tried building its source manually).
    32 vs 64bits makes a difference (and why are you ignoring the fact qbittorent/ktorrent aren't the same as utorrent and there were two torrents running in Ktorrent?), so this what you said is not a fact. Bittorent Mono or Java client will download Mono/Java dependecies. QT compared to Mono or Java is very lightweight.

    oes any of those "efficient" KDE apps run on a 486 with 16MB of RAM? Because utorrent does.

    See, I can move the goalposts too. Computers become faster and delevopers take advantage of this.
    KDE apps run much faster on present hardware then C# apps and this is real advantage. Btw. what are you comparing here? Whole KDE with its libraries to what?

    Also Opera doesn't use Qt on Windows, it uses native APIs directly.
    Is there any native Linux API? If not consider QT is native in this case and do not include its size in your comparisons.

    4) use a less efficient, more bug-prone language like C++, thinking it will magically make your code "faster" and more "memory efficient". Hint: neither of these is true, even for very experienced developers
    MS sites are the last which are trustworthy in such comparison.

    Gain some real-world development experience and ask yourself which is the best choice again
    It seems the best choice is C/C++, because if this is not true KDE/Gnome/hundred many other apps would be written in Java.

    iPhone is Objective-C and Mono. Android and every other mobile phone runs Java.
    PC desktops usually don't use this.
    Last edited by kraftman; 12-16-2009, 09:24 AM.

    Comment


    • #32
      Firstly I'd like to point out that using LLVM to generate native code should improve the speed of mono when used for calculations for long lived processes. Killing Mono because it's slow and being made faster doesnt make much sense.

      Originally posted by kraftman View Post
      Yes, I also don't see a single advantage over others. Why use .NET etc? I'd choose QT if someone wants to have a modern and OS independent toolkit.
      Originally posted by DarkCloud View Post
      Viva Qt !!!

      Sure QT is great for C++ development;
      Generally If I want to write super fast platform portable code I'll use QT or the BOOST libs if I don't need full QT.

      Originally posted by Hoodlum View Post
      My time as a user is also valuable and mono/.Net/Java are horrible, slow and painful to use for a user compared to traditional C/C++ software....
      Originally posted by Silverthorn View Post
      ...
      But what about Mono. Is it useful for anything else than wasting every kind of resource (manpower, memory, cpu)... runs much slower than older counterparts?

      There's some tradeoff here between development time and user time. Correctly written c++ / c / asm should be much faster than than Correctly written .net code.

      The Tradeoff is important here. Every example given has been for desktop apps used by a large group (e.g. torrent clients). What about programs used by a small business startup? If I'm writing a program whose performance is good enough why should I optimise it further?

      If I have a million users using my app extremely frequently I might care about 10 seconds of their time.

      If I have five users I probably don't care about a few 100ms of their time.

      Correctly written is important here too. Tons of c++ / c apps leak memory like it's their job. Sure the developers could improve/ use valgrind etc but all of these things take time/resources. Stability is important.

      C#/.Net fills a niche here. Faster than ruby/python, Faster to develop in than c++/c.

      Comment


      • #33
        Originally posted by BlackStar View Post
        Yup, C# has anonymous methods, lambdas, events, extension methods, linq, better generics, better exceptions, value types and unsafe code (when you need it) - yes, all of these features really *do* make a difference in development efficiency. Java has a more mature runtime, but that's about it...
        Okay, I guess I'm not on that skill-level(in C#, so I probably should shut up now. Thanks for clearing that up though.

        Originally posted by BlackStar View Post
        I don't see how testing for a .Net SP is worse than testing for different Java versions. Empirically, I've had roughly the same number of issues running Java apps on different runtime version compared to running .Net apps on different runtime versions.
        Really? Because I've been using self-written stuff and carrying code through most of the Java 5/Java 6 - process an I've never had problems with any of the 15 or so Updates they pushed out per version.(Especially because there are no API-breaks)
        Originally posted by BlackStar View Post
        Namespaces vs packages - what do you mean? One of the most annoying things in Java is that filenames must match namespace/class names for public classes. Yes, it's good practice but enforcing it on the compiler level is *infuriating* for a large number of developers (myself included). Apologies if you meant something different.
        No, I meant the same thing, in a way. I actually prefer the java-way, with packages instead of "using namespace" and all. Being able to define the very same variables and functions in the same way within the same document twice, as long as you're using different namespaces alway struck me as kind of insane. Especially since it broke with the whole OOP-public and private and so on-model. at least in the examples I've seen. But it could be that I'm just not seeing some advantage, especially with not having used C# that often.
        Originally posted by BlackStar View Post
        Edit: web support is not a matter of language, it's a matter of library stacks. Personally, I think that Python beats both on this front, but that's just me. Other people swear by PHP, Ruby, Java, C# and so forth. Someone has even created server-side Javascript! I don't really see what this has to do with the language vs language argument.
        Well, I guess now were scraping the whole definition-thing. Is JSP or Java Enterprise still part of what you count as the "Java"-language? I guess it should be, seeing how you also count ".Net" in general. Also please let's leave JavaScript out of this discussion, it's what has been driving me insane the last 2 weeks.(I've hat cases where
        Code:
        var a = "1";
              alert(parseInt(a));
        returned a double rounded to 2 decimals.

        Comment


        • #34
          Originally posted by kraftman View Post
          ...
          Is there any native Linux API? If not consider QT is native in this case and do not include its size in your comparisons.
          ...
          I think posix + X11 make up most of what parallels win32 calls. I could be wrong here.

          x11 : GDI+
          winforms or wpf : graphical portion of qt or gtk

          Comment


          • #35
            Originally posted by sreyan View Post
            The Tradeoff is important here. Every example given has been for desktop apps used by a large group (e.g. torrent clients). What about programs used by a small business startup? If I'm writing a program whose performance is good enough why should I optimise it further?
            Yes, it makes sense, but I only have Linux and its DE's on my mind when replying.

            Comment


            • #36
              Originally posted by smitty3268 View Post
              I think the only one I've used so far that seemed good was Paint.NET, and I'm sure they went to a lot of work to make that run as well as it does.
              The reason Paint.NET runs as well as it does is because all the heavy lifting is done by the native c++ library gdi+, not by c# and NET. This is also the reason why it's been hard to port to Mono.

              Comment


              • #37
                Ktorrent (Kubuntu 32bit) - 6.8MB

                Comment


                • #38
                  Originally posted by kraftman
                  32 vs 64bits makes a difference (and why are you ignoring the fact qbittorent/ktorrent aren't the same as utorrent?), so this what you said is not a fact
                  My point was that adding a cross-platform abstraction will increase disk size and memory consumption, nothing else. Be it Qt, Java or whatever.

                  Originally posted by fabiank22 View Post
                  Really? Because I've been using self-written stuff and carrying code through most of the Java 5/Java 6 - process an I've never had problems with any of the 15 or so Updates they pushed out per version.(Especially because there are no API-breaks)
                  Well, my biggest issue was with a Java 1.4 app that failed to run on the 1.6 runtime (it was a modification of an old version of the SIP communicator). Actually, I wouldn't care so much, but this happened during an oral exam at college which wasn't very fun. Maybe that's part of why I dislike Java (the other part I spent a good portion of my time using functional languages and going back to pure OO feels like a step back).

                  No, I meant the same thing, in a way. I actually prefer the java-way, with packages instead of "using namespace" and all. Being able to define the very same variables and functions in the same way within the same document twice, as long as you're using different namespaces alway struck me as kind of insane.
                  If you couldn't do that, you'd be leaking implementation information all over the place. Why should namespace Foo care what namespace Bar contains inside it (even if you are within the same module)? What if a private name changes in Foo, should Bar be changed to avoid a conflict?

                  Case in point, I have an application which contains three private namespaces (Platform.Windows, Platform.Xlib and Platform.Carbon) and a public abstraction over the three (Platform). All four namespaces contain a class named "Window" which doesn't strike me as particularly confusing or insane. I could use different names like Win32Window, XlibWindow, CarbonWindow, but this feels like a throwback to plain C: glutCreateWindow, glXCreateContextAttribsARB etc etc.

                  Well, I guess now were scraping the whole definition-thing. Is JSP or Java Enterprise still part of what you count as the "Java"-language? I guess it should be, seeing how you also count ".Net" in general.
                  Personally, I consider Java (the language) as distinct from Java (the base class library and runtime), same as I consider C# (the language) as distinct from .Net (the BCL and runtime). While I think that C# is superior to Java (the language), I feel that the BCLs and runtimes are about equal (each having strong points over the other).

                  I'm not very familiar with the web programming stacks of either technology so I cannot really comment on that. However, a friend of mine was recently hunting for jobs and encountered only a single position using Java Enterprise vs roughly 30 comparable positions for C#/Asp.Net. Good thing Google's strongly on the Python camp, which means Microsoft (probably) won't take over the web programming world anytime soon.

                  Also please let's leave JavaScript out of this discussion, it's what has been driving me insane the last 2 weeks.(I've hat cases where
                  Code:
                  var a = "1";
                        alert(parseInt(a));
                  returned a double rounded to 2 decimals.
                  Yeah, Javascript is a pretty good WTF generator. I find its spread rather startling (QtScript? Gnome shell written in Javascript? What are they smoking?)

                  Comment


                  • #39
                    @Blackstar

                    I didn't measured shared memory, so it can be higher :>

                    EDIT:

                    Or lower:

                    http://virtualthreads.blogspot.com/2...-on-linux.html
                    Last edited by kraftman; 12-16-2009, 10:06 AM.

                    Comment


                    • #40
                      Originally posted by sreyan View Post
                      ...
                      There's some tradeoff here between development time and user time. Correctly written c++ / c / asm should be much faster than than Correctly written .net code.

                      The Tradeoff is important here. Every example given has been for desktop apps used by a large group (e.g. torrent clients). What about programs used by a small business startup? If I'm writing a program whose performance is good enough why should I optimise it further?

                      If I have a million users using my app extremely frequently I might care about 10 seconds of their time.

                      If I have five users I probably don't care about a few 100ms of their time.

                      Correctly written is important here too. Tons of c++ / c apps leak memory like it's their job. Sure the developers could improve/ use valgrind etc but all of these things take time/resources. Stability is important.

                      C#/.Net fills a niche here. Faster than ruby/python, Faster to develop in than c++/c.
                      Good points though you're wrong about programs written in c++ leaks memory. You don't need to use dynamic memory yourself if you use standard libs. Then it's virtually impossible to create code that leaks memory. You could still use pointers and references without the use of dynamic memory.

                      In my experience, large bloated applications always where more error prone and unstable. I always considered slide-show-applications to be unstable. .Net applications always leans towards slide show. They might not be unstable in reality but due to previous experience one can't help but think that they are.

                      It's like a failing hard drive making a certain type of noise. If you brought a new disk and it made the same noise but with a slightly lower amplitude you probably never would have been able to trust it.

                      The problem with .Net might be that it's always (indirectly?) referred too as a language for creating huge applications with large user base.
                      Last edited by Silverthorn; 12-16-2009, 09:46 AM.

                      Comment


                      • #41
                        Originally posted by Silverthorn View Post
                        Good points though you're wrong about programs written in c++ leaks memory. You don't need to use dynamic memory yourself if you use standard libs. Then it's virtually impossible to create code that leaks memory. You could still use pointers and references without the use of dynamic memory.
                        Yeah, it's impossible, ask Mozilla! No seriously, how do you think they stopped their memory leaks? By implementing a garbage collector and memory compactor. Which you get out of the box with Python, Java or .Net.

                        Not to mention that an aggressive GC like that in .Net is much, *much* faster than the default memory allocators in C++. The only way to match the performance of such a GC is to use memory pools, which require some very nasty hacks to implement (check here if you are interested).

                        Comment


                        • #42
                          Java model: runtime and standard libraries for both desktop and Enterprise (Java EE), alongside 3rd party open components, app servers, IDEs, ... are created in parallel for all major platforms and released simultaneously, tested for compatibility.
                          .Net Model: Standard set of libraries most people use is defined by Microsoft and works exclusively on their platform. Linux/Mac users will NEVER be able to have quite compatible set of libs. Some of reasons are related to codecs and patents and other reasons are simply delay between MS development and Mono.
                          In this situation I cannot care less for operator-overloading (removed from Java for good reason), unsafe mode (which is mostly used as WIN32 API mode, making lots of applications instantly non-portable) or whatever other dubious "advantages" over Java.

                          Comment


                          • #43
                            @BlackStar

                            Αραίωνε την προπαγάνδα με το .net πατριώτη. Σε πήρανε χαμπάρι!
                            Last edited by zoomblab; 12-16-2009, 03:15 PM.

                            Comment


                            • #44
                              @zoomblab

                              lol

                              Comment


                              • #45
                                I dunno. Till now I had no idea about mono, c# and such. But these two days I keep reading articles over articles and posts over posts. Here, in Planet Gnome, in Icaza's blog etc etc. As far as I understand c# is superiour in some things over java and can be used for cross platform apps. But I understand as well that mono has a ot of limitations because of software patents mainly and Linux with it is gonna be always some steps behind windows, with lesser oportunities for innovation, if not at all. The matter is what do we want? Linux to follow or to lead? To use the just technically better things or the truly free ones while trying to make them superiour? If the first is the answer then we should have stayed with bitkeeper for kernel revision control.
                                I'm not sure yet, but everyone has failed to enlight me about the not technical goodies that mono and c# can offer to Linux and FOSS in general.

                                Comment

                                Working...
                                X