This is obviously a very old thread; I came across it while looking for a C# for the mac - need to write some small GUI-based programs, prefer either C# or java to do the trick.
I thought I would mention a cross-platform solution that a partner and I used a few years ago - crreating a product to run on both Windows and Mac.
o We tried at first a cross-platform Basic. Gack! the programming tools were just awful, and the language was full of quirks.
o Decided to write it in java - which we both had used for years - but worried about the truly crummy java GUIs on the PC. (The Mac GUI looked great - at the time very Mac-native.) So what we did was make a front-end/back-end split; front end in C++ on PC, java on the Mac; backend in a subset** of java, for which we wrote a java -> C++ translator.
o Guess again. C++ and java were too far apart - we kept stumbling on edge cases. We redid the translator to generate C#. 1000 lines of code, ran like a champ. Reimplemented the GUI for the PC in C#.
Our final assessment: The C# tools were tops. (For java we used Eclipse.) If we knew at the start what we knew at the end, we would have made our base C# - rather than java.
Apple has made life pretty miserable for java development, so these assessments are definitely dated.
** The subset was almost pure java - no GUI elements, no other library elements, certain string and Object operations avoided. As we found we needed them, we design our own collection objects - thin wrappers around library elements in the respective platform languages. We pushed hard to even write general GUI elements in this "back end" language - squeezed the platform-specific front-ends down to about 10% of the code.
Hey man. C# isn't a bad choice at all, though C++ is great too. It just depends on what you want to make. If you're into making games with Unity 3D C# is definitely better than JavaScript. It has almost all of the features found in other object oriented languages and it certainly wont make you a worse C++ programmer, or any other language for that matter, knowing it. I say the shortest path to making cool stuff that you're excited to make is the best choice for which language to learn first. Good luck!
microsofts .NET is a terrible framework. Microsofts C# is crappy. Mono is a wonderful envirotment and pretty much anyone telling you to use crappy asp.net has never used mono and they pretty much mainly are microsoft fanboys especially if they are telling you to use c++ ontop of it all.
Especially since the visual series is nothing more than a bastardization designed to take down every programming language. Hence why basic is nearly dead because visual basic took it and screwed it up. Basic was so much better than visual basic. Visual c++ is a joke it creates errors and most of the fustraightions you hear about c++ isn't from actual C++ it is Visual c++ using microsofts crappy compiler which often doesn't work properly, like some of the simplest things that shouldn't be errors end up being errors. The GNU c++ compiler is much better and less bug free. Most of the people even recormending asp.net have never used anything but asp.net. And yes I have used asp.net for a while and learned to use it, there is no benefits to using it. Mono is one of the best envirorments for it as now you can use extentions and develop C# apps for many many platforms. Mono is such a wonderful envirorment it got sony using it for the psvita and you can make games for the psvita now using monogames with monodevelop.
This is obviously a very old thread; I came across it while looking for a C# for the mac - need to write some small GUI-based programs, prefer either C# or java to do the trick.
I thought I would mention a cross-platform solution that a partner and I used a few years ago - crreating a product to run on both Windows and Mac.
o We tried at first a cross-platform Basic. Gack! the programming tools were just awful, and the language was full of quirks.
o Decided to write it in java - which we both had used for years - but worried about the truly crummy java GUIs on the PC. (The Mac GUI looked great - at the time very Mac-native.) So what we did was make a front-end/back-end split; front end in C++ on PC, java on the Mac; backend in a subset** of java, for which we wrote a java -> C++ translator.
o Guess again. C++ and java were too far apart - we kept stumbling on edge cases. We redid the translator to generate C#. 1000 lines of code, ran like a champ. Reimplemented the GUI for the PC in C#.
Our final assessment: The C# tools were tops. (For java we used Eclipse.) If we knew at the start what we knew at the end, we would have made our base C# - rather than java.
Apple has made life pretty miserable for java development, so these assessments are definitely dated.
** The subset was almost pure java - no GUI elements, no other library elements, certain string and Object operations avoided. As we found we needed them, we design our own collection objects - thin wrappers around library elements in the respective platform languages. We pushed hard to even write general GUI elements in this "back end" language - squeezed the platform-specific front-ends down to about 10% of the code.
Um you can make GUI elements easly in java.
Not only that but C++ just because it differs from java doesnt mean it is hard to make a GUI system with c++. All you would have had to do is make a simple web browser in c++ that loads in the class file and modfy the outside GUI in c++. But doing it all java would have been a much better result.
Ahh. C#.. I love that language.. but I do understand some of the hesitation from MAC users.. There are positive and negative sides to C#.. but then again, there are with any language. The one thing I love about C# is that it is easy and crossplatform compatible. I been using it for a few years now and I love it. Most of the Virtual Worlds I use now use C#. And those worlds are on Windows, Mac, and Linux.
Users have hesitions for these reasons:
1.Outside of Mono , unity, & dotgnu C# is not crossplatform at all.
2.Mono, unity, & dotGNU are all potentially violating software pattens made by microsoft and anyone using their tools can be sued aswell
3. It is made by microsoft and is designed with malious intents to create a monopoly of languages which they are successfully doing when ever people purchase or even download any of the visual sweet. Schools accepting bribes are the worse in this matter.
4. it is not as useful as many languages and is a hinderance on users
People who think c# is slow because it has to translate byte code to machine code as it's executed just don't understand how .Net works.
First, it goes back to PE File Format. PE File Format is the file format windows uses to store dll/sys/exe files. .Net is no exception to this standard.
However PE File Format has different flags in it for .Net executables and the JIT Compiler is front loaded.
Basically, the entire .Net exe is Jit Compiled into Memory before it's entry point is called. All of that is handled by the windows loader/.net interop classes.
The byte code is never converted/executed directly. The entire thing is converted, then the native representation of the byte code is what runs.
So technically, once a .Net Program is running, it is running Natively. On disk it might be in byte code, but in memory it's Native X86.
The only overhead once in memory is the hooks of the .net framework itself, e.g. (garbage collection, pointer wraps etc.).
I'd be willing to bet that for(int i = 0; i < 0; ++i) {} will run close to the same speed in a .net process as a native c++ x86 process.
People who think c# is slow because it has to translate byte code to machine code as it's executed just don't understand how .Net works.
First, it goes back to PE File Format. PE File Format is the file format windows uses to store dll/sys/exe files. .Net is no exception to this standard.
However PE File Format has different flags in it for .Net executables and the JIT Compiler is front loaded.
Basically, the entire .Net exe is Jit Compiled into Memory before it's entry point is called. All of that is handled by the windows loader/.net interop classes.
The byte code is never converted/executed directly. The entire thing is converted, then the native representation of the byte code is what runs.
So technically, once a .Net Program is running, it is running Natively. On disk it might be in byte code, but in memory it's Native X86.
The only overhead once in memory is the hooks of the .net framework itself, e.g. (garbage collection, pointer wraps etc.).
I'd be willing to bet that for(int i = 0; i < 0; ++i) {} will run close to the same speed in a .net process as a native c++ x86 process.
The problem with C# and .NET isn't speed or usefulness, but that it's Microsoft and runs on a proprietary system (CLR). The JVM is just as quick, just as useful, more languages compile to Java bytecode (Scala, Groovy, Ceylon, Clojure, JRuby, Jython, etc...), and it runs equally well on Linux, OSX and Windows.
The problem with C# and .NET isn't speed or usefulness, but that it's Microsoft and runs on a proprietary system (CLR). The JVM is just as quick, just as useful, more languages compile to Java bytecode (Scala, Groovy, Ceylon, Clojure, JRuby, Jython, etc...), and it runs equally well on Linux, OSX and Windows.
Except that you can code C# on more platforms than Java today. Namely iOS.
One post, pitching a specific product. I don't see any tie to the company, however, so I left it because it was on-topic. Who knows why, but there's the what.
Rather a biased comment I think. For all practical purposes (i.e. excluding mono) you can only use C# on Windows platforms. That said, C# is a well thought out language and is one of the most popular in industry (and that's the opinion of a long time Unix programmer).
Jav and C# were similar 10 years ago, but not now. C# is considerably more sophisticated than Java. Check out the "Tiobe Index" to see the relative popularity of Jav and C#.
Yes, I was very sloppy with my language in that post.
BUT
You'd have to show me some evidence before I buy that bytecode can approach the speed of machine code. Bytecode MUST be translated into machine code before it can be used, thereby adding at LEAST one extra cycle for every command. How can that be anywhere close to the speed that you can get from a machine code compile? By using an efficient JIT compiler and an inefficient machine code compiler? Go get an efficient machine code compiler.
Additionally: Every program written in C# requires .NET framework to be present on the computer... I THINK.... verify please?
Additionally: C# is EXTREMELY high level. The higher the language, the less efficient it is, by necessity.
Additionally: C# does stupid things like require you to store the Main function (called methods in C#) as a class object. You then must instantiate an object of that class before you can use any functions that you may have written outside of the Main. That should be implicit.
Additionally: It's 3 am and I can't think of anthing else right now. Go with C++, and use visual studio if you wish, so that you can take advantage of the .NET libraries. You will have the benefits of C# (the library) and also the ability to use the same language on multiple platforms.
C++ is slightly more simple and easier to learn (sorry about my grammar today, I'm tired, long day) YOU CAN ONLY RUN THE WINDOWS .NET FRAMEWORK ON A WINDOWS MACHINE that is the most important bit. You need the framework for C#.
Out of order there a bit. C# is like javascript. It seems simple, then you will see beyond the tip of the Iceberg. C++ is like python, it's a breeze to learn, can run on any system, and is slightly more formatted and nice.
A mac is not the best for languages like C#. You see, a mac is different from a windows in that well, their operating systems. Windows has special types of applications and some of those are not meant to be run on a mac. C# can develop very complex programs and has very good ways to access different "modules" (for you python people). Like Threading, Drawing and more (which javascript CAN'T do)
If you are working on a mac you should just download a version of windows 7 and run it on your mac. It may seem wierd, but it's doable and worth it (for the 60 ish dollars it will cost.) because windows 7 is:
A: A great operating system;
B: Able to run .NET framework and Visual Studio
C: Visual studio is wonderful and it's and IDE so it comes with a compiler (It's also free for express version) so you don't have to fiddle with any of that developer command line stuff. You just have to look in the bin\Debug.
Thanks for letting me add my bit. I love macs, but for my programming needs, windows out-performs apple slightly.
C++ is slightly more simple and easier to learn (sorry about my grammar today, I'm tired, long day) YOU CAN ONLY RUN THE WINDOWS .NET FRAMEWORK ON A WINDOWS MACHINE that is the most important bit. You need the framework for C#.
no longer the case. with .NET Core microsoft has made .NET applications cross-platform -- the framework can be bundled and deployed to OS X and Linux platforms. so if you have an existing business access library invested in C#, you can wrap it in Web API 2 RESTful web services and host it off a Linux web server for apps or systems to consume. thats especially where theyre going w/ ASP.NET 5:
...this is neat and useful for some orgs -- we can leverage our existing codebase while also decreasing our hosting costs by shifting to lesser-priced Linux plans.
Comments
This is obviously a very old thread; I came across it while looking for a C# for the mac - need to write some small GUI-based programs, prefer either C# or java to do the trick.
I thought I would mention a cross-platform solution that a partner and I used a few years ago - crreating a product to run on both Windows and Mac.
o We tried at first a cross-platform Basic. Gack! the programming tools were just awful, and the language was full of quirks.
o Decided to write it in java - which we both had used for years - but worried about the truly crummy java GUIs on the PC. (The Mac GUI looked great - at the time very Mac-native.) So what we did was make a front-end/back-end split; front end in C++ on PC, java on the Mac; backend in a subset** of java, for which we wrote a java -> C++ translator.
o Guess again. C++ and java were too far apart - we kept stumbling on edge cases. We redid the translator to generate C#. 1000 lines of code, ran like a champ. Reimplemented the GUI for the PC in C#.
Our final assessment: The C# tools were tops. (For java we used Eclipse.) If we knew at the start what we knew at the end, we would have made our base C# - rather than java.
Apple has made life pretty miserable for java development, so these assessments are definitely dated.
** The subset was almost pure java - no GUI elements, no other library elements, certain string and Object operations avoided. As we found we needed them, we design our own collection objects - thin wrappers around library elements in the respective platform languages. We pushed hard to even write general GUI elements in this "back end" language - squeezed the platform-specific front-ends down to about 10% of the code.
Hey man. C# isn't a bad choice at all, though C++ is great too. It just depends on what you want to make. If you're into making games with Unity 3D C# is definitely better than JavaScript. It has almost all of the features found in other object oriented languages and it certainly wont make you a worse C++ programmer, or any other language for that matter, knowing it. I say the shortest path to making cool stuff that you're excited to make is the best choice for which language to learn first. Good luck!
microsofts .NET is a terrible framework. Microsofts C# is crappy. Mono is a wonderful envirotment and pretty much anyone telling you to use crappy asp.net has never used mono and they pretty much mainly are microsoft fanboys especially if they are telling you to use c++ ontop of it all.
Especially since the visual series is nothing more than a bastardization designed to take down every programming language. Hence why basic is nearly dead because visual basic took it and screwed it up. Basic was so much better than visual basic. Visual c++ is a joke it creates errors and most of the fustraightions you hear about c++ isn't from actual C++ it is Visual c++ using microsofts crappy compiler which often doesn't work properly, like some of the simplest things that shouldn't be errors end up being errors. The GNU c++ compiler is much better and less bug free. Most of the people even recormending asp.net have never used anything but asp.net. And yes I have used asp.net for a while and learned to use it, there is no benefits to using it. Mono is one of the best envirorments for it as now you can use extentions and develop C# apps for many many platforms. Mono is such a wonderful envirorment it got sony using it for the psvita and you can make games for the psvita now using monogames with monodevelop.
Quote:
Originally Posted by wjs1
This is obviously a very old thread; I came across it while looking for a C# for the mac - need to write some small GUI-based programs, prefer either C# or java to do the trick.
I thought I would mention a cross-platform solution that a partner and I used a few years ago - crreating a product to run on both Windows and Mac.
o We tried at first a cross-platform Basic. Gack! the programming tools were just awful, and the language was full of quirks.
o Decided to write it in java - which we both had used for years - but worried about the truly crummy java GUIs on the PC. (The Mac GUI looked great - at the time very Mac-native.) So what we did was make a front-end/back-end split; front end in C++ on PC, java on the Mac; backend in a subset** of java, for which we wrote a java -> C++ translator.
o Guess again. C++ and java were too far apart - we kept stumbling on edge cases. We redid the translator to generate C#. 1000 lines of code, ran like a champ. Reimplemented the GUI for the PC in C#.
Our final assessment: The C# tools were tops. (For java we used Eclipse.) If we knew at the start what we knew at the end, we would have made our base C# - rather than java.
Apple has made life pretty miserable for java development, so these assessments are definitely dated.
** The subset was almost pure java - no GUI elements, no other library elements, certain string and Object operations avoided. As we found we needed them, we design our own collection objects - thin wrappers around library elements in the respective platform languages. We pushed hard to even write general GUI elements in this "back end" language - squeezed the platform-specific front-ends down to about 10% of the code.
Um you can make GUI elements easly in java.
Not only that but C++ just because it differs from java doesnt mean it is hard to make a GUI system with c++. All you would have had to do is make a simple web browser in c++ that loads in the class file and modfy the outside GUI in c++. But doing it all java would have been a much better result.
Quote:
Originally Posted by janefoxclaw
Ahh. C#.. I love that language.. but I do understand some of the hesitation from MAC users.. There are positive and negative sides to C#.. but then again, there are with any language. The one thing I love about C# is that it is easy and crossplatform compatible. I been using it for a few years now and I love it. Most of the Virtual Worlds I use now use C#. And those worlds are on Windows, Mac, and Linux.
Users have hesitions for these reasons:
1.Outside of Mono , unity, & dotgnu C# is not crossplatform at all.
2.Mono, unity, & dotGNU are all potentially violating software pattens made by microsoft and anyone using their tools can be sued aswell
3. It is made by microsoft and is designed with malious intents to create a monopoly of languages which they are successfully doing when ever people purchase or even download any of the visual sweet. Schools accepting bribes are the worse in this matter.
4. it is not as useful as many languages and is a hinderance on users
What you are looking for is Xamarin - expensive as hell but it works
People who think c# is slow because it has to translate byte code to machine code as it's executed just don't understand how .Net works.
First, it goes back to PE File Format. PE File Format is the file format windows uses to store dll/sys/exe files. .Net is no exception to this standard.
However PE File Format has different flags in it for .Net executables and the JIT Compiler is front loaded.
Basically, the entire .Net exe is Jit Compiled into Memory before it's entry point is called. All of that is handled by the windows loader/.net interop classes.
The byte code is never converted/executed directly. The entire thing is converted, then the native representation of the byte code is what runs.
So technically, once a .Net Program is running, it is running Natively. On disk it might be in byte code, but in memory it's Native X86.
The only overhead once in memory is the hooks of the .net framework itself, e.g. (garbage collection, pointer wraps etc.).
I'd be willing to bet that for(int i = 0; i < 0; ++i) {} will run close to the same speed in a .net process as a native c++ x86 process.
Here's a blog that sums it up a lot better....
http://www.codingthewheel.com/archives/how-to-inject-a-managed-assembly-dll/
Quote:
Originally Posted by Ryios
People who think c# is slow because it has to translate byte code to machine code as it's executed just don't understand how .Net works.
First, it goes back to PE File Format. PE File Format is the file format windows uses to store dll/sys/exe files. .Net is no exception to this standard.
However PE File Format has different flags in it for .Net executables and the JIT Compiler is front loaded.
Basically, the entire .Net exe is Jit Compiled into Memory before it's entry point is called. All of that is handled by the windows loader/.net interop classes.
The byte code is never converted/executed directly. The entire thing is converted, then the native representation of the byte code is what runs.
So technically, once a .Net Program is running, it is running Natively. On disk it might be in byte code, but in memory it's Native X86.
The only overhead once in memory is the hooks of the .net framework itself, e.g. (garbage collection, pointer wraps etc.).
I'd be willing to bet that for(int i = 0; i < 0; ++i) {} will run close to the same speed in a .net process as a native c++ x86 process.
Here's a blog that sums it up a lot better....
http://www.codingthewheel.com/archives/how-to-inject-a-managed-assembly-dll/
The problem with C# and .NET isn't speed or usefulness, but that it's Microsoft and runs on a proprietary system (CLR). The JVM is just as quick, just as useful, more languages compile to Java bytecode (Scala, Groovy, Ceylon, Clojure, JRuby, Jython, etc...), and it runs equally well on Linux, OSX and Windows.
Quote:
Originally Posted by Mikeb85
The problem with C# and .NET isn't speed or usefulness, but that it's Microsoft and runs on a proprietary system (CLR). The JVM is just as quick, just as useful, more languages compile to Java bytecode (Scala, Groovy, Ceylon, Clojure, JRuby, Jython, etc...), and it runs equally well on Linux, OSX and Windows.
Except that you can code C# on more platforms than Java today. Namely iOS.
Why did someone necro this thread?
Originally Posted by nht
Why did someone necro this thread?
One post, pitching a specific product. I don't see any tie to the company, however, so I left it because it was on-topic. Who knows why, but there's the what.
Welcome to the future! Bet your pissed the language turned out to be big
Rather a biased comment I think. For all practical purposes (i.e. excluding mono) you can only use C# on Windows platforms. That said, C# is a well thought out language and is one of the most popular in industry (and that's the opinion of a long time Unix programmer).
Jav and C# were similar 10 years ago, but not now. C# is considerably more sophisticated than Java. Check out the "Tiobe Index" to see the relative popularity of Jav and C#.
Wholeheartedly agree!
Do you think using a terminal program can be written ?
download c# on macbook
Yes, I was very sloppy with my language in that post.
BUT
You'd have to show me some evidence before I buy that bytecode can approach the speed of machine code. Bytecode MUST be translated into machine code before it can be used, thereby adding at LEAST one extra cycle for every command. How can that be anywhere close to the speed that you can get from a machine code compile? By using an efficient JIT compiler and an inefficient machine code compiler? Go get an efficient machine code compiler.
Additionally: Every program written in C# requires .NET framework to be present on the computer... I THINK.... verify please?
Additionally: C# is EXTREMELY high level. The higher the language, the less efficient it is, by necessity.
Additionally: C# does stupid things like require you to store the Main function (called methods in C#) as a class object. You then must instantiate an object of that class before you can use any functions that you may have written outside of the Main. That should be implicit.
Additionally: It's 3 am and I can't think of anthing else right now. Go with C++, and use visual studio if you wish, so that you can take advantage of the .NET libraries. You will have the benefits of C# (the library) and also the ability to use the same language on multiple platforms.
C++ is slightly more simple and easier to learn (sorry about my grammar today, I'm tired, long day) YOU CAN ONLY RUN THE WINDOWS .NET FRAMEWORK ON A WINDOWS MACHINE that is the most important bit. You need the framework for C#.
Out of order there a bit. C# is like javascript. It seems simple, then you will see beyond the tip of the Iceberg. C++ is like python, it's a breeze to learn, can run on any system, and is slightly more formatted and nice.
A mac is not the best for languages like C#. You see, a mac is different from a windows in that well, their operating systems. Windows has special types of applications and some of those are not meant to be run on a mac. C# can develop very complex programs and has very good ways to access different "modules" (for you python people). Like Threading, Drawing and more (which javascript CAN'T do)
If you are working on a mac you should just download a version of windows 7 and run it on your mac. It may seem wierd, but it's doable and worth it (for the 60 ish dollars it will cost.) because windows 7 is:
A: A great operating system;
B: Able to run .NET framework and Visual Studio
C: Visual studio is wonderful and it's and IDE so it comes with a compiler (It's also free for express version) so you don't have to fiddle with any of that developer command line stuff. You just have to look in the bin\Debug.
Thanks for letting me add my bit. I love macs, but for my programming needs, windows out-performs apple slightly.
C++ is slightly more simple and easier to learn (sorry about my grammar today, I'm tired, long day) YOU CAN ONLY RUN THE WINDOWS .NET FRAMEWORK ON A WINDOWS MACHINE that is the most important bit. You need the framework for C#.
no longer the case. with .NET Core microsoft has made .NET applications cross-platform -- the framework can be bundled and deployed to OS X and Linux platforms. so if you have an existing business access library invested in C#, you can wrap it in Web API 2 RESTful web services and host it off a Linux web server for apps or systems to consume. thats especially where theyre going w/ ASP.NET 5:
https://msdn.microsoft.com/en-us/magazine/dn913182.aspx
...this is neat and useful for some orgs -- we can leverage our existing codebase while also decreasing our hosting costs by shifting to lesser-priced Linux plans.