Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

C#

c# for multi-platform development?

So C# seems to be going in a fairly stream-line direction these days.

With tools like Xamarin making multi-platform development easy and Microsoft continually moving away from their prior "Go windows or go home" standard. My only real worry is how much of a performance difference (loading resources, databases, speed etc.) is there in using c# to make multi-platform (most mobile/web apps) as compared to the recommended native languages like Java or Objective-C?

And does that even matter?

If the performance difference is minute, probably not, and with pretty complex games being made with this language it looks like it isn't. So are there any major disadvantages to use C# to quickly or semi-quickly develop mobile and web apps in the one language?

I know this could be a pretty deep topic, but I'm curious as it might be the tool needed for some ideas I have, but that involve taking the time to learn multiple languages for the same goal seem kind of facetious.

Lastly

I'm a linux user on both my computer and laptop, so are there any major development restrictions that would make working with C# obselete?

Thanks for any and all responses,

Jack

2 Answers

Luis Herrera
Luis Herrera
2,744 Points

How you doing Sir,

After reading your question I figured I take the liberty to share some of my knowledge that I have as well. I' am going through a similar experience so I can relate as I have been looking into C# as well as a language that could potentially be a huge game changer to the development of multi-platform applications. I' am unsure as well in terms of how much time I should invest into the world of C#. I really like the language and I enjoy coding in it especially after I tried out the C# basics courses in Tree House. Though I' am afraid of going to deep into something that I may or may not want to focus on in the future. I guess it all depends on what you want to do with it and choosing the right area of growth for a career.

So far from what I understand Microsoft is going into the right direction by supporting open-source and investing in other forms of technology that doesn't just focus on Windows. From what I see Microsoft has done a lot things that pushed it into the right direction in terms of attracting more developers and becoming more relevant in the world of cross platform development.

Some things to look at for example are Microsoft's decisions to make .NET open source. They have also made ASP.NET open-source as well though this has been open sources for a long time now but I figure I mention it as well. Since web development in .NET might be something you are interested in or considering. https://github.com/Microsoft/dotnet https://msdn.microsoft.com/en-us/library/dn878908(v=vs.110).aspx https://blogs.msdn.microsoft.com/dotnet/2014/11/12/net-core-is-open-source/

The mono project is also another achievement they made, again this has been around for a while but the difference now is that I have notice there are larger communities invested into this open source implementation of Microsoft's .NET Framework. I have seen Linux user try out this framework. I know that you mentioned you are a Linux user so I figured you might want to check this out as well.

http://www.mono-project.com/

Microsoft Azure is another amazing product that allows you to not only running Windows in the cloud but you can also run other operating systems as well as various flavors of Linux. Again as a linux user so I figured you might be interested in these sources as well here below. https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-endorsed-distros/ https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-quick-create-cli/ https://support.microsoft.com/en-us/kb/2941892

The Roselyn project is another cool software Microsoft is working on. It is a .NET Compiler Platform that provides open-source C# and Visual Basic compilers with rich code analysis APIs. https://github.com/dotnet/roslyn

Microsoft as allowed SQL Server 2016 to run on Linux which I found pretty cool as I enjoy working with databases and I have been exploring a lot of the BI tools for SQL Server. This particular area of Microsoft is what catches my attention the most and had me explore C#. https://www.microsoft.com/en-us/server-cloud/sql-server-on-linux.aspx http://blogs.microsoft.com/blog/2016/03/07/announcing-sql-server-on-linux/#sm.00004f8r2jrshcx0uuf1lhwwxpql6

Finally I would like to say that Microsoft created a code editor that works with both Mac and Linux. Its awesome man :) https://code.visualstudio.com/b?utm_expid=101350005-17.ZUysucFlStyPwU4hcu0waA.1&utm_referrer=https%3A%2F%2Fwww.google.com%2F

Also if you check out visual studio community edition 2015 you can program in other languages as well such as php, javascript, ruby, python and many more.

So hopefully all this info above give you a good idea of the direction Microsoft is going towards.

By the way I' am not a Microsoft Enthusiast or even a .NET developer. I' am just a curious person that likes technology so I' am looking at this subject with a neutral perspective. In my opinion I can say Microsoft is making the right decision but some people may argue that Microsoft made the decision to go towards open source a bit to late in the game when you have communities like Java and many others who have been open source from the beginning for more than 20 years. Suddenly they expect that everyone will begin using there products. http://www.wired.com/2014/04/microsoft-new-company/ http://www.infoworld.com/article/3050985/microsoft-windows/is-it-too-late-for-microsoft-to-embrace-linux.html

This is something I believe will take time but the reason I think that Microsoft will come out successful in this LONG RUN is because they have the CAPITAL and many organizations that are dependent on there SOFTWARE(Windows, Sql server, etc.)

In regards to your questions with C# in the mobile world currently at least I believe many companies are still relying on native development(Swift/Objective-C , Java) than cross- platform because native just works better and gives the users a better experience. Though this reason is becoming less and less of a problem as cross platform tools are becoming more sophisticated and many companies are considering cross-platform more because of the time and money it saves.

Xamarin which is what C# uses for cross mobile development is becoming more popular though it is still not used very much yet. If you search on indeed.com you will some job postings on it though.

With Microsoft's recent acquisition of Xamarin and there decision to make it free I believe this will make Xamarin more popular and widely used.

Jeremy McLain
STAFF
Jeremy McLain
Treehouse Guest Teacher

I predict that within a year or two, at most, we'll be seeing mobile, desktop, and web applications written in C# running on every OS and device you can imagine. Microsoft just announced that they're planning to launch Visual Studio on the Mac. http://www.theverge.com/2016/11/14/13621116/microsoft-visual-studio-coming-to-mac JetBrains is building a cross-platform IDE for C# as well: https://www.jetbrains.com/rider/