Jump to content

  • Curse Sites
Become a Premium Member! Help
Latest News Article

Java vs C# vs C vs VB


  • Please log in to reply
21 replies to this topic

#1

TechFrog
    TechFrog

    Out of the Water

  • Members
  • 8 posts

Posted 18 February 2012 - 11:45 PM

Hi Guys.I know C++, Ive been a C++ programmer for about an year now!
I want to learn something new!

What should I learn people!

Please help!!

C
C#
VB
Java

Register or log in to remove.

#2

stupidcomedycenter
  • Minecraft: billybob904

Posted 18 February 2012 - 11:50 PM

VB is a good program to master. I learned it about 2 years ago and I know a bit of C and C# and right now i am learning about Java.
Posted Image

#3

TechFrog
    TechFrog

    Out of the Water

  • Members
  • 8 posts

Posted 18 February 2012 - 11:52 PM

View Poststupidcomedycenter, on 18 February 2012 - 11:50 PM, said:

VB is a good program to master. I learned it about 2 years ago and I know a bit of C and C# and right now i am learning about Java.
Cool, Good luck :P

#4

TechFrog
    TechFrog

    Out of the Water

  • Members
  • 8 posts

Posted 18 February 2012 - 11:57 PM

sad no help DX.Ill guess ill post somewhere else *cries*

#5

lockNload147
  • Minecraft: Don't play

Posted 19 February 2012 - 12:12 AM

View PostTechFrog, on 18 February 2012 - 11:57 PM, said:

sad no help DX.Ill guess ill post somewhere else *cries*

Um you must be very un patient, its only been like 20 minutes lol. Anyways, I would learn Java or C# sense they are both object oriented, then it would be great to know a non object oriented like C too. C# and Java are similar in some was too. I wouldn't learn VB, but that's my opinion. I have been doing Java for more than two years and love it. My next language would be C++ or C.

Same ****, different day - Modification Development Section

Posted Image


#6

baggerboot
    baggerboot

    Retired Staff

  • Retired Staff
  • 4866 posts
  • Minecraft: baggerboot

Posted 19 February 2012 - 12:15 AM

Since C++ is a superset of C, C is hardly a new language. C has its uses, but usually at hardware level. I'd go with C# or Java. Many people consider C# a step-up from Java. Very similar, but with a couple useful features which Java doesn't have. On the other hand, learning Java will allow you to write Minecraft mods and Bukkit plugins.
~$

#7

TechFrog
    TechFrog

    Out of the Water

  • Members
  • 8 posts

Posted 19 February 2012 - 12:27 AM

Yay Thanks :D,and i was jokin about posting this on a different site. To get people attention :P

#8

sankto
    sankto

    Lapis Lazuli Collector

  • Members
  • 922 posts
  • Location: Canada, Qu├ębec

Posted 19 February 2012 - 02:57 AM

There's a thread like this that popup every day or so. A bit of search (even on page 2) would net you a bit of insight.

And please do NOT reply after only a couple of minutes of inactivity. It's not instant-messaging. It's a forum.

Anyway, on topic. I'd go with either C# or java. I wouldn't ever consider learning C. My personal favorite is C#, mostly because of the sheer amount of Visual Studio's nifty-ness.
"If you aren't ashamed of what you coded 6 months ago, you aren't progressing as much as you should."
- My Website : Altar-Apps, Applications, Libraries, APIs, Code snippets and the Heart of Sin roguelike game!

#9

Nocte
    Nocte

    Diamond Miner

  • Members
  • 770 posts

Posted 19 February 2012 - 10:38 AM

View PostTechFrog, on 18 February 2012 - 11:45 PM, said:

I know C++, Ive been a C++ programmer for about an year now!
Or, "I wrote a Hello World back in 2011".

Grab a broom, hold it up triumphantly, and loudly proclaim you are going to learn all the languages.
Then pick the language that is the most suitable and/or fun, depending on what you're trying to accomplish.

#10

Sillen
    Sillen

    Glowstone Miner

  • Members
  • 3000 posts
  • Location: Sweden - Closer to Notch than you are!
  • Minecraft: Sickan

Posted 19 February 2012 - 10:46 AM

View Postsankto, on 19 February 2012 - 02:57 AM, said:

There's a thread like this that popup every day or so. A bit of search (even on page 2) would net you a bit of insight.

