First, let me start by saying that the definition of an experienced programmer is that they don't care about the particulars of any given language. Experience means they have seen many languages come and go and they will continue to adapt.
That's the long-term skill that will keep putting money in your pocket. Coming out of college, it's important you know that.
That being said, congratulations on sticking with Linux in a Windows world. Purely from a job perspective, there might be more jobs on the Windows pl
... it is also pertinent to note here that the GNU standards document, section 3.1 [gnu.org]: "Which Languages to Use" strongly advises plain old C for both performance and absolute maximum cross-platform compatibility.
Since operating system and hardware platform independence are both key factors of code re-usability and really what open source software is all about I personally think this is a strong call.
However the parent post is correct in that application intent trumps all. If you are just writing shell tools y
... it is also pertinent to note here that the GNU standards document, section 3.1 [gnu.org]: "Which Languages to Use" strongly advises plain old C for both performance and absolute maximum cross-platform compatibility.
I remember for years C being considered faster on systems than C++, although I believe over the years the gap, if there still is one at all, has narrowed? What is true, someone share it with me as I am curious? Are there any incompatibilities when using C++ and migrating to different Operating System environments any more like their use to be in the dark ages?
Can you compile C++ down small enough to use in embedded devices or does C++ still pull in libraries that are not needed or too big?
The problem with C++ is that it's a crazy, crazy language. At first, it was just a superset of C, but now there's all kinds of stuff...it's mutated into a totally different kind of thing. C has this elegant simplicity going for it. There's nothing the matter with C++...except that C is (pretty much) perfect.
Also your feel dirty comment, is that because of the ease in which a poor programmer can create unstructured code? If so would it not be the fault of the programmer and not the language specifically? (i.e. Assembly for the 8088,..286,..386 and IBM Mainframe made me feel dirty sometimes with they way you were forced to branch, but it was fast...and no I am far from an expert Assembly programmer.
The problem with PHP (and I code mostly in it for a living) is that it wasn't 'designed' at all. Originally it was just a pre-processor, and it's grown into a full blown language from there. This is all
C has this elegant simplicity going for it. There's nothing the matter with C++...except that C is (pretty much) perfect.
You really should learn C++. Yes, C is really simple, but it's not a good language. At all. Unless you are doing low-level programming, C is probably the wrong choice. I mean, how the hell can you write a program these days without OOP, exceptions, generic containers/algorithms, and user-defined data types? I mean hell, C can't even deal with strings in any reasonable way.
I did learn C++, back in the day when it was a superset...but I stopped, because I didn't really like it.
I mean, how the hell can you write a program these days without OOP,
Honestly... I don't really like writing most things in OO style. I tend to find that most of the time, OOP is just done for OOP's sake, and it's much easier to just program in a procedural manner. A lot of "OO" code is just procedural code in OO clothing.
However, sometimes, it does make sense. Quite a bit of the coding I do is OO code. But that's usually because I'm working with other people who write in OOP style first.
exceptions
I don't like exceptions. It could be that I've been exposed to too much bad Java code, but again, I've found that most of the time, a try/catch block is wrapped around the smallest amount of code that it needs to be. Is
I mean hell, C can't even deal with strings in any reasonable way.
For your value of 'reasonable', anyway. I'll admit that it requires a tiny bit of extra knowledge compared to other languages, but it's certainly not difficult, and follows pretty logically from C's core ideas.
It doesn't matter as long as it's on Linux (Score:4, Insightful)
First, let me start by saying that the definition of an experienced programmer is that they don't care about the particulars of any given language. Experience means they have seen many languages come and go and they will continue to adapt.
That's the long-term skill that will keep putting money in your pocket. Coming out of college, it's important you know that.
That being said, congratulations on sticking with Linux in a Windows world. Purely from a job perspective, there might be more jobs on the Windows pl
This is all true however... (Score:5, Informative)
... it is also pertinent to note here that the GNU standards document, section 3.1 [gnu.org]: "Which Languages to Use" strongly advises plain old C for both performance and absolute maximum cross-platform compatibility.
Since operating system and hardware platform independence are both key factors of code re-usability and really what open source software is all about I personally think this is a strong call.
However the parent post is correct in that application intent trumps all. If you are just writing shell tools y
Re: (Score:4, Insightful)
... it is also pertinent to note here that the GNU standards document, section 3.1 [gnu.org]: "Which Languages to Use" strongly advises plain old C for both performance and absolute maximum cross-platform compatibility.
I remember for years C being considered faster on systems than C++, although I believe over the years the gap, if there still is one at all, has narrowed? What is true, someone share it with me as I am curious? Are there any incompatibilities when using C++ and migrating to different Operating System environments any more like their use to be in the dark ages?
Can you compile C++ down small enough to use in embedded devices or does C++ still pull in libraries that are not needed or too big?
Re: (Score:5, Interesting)
...C++...
The problem with C++ is that it's a crazy, crazy language. At first, it was just a superset of C, but now there's all kinds of stuff...it's mutated into a totally different kind of thing. C has this elegant simplicity going for it. There's nothing the matter with C++...except that C is (pretty much) perfect.
Also your feel dirty comment, is that because of the ease in which a poor programmer can create unstructured code? If so would it not be the fault of the programmer and not the language specifically? (i.e. Assembly for the 8088, ..286, ..386 and IBM Mainframe made me feel dirty sometimes with they way you were forced to branch, but it was fast...and no I am far from an expert Assembly programmer.
The problem with PHP (and I code mostly in it for a living) is that it wasn't 'designed' at all. Originally it was just a pre-processor, and it's grown into a full blown language from there. This is all
Re: (Score:2)
You really should learn C++. Yes, C is really simple, but it's not a good language. At all. Unless you are doing low-level programming, C is probably the wrong choice. I mean, how the hell can you write a program these days without OOP, exceptions, generic containers/algorithms, and user-defined data types? I mean hell, C can't even deal with strings in any reasonable way.
Re:This is all true however... (Score:3, Insightful)
I did learn C++, back in the day when it was a superset...but I stopped, because I didn't really like it.
I mean, how the hell can you write a program these days without OOP,
Honestly... I don't really like writing most things in OO style. I tend to find that most of the time, OOP is just done for OOP's sake, and it's much easier to just program in a procedural manner. A lot of "OO" code is just procedural code in OO clothing.
However, sometimes, it does make sense. Quite a bit of the coding I do is OO code. But that's usually because I'm working with other people who write in OOP style first.
exceptions
I don't like exceptions. It could be that I've been exposed to too much bad Java code, but again, I've found that most of the time, a try/catch block is wrapped around the smallest amount of code that it needs to be. Is
try { func(); } catch (Exception $e) { die("Died calling func: " . $e->getMessage(); }
really better than
#define TEST_ERROR(f, msg, ...) if(0 == f(__VA_ARGS__)) { fprintf(stderr, "Fatal error: %s", msg); }
TEST_ERROR(func, "Error calling func")?
generic containers/algorithms
Nice. But hardly neccesary.
user-defined data types
structs?
I mean hell, C can't even deal with strings in any reasonable way.
For your value of 'reasonable', anyway. I'll admit that it requires a tiny bit of extra knowledge compared to other languages, but it's certainly not difficult, and follows pretty logically from C's core ideas.