As the smart man said, learning complex tricks with a hammer won't necessary make you a better blacksmith, but rather a circus performer. People often forget that programming language is just a tool and having more than one in the toolbox is usually worth more than being expert in just one.
On a more serious note, a whole bunch of ideas making it into C++ came from Python or some other languages. C++ ranges are very similar to Python iterators and generators. The format library semantics are lifted almost verbatim from Python. So, I completely agree.
@@quintrankid8045 - If C++ had better compile-time introspection, you could have something like f strings. But you'd have to use a suffix rather than a prefix.
For my personal projects I use Python for exploratory programming then a combination of C++ and micropython (depending upon the target mostly) for final implementation. I like that the oroceedure requires me to implement the vary basics of the problem twice, as that builds in testing, and it also helps to clarify the most important concepts. It's not an ideal approach for commercial projects, but it's great for learning projects where the process and outcomes sre more important than minimizing project duration.
I once read (or dreamed?) a quote that was something like "you don't understand your code until the second time you write it" (I thought it was from Carmack, but have been unable to find it since then) I think you make an interesting point about intentionally prototyping in a different language.
I did that.. and then I was reminded again of the sorry state of things in C++, like how modules only just "kinda" work instead of fully and how a lot of compilers are still moving a lot from C++20 and even 17. It's very sad. Can we please break ABI and move on?
100% agree! I particularly find the pure languages like Smalltalk, Self and Haskell, and Assembly to be great for teaching purposes. You could also throw in Prolog, Forth, and APL but you will have to be a real masochist to program in them. Prolog particularly I found to be incredibly difficult to use, I struggled to solve even the most basic problems. It is by far the hardest language I have ever tried.
In my experience python is a good first language, but one that almost encourages bad practice. And because it's so flexible you can keep getting away with your current bad practices. I would recommend a much different language with different principles that may translate to C++ better, such as rust, Haskell, lisp etc. Throw in something that will be useful regardless, like bash, and you can go ways. Especially rust I believe made me a better programmer overall. It just makes you think different.
I don’t understand that when i want to learn Python i have strong feeling that i wasting my time; Take in your mind that i start programming at age 15 with GWBasic in early 90s, after Pascal(with Turbo ) and in early 2000 with Fortran90 and Matlab for Fluid Mechanic Simulation; and Finit Element Method for PDE; i start C in 2003 but quickly leaves it, - i returned only last year and i complete 80% C++ - . Now i start for some independent Project __ only one is industrial__ in C++ .
If you're doing numeric work, things like FEA, and fluid mechanics, have you explored the Python libraries numpy and scipy? Matplotlib? And maybe even sympy?
@@quintrankid8045 thanks you; I m very busy these day with my work; but usually I use direct Mathematica for PDE to extract handly and Matlab, but these day i m interested about calculus acceleration for Numerical Value of Inverse Function and Functional Equation of Type : f(g(f(x))) = 1x; x is variable uni or multi dimensional.
I'd say have a go! I learned and used a lot of languages too (20+ I'd say). At this point, learning a new language is kinda quick due to skill transfer, so you won't waste much time if at all. Initially I wanted to have a nice generic scripting language to speed up research and prototyping so I tried python. It worked well enough for me, and I moved more and more things to python. Now, I can do most of what I did in Matlab / Maple with numpy / scipy / sympy / matplotlib / pandas / statsmodels in python. Recently I experimented with analog filter synthesis / simulation with python / xyce. I only use C++ for performance-critical stuff nowadays and python for almost everything else (that is not web-related). It feels like I was stuck in a local minimum before. Maybe I'll learn something even better in the future.
I completely agree, we should exercise more to stay healthy, and part of that exercise should include our brains. Learning multiple language can be quite helpful on that front. Everyone should learn a functional programming language so you know how NOT to write code, and also learn how to convert recursive algorithms into iterative implementations as well as to never write recursive code, ever. The only reason any specific programming language matters is because of oddball syntax which gets in the way of immediate understanding and the standard library which speeds up generic usage of that language. Once you've learned as many quirks as you can in as many languages as you can, it should make you a far better programmer. However, it's important to also understand how computers actually work and to understand at least the basics of mathematics and when and where to use various algorithms and data structures.
As the smart man said, learning complex tricks with a hammer won't necessary make you a better blacksmith, but rather a circus performer.
People often forget that programming language is just a tool and having more than one in the toolbox is usually worth more than being expert in just one.
I was watching this video thinking "I 100% support this message" and then lo and behold you mention my channel 😂 Great video Jason : )
Isn't this where you write code while running on a treadmill?
Hmmm... I should have tried that.
On a more serious note, a whole bunch of ideas making it into C++ came from Python or some other languages. C++ ranges are very similar to Python iterators and generators. The format library semantics are lifted almost verbatim from Python.
So, I completely agree.
I fu¢€ing love the and libraries. They're such a huge improvement in C++ that people don't appreciate it yet.
But will C++ get f strings?
@@quintrankid8045 - If C++ had better compile-time introspection, you could have something like f strings. But you'd have to use a suffix rather than a prefix.
libcpr
Well, TBF, it's rare that you completely disagree with me :D
For my personal projects I use Python for exploratory programming then a combination of C++ and micropython (depending upon the target mostly) for final implementation. I like that the oroceedure requires me to implement the vary basics of the problem twice, as that builds in testing, and it also helps to clarify the most important concepts. It's not an ideal approach for commercial projects, but it's great for learning projects where the process and outcomes sre more important than minimizing project duration.
I once read (or dreamed?) a quote that was something like "you don't understand your code until the second time you write it" (I thought it was from Carmack, but have been unable to find it since then)
I think you make an interesting point about intentionally prototyping in a different language.
I did that.. and then I was reminded again of the sorry state of things in C++, like how modules only just "kinda" work instead of fully and how a lot of compilers are still moving a lot from C++20 and even 17. It's very sad. Can we please break ABI and move on?
100% agree! I particularly find the pure languages like Smalltalk, Self and Haskell, and Assembly to be great for teaching purposes. You could also throw in Prolog, Forth, and APL but you will have to be a real masochist to program in them. Prolog particularly I found to be incredibly difficult to use, I struggled to solve even the most basic problems. It is by far the hardest language I have ever tried.
Modern/new languages series? (Zig, nim,go,rust...)
In my experience python is a good first language, but one that almost encourages bad practice. And because it's so flexible you can keep getting away with your current bad practices.
I would recommend a much different language with different principles that may translate to C++ better, such as rust, Haskell, lisp etc. Throw in something that will be useful regardless, like bash, and you can go ways.
Especially rust I believe made me a better programmer overall. It just makes you think different.
Great idea.
I don’t understand that when i want to learn Python i have strong feeling that i wasting my time;
Take in your mind that i start programming at age 15 with GWBasic in early 90s, after Pascal(with Turbo ) and in early 2000 with Fortran90 and Matlab for Fluid Mechanic Simulation; and Finit Element Method for PDE; i start C in 2003 but quickly leaves it, - i returned only last year and i complete 80% C++ - .
Now i start for some independent Project __ only one is industrial__ in C++ .
If you're doing numeric work, things like FEA, and fluid mechanics, have you explored the Python libraries numpy and scipy? Matplotlib? And maybe even sympy?
@@quintrankid8045 thanks you; I m very busy these day with my work; but usually I use direct Mathematica for PDE to extract handly and Matlab, but these day i m interested about calculus acceleration for Numerical Value of Inverse Function and Functional Equation of Type : f(g(f(x))) = 1x; x is variable uni or multi dimensional.
I'd say have a go! I learned and used a lot of languages too (20+ I'd say). At this point, learning a new language is kinda quick due to skill transfer, so you won't waste much time if at all.
Initially I wanted to have a nice generic scripting language to speed up research and prototyping so I tried python. It worked well enough for me, and I moved more and more things to python. Now, I can do most of what I did in Matlab / Maple with numpy / scipy / sympy / matplotlib / pandas / statsmodels in python. Recently I experimented with analog filter synthesis / simulation with python / xyce. I only use C++ for performance-critical stuff nowadays and python for almost everything else (that is not web-related).
It feels like I was stuck in a local minimum before. Maybe I'll learn something even better in the future.
I completely agree, we should exercise more to stay healthy, and part of that exercise should include our brains. Learning multiple language can be quite helpful on that front. Everyone should learn a functional programming language so you know how NOT to write code, and also learn how to convert recursive algorithms into iterative implementations as well as to never write recursive code, ever. The only reason any specific programming language matters is because of oddball syntax which gets in the way of immediate understanding and the standard library which speeds up generic usage of that language. Once you've learned as many quirks as you can in as many languages as you can, it should make you a far better programmer. However, it's important to also understand how computers actually work and to understand at least the basics of mathematics and when and where to use various algorithms and data structures.
Thats all fine&dandy, but please be focused more on the c++