Thank you so much. It’s obvious that you are a great teacher. Some 😢don’t appreciate free good advice and learning as they go along. Your advice has helped me stop wondering what to do and just starting and figuring it out as I go along. I’ve come a long way with your advice. For those who appreciate learning just start a project and work on it you will learn if you put you mind and effort to work and stop whining. Thanks for your great lessons. Keep it up many of us more than 26k appreciate your great effort. Blessing to you!😊
@@LearnWithHuw Thank you I appreciate your video. I am a bigger and actually just starting with Python myself. Was interested in creating a super Mario type of a game. I only seen little bit of freecodecamp the beginner Python. I know Python isn’t ideal language for creating games. But was thinking it was a good beginner language. Plus it doesn’t hurt to give it a shot either way I will learn something
1 Data. Variables, arrays, objects etc. 2 Loops. If, while, then etc. 3 Functions. Fx name (arguments) {fx statements} 4 Call function. name(arg1, arg2) 5 Constructor 6 Class 7 Import. Import X from Y 8 Export. Export (fx) 9 Modules 10 File system Every language have these core parts.
@@phat80 Currently parralel processing is the essential part of any modern language, take a look the way C++ transformed, plus swift and go. I suspect you are more web oriented in terms of the languages.
I've coded hundreds of programs with only a few hours of experience in C#. None of them work or are finished, but nobody can out code "Hello World" better than me!
“I have been programming since the 1980s” fellow watchers keep in mind, this information comes from an already skilled individual so if you’re just starting out your time most likely will NOT be the same.
@@otaborosamuyi2112 w3schools has pretty nice learning tracks. Freecodecamp seems pretty good as well. Take your time to really understand the concepts of how and why you are coding certain things, certain ways, etc. Build things. Even if simple, build them.
I taught myself C/C++ by making a full 3D Game Engine from scratch. I don't mean including an existing one, I mean creating all of the internal components, nuts and bolts and assembling them together into an integrated, cohesive and working solution. Very rewarding.
Taking on a big programming challenge that really pushes you to the limits is (in my view) probably the best way to learn. And what a sense of achievement you must have had at the end!
@@LearnWithHuw The final solution was 4 projects, three internal static libraries, and one main executable consisting of close to 100k lines across about 50 - 100 files.
Well, I could be exaggerating on the lines of code, it might have been at least 10-20k though. There were 2 different parsers. The main text parser for handling the level file for loading and automatically setting up and constructing the scene graph itself was at least 2k lines just for the parser function.
Okay, now let's see: 1. Were you programming before teaching yourself C/C++? 2. Got any CS background, whatever it is? If you answer "yes" to any of these two question, then beginners should completely disregard what you just said.
@@jocm99 Nope, 0 background, 100% self-taught, 100% hobby of interest. I don't need to go 1/4 mil in dept to learn something I have an interest in. I just do it!
00:02 Learn programming languages effectively by working on projects, not just reading manuals. 02:16 Setting up the programming environment is crucial for learning any language. 04:53 Learning D programming language through trial and error. 07:23 Creating classes and objects in programming languages like D 09:55 Experimentation is key in learning a new programming language. 12:32 Enforcing Privacy in D Programming Language 15:07 Creating and manipulating arrays in programming languages 17:26 Troubleshooting code mismatch with string recognition 19:48 Learning a new programming language in around 3 hours 22:04 Learning programming efficiently without overwhelm Crafted by Merlin AI.
3 hours my ass. I teach kids. This guy has almost 50 years of experience. A beginner will take at least 3 months to begin to understand what this man is talking about. Stop fooling people in order to brag...please.
Timestamps 00:02 - Learn programming languages effectively by working on projects, not just reading manuals. 02:16 - Setting up the programming environment is crucial for learning any language. 04:53 - Learning D programming language through trial and error. 07:23 - Creating classes and objects in programming languages like D 09:55 - Experimentation is key in learning a new programming language. 12:32 - Enforcing Privacy in D Programming Language 15:07 - Creating and manipulating arrays in programming languages 17:26 - Troubleshooting code mismatch with string recognition 19:48 - Learning a new programming language in around 3 hours 22:04 - Learning programming efficiently without overwhelm
This is cool, BUT isn't it true to say that YOU can learn any language in about 3 hours because you have a ton of experience and know how software is built and how it's constructed, thus all you really need to learn is syntax? Which is why YOU can learn any language in 3 hours? What about the rest of us who only have 6 months, a year or 2 years of experience?
Yes it's more accurate to say that if you know one language, you can learn any other in 3 hours. Which is pretty much true unless you're going from like python to rust or something. If you know one high-level language and one low-level language, it's certainly true though
It does help reinforce the important parts of programming by making you think abstractly about how you achieve an outcome rather than using one specific tool. Usually why university programming courses have first year students use multiple languages: I had to learn Visual Basic, C#, Java, and Python. To be fair, VB, C#, and Java, are pretty much identical.
He has years of experience working within one paradigm, so he can apply this to other languages within that paradigm, he only has to get up to speed on syntax and where things are located. But if an OO programmer takes on a language in an unfamiliar paradigm, like FP, there will be a much steeper learning curve.
How to learn any programming language in 3 hours: 1. Know, extensively, all of the languages that it is derived from from more time coding than most viewers have lived (80's -2020's = like 40 years) . 2. Know literally everything about your IDE of choice. 3. Code in the new language until your IDE shows you that you guessed wrong and then reference the docs when it would take less time than guessing again. You're obviously an accomplished software engineer. Most people watching are not. There is NO shortcut except for having already done the hard work.
This is the first video I have seen/been suggested of yours. While I very much agree with the message and this way of learning a new language I was mostly happy to hear a Welsh accent after not having been back to Wales in 4 years.
This is how I've always learnt from the earliest days. In fact, before the adventure of the Internet, it's hos most programmers learnt. This approach is now so old it seems news again. 🙂
@@Cowdog1 As I say, when you don't understand something, that's the time to look it up. If you are a complete beginner (which this video assumes you are not) I have many other videos explaining data types, variables, chars etc. Best wishes Huw
@@Cowdog1i like this guy’s intuitive approach however I would recommend reading through at least one coding fundamentals textbook (early chapters) in Java for example to get started. I’m guessing the instructor here has done this himself before. There it will tell you a string is simply an array of characters, or char[].
So you compressed your learning, building on the extensive background you already possess then compressed all the 'exercises' into one large 'exercise' you relabeled as project. I appreciate the video it is well done and well directed at the target audience.
One line is permanently etched in my brain till the day I die, maybe even for the afterlife. It's the *'public static void main(String[] args)'* . Even though I never went ahead with Java back in the day, never made a project in it, and it's been perhaps 25 years since I touched Java, I still remember this line.
The hardest part about learning to program is understanding the flow of the program, which is really the fundamental part of programming; everything else is syntax which if you are learning a language with syntactical similarities to another language you are already familiar with makes the process of learning other programming languages easier. What is more ambiguous and requires direct language experience is determining which language is appropriate for the project you are working on. The differences between many languages are sometimes very subtle but they exist for reasons.
you: "The hardest part about learning to program is understanding the flow of the program, " No, not at all and such belief is why most software is terrible. The hardest part is understanding workflow (and no, the kiddies' misuse of that word, which they think it means "Setting up my hotkeys") of the domain (business, missile launch and flight, etc) and capturing it in programming language expressions such that expressions do not clash and are flexible enough for real time causality differences.
@@johnp.johnson1541 indeed, understanding the business process workflow and transcribing it correctly into appropriate models is definitely the hardest part, and part of what I meant. I didn't speak to understanding the workflow of a business process, but the flow of the program is the implementation model of your understanding of the business process. So many people just jump into coding without really doing the first part, but once that skill is mastered and a model is made, then the coding piece is a cinch, just follow the blueprint (I might say pattern or template alla other crafts, but that would be confusing in the programming space since those are reserved words with meaning and context already applied).
@@psiryan yeah, it really is the bigger picture / flow that matters if you're working on anything larger than a few macros (or a handful of functions, etc.) here and there. Big picture is where my programming falls apart: Project becomes overwhelmingly complex, usually due to poor organisation and laziness at the start of the project. Fine in an established project with a supporting team, not at all good for advancing my own skills or leading large new projects. Also, learning proper flow improves knowledge retention immensely. You can get up to speed pretty quickly, but if you haven't internalised the fundamentals you'll forget everything in the span of a couple months. Cheers.
Having started in the 80s myself with Basic on a Commodore 64 and later learning Pascal with an astrology project that I successfully completed, I can fully credit your learning approach. I am now retaking programming after many years of inactivity. I am excited about D.
I think people who learnt to program before RUclips understand this approach better than people who are used to finding everything online. Good luck with D.
despite your 40 years, I feel less overwhelmed already. I think with everything going on in the world, everything is discouraging in the content given, and just this one video alone, I want to start tomorrow again with a more positive and patient attitude because I'm interested and feel respected that I want to learn. I get that everyone wants to teach others their way and project themselves about how stressful coding is, but it was hard to remember the pattern based mentality i can construct and have fun doing if I just like to learn. this is a great channel
That generally works, crash coursing. I'm a little more structured. I write the same multi-threaded skeleton with async, a type, conditional, event across languages. The next step is cli w argv, gui framework, repl. I cranked out C# Windows apps fast w custom controls, and realized, this is my process, this template/skeleton. Install, Workspace, code template, debug, compile, perf and analysis. Then roll thru other major concepts. C#, Go, TinyGo, Rust, JS, etc. It's worth the comparisons and it didn't overload me like I thought it would. This was all after leaving Windows and that proprietary baggage behind. My brain opened up.
Love this and I agree with the notion of project based learning. This is how I learned programming, starting from the TRS-80 Model 1. It's the best way to learn and retain because you are actually focusing, and enjoying the process. I feel that programming is a special type of occupation (occupying your time, or as a career) that is more rewarding because of the instant gratification, you make a change and you see the results immediately, whether good or bad.
To be honest, it was the way almost everyone learnt in the days before the Internet. It's still the most productive way, in my opinion. Thanks for the comment. Huw
I've been getting deep in the programming world, and figured out the usefulness of this skill to improve technically, in several scientific areas! Regards, like your channel a lot. Keep it up!
What type of audience do you think you are addressing? The language you use is so involved. Its clear that there are certain aspects/attributes that you believe that the "learner" has.What is a Module, Disc utility, Code.D IDE,Default,Compiler,Breakpoint etc and what?When are they used. Learning is a process.
Its not about learning the syntax of a programming language, learning the concept of that particular language is important. Firstly, A basic concept of compiler, interpreter, low level language and how its interacts with high level programming language is important.Its a one time learning. Then comes the core concepts - data structure, function, module, condition and loops, file system, object and threading (If applicable), resource usage. Overall, a common sense is required for example making your own logic or alogorithm, ask question to yourself - can I do it differently. This is my path : Gain curiosity > learn basis > get more interest > practice regularly > repeat > learn advance topics > apply those concepts > learn and repeat (no end) So, 3 hours or 3 years is just a number, you give time and effort , you get better results :) Happy Learning.
The gist of what you say is completely true. I’ve learnt new software simply by diving in a building something with it and solving issues along the way. It really is the best way.
I'm glad to hear that. I am genuinely surprised at the number of comments that don't understand what I'm trying to explain in this video. Best wishes Huw
I prefer to read an amount of the documentation before I start coding. The amount varies depending on my familiarity to the language. The goal isn't to understand everything but rather to get a holistic view of the language. Typically I'll start with a scan the table of contents on the book. I'll pick out the chapters on syntax and general concepts and any others that 'stand out'. These I will read through once and not stop to ponder or re-read. I want a map to the rabbit holes, not of the rabbit holes. I don't always do this this though. Sometimes you need to work on a new language and you don't have the luxury of time. If this is the case you're probably working with a large enough codebase (which has sensible naming) and you can learn the language by just reading that code.
Great video! No nonsense approach to explaining the "learning how to learn" concept. Highly recommend to anyone curious about "how to learn" a new language without using tutorials.
Many thanks. I'm always happy when people understand the approach I try to explain! Not everyone does (as you will see from some comments). But those who do understand this, make the effort of making these videos all worthwhile. Best wishes Huw
If you are experienced programmer in one programming language, some OOP language preferably, then learning other languages is pretty much not necessary. Particualry if the language you perfected is some of the more verbose ones like Java, C++..etc. Picking up others should be easy. What programmer should focus on is to understand how to write cleaner code and best programming principles and patterns. With various AI tools nowadays, and an opportunity to experiment with the code on your IDE, learning new language is even more facilitated. So in conclusion, if you want to become a good programmer, my advice is to learn OOP principles well, best practices, pick one verbose language and learn it well, and then you can code projects in pretty much any other languange you want.
Patterns and principles are so crucial. Don't need to be a genius or waste hundreds of hours reinventing the wheel if you already know several solutions. Of course I won't take my own advice due to laziness and ADHD, lmao.
@@noctisocculta4820 I agree. To be able to be good at anything, trying it out in practice is crucial. Then you will spend time filling out holes in your knowledge and perfecting the basics to become more productive. Programming languages should be seen as tools or a mean to comunicate with the mashine and make it do something, i think a lot of tech people and programmers are overcomplicating it to much. Much more important is to understand underlying design principles and best design practices for a particular programming language, and how exactly you code is up to you. And never forget that your finest tool is your mind.
after watching this video i have now mastered all the languages successfully! now i am challenging all the coders and programers to come and compete with me!!!!!
This for me is the most relevant topic for any beginner. Not syntax, or even building projects. If one cannot think it out. Not 1 line of code is possible.
I'm definitely going to try your method the next time I want to learn a new language! It's so refreshing to see someone just dive in and start coding, even if it means making a few mistakes along the way. Your "messing about" stage is something I can definitely relate to. I've always found that the best way to learn is by doing, and this video is a great example of that. I also appreciate your emphasis on using the documentation as it's a valuable resource that shouldn't be overlooked. Thanks for sharing your knowledge and experience, Huw! 👍
These sorts of lessons are the most enriching, in my opinion. Not just telling us to do something and telling us what it does, but allowing us to gain some insight into your mental workings by actively narrating your thoughts. Like at 5:26 where you said "I've got a writeln, let's see if I've got a readln" and then explaining that the error line disappears, indicating it's valid. I've always struggled with getting started, and needed a little nudge to get going, even during my college days. If a professor gave me a single line of code and told me to complete a project then I could do it, but if I had a blank screen in front of me I completely froze. This teaching style helps immensely, so I thank you for that.
I love your approach. Leverage what you know from all your past experiences. Programming in new languages is all about getting familiar with syntax and control flow.
Absolutely. I have to say I am surprised that so many people find this a strange or unusual approach. In my experience, it's bar far the best way to learn.
What he said still isn’t true. Part of learning a language is learning the libraries and the ecosystems of that language. So maybe you can write if statements and some four loops and trivial things like that, but to really be able to tackle a non-trivial program in three hours is impossible even with 30 years of experience.
I agree jumping into a project is one of the best ways for many people that have some experience with another language. May not be the best for absolute beginners. Either way, enjoyed the video.
Thanks. Yes, I have lots of other, step-by-step videos for complete beginners. But one of the problems I've noticed which many students have is that they don't commit to writing big programs. Which is (in my opinion) by far the most productive form of study. Learning a new (2nd or 3rd language) presents the perfect opportunity. Best wishes Huw
I recommend skimming the starter guides and quick start guides tho before doing this. They usually show you how to declare intiialize vars, definr classes and functions, and use conditional statments and loops, scopes and closures and reference passing, classes/structs, etc... Most devs arent guessing their way through 80% of new lang syntax because they dont have 40 years of developing on literally every other lang in that family. But otherwise yeah, just throw yourself into the fire. This has me inspired to make a game now
Hi Huw, you're absolutely amazing! I took your advanced c programming course on Udemy in 2018 and it literally changed my perspective on programming and how I thought about programming! I have gone on to use those visual illustrations you used in the course to help other CS students at my University understand C when I was a tutor!
Wow!!! I am flattered. I am extremely pleased that my course helped you so much. It's always nice to hear from people who've gone on to bigger and better things later on. 🙂I hope you find a few things of interest in my more recent videos on RUclips too. Many thanks for the comment!
I remember reading some books that encourage this hands-on approach. They show you a piece of code and then explain line by line what everything does instead of going through all the basic stuff about loops, conditional statements etc, which every programmer should already know about. C By Dissection comes into mind. Just reading the code works for me better than any prior explanation of what the syntax keywords and internal methods are.
The approach really boils down to this: you learn by doing. It's like learning a musical instrument. By all means solidify your understanding by studying theory. But if you spend all your time on theory and not much time on playing, you're never going to learn to play your instrument. Best wishes Huw
@@TariIkadoi I believe the book mentioned by @yorkaturr is called "C by Dissection". I'm not familiar with it myself. I think it may be out of print but seems to be available second-hand on Amazon.
Absolutely fantastic. Loved the video, made a lot of sense. Keep doing what you're doing, we need people like you who actually know what they're talking about!👍👍 ..the fact that you're using that vs code theme *sold🔥
First, start to program. Then use the documentation and debugger to help you over any hurdles. But doing the actual programming (of a *real* program, not just assignments) is by far the best way to learn.
Definitely works well with imperative object-oriented languages. Getting the hang of functional languages & ones where immutability is the norm might be more involved - stuff like Clojure for example. Elixir too: Elixir's main strength is parallel processing, using all the cores on your machine to get stuff done a lot quicker & reliably.
Time has changed. I never knew how to program, but recently I started to master the engine, understood the basics and began to use a chat-gpt. I give her the logic, and she writes the code for me without errors. Instead of typing hundreds of thousands of lines yourself, and then spending 5 hours looking for a [space that shouldn’t be there I'm making a game. And yesterday I did more with the gpt than I would have done alone, taking into account the errors
This is excellent advice. One lie that CS degrees and coding bootcamps often try to sell you is that you need to have a deep knowledge of a particular language/ecosystem in order to become competent at writing code in it. That's not the case. You just need to understand the basic syntax/ergonomics of it and then know how to browse documentation when you get stuck.
Took me 2 weeks to go through K&R in 1985 and I skipped struct cause I didn't think useful. I started C by converting an Fortran pgm to C. Wrote new pgms to plot weather data graphically on a PDP. First real C job taught me to loose old bad habits. So by my 3rd year I was quite good. I could see 3-6 months for C with a good teacher. Oh, and DOS 3.3 and the MS C 6.00A compiler! 😊
APL is just a fancy Forth with a fetish for one character function names and weird precedence rules. If you parenthesize everything and change characters with legible names, APL is no more mysterious than LISP
Not any language. Only languages that are similar enough to what you already know. Try learning Haskell, OCaml, Erlang or Rust this way... you very likely will suffer
I've written quite a bit of Haskell, Rust and a few other "difierent" languages like Prolog, J and Forth. I think the advice here still holds, but the proportion of time spent debugging and searching the docs will be a bit higher. You definitely benefit from the suffering you mentioned. Otherwise it's too easy to spend weeks going through tutorials and books without ever "breaking out". Haskell books also tend to be very long and hard going, although Brent Yorgey's old CS notes and exercises were excellent and concise without going into silly monad analogies or "...in a category of endofunctors" prose that loses people.
Not really. 95% will be the same sort of tasks in every language: getting input to/from the user, reading and writing files, math, various loops, subroutines or function calls, etc… You just need to learn the new language’s syntax for doing those things. and in the meantime you can probably sketch a pseudocode flowchart of what you want to do. Rarely will you come across a feature that is truly unique and then it should just take a bit of extra study to get used to it.
i code since i was in primary school and never learned in a course mostly i find my way almost like you did and i cam assure that this is the most effective way to learn a language. thank you for the efforts
Apart from the outlier genious that built his own engine from zero....I've just tought myself how to make video games using another engine... using exact method you've described here and now I'm taking on rust language... Thanks feels good to get some confirmation.
@@LearnWithHuw Try to learn and be productive with Scala or Haskell in 3 hours. And if you think you understand something about programming you know that language alone is nothing without libraries, patterns and tools
The video covers how Huw deals with learning languages. I don't really view Haskell or Scala to be that intimidating. If you have knowledge of the ML family, both of those languages aren't too bad to work in. Sadly both Scala and Haskell have relatively poor environments, so they languages themselves aren't too helpful in terms of interactively learning (GHCI is serviceable for small/non complex projects). As for tooling Huw shows grabbing the language environment! For most languages this gives you a decent overview of the tooling of the language. for a smalltalk or lisp environment this is all you really need as you are programming within the environment of the language. However more batch oriented languages the editor Huw was using works well enough to be productive. Patterns in particular come from experience with some style of design. If you have working knowledge of smalltalk, you have a good idea on OO design, if you've used CL you probably have a decent view on patterns that emerge in other lisps you don't know about etc etc etc. Even getting thrown into something like Erlang, you can pickup all the actor stuff quite quickly as that is all there is to learn about erlang if you are already familiar with interactive languages.
@@radicaldreamer46 Thanks for that thoughtful comment. Really I am trying to encourage people to gain experience of more languages through hands-on use and experimentation. As long as you already know one language, it is usually possible to make fast progress when learning another language in the way I try to explain in this video. The only real way to learn to program a language is to write programs in that language. But many people get stuck in the early stages by being bogged down in long books or tutorials. Best wishes Huw
@@radicaldreamer46 Scala and Haskell are FL (functional) family rather than ML. It took me 3 hours to write a couple of programs of the "Hello, World" level initially but years to actually understand them
100% agree! That is exactly how I learned scripting which I use a ton more on a daily basis. I picked a file backup project out of need, started simple and scaled it out as I learned more, made it bigger and more complex.
Could you please make a video about how to plan a project and refracting into different classes for de-coupling? That would be so helpful. Most difficult part for me is planning and refracting
Thank you very much sir ! I'm actually thinking about studying mechanical engineering next year but I also have huge interests in the software world. Your advice will help me alot sir I appreciate your help and guidance
i completely support HUW. This is the way to learn. i just sprinkle the above method with reading some documentation here and there. This method keeps the enthusiasm alive. This method will be more effective if you have already learnt a language of a particular style completely. eg: c for procedural, schema for functional and java for oops. most of the development in programming languages stopped by early 2000s all the new shiny features that we are using right now are from the past. eg: functional programming existed before 2000 but came into popularity because our computational power has increased.
This kind of works because C, C++, java, javascript, rust, python, are all more or less the same type of language. Once you look at different paradigms like prolog (logic programming) and haskell (functional programming)... you will need a lot more than 3 hours (and your mind will melt a few times). It's very much worth doing though because it will also totally change your perspective on the things you thought you knew already.
The one project I've been using to learn different programming languages, is first to draw a hexagon, and then sometimes a grid of hexagons. I'm somewhat fixated with hexagons. I also generally use a derivative of the dictionary dispatch method, which I first observed in FORTH.
Interesting and inspiring, next time I'll use the same approach to learn any new programming languages that I need or want to learn. Thanks for sharing.
Where I think people are getting mixed up here with you need to have experience first for ten plus years or already fluent in so many languages first is that this is how to learn a language. How to program can come from experience or it can come from determination. The choice is yours, if you want to use this method as a new programmer it will come down to how much determination to figure things out, but the same concepts can be followed (there is always the documentation). Once you have one language and basic concepts of programming then it will become a lot easier and you will start to see patterns in the languages you encounter from then on.
It's the same that i do lol, i know PHP, C#, C++, Javascript etc - still alot more to learn. But it works very well, and the more languages you learn the easier it gets because there are so many similarities :)
I learnt programming from the end, so u need the idea and result, its doesnt matter which language u need, then u just want to disassemble it. Disassembly is process of creation. And assembler language is a bit differnt language. I found that blueprints is just better system of catching everything in your head, there is new systems like "cables gl" or "Unreal Engine 4/5". Text representation definitely more complicated, for mature programmers.
Once upon a time, this is pretty much how everyone learnt for the simple reason that we did not have access to all the material available online. I learnt Pascal from the Turbo Pascal manual which described Pascal syntax and very little else. I have a friend who learnt Algol-68 by studying the source code of the language. The way I describe in this video is by no means that extreme, I promise you! 🙂
Very true, i remember the first time i coded in python was a login program and that’s when i knew nothing about python but i searched every line of code and tried to get it to work. Those functions and syntaxes are the things i remember easily from python.
I think learning human language is more challenging than computer language. Any one programming language under the belt you got the gist of most of them and the expression still remains English for most of the wider world for compiler to process.
Once you realize, programs are just an assembly batchfile with subroutines jumping in and out, every language fundamentally becomes the same. just the funny words for the functions change. D is writeln(), C# is Console.WriteLine(); some have "print", another "echo"...
Step one- understand assembly and cpu architecture, programming patterns and multi threading principles, kernel API oh and networking. Then yeah read about go, rust, julia etc. be able to look up the skirt of any given language
The thing is... all this programming languages are Algol derived. Once you know one, you know all of them. Lisp, Haskell / other SMLs, stack based languages (APL, Forth, etc.) all have radically different programming structure you cannot equate to a C procedure. Case in point: in Haskell, "Hello world" is the *last thing* you program, because you need to understand monad first
Main point I agree with is you should make your hands dirty, learning programming by doing small projects. But to avoid too much "guessing" in the beginning, I'm always spending 1..2 days to browse through the basics of a new language (data types, input/output, control structures, functions, classes). Greetings from Good Old Germany.
What you need to learn is a strong foundation in the concepts of programming and fundamentals. The its pretty much syntax and a few difference between programming languages. Learn then concepts in Pseudo Code. Learning in C is also good.
i learned python by looking at solved exercises and making questions to chatGPT on how things in there work and asked to make other examples of the things used in those exercises
The only problem with this way of discovering (I don't see this way as learning but more of a discovering kind of thing), is that you will never bump into the idiomatics of the language you are learning. I do agree with your learn by doing logic though.
If you know how to program then its most of the time just a matter of reading the documentation. Well ofc there are the cases where your primary language does matter, In example if your primary language is procedural then it will take a bit of time to grasp OOP and there are some other exceptions besides that its just learning the syntaxes and the functions, operations and datatypes are pretty much the same across the board. ITs also pretty much expected that you are flexible in the IT world.
They can be useful as "leaping off" points but I wouldn't trust them completely. Most languages have some sort of "official" guide which is probably likely to be more reliable.
This is awesome because i have learned many new languages the same exact way currently ive gotten into fpga hdl and electronics design so ive picked a cool project and im jumping into it. ive learned about 8 different languages this exact way and ive only read one book on c++ and one class in VB when I was in highschool. if you can recognize the similarities in the syntax its much easier then learn the nuance of each language. i will say hdl is a completely different animal but still has its similarities but as a software developer i had to stop thinking so linear and think in terms of circuits and parallelism
Isn't it interesting that the comments on this video divide into two types. Either people dismiss this approach as unworkable. Or else (like me and you!) they say that this is the most productive way to learn a language. Anyway, I'm glad you agree!
@@LearnWithHuw well i think some people have the same issues some do with human languages if you can understand that much of it derived from a common source then you will have a much easier time learning new ones but some people need to start from the ground up. but in some instances i think the two are so different its much harder kinda like speaking English your whole life and then trying to learn Mandarin. I seem to be at that point with learning HDL its so different from software languages im learning to think in a completely new way
My approach is to learn one programming language really well covering all concepts in details (Java). Hence, serving as a reference for learning other languages.
Thank you so much. It’s obvious that you are a great teacher. Some 😢don’t appreciate free good advice and learning as they go along. Your advice has helped me stop wondering what to do and just starting and figuring it out as I go along. I’ve come a long way with your advice. For those who appreciate learning just start a project and work on it you will learn if you put you mind and effort to work and stop whining. Thanks for your great lessons. Keep it up many of us more than 26k appreciate your great effort. Blessing to you!😊
Many thanks. I'm sure you'll make great progress with this positive attitude!
Best wishes
Huw
Learning a language is the easier part; the real struggle comes when trying to master the technical complexities of frameworks and deeper systems.
@kensyjolicoeur you are so right
@@LearnWithHuw Thank you I appreciate your video. I am a bigger and actually just starting with Python myself. Was interested in creating a super Mario type of a game. I only seen little bit of freecodecamp the beginner Python. I know Python isn’t ideal language for creating games. But was thinking it was a good beginner language. Plus it doesn’t hurt to give it a shot either way I will learn something
@@donaldjohnson8522 I've never tried creating games with Python so can't comment. But I'm sure it must be possible. Good luck!
Huw
1 Data.
Variables, arrays, objects etc.
2 Loops.
If, while, then etc.
3 Functions.
Fx name (arguments) {fx statements}
4 Call function.
name(arg1, arg2)
5 Constructor
6 Class
7 Import.
Import X from Y
8 Export.
Export (fx)
9 Modules
10 File system
Every language have these core parts.
Javascript has no file system part 😂
@@phat80good
Probably you are a beginner, missed the most important parts like error handling and threading model
@@scs_one Threding is not about any language. JS, Dart are both single-threaded. I agree with error handling though.
@@phat80 Currently parralel processing is the essential part of any modern language, take a look the way C++ transformed, plus swift and go. I suspect you are more web oriented in terms of the languages.
I've coded hundreds of programs with only a few hours of experience in C#. None of them work or are finished, but nobody can out code "Hello World" better than me!
@@8T8KeezI can make a diode blink with arduino.
Hello world my ass, wait when you join strings to feel full achieved!
😂😂
😂😂😂😂
This brought me a smile 🙂
Doesn't matter if it's 3 hours, 3 days, 3 weeks, the point is you learn better when you're doing something.
So true
❤🥳❤
✌🏿
what if it takes you 3 years to get hello world working
Yes
“I have been programming since the 1980s” fellow watchers keep in mind, this information comes from an already skilled individual so if you’re just starting out your time most likely will NOT be the same.
Exactly what I was thinking - this is not gonna work for a noob.
Thanks
Thanks so much
I'm instead In learning programming I will be so happy if you can send me some basic information I will be needing thanks
While you are right, I should point out that this is HOW I became an experienced programmer. This approach has served me well for a very long time.
@@otaborosamuyi2112 w3schools has pretty nice learning tracks. Freecodecamp seems pretty good as well. Take your time to really understand the concepts of how and why you are coding certain things, certain ways, etc. Build things. Even if simple, build them.
Not gonna lie, when I saw the thumbnail I thought Bill Gates's gonna teach me how to learn any programming language.
Bro I thought the same thing 😂
This comment was part of why I clicked this video.
Fairly enough Bill Gates wasn't far of as nerdy, almost the same demeanor.
Why insult the man?
@@folksurvival How is that an insult?
Indeed. At first instance.
I taught myself C/C++ by making a full 3D Game Engine from scratch. I don't mean including an existing one, I mean creating all of the internal components, nuts and bolts and assembling them together into an integrated, cohesive and working solution. Very rewarding.
Taking on a big programming challenge that really pushes you to the limits is (in my view) probably the best way to learn. And what a sense of achievement you must have had at the end!
@@LearnWithHuw The final solution was 4 projects, three internal static libraries, and one main executable consisting of close to 100k lines across about 50 - 100 files.
Well, I could be exaggerating on the lines of code, it might have been at least 10-20k though. There were 2 different parsers. The main text parser for handling the level file for loading and automatically setting up and constructing the scene graph itself was at least 2k lines just for the parser function.
Okay, now let's see:
1. Were you programming before teaching yourself C/C++?
2. Got any CS background, whatever it is?
If you answer "yes" to any of these two question, then beginners should completely disregard what you just said.
@@jocm99 Nope, 0 background, 100% self-taught, 100% hobby of interest. I don't need to go 1/4 mil in dept to learn something I have an interest in. I just do it!
00:02 Learn programming languages effectively by working on projects, not just reading manuals.
02:16 Setting up the programming environment is crucial for learning any language.
04:53 Learning D programming language through trial and error.
07:23 Creating classes and objects in programming languages like D
09:55 Experimentation is key in learning a new programming language.
12:32 Enforcing Privacy in D Programming Language
15:07 Creating and manipulating arrays in programming languages
17:26 Troubleshooting code mismatch with string recognition
19:48 Learning a new programming language in around 3 hours
22:04 Learning programming efficiently without overwhelm
Crafted by Merlin AI.
thanks
3 hours my ass. I teach kids. This guy has almost 50 years of experience. A beginner will take at least 3 months to begin to understand what this man is talking about. Stop fooling people in order to brag...please.
Timestamps
00:02 - Learn programming languages effectively by working on projects, not just reading manuals.
02:16 - Setting up the programming environment is crucial for learning any language.
04:53 - Learning D programming language through trial and error.
07:23 - Creating classes and objects in programming languages like D
09:55 - Experimentation is key in learning a new programming language.
12:32 - Enforcing Privacy in D Programming Language
15:07 - Creating and manipulating arrays in programming languages
17:26 - Troubleshooting code mismatch with string recognition
19:48 - Learning a new programming language in around 3 hours
22:04 - Learning programming efficiently without overwhelm
Your C pointers course might have been the best programing course I have ever taken. Thanks for creating these wonderful videos for us.
That's very kind of you. I'm glad it was useful.
On this channel?
@@philamavikane9423 I teach that course on Udemy (or you can buy my book on Amazon).
This is cool, BUT isn't it true to say that YOU can learn any language in about 3 hours because you have a ton of experience and know how software is built and how it's constructed, thus all you really need to learn is syntax? Which is why YOU can learn any language in 3 hours? What about the rest of us who only have 6 months, a year or 2 years of experience?
Yes it's more accurate to say that if you know one language, you can learn any other in 3 hours. Which is pretty much true unless you're going from like python to rust or something. If you know one high-level language and one low-level language, it's certainly true though
It's all bullshit, because: What do you mean by learning a language? What do you mean by having learned a language?
It does help reinforce the important parts of programming by making you think abstractly about how you achieve an outcome rather than using one specific tool. Usually why university programming courses have first year students use multiple languages: I had to learn Visual Basic, C#, Java, and Python. To be fair, VB, C#, and Java, are pretty much identical.
You learn by doing that's the point. The title is just for hyperbole.
He has years of experience working within one paradigm, so he can apply this to other languages within that paradigm, he only has to get up to speed on syntax and where things are located. But if an OO programmer takes on a language in an unfamiliar paradigm, like FP, there will be a much steeper learning curve.
How to learn any programming language in 3 hours: 1. Know, extensively, all of the languages that it is derived from from more time coding than most viewers have lived (80's -2020's = like 40 years) . 2. Know literally everything about your IDE of choice. 3. Code in the new language until your IDE shows you that you guessed wrong and then reference the docs when it would take less time than guessing again. You're obviously an accomplished software engineer. Most people watching are not. There is NO shortcut except for having already done the hard work.
I agree, i hate these click bait videos. I've been programming since the 80s and these videos are misleading claims
Could you recommend some good books from the time.
@@dameinmalone7480 best book I know of is "Automate the boring stuff with Python"
This is the first video I have seen/been suggested of yours. While I very much agree with the message and this way of learning a new language I was mostly happy to hear a Welsh accent after not having been back to Wales in 4 years.
I haven't lived in Wales for a very long time. I'm glad the accent is still there!
Learn any programming language in 3 hours with 30 years experience in multiple languages
This is how I've always learnt from the earliest days. In fact, before the adventure of the Internet, it's hos most programmers learnt. This approach is now so old it seems news again. 🙂
@@LearnWithHuw - but why would you just out of the blue type char? A novice would have no idea.
@@Cowdog1 As I say, when you don't understand something, that's the time to look it up. If you are a complete beginner (which this video assumes you are not) I have many other videos explaining data types, variables, chars etc.
Best wishes
Huw
@@Cowdog1i like this guy’s intuitive approach however I would recommend reading through at least one coding fundamentals textbook (early chapters) in Java for example to get started. I’m guessing the instructor here has done this himself before.
There it will tell you a string is simply an array of characters, or char[].
So you compressed your learning, building on the extensive background you already possess then compressed all the 'exercises' into one large 'exercise' you relabeled as project.
I appreciate the video it is well done and well directed at the target audience.
One line is permanently etched in my brain till the day I die, maybe even for the afterlife. It's the *'public static void main(String[] args)'* . Even though I never went ahead with Java back in the day, never made a project in it, and it's been perhaps 25 years since I touched Java, I still remember this line.
The stuff of nightmares! 🥴
The hardest part about learning to program is understanding the flow of the program, which is really the fundamental part of programming; everything else is syntax which if you are learning a language with syntactical similarities to another language you are already familiar with makes the process of learning other programming languages easier.
What is more ambiguous and requires direct language experience is determining which language is appropriate for the project you are working on. The differences between many languages are sometimes very subtle but they exist for reasons.
you: "The hardest part about learning to program is understanding the flow of the program, "
No, not at all and such belief is why most software is terrible.
The hardest part is understanding workflow (and no, the kiddies' misuse of that word, which they think it means "Setting up my hotkeys") of the domain (business, missile launch and flight, etc) and capturing it in programming language expressions such that expressions do not clash and are flexible enough for real time causality differences.
@@johnp.johnson1541 indeed, understanding the business process workflow and transcribing it correctly into appropriate models is definitely the hardest part, and part of what I meant. I didn't speak to understanding the workflow of a business process, but the flow of the program is the implementation model of your understanding of the business process. So many people just jump into coding without really doing the first part, but once that skill is mastered and a model is made, then the coding piece is a cinch, just follow the blueprint (I might say pattern or template alla other crafts, but that would be confusing in the programming space since those are reserved words with meaning and context already applied).
@@psiryan yeah, it really is the bigger picture / flow that matters if you're working on anything larger than a few macros (or a handful of functions, etc.) here and there.
Big picture is where my programming falls apart: Project becomes overwhelmingly complex, usually due to poor organisation and laziness at the start of the project. Fine in an established project with a supporting team, not at all good for advancing my own skills or leading large new projects.
Also, learning proper flow improves knowledge retention immensely. You can get up to speed pretty quickly, but if you haven't internalised the fundamentals you'll forget everything in the span of a couple months.
Cheers.
Having started in the 80s myself with Basic on a Commodore 64 and later learning Pascal with an astrology project that I successfully completed, I can fully credit your learning approach. I am now retaking programming after many years of inactivity. I am excited about D.
I think people who learnt to program before RUclips understand this approach better than people who are used to finding everything online. Good luck with D.
This works well for object oriented programming. Pure functional programming takes a mentality shift that's just very wild
Not true, even Haskell is able to output something, I learn clojure by doing Advent of Code Day 1
despite your 40 years, I feel less overwhelmed already. I think with everything going on in the world, everything is discouraging in the content given, and just this one video alone, I want to start tomorrow again with a more positive and patient attitude because I'm interested and feel respected that I want to learn. I get that everyone wants to teach others their way and project themselves about how stressful coding is, but it was hard to remember the pattern based mentality i can construct and have fun doing if
I just like to learn. this is a great channel
Many thanks. It's good to know I've been able to give you a bit of encouragement. We all need that at times!
Best wishes
Huw
That generally works, crash coursing. I'm a little more structured. I write the same multi-threaded skeleton with async, a type, conditional, event across languages. The next step is cli w argv, gui framework, repl. I cranked out C# Windows apps fast w custom controls, and realized, this is my process, this template/skeleton. Install, Workspace, code template, debug, compile, perf and analysis. Then roll thru other major concepts. C#, Go, TinyGo, Rust, JS, etc. It's worth the comparisons and it didn't overload me like I thought it would. This was all after leaving Windows and that proprietary baggage behind. My brain opened up.
Love this and I agree with the notion of project based learning. This is how I learned programming, starting from the TRS-80 Model 1. It's the best way to learn and retain because you are actually focusing, and enjoying the process. I feel that programming is a special type of occupation (occupying your time, or as a career) that is more rewarding because of the instant gratification, you make a change and you see the results immediately, whether good or bad.
To be honest, it was the way almost everyone learnt in the days before the Internet. It's still the most productive way, in my opinion.
Thanks for the comment.
Huw
You mean in 3 hours and 33 minutes. You need 33 minutes to watch this video to learn how.
It's the first 40 years are the toughest! 😅
@@LearnWithHuw LOL!
My version is only 22 minutes and 37 seconds! Are we watching the same thing?! 😅
@@bobanmilisavljevic7857 Maybe I just make it *seem* longer! 😂
@@LearnWithHuw and the first 10 of them, did they involve pure assembly?
I've been getting deep in the programming world, and figured out the usefulness of this skill to improve technically, in several scientific areas! Regards, like your channel a lot. Keep it up!
That's very kind of you. Many thanks.
What type of audience do you think you are addressing? The language you use is so involved. Its clear that there are certain aspects/attributes that you believe that the "learner" has.What is a Module, Disc utility, Code.D IDE,Default,Compiler,Breakpoint etc and what?When are they used. Learning is a process.
Just when I thought I'd seen all the possible ways to code "Hello World", you come along and show me another....thanks!
Love this method of learning and the choice of project is great!
Thank you. It's always heartening to me when I read a comment like this. I'm sure you'll make good progress.
Best wishes
Huw
Its not about learning the syntax of a programming language, learning the concept of that particular language is important.
Firstly, A basic concept of compiler, interpreter, low level language and how its interacts with high level programming language is important.Its a one time learning.
Then comes the core concepts - data structure, function, module, condition and loops, file system, object and threading (If applicable), resource usage.
Overall, a common sense is required for example making your own logic or alogorithm, ask question to yourself - can I do it differently.
This is my path : Gain curiosity > learn basis > get more interest > practice regularly > repeat > learn advance topics > apply those concepts > learn and repeat (no end)
So, 3 hours or 3 years is just a number, you give time and effort , you get better results :)
Happy Learning.
Where and how can I learn the basic concepts of compilers, low level language etc as you mentioned above as the first step?
Learn any programing language in 3h
Requirements:
1- Know 10+ languages already
2- Have over 20+ years of experience
…and in addition to that the language not be Rust.
@@PeterVerhas right 😅
@@PeterVerhasOr Haskell... Or Scala
@@zombizombi I was talking about programming languages
@@PeterVerhas Er yeah.. me too
The gist of what you say is completely true. I’ve learnt new software simply by diving in a building something with it and solving issues along the way. It really is the best way.
I'm glad to hear that. I am genuinely surprised at the number of comments that don't understand what I'm trying to explain in this video.
Best wishes
Huw
I prefer to read an amount of the documentation before I start coding. The amount varies depending on my familiarity to the language.
The goal isn't to understand everything but rather to get a holistic view of the language.
Typically I'll start with a scan the table of contents on the book. I'll pick out the chapters on syntax and general concepts and any others that 'stand out'. These I will read through once and not stop to ponder or re-read. I want a map to the rabbit holes, not of the rabbit holes.
I don't always do this this though. Sometimes you need to work on a new language and you don't have the luxury of time. If this is the case you're probably working with a large enough codebase (which has sensible naming) and you can learn the language by just reading that code.
Kkkkk tá vendo muito video de mapeamento idiotial 😂😂😂
Great video! No nonsense approach to explaining the "learning how to learn" concept. Highly recommend to anyone curious about "how to learn" a new language without using tutorials.
Many thanks. I'm always happy when people understand the approach I try to explain! Not everyone does (as you will see from some comments). But those who do understand this, make the effort of making these videos all worthwhile.
Best wishes
Huw
If you are experienced programmer in one programming language, some OOP language preferably, then learning other languages is pretty much not necessary. Particualry if the language you perfected is some of the more verbose ones like Java, C++..etc. Picking up others should be easy. What programmer should focus on is to understand how to write cleaner code and best programming principles and patterns. With various AI tools nowadays, and an opportunity to experiment with the code on your IDE, learning new language is even more facilitated. So in conclusion, if you want to become a good programmer, my advice is to learn OOP principles well, best practices, pick one verbose language and learn it well, and then you can code projects in pretty much any other languange you want.
Patterns and principles are so crucial. Don't need to be a genius or waste hundreds of hours reinventing the wheel if you already know several solutions. Of course I won't take my own advice due to laziness and ADHD, lmao.
@@noctisocculta4820 I agree. To be able to be good at anything, trying it out in practice is crucial. Then you will spend time filling out holes in your knowledge and perfecting the basics to become more productive. Programming languages should be seen as tools or a mean to comunicate with the mashine and make it do something, i think a lot of tech people and programmers are overcomplicating it to much. Much more important is to understand underlying design principles and best design practices for a particular programming language, and how exactly you code is up to you. And never forget that your finest tool is your mind.
after watching this video i have now mastered all the languages successfully! now i am challenging all the coders and programers to come and compete with me!!!!!
Good luck! 👍🙌
To learn every language quickly, you must have a good base in algorithmics, learning to code in pseudocode.
This for me is the most relevant topic for any beginner.
Not syntax, or even building projects. If one cannot think it out.
Not 1 line of code is possible.
I'm definitely going to try your method the next time I want to learn a new language! It's so refreshing to see someone just dive in and start coding, even if it means making a few mistakes along the way. Your "messing about" stage is something I can definitely relate to. I've always found that the best way to learn is by doing, and this video is a great example of that. I also appreciate your emphasis on using the documentation as it's a valuable resource that shouldn't be overlooked. Thanks for sharing your knowledge and experience, Huw! 👍
Many thanks. I think you'll find this a fun and effective way of learning. Good luck.
These sorts of lessons are the most enriching, in my opinion. Not just telling us to do something and telling us what it does, but allowing us to gain some insight into your mental workings by actively narrating your thoughts. Like at 5:26 where you said "I've got a writeln, let's see if I've got a readln" and then explaining that the error line disappears, indicating it's valid. I've always struggled with getting started, and needed a little nudge to get going, even during my college days. If a professor gave me a single line of code and told me to complete a project then I could do it, but if I had a blank screen in front of me I completely froze. This teaching style helps immensely, so I thank you for that.
Thanks. That's what I hope for!
I love your approach. Leverage what you know from all your past experiences. Programming in new languages is all about getting familiar with syntax and control flow.
Absolutely. I have to say I am surprised that so many people find this a strange or unusual approach. In my experience, it's bar far the best way to learn.
To the silly comments, he said to learn a NEW computer language in 3 hours. That obviously means that you supposedly KNOW a language ALREADY!
What he said still isn’t true. Part of learning a language is learning the libraries and the ecosystems of that language. So maybe you can write if statements and some four loops and trivial things like that, but to really be able to tackle a non-trivial program in three hours is impossible even with 30 years of experience.
@@PeterBrown-b4i Respect! But I was just quoting what he meant, not whether it was valid or not. But your argument is logical
What he said is, Quote "Learn Any Programming Language In 3 Hours!", nothing about having any experience or just a NEW language.
@@terryhayward7905 if you going to LEARN any programming language, then it MUST be new
I know english
I agree jumping into a project is one of the best ways for many people that have some experience with another language. May not be the best for absolute beginners. Either way, enjoyed the video.
Thanks. Yes, I have lots of other, step-by-step videos for complete beginners. But one of the problems I've noticed which many students have is that they don't commit to writing big programs. Which is (in my opinion) by far the most productive form of study. Learning a new (2nd or 3rd language) presents the perfect opportunity.
Best wishes
Huw
I recommend skimming the starter guides and quick start guides tho before doing this. They usually show you how to declare intiialize vars, definr classes and functions, and use conditional statments and loops, scopes and closures and reference passing, classes/structs, etc... Most devs arent guessing their way through 80% of new lang syntax because they dont have 40 years of developing on literally every other lang in that family.
But otherwise yeah, just throw yourself into the fire.
This has me inspired to make a game now
Go for it! Good luck.
Hi Huw, you're absolutely amazing! I took your advanced c programming course on Udemy in 2018 and it literally changed my perspective on programming and how I thought about programming! I have gone on to use those visual illustrations you used in the course to help other CS students at my University understand C when I was a tutor!
Wow!!! I am flattered. I am extremely pleased that my course helped you so much. It's always nice to hear from people who've gone on to bigger and better things later on. 🙂I hope you find a few things of interest in my more recent videos on RUclips too.
Many thanks for the comment!
I remember reading some books that encourage this hands-on approach. They show you a piece of code and then explain line by line what everything does instead of going through all the basic stuff about loops, conditional statements etc, which every programmer should already know about. C By Dissection comes into mind. Just reading the code works for me better than any prior explanation of what the syntax keywords and internal methods are.
The approach really boils down to this: you learn by doing. It's like learning a musical instrument. By all means solidify your understanding by studying theory. But if you spend all your time on theory and not much time on playing, you're never going to learn to play your instrument.
Best wishes
Huw
Would you please recommend the title of the book for me
@@TariIkadoi I believe the book mentioned by @yorkaturr is called "C by Dissection". I'm not familiar with it myself. I think it may be out of print but seems to be available second-hand on Amazon.
Absolutely fantastic. Loved the video, made a lot of sense. Keep doing what you're doing, we need people like you who actually know what they're talking about!👍👍
..the fact that you're using that vs code theme *sold🔥
Thanks. I'm glad you found it useful.
So to summarise the best way to learn coding languages is to just look stuff up as you go?
First, start to program. Then use the documentation and debugger to help you over any hurdles. But doing the actual programming (of a *real* program, not just assignments) is by far the best way to learn.
@@LearnWithHuw Nike!
Definitely works well with imperative object-oriented languages. Getting the hang of functional languages & ones where immutability is the norm might be more involved - stuff like Clojure for example. Elixir too: Elixir's main strength is parallel processing, using all the cores on your machine to get stuff done a lot quicker & reliably.
Time has changed. I never knew how to program, but recently I started to master the engine, understood the basics and began to use a chat-gpt. I give her the logic, and she writes the code for me without errors. Instead of typing hundreds of thousands of lines yourself, and then spending 5 hours looking for a [space that shouldn’t be there
I'm making a game. And yesterday I did more with the gpt than I would have done alone, taking into account the errors
Finally I met the best programmer in the world.
Fortunality you are making the world shinny.
This is excellent advice. One lie that CS degrees and coding bootcamps often try to sell you is that you need to have a deep knowledge of a particular language/ecosystem in order to become competent at writing code in it. That's not the case. You just need to understand the basic syntax/ergonomics of it and then know how to browse documentation when you get stuck.
Took me 2 weeks to go through K&R in 1985 and I skipped struct cause I didn't think useful.
I started C by converting an Fortran pgm to C. Wrote new pgms to plot weather data graphically on a PDP.
First real C job taught me to loose old bad habits.
So by my 3rd year I was quite good.
I could see 3-6 months for C with a good teacher. Oh, and DOS 3.3 and the MS C 6.00A compiler! 😊
Try APL for a change. After three hundred hours you would still not even know what the purpose of this language was.
To hack Alien Mothership.
APL is just a fancy Forth with a fetish for one character function names and weird precedence rules. If you parenthesize everything and change characters with legible names, APL is no more mysterious than LISP
Project-based learning. Nice!
Not any language. Only languages that are similar enough to what you already know. Try learning Haskell, OCaml, Erlang or Rust this way... you very likely will suffer
I've written quite a bit of Haskell, Rust and a few other "difierent" languages like Prolog, J and Forth. I think the advice here still holds, but the proportion of time spent debugging and searching the docs will be a bit higher. You definitely benefit from the suffering you mentioned. Otherwise it's too easy to spend weeks going through tutorials and books without ever "breaking out". Haskell books also tend to be very long and hard going, although Brent Yorgey's old CS notes and exercises were excellent and concise without going into silly monad analogies or "...in a category of endofunctors" prose that loses people.
Not really. 95% will be the same sort of tasks in every language: getting input to/from the user, reading and writing files, math, various loops, subroutines or function calls, etc… You just need to learn the new language’s syntax for doing those things. and in the meantime you can probably sketch a pseudocode flowchart of what you want to do. Rarely will you come across a feature that is truly unique and then it should just take a bit of extra study to get used to it.
Totally agree - he’s using language he already know so useless for complete beginners
Subscribed because your voice reminds me of David Attenborough. Incredibly relaxing and interesting at the same time.
Ha! Well, I'd love to work on the sort of series David Attenborough makes. Sadly, nobody's offered me that job (but I'm available! 🤣).
Best wishes
Huw
Is it true that light theme attracts bugs?
Blue light and white light attracts the most bugs. Yellow and orange lights are more bug free
I use Light Theme. The entirety of dark mode philosophy is that You can't attract bugs when you can't see your code.
Huh?
Really?
i code since i was in primary school and never learned in a course mostly i find my way almost like you did and i cam assure that this is the most effective way to learn a language. thank you for the efforts
For a moment i thought Bill Gates was teaching me to code
lol that one really tickled me. I’m still laughing. 😂
Apart from the outlier genious that built his own engine from zero....I've just tought myself how to make video games using another engine... using exact method you've described here and now I'm taking on rust language... Thanks feels good to get some confirmation.
Try learning Rust with this method. 😆
Can you people stop pushing that rubbish language everywhere?
@@rusi6219that was a counter-recommendation because they’re saying it’s difficult
@@rusi6219 I wasn't pushing. I was saying it is a hard language.
@@rusi6219 fr. I have started hating it because people push it like its a cult
@oglothenerd, you're fucking everywhere lol
Taught myself how to code by building games in Unity. Now im a full time software engineer. Spend time on what you love and success will follow.
That's absolutely the best attitude!
Clickbait obviously
Sorry?
@@LearnWithHuw Try to learn and be productive with Scala or Haskell in 3 hours. And if you think you understand something about programming you know that language alone is nothing without libraries, patterns and tools
The video covers how Huw deals with learning languages.
I don't really view Haskell or Scala to be that intimidating. If you have knowledge of the ML family, both of those languages aren't too bad to work in. Sadly both Scala and Haskell have relatively poor environments, so they languages themselves aren't too helpful in terms of interactively learning (GHCI is serviceable for small/non complex projects).
As for tooling Huw shows grabbing the language environment! For most languages this gives you a decent overview of the tooling of the language. for a smalltalk or lisp environment this is all you really need as you are programming within the environment of the language. However more batch oriented languages the editor Huw was using works well enough to be productive.
Patterns in particular come from experience with some style of design. If you have working knowledge of smalltalk, you have a good idea on OO design, if you've used CL you probably have a decent view on patterns that emerge in other lisps you don't know about etc etc etc. Even getting thrown into something like Erlang, you can pickup all the actor stuff quite quickly as that is all there is to learn about erlang if you are already familiar with interactive languages.
@@radicaldreamer46 Thanks for that thoughtful comment. Really I am trying to encourage people to gain experience of more languages through hands-on use and experimentation. As long as you already know one language, it is usually possible to make fast progress when learning another language in the way I try to explain in this video. The only real way to learn to program a language is to write programs in that language. But many people get stuck in the early stages by being bogged down in long books or tutorials.
Best wishes
Huw
@@radicaldreamer46 Scala and Haskell are FL (functional) family rather than ML. It took me 3 hours to write a couple of programs of the "Hello, World" level initially but years to actually understand them
I have that same Rugby jersey, very comfy and warm.
100% agree! That is exactly how I learned scripting which I use a ton more on a daily basis. I picked a file backup project out of need, started simple and scaled it out as I learned more, made it bigger and more complex.
Thank you. I'm glad we agree on this!
Best wishes
Huw
I've been programming for 60 years, yes really. I couldn't agree with you more. You even look a bit like I used to look 30 years ago lol
Must be the time travel program I wrote! 🙂 Many thanks for the comment!
@@LearnWithHuw 😀
This is the principle that should be taught in college and other youtube tutorials.
Yea
Could you please make a video about how to plan a project and refracting into different classes for de-coupling? That would be so helpful. Most difficult part for me is planning and refracting
That's an interesting idea. I'll give it some thought.
@@LearnWithHuw Thank You. I really looking forward
I appreciate your teaching style here
Many thanks.
Hoy en día somos muchos hispanohablantes, de hecho, el español se encuentra en el top 5. Gracias por el espacio. Un abrazo!
Gracias
Thank you very much sir ! I'm actually thinking about studying mechanical engineering next year but I also have huge interests in the software world. Your advice will help me alot sir I appreciate your help and guidance
Good luck! I hope you do well.
Best wishes
Huw
I think most programs has the elements of shuffling arrays. Get the array operations down pat, and you can do most things with the language.
thank you very much Tripple OG Programmer Master I Appreciate You taking time out your life too bless us students with all the sauce
Thank you!
i completely support HUW. This is the way to learn.
i just sprinkle the above method with reading some documentation here and there.
This method keeps the enthusiasm alive.
This method will be more effective if you have already learnt a language of a particular style completely. eg: c for procedural, schema for functional and java for oops.
most of the development in programming languages stopped by early 2000s all the new shiny features that we are using right now are from the past. eg: functional programming existed before 2000 but came into popularity because our computational power has increased.
Thanks. The only real secret of programming is to do it, not just read about doing it. 🙂
This video is very important for anyone who are stuck in the 'Tutorial Hell'.
Ha! I only just noticed your comment. That's a wonderful way of putting it. Many thanks.
Thank you sir, it is very useful to use as every year we are tasked to learn new tool or language.
Thank you.
This kind of works because C, C++, java, javascript, rust, python, are all more or less the same type of language. Once you look at different paradigms like prolog (logic programming) and haskell (functional programming)... you will need a lot more than 3 hours (and your mind will melt a few times). It's very much worth doing though because it will also totally change your perspective on the things you thought you knew already.
The one project I've been using to learn different programming languages, is first to draw a hexagon, and then sometimes a grid of hexagons. I'm somewhat fixated with hexagons. I also generally use a derivative of the dictionary dispatch method, which I first observed in FORTH.
I watch these videos mainly to listen to his voice 😀. Has a nice, storyteller effect.
Thanks. 😁
Interesting and inspiring, next time I'll use the same approach to learn any new programming languages that I need or want to learn. Thanks for sharing.
Very glad that you found this useful!
don't know why I love the way of the presentation. lol
Many thanks.
@@LearnWithHuw it sounds like you're gobbling those codes. lol. just like it~
Where I think people are getting mixed up here with you need to have experience first for ten plus years or already fluent in so many languages first is that this is how to learn a language. How to program can come from experience or it can come from determination. The choice is yours, if you want to use this method as a new programmer it will come down to how much determination to figure things out, but the same concepts can be followed (there is always the documentation). Once you have one language and basic concepts of programming then it will become a lot easier and you will start to see patterns in the languages you encounter from then on.
It's the same that i do lol, i know PHP, C#, C++, Javascript etc - still alot more to learn. But it works very well, and the more languages you learn the easier it gets because there are so many similarities :)
I learnt programming from the end, so u need the idea and result, its doesnt matter which language u need, then u just want to disassemble it. Disassembly is process of creation. And assembler language is a bit differnt language. I found that blueprints is just better system of catching everything in your head, there is new systems like "cables gl" or "Unreal Engine 4/5". Text representation definitely more complicated, for mature programmers.
I also think that learning by creating a project is the best way thank you
Definitely!
That was beautifully done, thank you
Many thanks.
You're able to do this because you are an experienced programmer. A person with little or no experience could never get started like this.
Once upon a time, this is pretty much how everyone learnt for the simple reason that we did not have access to all the material available online. I learnt Pascal from the Turbo Pascal manual which described Pascal syntax and very little else. I have a friend who learnt Algol-68 by studying the source code of the language. The way I describe in this video is by no means that extreme, I promise you! 🙂
Very true, i remember the first time i coded in python was a login program and that’s when i knew nothing about python but i searched every line of code and tried to get it to work. Those functions and syntaxes are the things i remember easily from python.
I think learning human language is more challenging than computer language. Any one programming language under the belt you got the gist of most of them and the expression still remains English for most of the wider world for compiler to process.
Once you realize, programs are just an assembly batchfile with subroutines jumping in and out, every language fundamentally becomes the same. just the funny words for the functions change.
D is writeln(), C# is Console.WriteLine(); some have "print", another "echo"...
try haskel to feel really "another" language.
@@isqwerblya Ah - no. Thanks, I pass on that one.
I also used this method to learn linux and command line, bash scripting and networking. You really learn from implementing it on your projects.
Step one- understand assembly and cpu architecture, programming patterns and multi threading principles, kernel API oh and networking.
Then yeah read about go, rust, julia etc. be able to look up the skirt of any given language
The thing is... all this programming languages are Algol derived. Once you know one, you know all of them. Lisp, Haskell / other SMLs, stack based languages (APL, Forth, etc.) all have radically different programming structure you cannot equate to a C procedure. Case in point: in Haskell, "Hello world" is the *last thing* you program, because you need to understand monad first
Main point I agree with is you should make your hands dirty, learning programming by doing small projects.
But to avoid too much "guessing" in the beginning, I'm always spending 1..2 days to browse through the basics of a new language (data types, input/output, control structures, functions, classes).
Greetings from Good Old Germany.
Absolutely. Thanks for the comment.
What you need to learn is a strong foundation in the concepts of programming and fundamentals. The its pretty much syntax and a few difference between programming languages.
Learn then concepts in Pseudo Code. Learning in C is also good.
To be honest, if you can program (well) in C, you can probably learn most other languages pretty quickly.
i learned python by looking at solved exercises and making questions to chatGPT on how things in there work and asked to make other examples of the things used in those exercises
The only problem with this way of discovering (I don't see this way as learning but more of a discovering kind of thing), is that you will never bump into the idiomatics of the language you are learning. I do agree with your learn by doing logic though.
If you know how to program then its most of the time just a matter of reading the documentation. Well ofc there are the cases where your primary language does matter, In example if your primary language is procedural then it will take a bit of time to grasp OOP and there are some other exceptions besides that its just learning the syntaxes and the functions, operations and datatypes are pretty much the same across the board.
ITs also pretty much expected that you are flexible in the IT world.
Thank you for this tutorial. Can we also use chat GPT or Co pilot for refrence
They can be useful as "leaping off" points but I wouldn't trust them completely. Most languages have some sort of "official" guide which is probably likely to be more reliable.
Please don't. LLMs don't understand code and will confidently suggest utter crap from time to time, wasting your time.
1. Guess your way through the language
2. Use documentation when you get stuck
3. Continue guesswork
4. Use documentation when you get stuck
5. Repeat
This is awesome because i have learned many new languages the same exact way currently ive gotten into fpga hdl and electronics design so ive picked a cool project and im jumping into it. ive learned about 8 different languages this exact way and ive only read one book on c++ and one class in VB when I was in highschool. if you can recognize the similarities in the syntax its much easier then learn the nuance of each language. i will say hdl is a completely different animal but still has its similarities but as a software developer i had to stop thinking so linear and think in terms of circuits and parallelism
Isn't it interesting that the comments on this video divide into two types. Either people dismiss this approach as unworkable. Or else (like me and you!) they say that this is the most productive way to learn a language. Anyway, I'm glad you agree!
@@LearnWithHuw well i think some people have the same issues some do with human languages if you can understand that much of it derived from a common source then you will have a much easier time learning new ones but some people need to start from the ground up. but in some instances i think the two are so different its much harder kinda like speaking English your whole life and then trying to learn Mandarin. I seem to be at that point with learning HDL its so different from software languages im learning to think in a completely new way
My approach is to learn one programming language really well covering all concepts in details (Java). Hence, serving as a reference for learning other languages.
Yes. It's always a good idea to get a good grasp of one language, then everything else becomes much easier.
Best wishes
Huw