C#, got Linux, now what?



  • First off:  This isn't meant to incite a flame war.

    While I'm not a formally trained programmer (my degree isn't in CS) I've got a fair amount of experience of developing for Windows in VB and C# - exclusively C# these days.  Plus I do try to educate myself through sites like this.

    For the past few months I've been using Linux on an old laptop and I'd like to have a go at programming on this platform, so what are your recommendations?  Is Java a natural choice for somebody who knows C#?  What about Python?  Any recommendations for IDEs?

    Just to reiterate, I don't want to know how M$ suxx or Java is a toy language, just looking to broaden my horizons.  



  • Have you considered using C# through Mono?

    I use it and have had good luck. 



  • I've had a go at this and have got as far as "hello world" but was wondering if I'm swimming against the tide trying to use C#/mono as opposed to Java?

    I've installed Eclipse and the C# plug-in and it looks great from what I've seen so far, just need to familiarize myself with it.



  • I'm not sure if you're aware, but C# is as viable an option for Linux as Java is; however, if you care about distributing your software, more Linux users are likely to have the Java runtime than the .Net runtime.  Java and C# are incredibly similar, but I find that C# has fixed some of the things that frustrate me about Java.  A fair amount of Linux applications are written in C/C++, but I wouldn't recommend them unless speed is a concern.  Python is great scripting language, but I wouldn't try to write full fledged applications with it.  At the end of the day, I don't think your choice of language has as much to do with the operating system as the kind of application you're developing.

    As far as IDEs go,  I know of Eclipse (used often for Java development, but I believe it can be used for C/C++ as well), MonoDevelop (for C# development),  and Anjuta (a general purpose IDE that uses the GNU build system).  I'm personally a fan of just using a text editor (SciTE is my favorite) and the GNU build tools (or Ant for Java projects).

     



  • @HaunchesMcGee said:

    A fair amount of Linux applications are written in C/C++, but I wouldn't recommend them unless speed is a concern.
    Probably QOOC here, but WTF are you talking about?



  • @PJH said:

    @HaunchesMcGee said:

    A fair amount of Linux applications are written in C/C++, but I wouldn't recommend them unless speed is a concern.
    Probably QOOC here, but WTF are you talking about?

     

    Ummm... C/C++ not being the languages of choice for a new programmer with only C# experience to learn (on a new OS to boot), unless application speed is a concern?

    Do you need help with reading comprehension? 



  • @PJH said:

    @HaunchesMcGee said:

    A fair amount of Linux applications are written in C/C++, but I wouldn't recommend them unless speed is a concern.
    Probably QOOC here, but WTF are you talking about?

    I always love this how people will jump all over someone else's case when they say they may not want to use C/C++.  You are not uber cool for using C/C++. It is a tool, it has it's place, but not everyone in every situation should/could use it.

    "I think I will use a hammer to drive this nail into this piece of wood."

    "GAH! WTF!? Screwdriver FTW!"



  • @MasterPlanSoftware said:

    I always love this how people will jump all over someone else's case when they say they may not want to use C/C++.  [Blah blah blah blah]
    As opposed to those who jump on others' posts at the slightest provocation with lots of hyperbole?

    Ken's criticism to that post made when I was half asleep this morning I can take. 

    Yours is borderline obsessive replying to any and every post you can in the most offensive manner possible. 

    Are you trying to get to #1 for post count or something? 



  • @HaunchesMcGee said:

    I'm not sure if you're aware, but C# is as viable an option for Linux as Java is; however, if you care about distributing your software, more Linux users are likely to have the Java runtime than the .Net runtime.

    Java is a hassle to setup on free systems.  It's free but shackled.  Installing Mono on a Linux system or *BSD system is as easy as an install mono (or similar) command.  Maybe this has changed with Java 6, but it's always been iffy on various platforms.



  • @PJH said:

    Ken's criticism to that post made when I was half asleep this morning I can take. 

    Yours is borderline obsessive replying to any and every post you can in the most offensive manner possible. 

    Are you trying to get to #1 for post count or something? 

     

    Right, because I really lit you up there....

    Lighten up.

    If you found my post offensive, then maybe you should look at your reply to someone's honest opinion.



  • @djork said:

    @HaunchesMcGee said:

    I'm not sure if you're aware, but C# is as viable an option for Linux as Java is; however, if you care about distributing your software, more Linux users are likely to have the Java runtime than the .Net runtime.

    Java is a hassle to setup on free systems.  It's free but shackled.  Installing Mono on a Linux system or *BSD system is as easy as an install mono (or similar) command.  Maybe this has changed with Java 6, but it's always been iffy on various platforms.

     

    I can't speak about other systems, but the last time I installed java on Suse Linux, it was fairly painless.  I believe it was JRE 1.4.2.  IIRC, it was as simple as download binary distribution, run install command and enter yes after the legalese.  Yeah, it's not as simple as aptget java142 or something but certainly not what I would consider a hassle.  


    I'd take installing java on linux over any other shackled/propreitary software.  All the other proprietary software installs I've done on Linux have been vastly more complicated and error prone.



  • @lpope187 said:

    I'd take installing java on linux over any other shackled/propreitary software.  All the other proprietary software installs I've done on Linux have been vastly more complicated and error prone.

     

    How is Java any more proprietary than Mono again?



  • I have always found C/C++ to be quite useful for programming on my Fedora laptop.  Sure, my coding sucks, and I can't guarantee the portability to another workstation let alone another platform, but it gets the job done.



  • @MasterPlanSoftware said:

    How is Java any more proprietary than Mono again?
    Part of Java is open source: Wikipedia. That and Sun technically has more brownie points with the FOSS crowd than Microsoft does.



  • @Lingerance said:

    @MasterPlanSoftware said:
    How is Java any more proprietary than Mono again?
    Part of Java is open source: Wikipedia. That and Sun technically has more brownie points with the FOSS crowd than Microsoft does.
     

    ALL of Mono is open source.



  • @MasterPlanSoftware said:

    ALL of Mono is open source.
    Sorry, misread you, I thought you said .NET instead of mono.



  • @MasterPlanSoftware said:

    @PJH said:

    Ken's criticism to that post made when I was half asleep this morning I can take. 

    Yours is borderline obsessive replying to any and every post you can in the most offensive manner possible. 

    Are you trying to get to #1 for post count or something? 

     

    For someone who criticises others for quoting whole posts wholesale, you're doing rather badly here.

     @MasterPlanSoftware said:

    Lighten up.

    Why? I was called on my post by Ken, which I've already admitted had merit, you decided to call it again after that post. Why?

    @MasterPlanSoftware said:

    If you found my post offensive, then maybe you should look at your reply to someone's honest opinion.

    Addressed in the post you've replied to.

    And you didn't address my question. You clearly quoted it for a reason beyond 'quoting the whole of the last post.'

    You perhaps required me to point it out so you could address it in a further reply?

    I have no doubt that neither will elicit a response to the original question, but will, if I end up replying again, result in a discussion of the minutae of discussion on message boards, or the lack of your reply to a simple question. Much like the House of Commons operates today. 

    When I first came here, I thought you had pretty decent replies to messages on here. My opinion is changing.



  • @PJH said:

    When I first came here, I thought you had pretty decent replies to messages on here. My opinion is changing.
     

    I couldn't care any less about what someone like you thinks of my post(s). 

    Really, grow up.



  • Umm, thanks for the pointers guys, glad that didn't descend into a flame war...

    Given that I'm already familiar with C#, like the look of Eclipse and I'm not bothered about distributing anything I'm going to give Eclipse/Mono/C#/Linux a go.  Maybe have a look at Java in a few months.

    I'm on my Vista machine today, not the Debian one - I'm OS agnostic.



  • @upsidedowncreature said:

    Given that I'm already familiar with C#, like the look of Eclipse and I'm not bothered about distributing anything I'm going to give Eclipse/Mono/C#/Linux a go.

     

    There is also mono-develop. I have never used it, but have heard good things. Probably worth a try.

    http://www.monodevelop.com/Main_Page

    Java won't be hard to get into from C#. They are very close in syntax...



  • Interesting, thanks MPS and HaunchesMcGee - Mono-develop looks like it should be an easy transition from VS.  Also I like that it's got a GUI designer in there.  I'll let you know how I get on.  Or you'll find out when my new web based operating system takes over the world!</jk>



  • @upsidedowncreature said:

    I'll let you know how I get on. 

     

    Yea please do let me know. I am pretty curious how mono-develop is, but I don't have the time to try it right now. Sounds like you will be a good guinea pig.

    Keep us posted.



  • @PJH said:

    @HaunchesMcGee said:

    A fair amount of Linux applications are written in C/C++, but I wouldn't recommend them unless speed is a concern.
    Probably QOOC here, but WTF are you talking about?

     

    Upon rereading this sentence, I can see that it's a bit ambiguous.  To clarify: A fair amount of Linux applications are written in C/C++, but I wouldn't recommend [writing apps in C/C++] unless speed is a concern.

    @upsidedowncreature said:

    Interesting, thanks MPS and
    HaunchesMcGee - Mono-develop looks like it should be an easy transition
    from VS.  Also I like that it's got a GUI designer in there.  I'll let
    you know how I get on.  Or you'll find out when my new web based
    operating system takes over the world!</jk>

    No problem, glad I could help.  Good Luck!

     

     



  • @MasterPlanSoftware said:

    I always love this how people will jump all over someone else's case when they say they may not want to use C/C++.  You are not uber cool for using C/C++. It is a tool, it has it's place, but not everyone in every situation should/could use it.
     

    Why not ?

    I'm not saying he should write WebApps with it, but for every other application it is a perfectly good choice ...



  • @Nelle said:

    @MasterPlanSoftware said:

    I always love this how people will jump all over someone else's case when they say they may not want to use C/C++.  You are not uber cool for using C/C++. It is a tool, it has it's place, but not everyone in every situation should/could use it.
     

    Why not ?

    I'm not saying he should write WebApps with it, but for every other application it is a perfectly good choice ...

    C and C++ are outdated, and the standard libraries are severely lacking when compared to a modern languages.  There are plenty of things that would take less time to implement in Java or .NET because the standard libraries for those languages are so rich.  So, if speed isn't a priority, and you already are accustomed to programming in C#, why bother?  Also C++ is a pretty shitty excuse for an OO language, so if you're used to OOD/P, it can be frustrating.  C++ pays my bills, but I don't think it's the best choice for most applications.    



  • @HaunchesMcGee said:

    C++ is a pretty shitty excuse for an OO language
     

    Why?



  • @HaunchesMcGee said:

    C and C++ are outdated, and the standard libraries are severely lacking when compared to a modern languages.
     

    The standard library is indeed lacking some features, but I think have mixed programming language and framework. The .NET "standard" library is actually a framework (and is available for C++ as well) ...

    Let's say I'm building an application that does not use XML for example. In .NET or Java I have no choice but to deploy the entire .NET framework / Java VM with my application although I do not use everything provided ...  

    I know that nowdays every computer is already equipped with one version (thats another problem) of the abovementioned frameworks, but the sole concept of shipping stuff I do not even use with my app is for me quite wrong.

    @HaunchesMcGee said:
    There are plenty of things that would take less time to implement in Java or .NET because the standard libraries for those languages are so rich. 
     

    Not quite. As I already stated the web frameworks are still quite lacking features, but for other things C++ is quite capable thank you very much.

    Take boost.org for example, they have so many things implemented, that
    are not even available in those standard libraries for other languages, another example is QT, which gives you a very nice GUI Framework, OpenGL, DirectX, XML (SAX, Xerces, libxml2, MSXML take your pick), uncountable image processing libraries, several database frameworks for various db systems etc.

    What kind of application exactly would take less time to implement in Java or .NET than in C++ ? (other than SSDS)

    @HaunchesMcGee said:

    Also C++ is a pretty shitty excuse for an OO language, so if you're used to OOD/P, it can be frustrating.

    The only thing I could think of to support such a riddiculous claim is the lack of reflection in C++, but that only means a couple of factories more in the project.

    Even if we consider that not having reflection is a problem, C++ is still a great OO language. Do you have some facts to support what you said or were you just flaming ?



  • Nobody's mentioned Pascal yet? It's what we're learning at University this semester. Seems quite easy to learn, and is cross-platform. We use the Free Pascal compiler, which runs on a few platforms.

    Although the syntax is quite a bit different to most languages...



  • @Daniel15 said:

    Nobody's mentioned Pascal yet? It's what we're learning at University this semester. Seems quite easy to learn, and is cross-platform. We use the Free Pascal compiler, which runs on a few platforms.

    Although the syntax is quite a bit different to most languages...

     

     

    We learned ADA, which is close to the same. And if you're getting started in pascal, you might want to check out Delphi. I haven't used it, but it would be for pascal folks.


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.