Reinvent The Wheel (Programming Project Advice)

preview_player
Показать описание
---

***

Welcome! I post videos that help you learn to program and become a more confident software developer. I cover beginner-to-advanced systems topics ranging from network programming, threads, processes, operating systems, embedded systems and others. My goal is to help you get under-the-hood and better understand how computers work and how you can use them to become stronger students and more capable professional developers.

About me: I'm a computer scientist, electrical engineer, researcher, and teacher. I specialize in embedded systems, mobile computing, sensor networks, and the Internet of Things. I teach systems and networking courses at Clemson University, where I also lead the PERSIST research lab.

More about me and what I do:

To Support the Channel:
+ like, subscribe, spread the word

Рекомендации по теме
Комментарии
Автор

I too reinvented the wheel dozens of times. Currently i am trying to parse XML files with C++.
Is it unique? No.
Will it be the fastest? No.

But I learn a lot about datastrutures and how to Optimize something. That is the win for me.

Error_
Автор

Another advantage about reinventing the wheel is that it gives you great insight as to how "wheels" are made. Then when/if you use someone else's, the behaviors make more sense, the error codes and messages make more sense.

BorlandC
Автор

You are absolutely right!

I just want to emphasize that if you are learning, reinventing the wheel is a very good idea. I wasn't taught programming at school since my degree is in EE and back then (1998-2003) programming and microcontrollers were not that big of a deal, at least not in my school and on my degree. I didn't even know what programming was.

But let me tell you, for years I practiced at home reinventing the wheel over and over again when it came to practicing and learning how to program. From the outside it looked like a waste of time. Everything I did for years was already done, in fact, at the very beginning I just plain copied the code, just to see it work. Believe me, that doesn't seem like much but IT IS.

Keep copying code and reinventing the wheel but at the same time strive to understand what's going on, that's the secret. I promise that eventually you'll be surprised how one day you'll think of something new, it just happens.

mln
Автор

Yes!! I always say, 'A great way to understand how a wheel works is to reinvent it'

billowen
Автор

Rewriting tools that are given in other languages, is a great way to practice, and can make you end up with a useful toolkit that can come really handy later. Manually writing higher order functions/operators in c++ is a main example for me. Reduce and pairwise(something that is default there) just to name a few. In APL it's a part of the language primitives, here you have to make it yourself.

gtgunar
Автор

I used to think that a compiler and the standard library functions are some type of magical thing, that just works, and that executables are some type of gibberish that the OS understands. Everything changed after learning assembly, how assemblers and compilers work, while trying to write my own. Even tho i will not gain anything from writing a custom compiler and assembler that are bad compared to gcc/clang... I have learned a lot.


I like to think that we are not reinventing the wheel, we are just using the existing prototypes to create a new one which is unique and suitable for our own needs.

ahmadhadwan
Автор

Many years ago, one employer wanted several hundred different binary "messages" (hierarchical structs) moving between a Windows client and a QNX server that had no C++ compiler... It was fun to implement callable pointers to functions for each message (struct) to have them 'serialise' and 'unpack' into a buffer for transmission.
Write a 4-function calculator, add more functionality and dream of toppling MS-Excel...

rustycherkas
Автор

There's a difference between "reinventing the same kind of wheel" and "create a new and unique wheel that solves your problems". Sadly they're conflated as the same thing.

SimGunther
Автор

Just think how much of that log4j chaos could've been prevented if people would heed Jacobs advice of this video (for other reasons ofc than he states). Something as basic and simple as logging, but everyone relies on that one single library, probably because they were told over and over again "Don't reinvent the wheel!!!"..

tizilogic
Автор

I can't agree more, and I also think that improving your skills at something has to do a lot and specifically with repeated actions, documenting and understanding the fundamentals and iterate over it again. Overall I think they're all by products of reinventing the wheel.
When our understanding about something is improved, that's when real innovation occurs, so I think this iteration over reinventing the wheel is absolutely essential.

edenr
Автор

I might have misunderstood Molly Rocket, but he spoke about this too.
"Don't reinvent the wheel"... And what he says to that, is that the premise is wrong.
The actual real-life wheel itself is perfect, and yeah, there is no reason to reinvent it.
But code? Is rarely if ever perfect. Comparing some code out there to the wheel is wrong.
That's not to say that you should re-code everything from scratch every time,
that's pointless, and libraries and stuff out there often is optimized and probably has fewer
bugs than your implementation would have.
But it is worth looking into whether or not you should do some things yourself.
And yeah, if you want to learn how things work... Doing it yourself is a great idea.
I'm still a pleb at programming, and I often try (and fail miserably) at making
something others have made a billion times before. But at least I'm having fun and learning :)

LinucNerd
Автор

I am an IT student. We've got a class named Computer graphics where we learn how to manupulate pixels (draw a line, elipse, bezier curves, scanline algorithm, etc.) and the teacher want us to use Qt + Qt creator which weights 30GB. I've decided to write my own framework and it weights 60MB. It was fun to program the backend, but the CMake scripts... Man, making it work on Windows, Linux and Mac made me sick. I hate Cmake.

scshout
Автор

When I was still learning the basics I was told over and over by multiple people, be it my own teacher or just randoms online, that "you shouldn't reinvent the wheel", and for years I followed this barely learning or understanding how things works, only being able to code basic things and relying mostly on tech that others build, like frameworks, etc.
I only started being able to code more advanced stuff when I said fuck it and started implementing my own versions of everything I thought was cool. As with most things, advice has it's time and place, and this one is a terrible one for when you're starting out, imo the best way to go from basic to advanced is to reinventing what already exists.

Dwyriel
Автор

Also, people confuse wheels with implementation. The wheel is the theory, the algorithm. The implementation is the physical form of the wheel. So, when using libs, make sure that you are not using a tractor wheel to your bike!

Psykorr
Автор

Please continue C multi threaded server course! Thanks

saeedmahmoodi
Автор

a good wheel to "reinvent" is printf, currently for the sake of some custom buffer management objects I'm doing my own version and even attempting to make it sort of cross-encoding friendly (I've resorted to using an intermediary buffer of ints for the result and converting the result into the target encoding)

zxuiji
Автор

I've been enjoying your channel lately. Very useful info for those of us that are getting back to c after years hehe. I would love to know your take on void pointers handles modularity and advanced concepts

LDdrums
Автор

Yeah that's my next independent project. I'm going to find a small simple game that I'm interested in (that already exists) and copy it but with my own aesthetics, twists, and possibly extra mechanics or features.

This is how I started learning anyway and it appears to scale at least to an extent in terms of leaning programming. I would just follow the examples in the book but then after I got it down, I would experiment with it and try to tweak it or add to it.

Rockyzach
Автор

I got my masters in applied math (dropped out of my phd) but had to do loads of numerical programming in C++/C. I would love to go back to school for a PhD in CS :/ but idk if any CS dept would pick me up. Does anyone have some good advice?

wubbalubbadubdub
Автор

One time in the future, I will write a UI framework (button, list, checkbox, etc) to understand it better

frddyfrsh