@@Quad_Awesome To learn recursion one must learn recursion
@QmVuamFtaW4 Жыл бұрын
To learn recursion one must learn recursion
@wandevv Жыл бұрын
#stop recursion if recursions > 5: return
@peterking8586 Жыл бұрын
I was a mainframe (TPF) programmer, which uses Assembler language, so I knew all these concepts. But I must say you’ve done a great job of explaining them.
@chartphred1 Жыл бұрын
I've been working in Desktop Support for over 25 years and never learned a programming language, prior to that I was a Naval radio operator playing with morse code and crypto machines. Now starting out with Python, its doing my head in and making my eyes glaze over. So every little bit you explain, certainly helps the learning curve. Cheers
@martinh9099 Жыл бұрын
All I'd say is stick with it, Python is an excellent all-round language. The penny will eventually drop, but coding is always challenging. I wrote my first program in the late 1970's and still find some of it hard.
@viniciusalvess Жыл бұрын
I love the analogy you used to explain the multi-threading part. Now a days most programmers would think that processing a request that would take a long time without a request time out, would be using a message queue.
@Jason-yr6fy9 ай бұрын
I know this is quite an old comment but I'm wondering how you would handle errors and retries when you use threading instead of message queues.
@georgeanikeev80508 ай бұрын
@@Jason-yr6fy if you need all the processes to finish successfully before going on, you join all the threads in one "main" thread - that's where you can check if any thread finished with error. If you want to retry until everything is fine, then you can put retries inside every thread, or restart a thread until it does everything you wanted
@dalulu418 Жыл бұрын
Actually it would be interesting to hear your perspective on these concepts as well: Internet, ISP, DHSP, IP/Port, Firewalls, TCP/UDP, VPN, WireGuard, OpenVPN, Encryption (HTTPS, SSH), All in one video just going through the fundamentals. I know you've touched on these topics earlier, but it would really put it in context hearing your analogies all simply summarized in one video. Great work regardless!
@longbow192 Жыл бұрын
My CS teacher in high-school called C/C++ "the lowest level high level language", and later on, in college, our assembly prof said to think about assembly as a sort of "medium" level language. It's not quite low level because a CPU still can't work with it directly, it has to be compiled further, and it's not quite high-level since it doesn't really have the mechanisms that all high-level languages have, like functions/procedures/methods or loops (those being simulated with clever comparisons and jumps), and in the industry it's only being used in a few scenarios. It's the very lowest level you can go without actually being low level. It was my favourite subject.
@Nika_ScottАй бұрын
Just started programming, and this is gonna be useful having these concepts early on. You should do more of these.
@slashbrackets3397 Жыл бұрын
I already know all those concepts, so you covered them very well. Easy to understand, nice job.
@AhmadAlMutawa_abunoor Жыл бұрын
This is a great video. I work as a developer and am aware about 95% of what you said, but I find it informative when things are explained in this way
@jugalparulekar661 Жыл бұрын
Your explanations were short, crisp and to the point but at the same time very simple, easy to understand and highly knowledgeable for either a pro or a noob at computer science. Loved it so much that it's your first video I saw but I liked, subscribed and switched on notifications for all your future videos. Keep up the good work.😇👍🏻
@EngineerMan Жыл бұрын
Thanks for the kind words 😊
@silvanb Жыл бұрын
I love the new style. I was skeptical at first, but now I'm convinced. Super interesting stuff. I think you can improve the thumbnail though.
@EngineerMan Жыл бұрын
Yes my thumbnails definitely need work.
@each1teach1 Жыл бұрын
@@EngineerMan awesome video
@BarneyCodes Жыл бұрын
1:44 This can actually be solved without recursion! You just need to maintain your own stack which you can do with a list, but this turns the problem back into a loop, instead of recursively calling a function!
@m.a.stough4994 Жыл бұрын
This was a great video. Understood already some concepts (~30%), and definitely learned more! Thank you.
@dalulu418 Жыл бұрын
You're a hero. Exactly what I needed. Short and simple. Have a nice day.
@waynelau3256 Жыл бұрын
never knew about recursion until i had to code a decision tree from scratch. was one of the hardest i had to learn
@c0nD1337 Жыл бұрын
I'm pretty happy to say I already knew them as a junior Computer Science student !
@sahil-p Жыл бұрын
Really liked the video, knew all the concepts but I haven't been in the development world for a bit, was a good concise review and I think it would be good for newcomers to get a quick grasp on important concepts
@camslam8245 Жыл бұрын
I loved the examples of recursion. I watched a talk about it a while back and they talked about how it was NOT useful for something like the fibonacci sequence, but they didn't explain what it would be used for. Thanks for doing that!
@rishijai Жыл бұрын
One of the best explanation of recursion and object oriented programming
@VyvyanTheGreat Жыл бұрын
I’m self taught, and this video was really helpful. Thanks!
@richardtwyning Жыл бұрын
I've used threading a lot in the past, but hearing you mention it again in this video has prompted me to make a start on a multi-threaded Linux project that I've been thinking about for some time 👍🏻
@EdwardDowllar Жыл бұрын
Really enjoyed this. I’ve struggled with a few of these concepts and appreciate that you took the time to explain it in an easy to understand way.
@Gollumfili Жыл бұрын
Understood all of these at least at a very high level, but definitely gained a deeper understand of them. Great video.
@kik3698 ай бұрын
This is gold! Please more of this kind of content.
@asthmaticpathic Жыл бұрын
It is important to point out that while there is only one actually low level language, there are actually multiple levels of languages, not just high and low; assembled (assembly), compiled to assembly (C, C++ Rust), and interpreted and executed immediately by another language (scripting languages, Ruby, Python, JavaScript).
@DavidCSaint Жыл бұрын
I don’t know what it is - maybe the super immediate examples in like human conversational English - makes these explanations super stick. Thank you!
@Paasj Жыл бұрын
After a little more than a year studying programming, this was a nice callthrough like a checklist for stuff that I'we should have learned now... Great stuff! Thnkx!!!!
@DanielTateNZ Жыл бұрын
Good video, I've also heard "Low level" descibe what you are doing in the language. For example you could write a audio driver in Rust which I would consider "Low level" programming but you could also create a UI which I would consider "High level" one being closer to the hardware and one being closer to the user.
@DylanMatthewTurner Жыл бұрын
That's not the traditional definition because those terms come from the older days of computing, and, like he stated in the video, when talking about languages, there's essentially only one real low level language, Assembly. However, I like yours better for the modern day because a lot of languages are by default a lot more high level than, say, C, and even C can do more high level abstracted stuff when using libraries. I imagine we'll see that usage become more common in the future.
@NibsNiven Жыл бұрын
@@DylanMatthewTurner I call _c_ a mid level language because of its low level memory handling. It can use inline assembly.
@idk____idk6530 Жыл бұрын
Missing old engineer-man 🧢 Cap 👀
@atlantic_love Жыл бұрын
Excellent work! I'm 50 years old, never going to amount to anything in terms of writing software, and that's okay. I went to school for computer science in the late 1990's and ended up with a two year degree. A lot of things were going on, so I won't get into that. Since that time I've gone through periods where I play around with programming languages at a basic level, as well as tinkering with Linux, but that's been about it. The only thing I ever wrote that really did anything was a PHP/VueJS/MySQL app that allowed my husband to enter in his blood pressure readings on a daily basic, to produce several charts such as chronic / average / high & low. Enjoyed doing it! Right now I'm going through Stroustrup's Principles and Practices Using C++ book, am about to get into the Try Catch section. Just did my first recursive function to read a series of numbers and determine which were Prime Numbers.
@adamloepker8057 Жыл бұрын
Thanks for helping me review a few missed classes
@shivamjaiswal5825 Жыл бұрын
I learned something new on all the topics that you discussed in this video. That was fun
@thebitterbeginning Жыл бұрын
Before watching your video I was wondering which topics you were going to cover; there are so many. After watching your video...I have to say your list is excellent. Great choices.
@m4rt_ Жыл бұрын
A good use of recursion is Recursive Decent. Which is a genius method used for sorting the order of tokens in a compiler for a programming language. This is because a parser often deals with an Abstract Syntax Tree (AST). Which often is the node token, and pointers to the children of that node.
@martinh9099 Жыл бұрын
Excellent video, amazing how you covered so many topics without a single pause!! One thing I'd take issue with though...In my book "C" is a low level language since it doesn't do memory management automatically
@Vischkoopf Жыл бұрын
that was a really nice straight-to-the-point video
@BradenJohnYoung Жыл бұрын
I knew was recursion was and how to write it, but I never really thought about why I should use it. Learned something.
@sweetmelon3365 Жыл бұрын
Studied them in general but I appreciate the examples. Also didn't know c++ was high levels thought it was low level
@ian4175 Жыл бұрын
It’s all relative my dude. If you usually use js or python then C++ is definitely closer to the hardware.
@Codeaholic1 Жыл бұрын
Recursion just think "I'm using the call stack to maintain state". You don't HAVE to use recursion to do this. You can easily use your own stack like data structure to do the same thing.
@richarddeananderson82 Жыл бұрын
I have a good grasp, but I'm electronics engineer. In any case, very concise and well explained as always Brian. My grain of sand: on 6:40 I think the word sequentially is more accurate. Keep it up!
@emagotis Жыл бұрын
Short introduction to a lot of important topics discussed in programming projects. Maybe do some programming workflows next?
@premiumifyme Жыл бұрын
Great explanation on High and Low level languages
@7heMech Жыл бұрын
I am now proud that I knew all of the *hard* concepts.
@santosvella Жыл бұрын
You did a good job of covering some of the basics here. I don't think these are difficult after someone has been working in software for a while. How about a video with more complex concepts? That'd be cool.
@onecarry1532 Жыл бұрын
Lovely! I like the simplistic approach of your explanation… very easy to grasp ❤
@mechjack Жыл бұрын
Great video! Concepts were clearly and quickly explained. New of these concepts prior to watching.
@dejohnny2 Жыл бұрын
I agree 100% with your explanations. Spot on.
@motyakskellington7723 Жыл бұрын
#1 Recursivity also work when you call a function from its own body INDIRECTLY, example : def even(n): return True if n == 0 else not odd(n) def odd(n): return even(n - 1) #2 A regex can also be used to replace some match by something else. A convenient tool to parse a string in a more declarative way (less chance to fail applying a regex than doing the parsing by yourself). #3 An object is basically a set of functions (defined in its class) that takes some context as an implicit parameter. Exposed functions represent the interface of the class and hidden functions are the implementation of this interface. OOP is one way of handling mutable shared data, such that each object has its own variables (or state). The caller of an object doesn't need to know unnecessary complexity, just the interface exposed by the class. Even if the implementation of the class changes you should still be able to work with the object the same way since the interface would remain the same. #4 Running code in parallel is a way of exploiting your CPU at its full potential. Your operating system tries its best to use all cores available on your CPU so when you launch multiple programs at the same time (each in a different process), they will be running at least concurrently, and in the best case in parallel. However, if you want a single program you've written to run in parallel, you'd need to create multiple threads in your code so that the operating system knows how to handle parallelization. Another advantage of threads against processes is the fact you can share data in a more efficient way (but it's also a lot more complicated to code and test). #6 A compiler, as opposed to an interpreter, can detect syntax and semantic error before even running the program. You would need a linter to do this in an interpreted language. A program compiled to native machine code should run faster than code interpreted in real time. The workflow "tweaking -> running -> re-tweaking -> ..." allows faster coding overall and would be more convenient for short-sized code.
@boozflooz6255 Жыл бұрын
You've explained it all nicely, thanks
@betanapallisandeepra Жыл бұрын
Thank you for doing this video… this is really good revision of concepts
@74Bagas Жыл бұрын
actually, i took everything from this video, consider i wrote little javascript and go here and there. thank you. now i need devops buzzwords explained like this format, for my frikin nerd brain sake😁.. subscribed btw,
@Ou8y2k2 Жыл бұрын
I knew about all the topics except regex. Good job explaining everything. I think next time I'll just play your video at 0.75x since you're a pretty fast speaker.
@kevinkohut5096 Жыл бұрын
I consider myself a decent programmer. Not at the level to code for Google, perhaps, but solid. I already had a good understanding of every topic you covered, so maybe I'm a better programmer than I thought!
@randreas69 Жыл бұрын
As all things in object oriented programming keep in mind that each time he has a hammer everything is a nail.
@armchairtin-kicker503 Жыл бұрын
Having had a thirty-year career as a mainframe commercial system software developer, your one-to-one relationship between assembler language and machine language is not quite accurate, more likely platform specific. Usually when someone would ask what my primary language was, I was state z/OS macro-assembler language, with emphasis on macro. The difference between the assembler macro facility for micro-computer platforms and the mainframe platform is like night and day. Indeed, when implemented properly, one can compose/tailor problem specific language derived from macros, macros expanding from ones, tens to hundreds of lines of machine code. Because of their type-checking and nesting feature one can implement any number of information-hiding (aka object-orientated) concepts, including inheritance and, most importantly, abstracting. I preferred coding in macro assembler for three reasons: (1) dynamic-range, implementing the largest to the smallest concept with a single instruction; (2) direct access to system-level services; and (3) no runtime-library required, a clear benefit when distributing commercial software products.
@manuelnovella39 Жыл бұрын
This kind of videos are very cool. Thanks, as always!
@Rasspor Жыл бұрын
I like your videos. Your explanation is really good. The problem is it would make more sense to someone like my self to see an actual demonstrations of how the code functions with explanations. As i am new to programming and it makes better sense to me if i can see how the code is actually functioning. Also, i do follow you on discord. But i am new to that as well. Thank you for taking the time to make these videos without your help it would still be far worse writing code.
@AntonioNoack Жыл бұрын
C can directly include assembly, which is one reason why I would not count it as high level. Another thing it it's tedious memory management, which additionally separates heap and stack. In Java, JavaScript and Python, there is only one memory space.
@avi12 Жыл бұрын
I knew all of the terms already, but for some of them I got a better explanation in your video
@stozmann Жыл бұрын
amazing explanation of recursion - first time i 'get it' !
@johnflynn2109 Жыл бұрын
In 03 i went to school for computer science missed a few days and I was totally lost. It was competitive too their was no asking a classmate for help. Had to drop the major and did geology instead. I havent tried coding anything since but taking a dive into the subject today your video did explain a few things. Still far from understanding the process. Thanks.
@SianaGearz Жыл бұрын
I'm actually happy that i didn't need this video, i could have been pretty miffed otherwise. Didactically recursion is connected to "Divide and Conquer" programing technique. If you have internalised it, it feels natural, but your student cannot be expected to have this sort of intuition.
@AbdullaHernandez Жыл бұрын
Object oriented program - treats everything like an object. I.e. the Chad of programming.
@elclippo4182 Жыл бұрын
Regarding threading and multiprocessing, it’s worth mentioning that there is a difference between concurrency and parallelism.
@garryadamson8507 Жыл бұрын
Already covered these either in school or college but either way these are great explanations for folks who haven't yet started formal studies. Looking forward to watching what you are going to do next if this is going to be a series.
@mark4asp Жыл бұрын
"Recursion is simple"
@nickelulz Жыл бұрын
Liked the vid. Thanks, Engineer Man
@flexairz Жыл бұрын
As I am working with software since God knows when, it all sounded familiar.. Good explanation!
@etiennelemieux472 Жыл бұрын
Oh I looked at the chapters before looking at this video. I was expecting to see monads, cyclomatic complexity, lambda calculus and so on explained ^^ Maybe in a future video :) I wouldn't put recursion in difficult concepts, it was taught at 2nd semester at uni. Anyway, it's good to see such concepts concisely explained in a video.
@Armstrong1781 Жыл бұрын
thanks man these actually helped also where I am from C is considered Mid-level language
@DefkalionDs Жыл бұрын
Thank you so much for this
@DevlogBill Жыл бұрын
Excellent video! I knew a couple of things, 50% of what you talked about. But what I found the most fascinating was that JavaScript transpile to C++ and C++ compiles that javascript code to assemble and assemble converts it too 1's and 0's? Did I follow you correctly? Your whole discussion was very educational, thank you.
@tonnebrre Жыл бұрын
Thank you for the explanations
@WA98387 Жыл бұрын
I appreciate the explanations you provided.
@Amipotsophspond Жыл бұрын
1:07 "that's walking through data that has an unknown depth" you must know the depth is less then "maximum recursion depth" for your complier/interpreter and it's useally not deep. def hello(num): num+=1 print(num) hello(num)
@Merabbit Жыл бұрын
Great video, like the new setup.
@vividvault9285 Жыл бұрын
honestly, the first time I was learning about recursion, I was very confused, mainly by the community. Everyone would only ever tell jokes and not explain it at all like you have, simply put, a function that calls itself within it's own body. I don't know why no one could ever say that and I am starting to suspect that they don't know, they just tell the jokes to fit in.
@das6109 Жыл бұрын
I knew the other concepts, but didn't know anything about threading. Always shied away from that topic because it looked intimidating. But you explained it in a very intuitive way with clear examples of how it might be used. Nice work. I would say what a low-level language means has kind of changed due to conventional use of the terms. Sure nothing is close to binary except assembly, but low-level has come to be used to describe languages that do less handled automatically for you (garbage collector, memory management, etc). I think it's reasonable to say Python is higher level than C. If we can't say that then low-level/high-level isn't having much practical definitional use these days.
@sharkmisdeed Жыл бұрын
Great video. I wouldn't really define threading is the ability to run code in parallel but more like run concurrently. They are different things.
@Dude29 Жыл бұрын
True, however nowadays they tend to be one and the same
@EngineerMan Жыл бұрын
So concurrency is doing multiple things at once but not in parallel. Good example is node.js, deferred and async execution. Threading is multiple things at the same time. Concurrency can be achieved with a single thread. Modern languages call this "async".
@sharkmisdeed Жыл бұрын
@@EngineerMan Exactly my point. However, still threading does not necessarily mean that you are running things at parallel. Also, I really don't enjoy the idea of saying NodeJS is single threaded in a discussion like this. There are worker threads that run your event-loop entries. Once you add your callback to the event loop which will be picked up by either your browser or V8 or whatever you are running JS on, the worker threads will be executing your event entry. The lifetime of your code is not executing in a single thread in real life. Here is a question, If I give you a literally one single thread in C and ask you to design the same concurrency model that NodeJS has, would you be able to succeed ? I still stand behind my idea. Threading can give you the ability to execute code in parallel, that is true. However, parallelism means that multiple executions that needs to start and execute (and sometimes even finish) at the same exact moment. Threading is way different than that.
@thoriqadillah7780 Жыл бұрын
Could recursion be substituted with stack/queue? To this day, I can't understand how the recursion works if I was going to traversing a tree. But some day, I found a tutorial that uses stack/queue to traversing a tree instead of recursion. And I use stack/queue ever since I'm sorry if it's a stupid question, but I'm currently not in time of thinking, just want to spit my question
@matthewfinis6723 Жыл бұрын
I suppose the idea of recursion is pretty similar to using a stack, although I feel like recursion would be a lot simpler. Using a stack would seem almost the same as using recursion but with more steps.
@etodemerzel2627 Жыл бұрын
Yes. Just think of how function calls are implemented.
@dmurphydrtc Жыл бұрын
Well expressed and delivered. Thanks
@pratikdash10 Жыл бұрын
Knew about all concepts except threading. I am a graduate student and mostly spend my time running simulations. Learning threading can really improve my simulation runtime but I don't have a good grasp on it. Maybe you can make a video on it ??
@sodreigor Жыл бұрын
quick correction: the second problem of the arrays you showcased for the use of recursion can also be solved using a stack. You said "There is only one way to solve this problem and its with recursion" which is false.
@zeocamo Жыл бұрын
many of the OOP stuff is not used any more, as people find out that building a program is not the same as building a House, a program is a data steam that you try to control, and the problem with OOP is you build the "house" but a program change, software never stop changing as if so then it is a dead project. so a lot of tools is getting looked at now, ex. Rust don't got all the bad parts of OOP, and it got some FP features too, and this is because Rust know you should not focus on the 1-2% of the lifetime of the project while it is build but the 98% while it is change to do more stuff as all software is. the good thing in OOP is one place for common code, that is fix with modules today, because OOP way of doing this stuff up that can be bad for the speed of the software. all the reuse of software in OOP is a nice idea but don't work as the model dont fit. and a lot of people will hate a post like this, as OOP has become a thing you are and not a tool you use, but when you stop feeling hurt, try to look that this tool(OOP) and look at the lifetime of any software you use to make it, you will get there. and also 1 thing that is a problem with OOP more, is it group togetter the "dirty" and the "pure" code together, if you split this up you have so much a easier time testing your code. ex. have a place for the dirty code, as connecting to your DB, APIs or the user, as this is the hardest to test with unit tests, and the pure business logic as it is so easy to test. this way you will be able to test the important part of the code all the time, and the dirty part can be test my devs.
@4115steve Жыл бұрын
very helpful, thanks
@atlantic_love Жыл бұрын
He almost looks like a surgeon that just got off work, is still at the hospital, and set up the camera in the hallway so that he can talk about his true love :D
@lahirupriyankara2183 Жыл бұрын
thanks learned a lot ❤
@mpheinze Жыл бұрын
Would have been great if you'd provided a few examples of what assembly or machine code actually looks like - maybe that's for another video? Otherwise great video 👍
@kawhao3757 Жыл бұрын
that’s man talk it absolutely true.
@FranciscoJAceves Жыл бұрын
If I'm not mistaken POO is a Programming Paradigm, not a design pattern.
@FreeDomSy-nk9ue Жыл бұрын
Very very awesome, as always
@machineability Жыл бұрын
Nice and to the point. I get the multhreading concept, but if I am writing a program, how do I make it multithreaded? By the way, I really like your use of sections(?) in the video to find and replay.
@cryptonative Жыл бұрын
If you have a hammer everything looks like a nail. Same goes for OOP.
@pedeeli177 Жыл бұрын
1:46 you could also solve it using a queue
@yanco6 Жыл бұрын
low level code means that the language doesn't need an operation system to work they can directly control the hardware with no need for an OS so, C and C++ are low level languages
@finitoSA Жыл бұрын
Actually I'm surprised of how much I did know. Only new thing was regex
@cxsey8587 Жыл бұрын
Funnily enough I was working on a Reddit scraper and I indeed used recursion to step through all the comments
@EngineerMan Жыл бұрын
It's the only sensible way, unless the depth is capped.
@cxsey8587 Жыл бұрын
@@EngineerMan I remember pulling my hair out when it didn’t work only to figure out I was using the wrong dictionary key which was throwing errors
@thefather8362 Жыл бұрын
Can you explain the difference between threading vs forking?
@hetjoshi5379 Жыл бұрын
thank you bro thank you
@rockyrivermushrooms529 Жыл бұрын
I used the min max algorithm to make a connect 4 game. Now I'm trying to convert the recursive function to something more sequential to run on a microcontroller. Im having a lot of trouble because I'm still a novice programmer. I was thinking of getting it to only process a few blocks of the tree every program scan to keep it from getting hung up in a loop for too long.