• Forum
  • Lounge
  • What is it with online programmers and a

 
What is it with online programmers and a hate for "Re-inventing the wheel"?

I'm sure we have all been told this, at some point in our programming journey that we "are trying to re-invent the wheel, just use the standard/LibX/LibY ..."

When I first learned the history of programming; it spoke to me in a way that was all about learning and experimentation. Programmers going against the grain and coming up with new and interesting ideas.

Do you think Bjarne was told "Don't make another language, we already have C"?

So far in my journey, I have made my own tools, my own programming environment. I like it this way, the only tools I need are the tools I create (If I could write my own <iostream> I certainly, certainly would ). I like that I have been able to understand a computer along side the language itself.

This is maybe because I have no programming goal. I do not have to create top-notch government software, I don't have to make the sequel to x AAA game. Yet when I ask questions on the internet, I get treated like an idiot.


Me - "Hi all, I would to like to create X."

Programmer 1 - "#include <Y> just use this it does what you want."

Programmer 2 - "This Z library has all the tool you want."

Programmer 1 - "Z library needs A,B and C just use Y"

- Thread derails and turns into a battle ground.


I'm not sure why, whether they assume before they ask, or my questions are too ambiguous. However at this point I am leading towards this:

They keep referring me to use X Y and Z simple because they don't know how to do it. If they did, they would be able to tell me instead of referring me to said tools. Is their ego so fragile that "not knowing" is just too much for them bare they tell me to use something else?

I can honestly say when it comes to programming I don't know anything. I know why I make something and it compiles and works, but what happens inside the compiler I do not know, what happens inside the linker I do not know. How the kernel actually perceives this data in the first place I have no clue what so ever, but I'm not afraid to admit it.

I really don't understand why programmers argue so much over what to use. I feel like programmers argue more than my parents and my mom got a black eye on more than one occasion.


So. Can someone in the industry tell me why they argue so much? Or feel the need to constantly iterate their opinion until people give in and "use the standard" instead of allowing people to think freely and learn how all this works?
Do you think Bjarne was told "Don't make another language, we already have C"?

Bjarne was told something more along the lines of "wtf did you just do?? Your stupid Simula program brought down the entire computing cluster". So he figured out a way to make it more efficient.

When your tools are inadequate, it's a perfectly good reason to make new tools. But when you ask how to do something, you will be pointed to the tools that exist for that purpose.
@Cubbi

Hah, I could imagine so.

But when you ask how to do something, you will be pointed to the tools that exist for that purpose.


But if I ask how to do something, and not ask for a tool to do it for me, why do they still refer me?

I usually try to be direct: I want to make said tool with said functionality

I don't ask to be referred to a tool that will do it, I want to learn how to do it, and how they have done it.

I really hope I'm not being a dick, I really just want to learn how it all works, but I can never seem to get anywhere.

I always made/make it clear I'm reinventing the wheel to learn how it works.
I always made/make it clear I'm reinventing the wheel to learn how it works.


That's usually when they say "Stop re-inventing the wheel, just use X". :/
Well, doing it to learn how it works and using it for a purpose are two different things. You could try and develop your own wrapper for OpenGL if you want to see how such wrappers work- just don't try and actually use it for full functionality if you did it as a side project.

In other words, unless you're trying to develop a tool as efficiently and effectively as possible, it will probably be inferior in actual use to one that is developed for that purpose. Take matrix arithmetic for example. In a lot of code, people simply create a matrix class, fill it with some nifty things, and make it somewhat functional. However, it will likely not be able to top something like Eigen in terms of effectiveness, functionality, or efficiency. Sure, you could make that matrix class anyway- just don't use it in later code.
Do you think Bjarne was told "Don't make another language, we already have C"?