And please do NOT reply after only a couple of minutes of inactivity. It's not instant-messaging. It's a forum.

Anyway, on topic. I'd go with either C# or java. I wouldn't ever consider learning C. My personal favorite is C#, mostly because of the sheer amount of Visual Studio's nifty-ness.
I think threads like these are great, because if they didn't pop up every now and then, this forum should be renamed into "Choose computer parts for teenagers".

View PostTechFrog, on 18 February 2012 - 11:57 PM, said:

sad no help DX.Ill guess ill post somewhere else *cries*
On the other hand, don't post this on another forum just to get attention to it, if it's a worthwhile subject then people will answer... in time. This thread won't have shown you it's full potential until BC_Programming has a say in it.
AND and OR should be renamed BOTH and EITHER.

#11

WrenAkula

Posted 19 February 2012 - 12:35 PM

View PostSillen, on 19 February 2012 - 10:46 AM, said:

I think threads like these are great, because if they didn't pop up every now and then, this forum should be renamed into "Choose computer parts for teenagers".
You would prefer "Choose computer parts and programming languages for teenagers."?

#12

Zalvager
    Zalvager

    Farlander

  • Members
  • 17392 posts

Posted 19 February 2012 - 12:44 PM

C# is the best thing in the world. But Java's cool as well.

#13

BC_Programming
  • Location: Nanaimo, BC
  • Minecraft: BC_Programming

Posted 19 February 2012 - 01:34 PM

View PostTechFrog, on 18 February 2012 - 11:45 PM, said:

Hi Guys.I know C++, Ive been a C++ programmer for about an year now!
First, you probably don't know C++. chances are, as somebody else stated, you probably hardly know the basics of dealing with console I/O, and I'd be surprised if you've been anything more than an object consumer. But I digress.

Quote

I want to learn something new!
The Ukelele. Though I get the feeling you are talking about programming languages.

Quote

What should I learn people!

Please help!!

C
C#
VB
Java

First, you've already lost, just by narrowing down your choices. Why narrow down the choices? In any case:

C

Unless you plan to contribute or otherwise work on low-level OS code, embedded devices, or hardware drivers, there isn't a whole lot of reason to learn C. of course C can be used in other cases, but it's low level of abstraction makes it very verbose. For example, having to check errno on a semi-constant basis which usually ends up either with early exits from functions or in a deeply nested set of if statements is far less elegant than more modern exception handling constructs like those provided by C++, VB, Java, C#, and D.


VB

This is two-teired; first, you've got "Classic" VB, which is certainly more limited than VB.NET, and posesses a relatively limited language. (for example, lack of constructors for classes). However, "Classic" VB is what  you could call a constrained abstraction language. It provides abstractions for a number of things, such as strings, collections, etc. Which can make dealing with things that use those data structures a hell of a lot easier than dealing with them in a lower-level language. However, even those abstractions are limited (the VB6 Collection class, for example, only holds objects and has a limited set of functionality). There are of course ways around this, but that means either referring to other libraries (scrrun.dll to get the Dictionary object) or writing your own; but even then you run into problems because you can't create your own Enumerators/iterators. (OK, that's a lie, you can, but it's utterly disgusting code that has to hack into the low-level VTable of COM objects, mess about with pointers and function addresses, etc) and has a tendency to crash.

