Am I wrong?
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
There is a whole can of worms here, depending on your personal prejudices! IMHO there is no such thing as a "better language" per se. Each of them have advantages and disadvantages but even those are dependent on how you are trying to use them, and for what. If you want to code for an Android device for example, then Java is the obvious choice. But for a PC? I hate even letting the Java runtime know my PC exists, let alone allow it to install itself! C# is good for PC app development, but if you want lots of speed, then C++ is better. C is good for embedded devices, but C++ works well if you are careful, and C# won't really work at all. But Java, C, and C++ wouldn't work in a web site where Javascript is king! And so on! Task and environment is more important than language: if you already appreciate the hardware I wouldn't learn C - it's a bit outdated and very simple these days, plus it has no OOPs features at all which really do help with large modern developments. So what would I learn? If you want to learn about OOPs then I'd start with C# - it's powerful, OOPS and flexible, but "hides" the hardware from you pretty well so you can concentrate on tasks rather than implementations.
-
This thread again? Here's how this thread goes: some agree, some disagree, everyone mentions their pet language causing this thread to recurse. Your friend is an idiot, as is anyone who says "I don't need to learn [some fundamental concept]".
No I'm not. And I don't need to learn [some fundamental concept]! :laugh:
-
There is a whole can of worms here, depending on your personal prejudices! IMHO there is no such thing as a "better language" per se. Each of them have advantages and disadvantages but even those are dependent on how you are trying to use them, and for what. If you want to code for an Android device for example, then Java is the obvious choice. But for a PC? I hate even letting the Java runtime know my PC exists, let alone allow it to install itself! C# is good for PC app development, but if you want lots of speed, then C++ is better. C is good for embedded devices, but C++ works well if you are careful, and C# won't really work at all. But Java, C, and C++ wouldn't work in a web site where Javascript is king! And so on! Task and environment is more important than language: if you already appreciate the hardware I wouldn't learn C - it's a bit outdated and very simple these days, plus it has no OOPs features at all which really do help with large modern developments. So what would I learn? If you want to learn about OOPs then I'd start with C# - it's powerful, OOPS and flexible, but "hides" the hardware from you pretty well so you can concentrate on tasks rather than implementations.
We are coding for Win32, but I am coding more low level than he, that's why I tend to favor languages that do not hide the hardware from me. Currently I am experimenting with a program that can manipulate PE files (written in C++) and a metamorphose program in assembler. If everything works out I plan to join both projects together to encode PE files. For many things like GUI, Delphi seems a lot easier to me at first but as soon as you want to do something a little more complex it gets really annoying plus the language is just crap.
-
We are coding for Win32, but I am coding more low level than he, that's why I tend to favor languages that do not hide the hardware from me. Currently I am experimenting with a program that can manipulate PE files (written in C++) and a metamorphose program in assembler. If everything works out I plan to join both projects together to encode PE files. For many things like GUI, Delphi seems a lot easier to me at first but as soon as you want to do something a little more complex it gets really annoying plus the language is just crap.
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
You seem to believe you are asking a question with a concrete answer. You can also ask is it better to learn the saxophone or the veena or should you wear blue on Thursdays.
Peter Wasser Art is making something out of nothing and selling it. Frank Zappa
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
IMHO... There is no 'best language'. All depends on the task you have to perform... Whenever you face a new task you have to look into your toolkit and choose the best tool you have for that task. If you have no tools for it, then look around and ask others to help to choose a new tool to 'buy'. But you can't talk about 'best' without talking about the task...
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is (V).
-
There is a whole can of worms here, depending on your personal prejudices! IMHO there is no such thing as a "better language" per se. Each of them have advantages and disadvantages but even those are dependent on how you are trying to use them, and for what. If you want to code for an Android device for example, then Java is the obvious choice. But for a PC? I hate even letting the Java runtime know my PC exists, let alone allow it to install itself! C# is good for PC app development, but if you want lots of speed, then C++ is better. C is good for embedded devices, but C++ works well if you are careful, and C# won't really work at all. But Java, C, and C++ wouldn't work in a web site where Javascript is king! And so on! Task and environment is more important than language: if you already appreciate the hardware I wouldn't learn C - it's a bit outdated and very simple these days, plus it has no OOPs features at all which really do help with large modern developments. So what would I learn? If you want to learn about OOPs then I'd start with C# - it's powerful, OOPS and flexible, but "hides" the hardware from you pretty well so you can concentrate on tasks rather than implementations.
Exactly, right tool for the right job!
VS2010/Atmel Studio 6.1 ToDo Manager Extension Relax...We're all crazy it's not a competition!
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
None of those is a best first language. And C should be learnt before object-oriented and other "modern" languages. A new developer should learn have exposure to a number of languages in roughly chronological order and understand the fundamentals more than any particular language.
Cody227 wrote:
I've never never written a single program in ASM I feel like I would've never understood coding without it
I think we agree. There are some who pick a language that they think will get them the most money and then only learn that one language; it leaves them stunted and in flexible. What makes it worse is when they choose to learn that one on their own from books rather than going to college and learning from several accomplished practitioners and colleagues.
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
There is no "better than any other" language. You must pick the language that you understand best and can do the job. Delphi is apparently great for UI stuff (I have only used it a tiny bit) but is a pain otherwise. Java sucks on the PC, you are better off using C# or even, *gasp*, VB than Java - however, on mobile devices it may be a lot better fit. For what you describe, I would definately use C and C++. C is as close to the metal you can get without using assembler, C++ gives you objects, classes and all the good stuff. When you say zero-terminated strings are "slow", how do you mean? They are one of the fastest implementations of string handling you can get, generally.
- I would love to change the world, but they won’t give me the source code.
-
None of those is a best first language. And C should be learnt before object-oriented and other "modern" languages. A new developer should learn have exposure to a number of languages in roughly chronological order and understand the fundamentals more than any particular language.
Cody227 wrote:
I've never never written a single program in ASM I feel like I would've never understood coding without it
I think we agree. There are some who pick a language that they think will get them the most money and then only learn that one language; it leaves them stunted and in flexible. What makes it worse is when they choose to learn that one on their own from books rather than going to college and learning from several accomplished practitioners and colleagues.
My point is that I think a new developer should learn a rather low level language that is unforgiving at first, to learn the basic principles, how a computer works and what should/shouldn't be done in coding. If someone asked me what language he should learn I would advise him to do it in this order: - C tutorial to learn what variables, loops, if-statements and so on are - a few simple C programs that run in a DOS console - assembly - assembly - assembly - more complex programs in C++ (absolutely no RAD environment) - choose a language that suits you and your requirements best (now you should now enough to use a RAD environment too)
PIEBALDconsult wrote:
what makes it worse is when they choose to learn that one on their own from books rather than going to college and learning from several accomplished practitioners and colleagues.
lol that's exactly how I started. My first "program" was a fake-virus batch which displayed a list of all files in green in an endless loop. From then on I was hooked and started to read tutorials about different languages like BASIC, Delphi and C suited me the best so I began to enhance my skills in that language. But I only do it as a hobby so it's okay not to be a professional in it. (Still I'm the best coder in the school and like to make the teacher look like an idiot. They're "teaching" us Delphi and no one has nowhere near an idea what a pointer is)
-
There is no "better than any other" language. You must pick the language that you understand best and can do the job. Delphi is apparently great for UI stuff (I have only used it a tiny bit) but is a pain otherwise. Java sucks on the PC, you are better off using C# or even, *gasp*, VB than Java - however, on mobile devices it may be a lot better fit. For what you describe, I would definately use C and C++. C is as close to the metal you can get without using assembler, C++ gives you objects, classes and all the good stuff. When you say zero-terminated strings are "slow", how do you mean? They are one of the fastest implementations of string handling you can get, generally.
- I would love to change the world, but they won’t give me the source code.
-
This thread again? Here's how this thread goes: some agree, some disagree, everyone mentions their pet language causing this thread to recurse. Your friend is an idiot, as is anyone who says "I don't need to learn [some fundamental concept]".
What worries me is the idea that if I have no real friends, then I am the idiot, since it's clear there's at least one idiot in the house.
“I'm an artist: it's self evident that word implies looking for something all the time without ever finding it in full. It is the opposite of saying : 'I know all about it. I've already found it.' As far as I'm concerned, the word means: 'I am looking. I am hunting for it. I am deeply involved.'” Vincent Van Gogh
-
I have upvoted CPallini's reply, because I feel he is essentially correct; the only minor disagreement I have with his conclusion is that I feel the OP is absolutely right.
“I'm an artist: it's self evident that word implies looking for something all the time without ever finding it in full. It is the opposite of saying : 'I know all about it. I've already found it.' As far as I'm concerned, the word means: 'I am looking. I am hunting for it. I am deeply involved.'” Vincent Van Gogh
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
I think it "all depends" on how you define the words "better," and "learn." And, it depends on your cognitive style: yes, people have different cognitive styles; some are more innately top-down thinkers; others are more innately bottom-up thinkers. For some people thinking recursively is very natural (they feel at home in LISP). People's ability to visualize/conceptualize complex processes may vary in terms of the relative salience of "visual-thinking" and "abstract thinking." And, context: where you are; the circumstances you are in; the limits, or requirements, of the task at hand, and the time to achieve it in. imho, what is a more interesting question to ask, imho, is: what type of education would best prepare people for careers as professional programmers? I'll never forget when I worked at Adobe, as a PostScript idiot-savant, on Illustrator, PhotoShop, Acrobat, Multiple-Master Font Technology, etc., and I talked to the young genius, Mark Hamburg (who was awarded the Gordon Moore Prize for his remarkable work on moving PhotoShop forward). I asked Mark about what he had majored in at college. He replied that he majored in Mathematics; I asked him if he had considered Computer Science. Mark said, essentially, that he had already read, and understood all of Donald Knuth's books, and felt he had nothing more to learn in that area. My own journey in the last thirty years has been from 6502, and 6809, assembly language, to Pascal, and Basic, to HyperCard, to LISP, to PostScript, to Visual Basic and VBA, finally to C#. For me C# is perfect: just terse enough, just high-level enough. Rant: If only MS had put some energy into giving WinForms a high-level vector-based 2d retained-mode graphics/drawing engine, instead of going off the deep-end with WPF and SilverLight ! All the languages I have studied, and used, have helped me become the obscure non-entity I am today :)
“I'm an artist: it's self evident that word implies looking for something all the time without ever finding it in full. It is the opposite of saying : 'I know all about it. I've already found it.' As far as I'm concerned, the word means: 'I am looking. I am hunting for it. I am deeply involved.'” Vincent Van Gogh
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
I think it "all depends" on how you define the words "better," and "learn." And, it depends on your cognitive style: yes, people have different cognitive styles; some are more innately top-down thinkers; others are more innately bottom-up thinkers. For some people thinking recursively is very natural (they feel at home in LISP). People's ability to visualize/conceptualize complex processes may vary in terms of the relative salience of "visual-thinking" and "abstract thinking." And, context: where you are; the circumstances you are in; the limits, or requirements, of the task at hand, and the time to achieve it in. imho, what is a more interesting question to ask is: what type of education would best prepare people for careers as professional programmers? And, yes, that takes us right into the briar-patch (in England, would that be a "sticky wicket" ?), of what a "professional programmer" is, these days. I'll never forget when I worked at Adobe, as a PostScript shaman, on Illustrator, PhotoShop, Acrobat, Multiple-Master Font Technology, etc.; one day, I talked to the young genius, Mark Hamburg (who was awarded the Gordon Moore Prize by his peers for his remarkable work on PhotoShop's evolution). I asked Mark what he had majored in at college; he replied he'd majored in Mathematics; I asked him if he had considered Computer Science. Mark said, essentially, that he had already read, and understood, all of Donald Knuth's books, while he was in High School, and felt he had nothing more to learn in that area. Unfortunately, most of us are not Mark Hamburgs (and will never be) ! My own journey in the last thirty years has been from 6502, and 6809, assembly language, to Pascal, and Basic, to HyperCard, to LISP, to PostScript, to Visual Basic and VBA, finally to C#. For me C# is perfect: just terse enough, just high-level enough. Rant: If only MS had put some energy into giving WinForms a high-level vector-based 2d retained-mode graphics/drawing engine, instead of going off the deep-end into the-next-greatest-thing-frenzy with WPF and SilverLight ! But, all the languages I have studied, and used, have helped me become the obscure non-entity I am today :)
“I'm an artist: it's self evident that word implies looking for something all the time without ever finding it in full. It is the opposite of saying : 'I know all about it. I've already found it.' As far as I'm concerned, the word means: 'I am looking. I am hunting for it. I am deeply involved.'”
-
Am I wrong thinking that C is a better language for one to learn as Java or Delphi? I have a friend who always says C and C++ are hard to learn, outdated and impractical. I can understand that he thinks Java is better as it was his first language, but I seriously can not understand why he thinks Delphi is better than C. After Basic it's one of the worst languages that I've seen so far. I was alyways convinced that you need to know how a computer works at low-level to be able to write decent code... Altough I've never never written a single program in ASM I feel like I would've never understood coding without it and seeing what my friend texts me sometimes I might be right. Only a few days ago he stated that he wouldn't need to learn pointers because Java "doesn't use them" and "var parameters in Delphi aren't pointers". And at the same time he asked how to send an array of pixels with WinSock because the appropriate delphi-function only accepts strings. But then there are things that really annoy me about C like null-terminated strings. They are so damn slow!
Short form - your friend is a moron who will never learn to code well. There's still hope for you. Long form - Delphi, being the modern version of the best general purpose programming language ever created (Pascal) is excellent for getting the job done, but not so good for making the hardware dance. C and C++ both suck donkey dangly bits, since they use an archaic and unreasonably complex syntax, but they both give you far greater control over the real machine, not just the virtual one that Windows lets you 'see.' If you truly want to master this field, learn Assembly for one or more mainstream processors, then C/C++, then you can decide which of the popular general purpose languages you want to play with. Oh, and find smarter friends...
Will Rogers never met me.
-
Exactly, right tool for the right job!
VS2010/Atmel Studio 6.1 ToDo Manager Extension Relax...We're all crazy it's not a competition!
If your employer confronts you with different jobs requiring different tools at different times - on short notice - then you will need to prepare a generalist skill set in advance. If there is pressure to get a product into test or out the door, you simply won't have the time to pick it up, even though you may be a very fast learner. This sort of meltdown can be exacurbated by principals going on holiday, long term secondment, or elsewhere. Under these circumstances you are likely to be the only spar holding the burning plane's wings on as the bosses try and guide it down to a safe landing. Example - C# is a great language for General Purpose and rapid prototype; but being able to mix and match with interop win32 dll's either from the API or that you have written yourself is a great skill, which is picked up by learning C/C++ techniques and the Interop techniques in advance. Even old skills like ATL/COM are useful for RPC's and eventing if you are crossing process and OS boundaries. Learning the basics in advance and in your own time would definitely make you an asset, at least in industrial, robotic and engineering contexts. And let's not forget, the madder the company the more fun there is. :-O