probably not since AT&T bell labs explicitly came to him and asked him to look at the unix kernel in terms of distributed computing
It is fine to reinvent the wheel to learn on your own free time. It is wasteful to do so when you are trying to accomplish a goal other than learning.
I've got a pretty bad case of Not Invented Here syndrome, mostly because I hate how different libraries use different coding styles and architectures. Using several libraries can get very ugly when they all use different styles and designs. Even just mixing STL and Boost with something like SDL can be ugly. I tend to just use a thin wrapper over each library instead of writing my own, though, because otherwise I would spend so long reinventing wheels that I would never get to invent my new one.
I tend to just use a thin wrapper over each library instead of writing my own, though, because otherwise I would spend so long reinventing wheels that I would never get to invent my new one.


A lesson it took me an hour to learn and like 4 years to accept.
The "reinvent the wheel" analogy is a bad one in my opinion. Why? Because in programming, we don't have a(n equivalent to a) wheel. And even when/if someone does finally invent the wheel of programming, it still won't be an excuse to not learn how axles and gears work.
we don't have a(n equivalent to a) wheel



I'd argue that basic sorting algorithms and data structures are the programming equivalent to a wheel. However, that's certainly NOT what people are talking about when they speak of reinventing the wheel.
basic sorting algorithms and data structures are the programming equivalent to a wheel


I could get behind that. But yeah, the C++ standard library implementation of said algorithms (or any other implementation, it's just an example) is definitely not a wheel.

Programming languages = not wheels (not even assembly, as even that continues to evolve)
Graphics libraries = not wheels
Game engines = not wheels
Operating Systems = not wheels
etc. etc. ad nauseam.
You do realize it is a figure of speech and not an actual wheel correct?

To reinvent the wheel is to duplicate a basic method that has already previously been created or optimized by others.
The reinvent the wheel analogy is a bad one in my opinion. It ends up giving the wrong impression.
Edit: It may just be "a figure of speech" but it's a harmful one that prevents progress.
Last edited on
Actually, I don't think it impedes progress at all. People don't put enough time to research what current solutions can do before putting time and effort into a solution of their own that does the exact same thing, possibly less. There can be some good side effects of this:

1) Competition. Developers feel the need to step it up when their competitor is doing better.
2) Bad Management. Projects sometimes get stuck in politics, impeding progress. Or sometimes the code base is a mess and hard to contribute to, impeding progress.
3) Educational Purposes. Jumping into a code base isn't easy, especially when you're surrounded by concepts that are difficult to understand at first. Building things from scratch makes you realize the choices made in another project (or sometimes even improving upon them).

The least you can do is look into what makes the code you're wanting to succeed poor. A lot of people think, "This library is complicated.... I can do better!" but in reality, things don't tend to be that simple. Sometimes #3 from above kicks in here to determine the reasons for a complicated library.

Also, honorable mention to #1 that sometimes joining the competing project instead of you making your own is often more useful. However, I feel #2 and #1 somewhat go hand in hand. Reality is that there's always something that can be improved upon. Projects have a tendency to reject ideas that they're not familiar with unless it's forced upon them and people start realizing the purpose of that idea.

Especially in this area, nothing is black and white. People fork and make other projects simply out of spite for the developers of a given project... and it sometimes turns out okay ( see http://juku.it/en/comment-why-end-users-and-i-hate-oracle/ )
Last edited on
Me - "Hi all, I would to like to create X."

Programmer 1 - "#include <Y> just use this it does what you want."

Programmer 2 - "This Z library has all the tool you want."

Programmer 1 - "Z library needs A,B and C just use Y"


I completely agree with you. I hate using other library's because I didn't make it and it feels like cheating. In some cases library's are better, but if you can do it without one, why not?
Last edited on
Do you think Bjarne was told "Don't make another language, we already have C"?
Have you not read The Design and Evolution of C++?

C++ had to run with the same efficiency as C or it would have remained in the Lab. It was not enthusiastically received; he was, in all likelyhood, discouraged.
Last edited on
Topic archived. No new replies allowed.