Now, there is no reason to learn VB6 or earlier. Unless you have to maintain a program written in VB6. in that case.. you have my sympathies. I have a few projects I wrote in VB6 and I can't even get the projects to open and run half the time and it's a massive pain in the ass to work with. (both having to go back to it's language as well as having to use an IDE from 1998... AxTools makes that last point easier to swallow though)

Of course, chances are, you meant VB.NET.

Many people bad-mouth VB as a whole; but there really isn't a good reason for it. C# has some constructs VB.NET doesn't have; but VB.NET has constructs C# doesn't have as well (such as the "When" clause for catching exceptions). I think when somebody ever badmouths any other language, they don't know it and are trying to make themselves feel like not knowing it was the right choice. I've seen posts here saying that Delphi sucks; but the people saying so didn't even understand the concept of metaclasses so chances are they just saw it as a "weird language" because it was so above them. The hate for VB often comes from those who pretty much chewed on curly braces since they were teething and, finding a language that manages to do without them, feel lost and disoriented.

C#

C# is essentially the flagship language of the .NET framework. VB.NET pretty much stood in the shadows, like a .NET version of Luigi. More recently they are getting the same treatment, so overall, whether you learn one or the other doesn't matter. In fact there really is no reason not to learn both.

Java

I'm in no mood right now to say anything positive about Java. there are positive points to it but C# is, indebatably, more powerful as a language than java. Therefore the question becomes one of purpose; Java has been around longer and most systems have a reliable JVM implementation. CLR runs on Windows, Linux, and Mac, but getting it running on mobiles other than windows phone is a test of will.

I've never liked java. Looking down on it from a few rungs above, I see a language similar to C# that is missing features like value types (structs), delegates, automatic properties,(and just properties in general) checked arithmetic,extension methods, the as keyword, null coalescing operator, the decimal type, events (without having to deal with a shitload of boilerplate), operator overloading and class-defined implicit/explicit casting operators, ref and out parameters, Attributes, params (variadic argument list), optional arguments (in 4.0), a parallel task library (also 4.0), custom indexers, unsafe blocks (for low-level stuff), etc. And that doesn't even touch on JVM backwards compatibility forced things like type-erasure. Many a Java programmer will say "but C# is just a Microsoft copy of Java". The way they say it, they make it seem like anybody should care. C# is almost certainly derived, at least in part, from J++; Microsoft added a shitload of stuff to that java compiler and tools (I still have J++ 6, lol) that made it, you know, actually useful. (WFC for example). Sun didn't like seeing java being used for applications that actually looked like they belonged on the OS so they revoked MS's java license, then they set to making swing, so that they could continue to ignore platform integration issues when they were raised in seminars by saying "but look! BRUSHED METAL SKIN!".. but that's a bit of a digression... So we got C#; and because MS was no longer held back by licensing they could actually make the language better, and not just the libraries. C# isn't a copy of Java or any more than D is a copy of C++; it's an evolution. The features can be and often are defended by java one-trick ponies as "you don't need that"... well, no, but you don't "need" a garbage collector, polymorphism, or anything the compiler provides you. the point of languages is to provide those things so that you can utilize them. Just because you can't think of an instance where a specific feature could be useful doesn't mean they aren't useful- it just means you're thinking about your problems within the constraints of your preferred language.

That isn't to say that java is a horrible language or that you shouldn't ever try to learn it; it's very enterprisey. That's great if your work involves common exposure to terms like "your business domain" or "we need to leverage our domain policy" etc. than it works great! may I suggest adding comments in your code to justify why Java features don't exist; for example, instead of finding java's weaker support for nested generics to be a problem, you can create new classes because you need to "have the right level of abstraction". Also java is a good language if you work in one of those places that pays by the amount of code you write, or if you want to have a bunch of stuff on your resume (like Spring, NHibernate, etc).

If I had to recommend something, I'd actually recommend... well, anything. doesn't really matter. if you want to learn another programming language, learn another programming language. It's not like there is some limit to how many programming languages you can learn to read/write. If the language you learn turns out to not be very much use to you (which is pretty doubtful unless you choose something like FORTRAN I) you can always learn another.

In fact, one good thing to do is to find the language that looks "weirdest" to you, and try to learn that. usually a language looks "weird" because it offers higher-level abstractions then what you are used to. For example:

import std.algorithm, std.concurrency, std.stdio

void main() {
    enum bufferSize = 1024 * 100;
    auto tid = spawn(&fileWriter);
    foreach(immutable(byte)[] buffer;stdin.byChunk(bufferSize)){
        send(tid,buffer);
    }
}

void fileWriter() {
    for(;;) {
        auto buffer = receiveOnly!(immutable(ubyte)[])();
        tgt.write(buffer)
    }
}
[/code]
Look at that, that's some funky-ass code (it's D, by the way). It looks weird because of parts of the syntax; looking over it, what does the exclamation mark mean? stuff like that. Languages look "weird" when the number of unfamiliar, not-immediately-obvious constructs like that hits a certain critical mass, at which point your mental parser just gives up and labels it as "weird". However, this is a clue- since those unfamilar concepts could be gold-mines of interesting ideas. D's static if construct is probably the closest thing to Lisp Macros you can get outside of Lisp, and Lisp Macros are probably one of the most powerful constructs ever devised in the history of computer science.


Quote

