Learn Foundation Programming Concepts in JUST 15.49 minutes!

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey guys Sunday morning vlog we're gonna nerd it up big time alright somebody asked a question on the youtubes they asked whether or not I could define the basics of programming or as I like to call the core concepts now I jotted down a few notes on my joint pad let me start off by saying that this is a look at all these concepts from overhead few like a flyover I'm not gonna get into too many details and as you listen to this stuff and you're a beginner or you're just learning don't freak out don't go home and I got to learn all this stuff it's unbelievable a lot of his stuff you've got to learn over time and the whole point of a good course a good course does two things number one it simplifies all these concepts and techniques and number two and identify the key components in the right order so that you can get up and running as quickly as possible as a coder as a developer that's what a good course does ultimately these foundational concepts these basic concepts and covering totally everything because some of the foundational concepts will depend on the type of coding that you're going to do the type of programming that you're going to do but this is going to give you a pretty good overview of what I'm talking about what I'm talking about foundational concepts so let's start with number one you look at language types now you have different computer languages you have markup languages the most big one is html5 of course you have styling language is CSS that's the only one I've I'm aware of and then you have full fledged programming languages there's differences between these types of languages they each have their purposes now programming language is a language actually provides functionality actually does something it provides the brains if you will of an app that you create in programming languages could be JavaScript could be Java C++ C Python PHP Ruby Swift and many many others go etc and what you find is that different programming languages will have different specializations they have different says so let's go into that in programming languages you can have compiled languages versus interpreted there's many pros and cons by the way what you're going to see when you're going through these foundational concepts you have to understand not one particular language not one particular framework if you will not one particular approach is universally best it really depends on the type of work that you're doing but it's good to understand these basic concepts so you can make proper decisions based on the type of work what you want to do and be the type of project you're working on so you can come to that project with the right language with the right approach was the right thinking so yes so you got compiled languages versus interpreted right you look at runtime speed versus writing speed so for example let's explore that little concept run time versus writing time or write time run time is basically the speed of the language as it runs when it runs so let's say you're reading an app a program in C++ it writes really slow meaning because it's a highly the type of language that it is C++ requires but you spent a lot more time writing it versus other languages like a Python for instance where it's much quicker to write and but the trade-off is that Python runs much slower than C++ so there's runtime versus right time and depending on the type of work that you need to do you might choose a language like C++ or even assembly which is super fast at runtime but very slow at right time and many situations in most situations these days you're going to choose a language that is faster to write with but maybe a little slower at runtime again these are just basic concepts and don't expect you to learn all this is just a Sunday morning vlog I'm having my coffee I'm just going over basic concepts here I just want to give you an overview in terms of language types you can get into things compiled which interpreted strongly-typed verses loosely typed on the inside a little later then you can get into things like type type conversion versus coercion etc this is all related to data types which is a part of the fundamental language constructs these are universal constructs across programming languages so what are these language constructs you look at functions variables arrays memory management objects loops conditional data types that you get into things like ol P versus procedural programming you can get into into an OPA self object-oriented program procedural vs. ol P by the way if you're a total beginner it's just a style of programming we'll just leave it at that within Opie there's these things these basic concepts that you have to understand inheritance composition interfaces objects versus classes and then there are considerations in terms of how you would use an oo P style language in terms of something called code reuse again code reuse is one of the basic concepts in programming you want to reuse as much code as possible because of a it saves you time and saves errors so there's different approaches to doing them in object-oriented programming you have something called inheritance which is one way which I say use very sparingly and then in other ways they use something called composition and interfaces that's the way I prefer and this comes to another basic concept tight versus loose coupling of your objects or of your code base what are the basic concepts in programming is that you want to write chunks of code in object-oriented programming that would be her objects again this may be total nerd gibberish to you just try to take away two basic concepts when you're listening to me here so when you got loose coupling versus tight coupling in your code essentially our goal is as programmer is to as programmers is to keep our code very loosely coupled meaning having our chunks of code having them able to operate independently of each other so you have a chunk of code you have a chunk of code here when they communicate but they're not dependent on each other they you so you can move them around and there it just gives you a lot more flexibility in terms of when you're writing your apps so again these are basic concepts that as you become more experienced as you become an experienced developer you you keep this in mind so house you in terms of this the decision-making as you're developing your apps in terms of what's the better approach based on these concepts right yeah so let's pull out of the languages now and then there's this infrastructure around the languages now a lot of times these days a lot of people are doing web based coding because everything is communicating over the web so you have to understand basic concepts like client or the server server-side programming versus client-side programming is very much related then you can get into the basic mechanisms of the Internet of the web so we call HTTP the hypertext Transfer Protocol there's FTP File Transfer Protocol and there's other protocols just a method of transferring wealth information over a network the biggest network in the world of course is the internet so you have different protocols there's different reasons why you would use it and see and there's you know there's there's a there's things to learn about that can affect the way you rate your app one basic concept about the web is that it's a stateless it's it's a stateless paradigm if you will again I'm going down the nerd rabbit hole here my apologies but just this this is one of the key concepts that the web is stateless and as such you have to design your apps in a very particular way this used to screw people up in the 90s a little web first came about traditional coders who did C++ or VB Kodi who did something called client-side code programming they they had a difficult time dealing with the stateless nature of the web and how apps had to be constructed had to be built based on that reality anyway this a lot of these some of these concepts a lot of these concepts and I introduced actually in my courses now of course is I have one called beginner's HTML beginner's JavaScript beginners CSS beginner it's PHP I'm renaming them with the release of studio web 4 because they misrepresent what they're about they should be instead of calling beginners HTML 5 it should be from beginner to pro you know because I cover the basics but I get into things like HTTP client server request response model in an HTML course and there's a reasons for that and I get into all that anyway see me with the JavaScript in a PHP so on from these foundational concepts you build up into other felt a little higher up a little bit more advanced and you got something called design patterns and programmatic design patterns these are ways of organizing your code ways of structuring your code and design patterns allows programmers to communicate each other communicate with each other in terms of how they feel certain aspects of an app of a pro of a program how it should be designed and the biggest ones out there well the biggest one is called MVC Model View controller you see most modest man just about most web apps are created with MVC style and there's many many other design patterns but there's some big ones out there MVC is the most important and then you have what you find just like with martial artists martial artists will have favorite techniques like as a martial arts I learned many many many many techniques many many different ways of attacks and defense but at the end of the day add a few things that I'd like to do and you see that you've champion fighters as well they they're trained in all kinds of different techniques or they're aware of the possibilities but you'll see in competition when they actually fight they may use one or two or three things over and over and over again with different setups same thing with programming programmers will learn all kinds of different design patterns different approaches but they will tend to focus on a few things that tends to work for them and I'm no exception so MVC of course everybody uses MVC just about and one of my favorite design the filter design pattern McCaul decorators i have aryan - that it would be dependency injection again this is high-level nerd stuff so if you're going oh my god what is this guy talking about don't worry this is just a Sunday afternoon vlog near discussion so you know don't worry about it this will come easy this will come with time as you progress deeper and deeper finally I just want to end off with this because this is something point number seven here this is something that a lot of academic programmers don't recognize and I call it the developer workflow a developer workflow is is literally that it's a work flow how your work flows and how you structure the software building process and one thing that maybe developers don't recognize or don't emphasize enough is how your client figures into the work flow so people will think about workflows developer workflows in terms of the code structure and and the infrastructure around your code and how you're going to sort of how you're going to deploy that you know using repos and all this kind of stuff and development cycles but one thing that has to be considered it's not recognized enough is how the type of client you're dealing with whether it be a small business client will be another department in a large organization whether it be a large client how your interactions with the client will have an impact in your workflow because ultimately in real world programming the client will be coming back at you with a change request with feedback in terms of how the app or how the program runs and this injection from your client if you will this participation of your client and how your client participates in the development process is going to have an impact in terms how the codebase rolls out and you have to consider you have to consider all that for efficiency sake so when I'm working with my developer my lead developers well my lead developer right now and my support developers around them I have to consider the long-term trajectory of my software and because I know both ends of the game I'm a client and I understand the business model very well and I also understand the development model I structure the developer workflow accordingly so that we don't waste our time we don't have work that's overwritten if you will because of bad communication and we don't overload also the developers with too much information about what's coming forward so one of the things I've talked about in previous vlogs is how important it is for small business owners to have at least some knowledge of coding not necessarily not to become coders but just so that they can understand the process a little bit better so that they can better communicate with the developers saving time saving money saving headaches and that's important at the end of the day all this coding all this programming all it's there to do is to save time and to facilitate a certain process right think about it Facebook as elaborate as it is just a way to communicate and to sell ads and to expose the ads to people YouTube it's you know pretty elaborate app but it's a basically a video based social network it's there again to share information that's at the end of day that's all it does that's pretty much it so what the last point I want you to what I would suggest rather that you take away from it is that you have to consider your client interface your how you're doing with your actual clients people I'm not talking about client software for actual people how their interactions with decoders what the developer team weirdest things develop or how this impacts in terms of how you structure your app and how you proceed in terms of building your your your software this is again I'm gonna close off here this is very high level I'm just jumping around here I just wanted to give people an idea what I'm talking about what I'm talking about core programming and again in my courses I expose these things but not all these things some of these things require a little bit more experience to get into the job again of the teacher is to a to simplify into to expose to the student what they need to know at the right time to establish that solid base that's foundation so vatican's much more quickly move ahead to produce good production code at a professional level I hope that makes sense ciao
Info
Channel: Stefan Mischook
Views: 109,650
Rating: 4.8870764 out of 5
Keywords: foundation programming concepts, learn to code in 2018, key to code, 2018 web foundations
Id: 6qDCrDHJ00g
Channel Id: undefined
Length: 15min 49sec (949 seconds)
Published: Mon Dec 11 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.