In the case of C# and Mono, Mono is usually at the same level in terms of language features. However, in terms of libraries, it is playing catch up. Also, Mono has the unique feature of being able to compile .NET languages just like a regular compiler instead of JITing it and requiring the Framework. The programming languages I know of are NSIS, C, C++, some BASIC (QBASIC variant), some Visual Basic (only a little), some C#, some Java, very little ASP (used to know more, forgot most of it), and a tiny bit of PHP. My preferred languages would probably be C++ and C#. I don't dislike Java as a language all that much, but I dislike the JVM A LOT. I respect and appreciate the Mono project a lot, mainly because they bring something quite new to the table that I want to work with. With Phalanger and other projects, bringing in existing open source code and incorporating it into a Mono project got significantly easier...
I generally Prefer Motorola MC68000 above everything else, as it's the one language where I can actually write shit that makes member's jaws drop. I have a somewhat understanding of x86 and Z-80 (although I'm planning to look into more about Zilog programming), and I know a bit about C, well, at least enough to open files and modify them anyway (Though I'm not a fan of the language, so I often end up ripping my hair out frequently). EDIT: Oh you =P
I get off on pretty much any assembly. Nothing beats coding directly in assembly on a 68000, Z80, or 6502. The x86 sucks as a CPU from the perspective of assembly language, but the AMD64 in long mode is a step up. For low-level languages, I like C. For modular languages, I like Pascal. For higher-level languages, I like Python.
I've used various forms of BASIC throughout my life, but over the last couple of years I've learnt C#, C++, Java, Z80 ASM, 65xx ASM, and 68k ASM. I still think imperatively when programming though, which is a problem for OO languages.
Are you an MIT student? Even if you're not, you should be very fortunate that you have a CS department that cares.
Something is quite wrong with you stating that C is a low level language. Far from it. Low level languages are like Assembly and Verilog, where you use rather cryptic statements over humanlike function names and references....
If by MIT you mean Massachusetts Institute of Technology, then no, I'm not an MIT student. I go to university in Brussels.
Well, I love C, but I'm not good at it. The only language I actually know is Action script 2 (they fucked everything up after that), and it's not something exactly useful.:P
No, C is low-level. You have to do your own memory management, for one thing, and it doesn't hold your hand when it comes to pointer math.
No, low-level is assembly, high-level is anything more friendly. Actually, I was thinking about this the other day, and to be fair "low-level" and "high-level" is outdated. I mean, I can think of seven levels right now: Assembly Procedural languages (like C) OOP-like languages (like C++) Languages with automatic memory management (like C#) Scripting languages with full duck typing Functional languages Data-driven languages Maybe we need new terminology here... By the way: I like C, but using C, C++, javascript, 68k asm and Z80 asm, all of them right now (oh god...).
The way I was taught, ASM was low level, C was medium, and C++, VB, Delphi, etc etc are high level. *shrug*
I don't know much, all I really know is x86 ASM (which I always forget) and VB (which I always forget).
Nah, it's just that some people call C "medium level" because what you write is exactly what you get. C does exactly what you write, while things like C++ do some things behind you to make it easier.
For me, 68000, Z80, and 80x86 assembly, C, C++, Java, HTML (as if that could even count =P), and some C#, although I wonder why I ever tried to learn that language.
C is about a low-level as you can get without using assembly. I don't consider assembly in the same genre as languages since they are separate - assembly is related to a particular CPU while languages are not. C is C, whether it's on a 68000, x86, or a SPARC. So I only use the terms "low level" or "high level" when talking about languages. Saying assembly is low level is like saying atoms are low level. Anywho, for languages, low level means C or FORTH, where operations map almost 1:1 to assembly language. They are languages that don't constrain the programmer from anything they could do in assembly (or almost anything). Higher level language add additional layers of constraints on the programmer in an effort to make the program "safer" or perhaps more abstract. You want to poke any old byte of memory? In C you just do something like *(char *)0x20001010 = 15; You just poked 15 into a random byte... try THAT in a high level language!
My view on C being low-level is that you could consider it to be a portable assembly language in a sense. It provides several facilities used in assembly language such as address arithmetic, and many other things. There is a point where messing with that stuff will render it less portable, but still, being able to work with addresses independent of machines and still do a fucking reliable job with it is pretty amazing. Plus, C can interface directly with assembly, I have NEVER seen any other language that you can just throw bits of assembly into. (The again, I haven't used many)
C++. I just love it. It's beautiful. But programming bores me. I'd rather spend a few hours writing CSS.