This thread won't have shown you it's full potential until BC_Programming has a say in it.
Am I really that notorious?

#14

Sillen
    Sillen

    Glowstone Miner

  • Members
  • 3000 posts
  • Location: Sweden - Closer to Notch than you are!
  • Minecraft: Sickan

Posted 19 February 2012 - 03:05 PM

View PostBC_Programming, on 19 February 2012 - 01:34 PM, said:

Am I really that notorious?
I don't know, but since you always provide high quality answers I guess.

But I don't like you bashing on Java. It makes me feel bad for not having started with C# yet.
AND and OR should be renamed BOTH and EITHER.

#15

BC_Programming
  • Location: Nanaimo, BC
  • Minecraft: BC_Programming

Posted 19 February 2012 - 03:23 PM

View PostSillen, on 19 February 2012 - 03:05 PM, said:

But I don't like you bashing on Java.
They are legit disadvantages. Knowing how to program in java is fine; knowing how to program only in java is not, just like any language. Because you start to think of programming "in terms of" the language; and you think within that languages constraints. As noted, a person who thinks "in java" won't miss the constructs java doesn't have, because their mental processing of the problem doesn't consider them a feasible solution; and when they hear of the other features, they can't think of what use they would be since they don't exist within their mental-programming "modelling kit". Sort of like if somebody only knows GW-BASIC their analysis of a problem is unlikely to include concepts like recursion. What ends up happening is you workaround the limitations of the language without realizing it. This is of course no less true for C#, which doesn't support metaclasses and (my biggest annoyance so far, though not sure if C# 4.0 fixes it) no way to define a generic constraint on supported operators. Which can be worked around but the result is messy and downright ridiculous.

#16

Wervenyt
    Wervenyt

    Nether Resident

  • Members
  • 2010 posts
  • Location: /etc/apt/sources.list

Posted 19 February 2012 - 03:36 PM

View PostBC_Programming, on 19 February 2012 - 01:34 PM, said:

-rantsnip AGAIN-



Am I really that notorious?
You are very notorious for being ranty. For example:
Spoiler:
Anyway, thanks for mentioning D. 'Tis awesome.
Hi there! I'm moving over to The OTter Forums, so, yeah.

#17

lockNload147
  • Minecraft: Don't play

Posted 19 February 2012 - 04:27 PM

Java isn't a bad language but it isn't perfect too. Look at Android and what it uses; Java. But I'm guessing you like the IPhone better cause of that lol.

Same ****, different day - Modification Development Section

Posted Image


#18

BC_Programming
  • Location: Nanaimo, BC
  • Minecraft: BC_Programming

Posted 19 February 2012 - 04:56 PM

View PostWervenyt, on 19 February 2012 - 03:36 PM, said:

I like the Linux Operating System.
So do I. I'm using it right now.


Quote

Java isn't a bad language but it isn't perfect too.
neither is your grammar...

Quote

Look at Android and what it uses; Java.
I'm lost... was this supposed to be a point? I mean, really- are you trying to retort my post pointing out a number of linguistic deficiencies that Java has with "but android uses it!". I didn't say java was unpopular. the popularity of a language is completely unrelated to it's power. D and Lisp are both more powerful than any "industry standard" language, but they haven't achieved any amount of market penetration.

Quote

But I'm guessing you like the IPhone better cause of that lol.
No. I hate them both, actually. I think smartphones are fucking stupid.

#19

eftj
    eftj

    Lamest title ever

  • Retired Staff
  • 7795 posts
  • Location: Oxfordshire, UK
  • Minecraft: eftj
  • Xbox:zEwanz

Posted 19 February 2012 - 05:18 PM

View PostBC_Programming, on 19 February 2012 - 01:34 PM, said:

Am I really that notorious?
Yes, yes you are. As soon as I see a thread about programming or which language to learn, I always go on to see you call at least one person an idiot. And your essays are fun to read.
Posted Image

#20

_Myst
    _Myst

    Retired Loompa

  • Retired Staff
  • 8042 posts
  • Location: Slowly infecting every corner of the universe.

Posted 19 February 2012 - 05:36 PM

@OP, pick one and learn it, it doesn't matter which.

View PostBC_Programming, on 19 February 2012 - 04:56 PM, said:

No. I hate them both, actually. I think smartphones are fucking stupid.


May I ask why?

horahora~

Posted Image