3 ms·
Interesting, I reached more or less the same conclusions about 10 years ago, after about 20 years programming in C++. I think with C++ I had also reached the p
by buserror 11y ago
Interesting, I reached more or less the same conclusions about 10 years ago, after about 20 years programming in C++.
I think with C++ I had also reached the point where I realized it was not just difficult to scale (I had worked on ginormous codebases) it was also difficult to 'control'... Adding new people on the project could sometime mean disasters that would go unseen for a while before exploding in your face...
Newbie programmer decides it's a cool idea to go and 'tweak' the String class - or any other base class- or other equivalent 'good idea' that sometime lead to huge amount of effort to understand the weird ripple effects afterward, and then 'fix' so it's done 'properly'.
There was also the 'design for design' problem where a 1/2 page feature that was ever going to be used ONCE was designed with an imbroglio of 5 or 6 classes just to match some person's idea of a 'design pattern'.
I've now 'reverted' to mostly 'procedural' C; however, quite a lot of the 'good' concepts of C++ for encapsulation can be done in C without all the faffing around, and it's a LOT harder to fsck up and create ripple effects; you can 'layer' modules instead of 'inheriting' with the equivalent compartmentalization you'd want from C++, without the 'dangers' of inheritance.
Sure, it lacks syntaxic sugar, and sure, there's still stuff I miss; but it does scale pretty well, and the footprint difference is fantastic.
- rumcajz 11y agoSame story here. Went from C++ to C for similar reasons.
- blub 11y agoI think you need to take a step back, because you are analysing your problems at the wrong abstraction level. It sounds like you had an engineering problem, not a programming language one. Changing the programming language won't prevent newbie programmers from wreaking havoc in your code base, nor improve the software design skills of your colleagues. On the other hand, I do agree that programming languages have a "culture" which defines the idioms that are accepted, patterns, attitudes towards various practices. My feeling is that hyper-oop programmers have long moved on to Java and .NET. C has a culture of keeping things simple, because of its long history and limited abstraction possibilities. It's also the favorite refuge of people that hate OOP, so no surprise you won't see over-engineered OOP hierarchies.
- alxndr 11y agoUnrelated (sorta): love the appropriateness of your username
- lunchTime42 11y agoThe newbie programer effect is part of the lacking Integration of Zoning in a Codebase. Thus its a IDE problem. You cant go and declare some basic tool classes only editable by a expert/architect or a newb under "SignOff" Supervision. There is also no real metric on expertise, and a way to prevent non-experts to go banana on something beyond the scope of there fields. You do not want a assembler coder going first time OO and in reverse. What actually would help is a sort of guild - where one has to accomplish certain feats first, before beeing allowed to level up..
- buserror 11y agoI agree that in an ideal world, it would work like that; however in most companies, 'programmers' are hired, rarely as 'juniors' and sometime are moved across the company to a new team, who then realize they are... err ... 'junior' at best. Then there is the minefield of how to break the news to someone that they can't be trusted 'just yet', with the discrimination minefield that implies etc. And in many companies, you can't even go an tell a colleague that their change is in fact, crap, and has to be redone properly. Never been in a company where that didn't create huge waves, regardless of the level of proof you can attach to it. I hear in some companies (google?) it's expected, but it's an exception, in my experience...