Jump to content

Anything that cannot be done in .NET?

- - - - -

This topic has been archived. This means that you cannot reply to this topic.
10 replies to this topic

#1
Termana

Termana

    Writes binary right handed and hex left handed

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 4,057 posts
The question sort of popped into my mind, is there anything that cannot be done in .NET say in comparison to C++, C and Assembly. Are .NET languages restricted to what is in the .NET library? Although I guess the same would apply to native C++ if they are?

Interested in participating in community events?
Want to harness your programming skill and turn it into absolute prowess?
Come join our programming events!


#2
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,831 posts
I guess that depends on what you mean by limitations. The short answer would be that there are no limits on C# that don't exist on other languages. C# is Turing-Complete. That means it has the most computational power that ANY programming language can have. That said, it does have a lot of over-head requirements, from a practical standpoint. .NET also makes it easier to do a lot of things that doing them in, for example, BrainFuck.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#3
amrosama

amrosama

    Writes binary right handed and hex left handed

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 8,674 posts
i agree with WP, here in egypt almost all cs colleges teach c++ for one term(or class) then the rest is in .net
yo homie i heard you like one-line codes so i put a one line code that evals a decrypted one line code that prints "i love one line codes"
eval(base64_decode("cHJpbnQgJ2kgbG92ZSBvbmUtbGluZSBjb2Rlcyc7"));
www.amrosama.com | the unholy methods of javascript

#4
Termana

Termana

    Writes binary right handed and hex left handed

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 4,057 posts
So what your saying WP, is that theoretically, there is nothing that .NET languages cannot do that C++ can - but due to time requirements on some tasks, it isn't practical to use .NET for some tasks?

Interested in participating in community events?
Want to harness your programming skill and turn it into absolute prowess?
Come join our programming events!


#5
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,831 posts
What I'm saying is that there are practical issues, like requiring the .NET library or MONO to run the code that is a factor. The things that CAN be done are the same. The efficiency with which they do them varies, and the speed with which you can get them to do so varies.

Code efficiency and overhead vary from language to language, but in the end, you can accomplish the same things with almost any language.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#6
G_Morgan

G_Morgan

    Programming God

  • Members
  • PipPipPipPipPipPipPip
  • 537 posts
C# is Turing Complete. That means there is no algorithm that man can invent which cannot be implemented in C#. However Turing Complete says nothing about:
1. Efficiency of representation/expression.
2. Efficiency of performance.

It is entirely possible to have a language that is TC but is nearly impossible to code it. There are many examples of this like the aforementioned BrainFuck, Whitespace or Malbolge. All are TC and could, in theory, do anything that C++ could but none of them are easy to program in.

The second issue, the one that affects .NET, is performance. It will never match C++ for performance given well formed code. It might come close with some hacks that take you outside of canonical C# but won't get close without breaking the primary benefits of C# (i.e. a garbage collected and managed platform with a degree of separation from the target machine).

#7
Termana

Termana

    Writes binary right handed and hex left handed

  • Members
  • PipPipPipPipPipPipPipPipPip
  • 4,057 posts
Sure, Brainfuck is turing-complete, but you cant make a GUI interface with it, it has limited input/output capabilities. Thus, I have proved that being turing-complete means jack **** and telling me C# can do everything C++ can because it is turing-complete seems even worse.

Interested in participating in community events?
Want to harness your programming skill and turn it into absolute prowess?
Come join our programming events!


#8
G_Morgan

G_Morgan

    Programming God

  • Members
  • PipPipPipPipPipPipPip
  • 537 posts

Termana said:

Sure, Brainfuck is turing-complete, but you cant make a GUI interface with it, it has limited input/output capabilities. Thus, I have proved that being turing-complete means jack **** and telling me C# can do everything C++ can because it is turing-complete seems even worse.

It is entirely possible to link up a GUI library into a Brainfuck interpreter if you want. The issues you are dealing with are trivial implementation issues rather than built into the language.

#9
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,831 posts

Termana said:

Sure, Brainfuck is turing-complete, but you cant make a GUI interface with it, it has limited input/output capabilities. Thus, I have proved that being turing-complete means jack **** and telling me C# can do everything C++ can because it is turing-complete seems even worse.

All GUI work ultimately comes down to API calls to the operating system. This includes the .NET library, all C++ GUI libraries, and Brainfuck. Being Turing-Complete is precisely the measure of what a language can do. There are other languages that are not Turing-complete that quickly become very frustrating precisely because very basic computations cannot be done, regardless of the interface.

Don't get me wrong, GUIs are nice, and I appreciate the ease with which I can create one as much as the next guy, but the processing power is what matters most to me. I create database migrations with truly ugly GUIs. I'm the only one who sees them, and all I really care about is whether I can quickly evaluate the current progress and whether the data moves over correctly.

Similarly, I've used both CrimsonEditor and jEdit and Vim. I have listed them in decreasing quality of GUI and increasing power of processing. I abandoned CrimsonEditor long ago because it simply could not handle some of the massive files I work with and it doesn't support multi-line RegEx. Vim is a tad too unfriendly on the GUI side for my taste, but there have been times when jEdit chokes on my files as well.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog

#10
Aereshaa

Aereshaa

    Programming God

  • Members
  • PipPipPipPipPipPipPip
  • 790 posts
Unfortunately, no real computer can actually be turing-complete. Real computers have finite storage, and eventually break down.
Watches: Nanoha, Haruhi, AzuDai. Listens to: E-Type, Dj Melodie, Nightcore.
"When people are wrong they need to be corrected. And then when they can't accept it, an argument ensues." - MeTh0Dz

#11
WingedPanther

WingedPanther

    A spammer's worst nightmare

  • Moderators
  • 16,831 posts
True, but there is a difference between a language being Turing-complete and a computer satisfying the definition of a Turing Machine.
Programming is a branch of mathematics.
My CodeCall Blog | My Personal Blog