Is C# Making Devs Dumber (part two)
-
Some days ago I wrote about a new client I got, where I currently spend full-time developing in C++. I also made the statement that C# makes developers dumber. That made quite a few people upset ;) Unfortunately I did not have time to address all the replies, so I thought I would do it here, in a new post. One of the things I really love about C++ is pointers, and the way you can work with them. There are a lot of possible errors, but if you know what you are doing, C++ is seriously cool. C++ keeps me sharp (no pun intended) whereas C# wrap me in some sort of "secure wold" where I can relax in a way not possible in C++... Thats what I mean by "C# makes developers dumber"... - Anders My new photo website[^]
first let me put this in perspective, i work full time as a C++ and C programmer, about 70 / 30 split. i found time to read a book on C# 1 a while ago, and even wrote a couple of small programs in C#, so i have some limited experience of it. most of the time i find working in C *REALLY* frustrating, since i have to spend far to much of my time manipulating char * variables, building strings, checking buffer sizes, etc. oh i have all sorts of useful functions on hand, but it still takes extra effort and work to make sure you are doing it right. move to C++ and a proper string class (i get to use Qt) and suddenly i am free'd from all of this low level work! however there are times when it takes a LOT more code in C++ to do the string manipulation i want to do. these times are rare, and i can happily go for weeks without hitting one, but when i do, i have been known to take my lovely string class, turn it back into a char * and just use pointers to get the job done. which brings me, in a round about manor, to pointers. i have come to view pointers as the char * of the C++ world, in the sense that i seem to spend far more time than i should handling, checking, and double checking them. the Qt GUI framework seems (i have never done MFC programming, so cannot make an informed comparison) incredibly well designed and easy to use. it reminds me, in a general manor, of the forms classes in C# i briefly encountered. it is all build out of pointers to base classes, as you would imagine for C++. 99.9% of the time this is wonderful, easy, and stress free. but just now and then something goes horribly wrong with the pointers, due to someone not paying attention. due to years of practice, and quite a few hard lessons, i am VERY careful with my pointers, but not everyone is. so i see a lot of appeal to moving to a framework that makes as much of the "low level" work automatic as possible. when i am writing a program to decode EDIFACT, or to transform a set of databases from one form to a totally different form (they may overlap, if i am lucky, now and them *eeek*) then do i want to focus on allocating storage for my data, or on manipulating my data? if i use the power of Qt, or C++, or C#, or any other tool, to write basic programs with no depth, no complexity, and am not breaking new ground then i am not learning and growing. given enough time i may even become "dummer". but i could do exactly the same in C. i am clever, i can be stupid in any programming language if i feel the need! when
-
Sometimes this board reminds me of a road construction crew, a few guys down in the trench doing the digging and 10 guys standing around discussing shovel technology.
-
Josh Smith wrote:
Yeah buddy, 1 line vs. 500 lines...hmmm....right.
Yeah that's what happens when you compare PInvoke in C# to C++ code calling the same API, only in reverse of course. What is your point?
I wasn't referring to calling native APIs. I meant having things like delegates & events, automatic memory management, etc. Language/platform features. Josh -- modified at 13:27 Monday 19th June, 2006
-
John Simmons / outlaw programmer wrote:
It's not about making it easy for programmers or convenient for users - it's about money for Microsoft.
Actually, the two are mutual: Microsoft wants it to be easy for programmers to develop apps for Windows, which in turn keeps more end users on Windows, which makes Microsoft more money. To say .NET shackles developers to Windows is nonsense; .NET is very portable (case in point, the Mono Project[^], far more so than, say, MFC.
Tech, life, family, faith: Give me a visit. I'm currently blogging about: Goof around music jam with my brothers (with video) The apostle Paul, modernly speaking: Epistles of Paul Judah Himango
Judah Himango wrote:
.NET is very portable (case in point, the Mono Project[^],
You should read the soapbox...
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001 -
Some days ago I wrote about a new client I got, where I currently spend full-time developing in C++. I also made the statement that C# makes developers dumber. That made quite a few people upset ;) Unfortunately I did not have time to address all the replies, so I thought I would do it here, in a new post. One of the things I really love about C++ is pointers, and the way you can work with them. There are a lot of possible errors, but if you know what you are doing, C++ is seriously cool. C++ keeps me sharp (no pun intended) whereas C# wrap me in some sort of "secure wold" where I can relax in a way not possible in C++... Thats what I mean by "C# makes developers dumber"... - Anders My new photo website[^]
Imho, not having to worry about pointers (which isn't the same as "not having to know what pointers are and how memory management works") makes me a lot more productive, as do several other facets of C# (and Java). So much so that I've moved exclusively to C#/.NET, except when I have to maintain my C++/MFC freeware apps. Note, I'm not bashing C++/MFC (or non-.NET technologies). /ravi My new year's resolution: 2048 x 1536 Home | Music | Articles | Freeware | Trips ravib(at)ravib(dot)com
-
No problem. Life might be somewhat harder but it would be a lot less stressful then a day at the office I'm sure. Plus what you would do in the wild would actually be productive in the sense that what you were doing would actually benefit you and your family... On the other side, I do like my A/C and I don't like being hot so I'll stick with comfort for now and rely on primitive living for when it just must be done. @the original author: C# isn't bad and neither is C++ but why use unsafe code if you can do the same thing in C# safely? If a problem arises that can't be handled in C# then by all means have fun and write some C++ or unsafe C# code. -Richard
Richard Parsons wrote:
C# isn't bad and neither is C++ but why use unsafe code if you can do the same thing in C# safely? If a problem arises that can't be handled in C# then by all means have fun and write some C++ or unsafe C# code.
Though, suppose they made cars that automatically steer away from hazards. Ie, you could drive this thing into a signpost and it would safely steer you back on the road instead of letting itself crash. After a few years of this, you're probably not going to worry as much about driving safely as if you did have these considerations to keep in mind - and frankly, dodging a signpost isn't something you need to put too much effort into doing if you're a decent driver.
-
I'm thinking of more than just office days. How about the pursuit of science, expansion into space, time for spiritual matters and time to write a great book. Time to spend flying a kite with your kids because you don't have to spend 18 hours a day picking berries. I don't think hunter gatherer families were at all healthy. It was a crude, mean way of life. If a child got sick, she was left behind and died. We often romanticise past days thinking much of it was spent without the pressure of modern day life. We forget the pressures of basic living. As someone said; life back then was short and brutal. regards, Paul Watson Ireland FeedHenry needs you
eh, stop bugging me about it, give it a couple of days, see what happens.
-- modified at 10:12 Monday 19th June, 2006
Paul Watson wrote:
As someone said; life back then was short and brutal.
FWIW, Thomas Hobbes, in Leviathan http://en.wikipedia.org/wiki/Hobbes[^] : Life in the state of nature is "solitary, poor, nasty, brutish, and short"
-
I wasn't referring to calling native APIs. I meant having things like delegates & events, automatic memory management, etc. Language/platform features. Josh -- modified at 13:27 Monday 19th June, 2006
Josh Smith wrote:
I wasn't referring to calling native APIs.
There you have it then, some things are simplified while others are more complex. In the new thread the OPs point is different tools for different jobs. Therefore a comparison without context is, as he put it, "silly".
-
Some days ago I wrote about a new client I got, where I currently spend full-time developing in C++. I also made the statement that C# makes developers dumber. That made quite a few people upset ;) Unfortunately I did not have time to address all the replies, so I thought I would do it here, in a new post. One of the things I really love about C++ is pointers, and the way you can work with them. There are a lot of possible errors, but if you know what you are doing, C++ is seriously cool. C++ keeps me sharp (no pun intended) whereas C# wrap me in some sort of "secure wold" where I can relax in a way not possible in C++... Thats what I mean by "C# makes developers dumber"... - Anders My new photo website[^]
So does using a calculator. But whoever proposes to use their brain to compute my taxes is getting a swift kick to the %^&*. Todd Smith
-
I don't see how a choice of language could make someone "dumb." A dumb person is slow to learn or understand. I disagree that a person's innate intellectual capacity is directly affected by the programming language they use. Perhaps you meant to say that "C# keeps people ignorant" instead? The abstractions afforded by the .NET framework (not C# in particular) do allow the developer to ignore what many C++ers enjoy most; the nitty grittiness of the underlying details (memory addresses, etc.) By shielding a developer from the ones and zeros, a higher level language does, indeed, keep him/her happily removed from the underlying reality. But as Andrew Koenig mentioned in "Ruminations on C++"...Abstraction is selective ignorance. Cheers, Josh
I think the original statement is that working in a language that manages elements for you that other languages don't contribute to a complacency that is realized when you return to the environment where you need those skills and haven't been excercising them. If you go on a survival mission in the woods, you might find that civilazation has made you complacent with regard to survival in the wild. This statement is false.
-
I think the original statement is that working in a language that manages elements for you that other languages don't contribute to a complacency that is realized when you return to the environment where you need those skills and haven't been excercising them. If you go on a survival mission in the woods, you might find that civilazation has made you complacent with regard to survival in the wild. This statement is false.
I see what you mean. I started off with C++ and then got into C#. Whenever I return to dabble in C++, I find myself forgetting to do the manual labor which the CLR takes care of for me. I don't find that labor to be particularly rewarding or interesting. Deleting objects on the heap, closing file handles, not my idea of a good time. :)
Chris S Kaiser wrote:
If you go on a survival mission in the woods, you might find that civilazation has made you complacent with regard to survival in the wild.
I suppose it's possible that terrorist nukes might destroy our civilization, leaving us to fend for ourselves like cavemen. But I'm not afraid of .NET programming suddenly going away, leaving us all to code in the unforgiving lands of C++. I like my air conditioning, damn it! You can use a palm leaf if you want to. :) Josh
-
I see what you mean. I started off with C++ and then got into C#. Whenever I return to dabble in C++, I find myself forgetting to do the manual labor which the CLR takes care of for me. I don't find that labor to be particularly rewarding or interesting. Deleting objects on the heap, closing file handles, not my idea of a good time. :)
Chris S Kaiser wrote:
If you go on a survival mission in the woods, you might find that civilazation has made you complacent with regard to survival in the wild.
I suppose it's possible that terrorist nukes might destroy our civilization, leaving us to fend for ourselves like cavemen. But I'm not afraid of .NET programming suddenly going away, leaving us all to code in the unforgiving lands of C++. I like my air conditioning, damn it! You can use a palm leaf if you want to. :) Josh
Josh Smith wrote:
I suppose it's possible that terrorist nukes might destroy our civilization, leaving us to fend for ourselves like cavemen. But I'm not afraid of .NET programming suddenly going away, leaving us all to code in the unforgiving lands of C++. I like my air conditioning, damn it! You can use a palm leaf if you want to.
Heh heh... I'm currently coding in C# and loving it. But I think the thread is more about complacency than dumbness. Keeping skills sharp is our responsibility, not the languages. If your not entering the woods, then complacency may serve you. I did some C++ recently and discovered that I took some things for granted. And this is I think, the fear behind a large portion of the new developers not having this experience is that understanding what's under the hood makes you a better developer in any language. You still need to understand memory management in C#, you should at least understand garbage collection and how much of a hit your 1000+ string concatenations are doing to your performance. So, no, I don't think that C# ruins engineers, but it does contribute to complacency with new engineers that haven't had to manage the basics. This statement is false.
-
Paul Watson wrote:
Same with programming applications. I want to focus on features, usability and functionality. Not figuring out pointers, bytes and low level processes.
Exactly. The best programming platform, IMO, is one that lets you focus more on features, usability, functionality, flexibility, and extensibility most of the time, but allows for raw speed and low-level stuff when needed. .NET with C# and C++/CLI does that well.
Enjoying this thread and reflecting on the past ... once upon a time, people said that OOLs like C++ would dumb down C programmers ... that HLLs like C would dumb down assembler programmers ... I have seen people enter machine language into a mainframe using a toggle switch. Long ago, there must have been some whale saying "if we crawl up on the land, we will lose our ability to fight off sharks, so I'm gonna stay here in the ocean and be a real cetacean." Been around the block a few times
-
No problem. Life might be somewhat harder but it would be a lot less stressful then a day at the office I'm sure. Plus what you would do in the wild would actually be productive in the sense that what you were doing would actually benefit you and your family... On the other side, I do like my A/C and I don't like being hot so I'll stick with comfort for now and rely on primitive living for when it just must be done. @the original author: C# isn't bad and neither is C++ but why use unsafe code if you can do the same thing in C# safely? If a problem arises that can't be handled in C# then by all means have fun and write some C++ or unsafe C# code. -Richard
This thread, and others like it that either promote a language as being the best, or the worst, always tickle me. "Do these message posters only use a single language for everything?", I think to myself. Maybe so, maybe the posters are C#, or C++ programmers, and not Application Developers. I think the average Application Developer uses several languages, and picks the best one for the job at hand. I was an assembly language programmer for 15 years, and I could write a program to do most anything, except user interfaces. I recognized the shortcoming of the language in that area, and used another tool for user interfaces. I did this because I'm an Application Developer, and not just an assembly language programmer. Part of what makes us good at our job is knowing what tool to use for what occasion. Trying to make one programming language work for every task limits your capabilities... and your hourly rate :) DanR
-
Enjoying this thread and reflecting on the past ... once upon a time, people said that OOLs like C++ would dumb down C programmers ... that HLLs like C would dumb down assembler programmers ... I have seen people enter machine language into a mainframe using a toggle switch. Long ago, there must have been some whale saying "if we crawl up on the land, we will lose our ability to fight off sharks, so I'm gonna stay here in the ocean and be a real cetacean." Been around the block a few times
-
The fact that people (in this case a c++ programmer) constantly feel the need to tear others down (in this case c# programmers) continues to amaze me. Those who ARE smart (anyone who uses a tool to accomplish a given task well) don't need to bring others down. Those who CLAIM to be smart (c++ programmer) by showing that others are dumb is the one who in reality is _ _ _ _. A smart thing to do would be to come up with something more creative, original and useful to write about and discuss. How about writing an example of where and how using pointers in c++ is a better tool for a given situation. Then we can use our brains to discuss something that may actually be helpful. Sincerely, Programmer (period)
rkleinen wrote:
Those who ARE smart (anyone who uses a tool to accomplish a given task well)
I agree with this. Most programming languages do the same thing, some with better performance others, some with less time in development, but the end result is usually close to the same thing on a specific target platform. I could care less what other developers choose as a good technology to work in as long as I am not pressured or forced to use it. In my thoughts, a good programmer picks the tools they will master and uses those tools to their full extent to get the job done. Rocky <>< Latest Post: Visual Studio 2005 Standard, whats missing? Blog: www.RockyMoore.com/TheCoder/[^]
-
Judah Himango wrote:
.NET is very portable (case in point, the Mono Project[^],
You should read the soapbox...
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"...the staggering layers of obscenity in your statement make it a work of art on so many levels." - Jason Jystad, 10/26/2001Every time I read the soapbox, I waste about 2 hours replying to message. No way I'm visiting the soapbox anymore, not at work at least. :)
Tech, life, family, faith: Give me a visit. I'm currently blogging about: Goof around music jam with my brothers (with video) The apostle Paul, modernly speaking: Epistles of Paul Judah Himango
-
Enjoying this thread and reflecting on the past ... once upon a time, people said that OOLs like C++ would dumb down C programmers ... that HLLs like C would dumb down assembler programmers ... I have seen people enter machine language into a mainframe using a toggle switch. Long ago, there must have been some whale saying "if we crawl up on the land, we will lose our ability to fight off sharks, so I'm gonna stay here in the ocean and be a real cetacean." Been around the block a few times
I am of the point that C# makes developers dump. Not only dumb but deaf too... When pretty much is already done for you, you dont have to figure out about your memory management other issues then what the hell the power you have in your hands? Its just merely a Macro Programmming Language then... C# is a newer version of VB wearing the skin of Java. And that's it. If C# is the way to go, please let me know why the following applicatiosn are still in C++ 1) Microsoft Office XP 2) Microsoft Office 2003 3) Microsoft Visual Studio .NET 2002 3) Microsoft Visual Studio .NET 2003 Even Microsoft Office 2007 is not a managed app at all. By providing .NET Framework, Microsoft answered Sun Microsystems for there J2EE in exactly the same way its answering Sony for its PlayStation 3 with XBox 360. Looking into the future of computing hardware and the situation of silicon and integration, I am convinced that the Idea of Rutime Eviroments is far fetched yet whether it be JVM or CLR. At least next decade is not for them. Still in 2006, we dont have PCs operating more then 4 GHz even though we may have jumped from 32 bit to 64 bits architectures.... On the average, users have a RAM of 512 MB. 1 GB RAM is not the norm yet.... So these Rutime Enviroments are asthetically pleasant when viewed from architectural point of view that every thing is wrapped in an object... But have to do less with the reality. Best regards, Mohsin Polite Programmer
More Object Oriented then C#
-
Enjoying this thread and reflecting on the past ... once upon a time, people said that OOLs like C++ would dumb down C programmers ... that HLLs like C would dumb down assembler programmers ... I have seen people enter machine language into a mainframe using a toggle switch. Long ago, there must have been some whale saying "if we crawl up on the land, we will lose our ability to fight off sharks, so I'm gonna stay here in the ocean and be a real cetacean." Been around the block a few times
My personal objection to C# (for the development that I do professionally) is the lack of source code protection. Obfuscation does not work and I am unsure if the protectors I have found will work in future versions of the .NET Framework. Source code protection possibilities should be a built-in feature. Johannes
-
Some days ago I wrote about a new client I got, where I currently spend full-time developing in C++. I also made the statement that C# makes developers dumber. That made quite a few people upset ;) Unfortunately I did not have time to address all the replies, so I thought I would do it here, in a new post. One of the things I really love about C++ is pointers, and the way you can work with them. There are a lot of possible errors, but if you know what you are doing, C++ is seriously cool. C++ keeps me sharp (no pun intended) whereas C# wrap me in some sort of "secure wold" where I can relax in a way not possible in C++... Thats what I mean by "C# makes developers dumber"... - Anders My new photo website[^]
C# is just the beginning. Programming languages will continue to become increasingly abstract and thus lend themselves to greater programmer productivity. Does anyone still lament the leap from assembler to higher-level code like C? Many programmers now do not even consider C high-level. Before very long, even C++ will almost seem like assembler does now because of the need to pay attention to low-level details. Eventually, C# will be eclipsed by something even more abstract (perhaps C** "See Stars") where the programmer makes syntactical "gestures" and the compiler just seems to know what you mean. Integrated logic debugging will be tightly married to code production rather than an afterthought. Intellisense is the handwriting on the wall, so to speak, a hint of what is to come. Every religion has its adherents, and programming languages are a lot like religions - formal systems of belief. But the holy grail for coders is and always will be productivity. Doing the most with the least effort, the fewest lines of code, is what drives compiler development and pushes programming languages into higher and higher levels of abstraction. We have lift-off. Thorn