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.
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.
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.
Rollback Post to RevisionRollBack
"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!
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."?
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.
I want to learn something new!
The Ukelele. Though I get the feeling you are talking about programming languages.
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(;:wink.gif: {
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.
This thread won't have shown you it's full potential until BC_Programming has a say in it.
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.
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.
Rollback Post to RevisionRollBack
Same ****, different day - Modification Development Section
Java isn't a bad language but it isn't perfect too.
neither is your grammar...
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.
But I'm guessing you like the IPhone better cause of that lol.
No. I hate them both, actually. I think smartphones are ****ing stupid.
That's OT. I did ramble about it in this thread. Mostly the second page.
Basically, the TL;DR:
Truly, the demographic for smartphones, ipads, ipods, itouch's, whatever is simple. They are devices designed to be as efficient as possible at separating hipster trash from their parents money.
I want to learn something new!
What should I learn people!
Please help!!
C
C#
VB
Java
Cool, Good luck :tongue.gif:
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.
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.
- My Website : Altar-Apps, Applications, Libraries, APIs, Code snippets and the Heart of Sin roguelike game!
You would prefer "Choose computer parts and programming languages for teenagers."?
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.
The Ukelele. Though I get the feeling you are talking about programming languages.
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(;:wink.gif: {
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.
Am I really that notorious?
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.
You are very notorious for being ranty. For example:
So do I. I'm using it right now.
neither is your grammar...
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.
No. I hate them both, actually. I think smartphones are ****ing stupid.
May I ask why?
That's OT. I did ramble about it in this thread. Mostly the second page.
Basically, the TL;DR:
I lol'd :smile.gif: