You Probably Shouldn't Watch This
HTML-код
- Опубликовано: 23 апр 2024
- In this video about learning and why it's important to learn what you really want to learn. We take a look at books on C programming, Fortran, and Python. Do you have any advice for people? If so, please leave a comment below.
C Programming Book: amzn.to/3y0YBmn
Python Book: amzn.to/4b7Yofr
Fortran Book: amzn.to/3WdjXqK
The Wizard Book: amzn.to/3UJOPLB
My Courses: www.freemathvids.com/
Best Place To Find Stocks: finviz.com/?a=593802429
Useful Math Supplies amzn.to/3Y5TGcv
My Recording Gear amzn.to/3BFvcxp
(these are my affiliate links)
**********Math, Physics, and Computer Science Books**********
Epic Math Book List amzn.to/3F98vT1
Pre-algebra, Algebra, and Geometry amzn.to/3FdbwSn
College Algebra, Precalculus, and Trigonometry amzn.to/3UKjvfb
Probability and Statistics amzn.to/3FaaxCq
Discrete Mathematics amzn.to/3P6jPE4
Proof Writing amzn.to/3XXukxo
Calculus amzn.to/3iEH3F3
Differential Equations Books amzn.to/3Fac5wi
Partial Differential Equations Books amzn.to/3uyk1SV
Linear Algebra amzn.to/3VHiN3G
Abstract Algebra Books amzn.to/3FzLZEr
Real Analysis/Advanced Calculus amzn.to/3VIO4Ua
Complex Analysis amzn.to/3P6kbuo
Number Theory amzn.to/3UEm3vw
Graph Theory amzn.to/3BfRd5m
Topology amzn.to/3BiAGhe
Graduate Level Books amzn.to/3uv1eIg
Computer Science amzn.to/3Hh8kaU
Physics amzn.to/3BhPCMp
These are my affiliate links. As an Amazon Associate I earn from qualifying purchases.
If you enjoyed this video please consider liking, sharing, and subscribing.
Udemy Courses Via My Website: mathsorcerer.com
My FaceBook Page: / themathsorcerer
My Instagram: / therealmathsorcerer
My TikTok: / therealmathsorcerer
There are several ways that you can help support my channel:)
Consider becoming a member of the channel: / @themathsorcerer
My GoFundMe Page: www.gofundme.com/f/support-ma...
My Patreon Page: / themathsorcerer
Donate via PayPal: paypal.com/donate/?cmd=_s-xcl...
***********Udemy Courses(Please Use These Links If You Sign Up!)************
Abstract Algebra Course
www.udemy.com/course/abstract...
Advanced Calculus Course
www.udemy.com/course/advanced...
Calculus 1 Course
www.udemy.com/course/calculus...
Calculus 2 Course
www.udemy.com/course/calculus...
Calculus 3 Course
www.udemy.com/course/calculus...
Calculus 1 Lectures with Assignments and a Final Exam
www.udemy.com/course/calculus...
Calculus Integration Insanity
www.udemy.com/course/calculus...
Differential Equations Course
www.udemy.com/course/differen...
Differential Equations Lectures Course (Includes Assignments + Final Exam)
www.udemy.com/course/differen...
College Algebra Course
www.udemy.com/course/college-...
How to Write Proofs with Sets Course
www.udemy.com/course/how-to-w...
How to Write Proofs with Functions Course
www.udemy.com/course/how-to-w...
Trigonometry 1 Course
www.udemy.com/course/trigonom...
Trigonometry 2 Course
www.udemy.com/course/trigonom...
Statistics with StatCrunch Course
www.udemy.com/course/statisti...
Math Graduate Programs, Applying, Advice, Motivation
www.udemy.com/course/math-gra...
Daily Devotionals for Motivation with The Math Sorcerer
www.udemy.com/course/daily-ma...
Thank you:)
I just clicked cuz I saw C
Well, it cause today's lesson is sponsored by the letter"c".
Same here...
Lol same bc I have that same exact C book in the thumbnail 😂
Me too 😂
Yyyeeaah 👍👍👍
I actually do have some advice for people on this topic. If you want to learn programming here is a very important concept:
Every piece of software you've ever used can be broken down into 4 simple ideas. What I call The Four Friends of Programming.
1. Save data and use it later. (example: variables, memory allocation)
2. Conditionally execute things. (example: if statement, switch, match, jump)
3. Repeat yourself. (example: loops, recursion)
4. Organize the first three things. (example: structs, functions, classes)
Thats it. Thats every program you've ever used. The next tip, is that every programming language is someone's opinion of HOW you use those four friends. programming languages are made by people who have opinions about how to program. What makes different languages interesting is that you get see/discover new ways of using those 4 simple rules to solve problems. The people that wrote Java believed that all data should be contained in a type. The people that made Lisp believed you only need lists and recursion to compute anything. But in the end its the same four rules wrapped in an opinion of computation.
So. If you want to learn programming, pick a language, any language. One that you think will make you money or one that you think will enable to build what you love easily. Then MASTER the four friends in that language. When you do that and move on to the next language you can peel away syntax and jargon (because those are a someones opinions of how code should look) and really peer into the big ideas of the person that designed it.
P.S. @TheMathSorcerer I went through the Wizard book for the first time earlier this year and it was a mind expanding journey into computation. oh, and the MIT lectures on RUclips really made the book come alive. I definitely feel like I'm a better engineer and problem solver having gone through it. I would love to see a dedicated video to hear your thoughts on what I feel is a perfect intro to programming book.
7 likes? I feel like this is a top comment. Great insights.
I like the way you broke that down. I'm currently learning javaScript and i'll defiantly keep this in mind . you have link any way to reach out to you for more tips ?
I feel like that’s true for high level languages but the memory stuff in C or other lower level languages get really confusing
Numbers 1 and 2 are useful for Spreadsheets GUI programming (Microsoft Excel, Oracle and Microsoft Access database). C++ extending the C programming language or just using Microsoft's Visual Basic or full Visual Studios languages are database advanced intensive for creating "front end" accounting entries to robust analysis of created database charts and full extent programming languages tools. I remember Visual Basic 6.0 used with any SQL database language (and especially behind Microsoft Excel) doing far more for the business and data entry in business than what engineers and scientists and game developers attain with C and C++ high end programming languages done on many computer systems.
Once the system pushed "You Probably Shouldn't Watch This", I clicked into there immediately.
LOL
Me too.
Yep
Me too. But I'm studying C languague as my first language. I'm reading Fundamental algorithms from Knuth and others books about GCC and pointers. (I donnot know wtf I'm doing)
I thought because everyone knows see, so nobody should watch the video about a C book. But I was curious about what was said about this book. Because people don't agree whether it's good or not.
I am a 77 year old retired engineer who worked with computer systems since 1971 until 2007. During that time I have lost track of how many programming languages I have learned, many just because I I wanted to. All were worth it, and all taught me what was tool I needed for a particular need. If your only tool is a hammer every problem looks like a nail.
wow wise words
Hope you’re doing great sir.. enjoy your retirement..🤌🏻✨ & thanks for sharing your experience/wisdom with us..
I learned FORTRAN in mid-1960s on IBM mainframe. Loved it. Am now learning Python, but my results are still somewhat primitive. I’m by no means an expert, but I don’t currently see any significant programming logic differences between these languages. Except Python’s open-source paradigm seems to require extra effort to stay constantly on top of the development of new modules, tips, and tricks. Python seems very flexible, and ever-evolving. Or so it seems. In the meantime, it’s all just a fun, learning experience for me.
The hammer is the best tool in C because its your only tool and you need the hammer to make other tools in C
Cheers buddy! 74 retired here. Started in 1976 on mainframes and retired in 2021 working embedded. Started working in Assembler then Fortran and Cobol. Learned C and never quit it since. Any other language was a breeze once I mastered C.
Assembly is very much taught today. I am doing a masters in cybersecurity currently and we have a course on C and Assembly. Understanding memory management for security is incredibly important.
It's also extremely applicable in reverse engineering malware.
Assembly is also a lot of fun.
I put ASM code in my C programmes whenever I know I do it better than what the compiler would spit out.
Assembly should be a mandatory skill if you are interested in the field of programming. It will serve you well in so many non obvious ways.
When you say assembly, do you mean a specific one?
C is fundamental. Many other languages have borrowed the syntax developed for C.
In Lisp we trust
@@MrPilotStunts I write a lot of emacs extensions...👍
Even if not borrowed most of them ultimately link to C libraries.
You can write everything in C. If you can't write it in C, it's not worth writing.
@@HansBezemer Sure. You can write the compilers and interpreters for those other languages in C.
I took programming as a senior in high school 1977-1978. We had a teletype, an acoustic modem, and learned basic using a Wang 3300. The computer died in late February 1978. Learned Fortran in 1978 as I was studying Electrical Engineering. Learned Pascal. Learned assembly for 8085 as part of microprocessor system design. Like math, I learned various languages over the years. Right now I'm learning Rust. Never stop learning.
We have a very similar background
What for ? Now we go AI !!
@@technobubba4Good luck to get AI to optimize your unique embedded system program!
@@technobubba4 AI ha ? let me tell u something I had to do a frontend for a college project, I know nothing about frontend I managed to do it with chatgpt but it was hell because I didn't know javascript, css and I have no time to learn them its not my thing bassiclly u need to know ur shit to even know how to describe the problem properly to this AI thing. I am talking about the basic thing and ofc u won't let an AI program a space craft
@@rogerforsman5064 Think 5-10 years from now. AI is just born in the industrial world.
I'm retired now, but I did big-model scientific and engineering computing from 1973 (GE635), through multiple generations of the biggest computers on Earth: CDC, then various Cray models, to giant multiprocessor systems from SG and IBM by mid 2010s. It was pretty much all Fortran, for everybody, although I did some C (which was unusual). Most of the models are still running. I might add that the world's economies still run on COBOL (Sometimes the original source code has been lost!). COBOL joke: A programmer who was dying of cancer had himself frozen. Years later, he wakes up and says, "You found a cure?" The people say, "Unfortunately no, but it's 9999, and you know COBOL."
I have a friend who's been writing in Cobol for almost forty years, You are right the systems are still running and nobody is being taught to maintain them. Old enough to retire but the job is still waiting for, and paying him
your are forgetting RPG kinda the predecessor of COBOL wrt the program engine cycle. RPG was even more connected to the machine code than COBOL, but both had the "auto" input cycle of the primary file thet was being processed. Two more reasons people don't do RPG/COBOL anymore IMHO:
1) not sexy
2) for a long time pay was (way) less than pay for newer language programmers. So the move/push forward was kinda "natural".
I have spent the last 20 years modernizing some of the exact stuff I myself wrote on system36 and AS400 in COBOL and RPG in the early 80's to C# and Visual Basic. It started during Y2K
As the old joke went, I don't know what scientific programming language will be used in thirty years, but I know i will be called FORTRAN.
@@michaelsommers2356 a joke almost as old as FORTRAN itself lol but to be fair, at least here in my uni a lot of scientific programming is actually done in C/C++. As I can gather, most is. Only older engineering systems are still in FORTRAN. The thing about science is there's always people doing sth new and they not necessarily will care or use that old language.
And Python is being used by scientists/people from all the other fields that weren't taught to program in their areas but for some reason need to program and can't learn stuff properly. So there's some programming done in python that is scientific but doesn't qualify as scientific programming, strictly
But don't start with that first edition of The C Programming Language. The 2nd edition covers the ANSI version of C, from 1989. The programming language (actually most programming languages) is/are regularly updated.
2nd edition is where it's at!
"A Book on C: Programming in C" by Al Kelley & Ira Pohl is another good one.
Let me second that. The first edition uses several features, and didn't use others that hadn't been invented yet but were later essential, that were obsolete by the late eighties. You may even have to use special flags to get the compiler to accept them.
In College I took the C Programming class. I would "amuse" my teacher by writing each assignment in a different "version" of C.
K&R C, ANSI C, Turbo C, etc.
Each with the small differences perfectly compliant to the version.
+
Anyone coming in and saying "which language should I learn?" and talking about them as if you only learn one... That person has never worked in industry.
Anyone coming in and saying "just learn javascript, you'll never need anything else" or similar... they have limited work experience. One or two well paying employers.
Anyone who's worked in the industry for 10-20 years, anyone who's worked on legacy systems (banking, civil service, medical, etc)... you work in whatever language is infront of you, without proper training, and you learn something from each of them. There's a lot of money to be made from reverse engineering and maintaining old systems, and there's a lot of fun to be had in applying old concepts to new environments.
Wow, thanks for sharing something that never taught by anyone
It's new for me, but how do exactly you can create money from reverse engineering? Did someone paid you to break other's code?
@@kingki1953 The guy who wrote the code retired. Five years later, they hired me to figure out how the code worked so the system could be upgraded. Happens frequently with systems that keep a business running where the business doesn't consider itself a coding shop - hospitals, airports, etc.
@@kingki1953 Sometimes reverse engineering is necessary to maintain and update legacy systems. You would be surprised how common it is to have a system, where one exe that someone, who left the organization, programmed and compiled one or two decade ago is necessary for a critical business process. When you want to change or update that process, you will first need to understand that exe, often without the source code.
Programming is logical thinking and learning syntax. Everything else is a library call. :)
I saw the C book I learnt from. I clicked.
The C Programming Language. Best programming book ever. You really have to read it to understand why. The pacing is perfect and there is no extraneous or repeated information. I love the description of the declarator syntax. It's really a work of art!
But don't use the 1st edition there.
@@michaelmicek The first edition is special because it was the textbook but also served as the language spec. To actually learn the language, 2nd edition is what you want, which is the '89 ANSI spec. Of course there are more modern versions of C that have great new features, but they aren't so crucial to learn since C and C++ diverged in '99, and most people use C as a complement to C++
A grey beard at my first company I worked at out of school, back in the late 90s, said to me. "The K&R book is the greatest book written in the English language". He went on to describe how a complete understanding of complex concepts is in a thin book that can be understood by beginners. I read it, and was able to start writing soon after.
If you're going to learn one programming language, C (and I don't mean C++) would be the language to learn. Mainly because it will teach you to think about what the CPU is really doing. Then learn C++ and/or Python after that. Self-taught C/C++, Fortran, Python, Java, Linux/Unix shell script, etc. Used almost all of them professionally over my career. Last time I wrote Fortran code was probably 15 years ago. Last time I saw and/or ran Fortran code was yesterday. That's how prevalent it still is.
Awesome!!! Thank you for this comment!
I learned C in university and have used it in every job in my career. That skill has paid back a hundred times.
It was true until around mid-80s. Since then, C was very detached from how the hardware actually worked. Just another high level language abstracting all the hardware fun away.
I first learned Ruby and JavaScript, then C, then Java. Primary benefit of learning C is understanding pointers. I don’t really think the order you learn programming languages matters. Like you said, learn what you wanna learn.
@@vitalyl1327I didn't dig into the details but in the 90s I was told that gcc's optimization involved converting the C code into a form of Lisp, optimizing that, and then compiling the result.
About right?
My 2 cents:
1. Programming is learned best when you have a fun problem to solve. For me, I was interested in math and physics, and I wanted to see solutions to problems that I couldn't solve by hand, but I had read that computers could solve those problems.
2. Start with whatever you have or can get access to easily. For me, it was a graphing calculator that had a BASIC dialect.
3. Follow your curiosity. Don't worry about what is popular, what other people say is the best path, at least not at first, unless you are also interested in what they say. The reason I say this is that your learning is like a fire. In the beginning, the fire is just a spark and easily goes out. You have to carefully place the ember in the right material and give it air so that it can grow strong enough to burn larger pieces of fuel. If you follow boring advice that is helpful in the long run, then you will probably quit in the short run. So, it's better to chase the interest until you gain the confidence to try the boring-but-useful path. This might be e.g. implementing your own bad physics engine instead of loading someone else's great physics engine. You will not get as much done in terms of practical output, but you will get much more in terms of learning and investment in the field.
I have to agree.
The only reason I would learn a programming language for its own sake is have a consistent income stream that allows it.
I use this approach. Help me to stay interested. I did django web tutorial. My brain will explode if i follow basic tutorial like loop, array etc.i would learn c, let say for controlling LED to make it iteresting.
The paragraph you were looking for is section 1,1 Getting Started "The only way to learn a new programming language is by writing programs in it. The first program to write is the same for all languages: print the words 'hello, world'
This is a big hurdle; to leap over it you have to be able to create the program text somewhere, compile it successfully, load it, run it, and find out where your output went. With these mechanical details mastered, everything else is comparatively easy."
I was a cobol programmer back in the eighties of the previous century. When I lay hand on the Brian Kernighan and Dennis Ritchie "C Programming Language" I was blown away! From there I went to unix and from there to linux. Now I'm retired, and dumped all of my IT books except the Brian Kernighan and Dennis Ritchie "C Programming Language" ...
g.
Yeah, still wish I kept my copy of that from years ago.
Yes, still have it. First edition, that came with the IBM PC.
Last company I worked for still uses cobol today. It's just lots of legacy stuff that's too costly for too little gain to bother rebuilding.
I wrote my first COBOL programs in 1970. The course I was on we also used the "City and Guilds" assembler type language that ran on a Duce? system and the programs I have
I love FORTRAN!
I am a physics grad student, and all our highest-performance codes are in F90/F95. I was so surprised when learning it by how simple and readable the syntax is.
Same, currently updating to version 2023 of the language:) and the guys of the fortran discourse are doing an incredible job at delivering new, more up to date tools for the language
@@gabrielepicco3582
What compiler are you using?
@@gabrielepicco3582 too bad I think the Syntax and look of modern Fortran is worse than it was. There is not much else than Fortran that has a nice syntax for array computations. Matlab and Python has a nice syntax but they are not compiled so lacks in overall performance.
@henrikholst7490 syntax has mostly not changed at all, fortran is typically fully retrocompatible. The only big changes are the new features, but you can still choose to stick to the old ones and their syntax is the very same
C is still very much in use. On the forums I see a lot of people at universities (and companies) writing their own libraries in C, just so they can make some algorithm run faster. Hardware is expensive, why buy more Nvidia GPU's when you can hire a C programmer to make it go 50% faster.
Back in the CGA and 8086/8 - 80286 days, I wrote my own graphics code in ASM (to insert in my C programmes) because my routines for basic points, lines, boxes, circles, etc. were over x200 faster than the included ones.
@@hrayz 200x!! Very nice! I am still learning C myself, ASM is still a distant goal. For now I limp by with C++....it gets the job done.
Shoot, 50% faster they can keep. Get the guy who turns your On^2 algorithm into an O nLog n one, that will save you some real hardware money.
@@evancourtney7746 A lot of that has already been done, but you ultimately need both. Even something well studied like the various FFTs can be improved significantly by cutting down constant factors, playing nice with the hardware, etc.
For NVIDIA GPUs CUDA is written in a C like (well C++) language. Now you can use Pytorch on top, or one of the higher level languages, but C will never go out of style, just link punk rock.
C is God's programming language.
I have been dabbling with programming for years on and off. I finally decided to take it seriously, and I am learning C.
Learning C has given me a deeper appreciation for programming and computer science in general.
I am finding myself falling in love with the language. The understanding it gave me for how computer hardware and programming works is absolutely priceless.
Actually Holy C is God's Language
@@travis8106 I program as a hobbyist and I don't enjoy any language as much as I enjoy C. You really feel like you're in control of everything. I like that the language doesn't do anything in the background that I don't tell it to do and has very few gotchas due to it's simplicity.
Specifcly c99
@Redman8086 c has so many gotcha because of ub.... also weird memory bugs. Also macros.
I still love it but it's one of the most gotcha langugess out there
I remember being 13 years old. Playing on a club soccer team, at the time my coach, Scott, was attending community college. We had been talking about my interests and had mentioned that I was learning Flash AS and HTML at the time. I had some basic BASIC experience. The next week he brought me his Pascal book he had just finished using for school.
I never did anything with the Pascal language but I firmly believe that his little act of showing interest in what I was doing helped spur and continue my love for computers and programming languages.
It was very good to read your story. Thank you for sharing it.
Ah, Flash AS. Those were the days. 🙂
Pascal was actually the very first language I learned. Back in grade 9, taking the grade 11 programming course. The following year in the grade 12 course, we learned C++. I've never used Pascal for anything since, but it will always have a soft spot with me as my introduction to coding.
Its usually best to ignore people that are dogmatic and try to convince you to learn a certain thing. The amount of coding gatekeepers in programming is beyond tiresome.
I use multiple languages (C, C++, C#, Java, Assembler) and I'm currently being rail-roaded into doing things a certain way "because C++ language feature". I don't need half that crap as I can use the primitives they are derived from without any problems. It really annoys the hell out of me when someone becomes obsessed with language features (ESPECIALLY in C++). I just look at them and ask how we ever wrote software before 1999.
I learned C from Kernighan and Ritchie (first edition) in 1982. I was programming in assembly (M68000) at the time and so I didn't really have a need to learn C at that moment. But people were saying that C was the up and coming language, and that it was similar in many ways to the M68000 assembly language. I didn't have a CS degree (mine was physics), so I had very little background in high level languages. But I wanted to learn everything I could about computers and programming. Anyway, the book was great, and I still have my old tattered copy. Thanks for your rant. It resonated with me.
I carried the K&R book and began to study the nuance - what was required and what wasn't explicitly stated. I examined the generated code from various compilers I had access to to learn which routes they took in ambiguous situations, like order of argument evaluation. There was something magic about the high level language and the resulting machine code that was still understandable on a large scale.
Fortran is especially suited for mathematics. It was originally FORTRAN, which stood for "Formula Translation."
I learned Fortran and Pascal in college. At the time Pascal was a big, big deal. They were even teaching it in high school.
I kind of picked up C on my own.
The coolest and maybe the hardest language I learned was "Plain TeX" by Donald Knuth. TeX is the ultimate markup
language for writing math papers. You get ultimate control over everything.
Needless to say some of my fellow teachers were not impressed by my class notes and tests, etc. I was accused of
photocopying from some book, they were that good.
Like I said, it's pretty hard to learn, but they do have frontend packages for TeX like LaTeX which does make it easier.
I had several notebooks with examples on how to do stuff and would constantly refer back to them.
You brought back great memories. Wrote my thesis and several scientific papers in LaTex, in the time that papers were really made of paper.
You were right about the quote, it is from TCPL - I know because I'm currently reading the 2nd edition!
"The only way to learn a new programming language is by writing
programs in it. The first program to write is the same for all languages:
Print the words
hello, world
This is the big hurdle; to leap over it you have to be able to create the program
text somewhere, compile it successfully, load it, run it, and find out where your
output went. With these mechanical details mastered, everything else is com-
paratively easy."
That's on pages 5-6, chapter 1 of the 2nd edition.
The big hurdle? I doubt it. The real problem is grasping repetition and conditions. And the architecture. Most large programs are a mess.
Yeah, we shouldn't stop learning the things that draw our attention and curiosity just because we should learn that things that only pay the bills.
One of the best classes I took when getting my associates degree in computer programming was a programming fundamentals class taught by one of the most intelligent people I have ever known (thanks, Paul, if you are still out there). We talked about the building blocks of structured code, flowcharting, single exit and entry points, if logic, different loops, algorithm design. And never once touched a programming language.
Basic as a junior in high school around 1984, Fortran in first year at college, followed by Pascal. Picked up the K&R book on C after college and have wanted to learn C since but have yet to get through it. Agree on appreciating the languages for what they are. My sister who is not too much older was programming with punch cards in college. I got to dial in with my college friend's Kaypro 10 and an analog modem to do my Fortran homework from my dorm room. Kids these days have it easy!
I personally do programming because I love it. Every project I work on, is something I chose to do. I never learned any programming language solely for money, I learned these programming languages because I wanted to. I started out with scratch, moved onto snap (which is similar to scratch, but more advanced, and the creators love lisp, so much that they're adding the ability to translate blocks to lisp and back natively), and after that, I moved onto html, css, and javascript. I then learned python, and have been programming in both python and javascript for different projects since. Currently, I am planning to learn C#, because there is a program that I really want to make for both desktop and mobile (specifically android, I don't care too much about ios (it's going to be a fully open source project, with no form of payment)) (or at least the backend),
And so I'm watching this...just because..
Programming is a great skill for any mathematician.
Not only for calculating stuff, or typesetting text (LaTeX) but also for proving theorems (Coq, Isabelle, Lean, Agda, etc).
Ps: I found Steve Summit's website on C around 2003. It's still active, with solid notes on the K&R book. Thanks Steve !
Very good points. Thanks! After a career in IT - i decided to get back to the basics. Too much emphasis is put on what is needed on the job or for projects and it results in entire generations of developers that know a certain slice, but don't have the fundamentals. For me it clarifies and puts in the right place so many pieces of the puzzle to finally educate myself in C, assembly, the foundation of what current software is build upon, instead of just knowing how to use an api and having no idea what magic (or hell) lies underneath.
C is still a great language.
FORTRAN is still being updated! It's heavily used in scientific compute, particularly climate and environmental stuff.
Also for fun you can check out some of the C "successor" languages who are try to be C but better (unlike say Rust which is going for a different thing completely).
ZIg, Odin, Jai
My first programming language was Basic. But once i learned C every other language was easier.
Just wanted to say thank you again for the amazing channel! I majored in Social Sciences in Undergrad & did well, but miss Math! So I’ve been going back and taking Math classes & studying to learn the higher levels of Mathematics, not for a specific need so much, but a desire to understand better.
I got the second edition of the C programming language book just because of curiosity. I don't need C for a job or for any college assignment (I learn on my own leisure). I used JS and Python at work and I was very curious about computer science in general so I approached C entirely for educational purposes and it's been fascinating to work with it.
So cool you have Kernighan and Ritchie there. 40 years ago I learned C from that book and C++ shortly after and still using this today.
In my opinion C and C++ are THE most fundamental programming languages around. Every other language (including Python) is based on the principles of functional programming (C) and object oriented programming (C++), so after you learned C/C++, everything else is easy to understand.
Everything else is also (often much) slower than C/C++, since most languages they took pointers away, which are in my opinion the most power computer science construct ever invented.
Pointers are the addresses of machine code, say assembler. High languages are trying to abstract them away and fail. C doesn't do that and neither does Forth.
There is a programming book, written quite recently (second edition arrived around 2020). There are 3 volumes to it. The author (a Moscow State University professor and a programmer himself) set out the goal to give students the opportunity to learn programming the way it should be learned (in author's opinion).
It starts by teaching some Linux basics, then goes on to teach basics of procedural programming in Pascal.
Then it dives into Assembly to give an understanding of low-level programming.
Second volume focuses on teaching basics of C as a low-level programming language, at the same time explaining how operating systems work.
The third volume focuses on programming paradigms. Some object-oriented programming on example of C++ is taught, there is some functional programming as well.
The e-book is available for free, some printed copies were sold as well, but none seem to be available right now.
Quite a gem for self-study.
Available in russian only, unfortunately.
(It is quite difficult to find a person proficient enough and willing to translate a whole book I guess).
On March 1, 2021, author-programmer Andrei Viktorovich Stolyarov made the second edition of the book “Programming: An Introduction to the Profession” available for free access. The three-volume book can be downloaded for free in pdf format
Can you name it, please?
@@ianalen1687 Is there an English version?
To bad is in Russian only and the pdf file is locked so you cant use google translate to read it.
i am a fledgling computer science student: i began taking CIS (computer information systems) classes back in fall of 2023 and have since moved into actual computer science classes, along side, knocking out pre-calculus and beginning calculus next fall 2024.
i still have a very long road ahead of me, and i started, by taking an "intro to computer logic" course that had us learn and code in python. i absolutely fell in love with python and fell in love with coding in general! since then i have taken 3 other classes that have involved coding and they always end up using python (but one used HTML & CSS too)
the strange juxtaposition i have observed in a modern community college is this: the class always starts strong with 15-30 students, but as soon as the coding comes into the course, people drop and leave like crazy! it's astonishing how many people fear programming, and in today's world i have even seen students, come into the class and begin fear mongering, using a.i. as an existential doomsday weapon, of sorts, to scare others out of the class? i don't get it? why badger others, over your own esoteric fear of the unknown?
i have also had professors in college: blatantly state their own fears and concerns over a.i. and act as if their job is in jeopardy and tell me outright "i hope you are here for the learning, because by the time you graduate there will be NO jobs for you!!!"
i find all of this behavior rather perplexing? i mean to say, shouldn't we, as computer scientists be embracing the future and embracing change more then anyone else? is it truly so bad if i never make a dollar with my code, but i instead enhance my own understanding and appreciation for what goes into the code?
i suppose the point im getting too is this: math sorcerer i completely agree with you!!! i love being in college in 2024, studying computer science, while everyone else is running around screaming their heads off 😆even with this "real, possible threat" at my doorstep, i am not discouraged about it, or by it, in the slightest, because if nothing else: i am there to learn!
i appreciate programming and understanding the flow of logic, surrounding it so immensely!
i do hope to be able to get into the industry one day, and i do hope to make a true societal impact with my learning! that would be great! even if it's something as small and as simple as, building a public commercial website for a local business or helping a client design a flashy mobile app that he uses to service his clients; being able to properly produce code and have it out in the wild, fully functioning and providing for people seems like a true goal for me!
anyways i gotta get back to my studies. i have barely scratched the surface of python and i still gotta learn some production code like java as well as dive into some low level like C if i am to ever have a true mastery of this wild discipline of study.
You and I are the only two left--I don' t know anyone else who still has a copy of Kernighan & Ritchie! It was my first C textbook (at Foothiil College, Los Altos, CA) in or around 1987-88. We were programing on mini-computers running UNIX and shell scriptin was a huge part of the class as well. I bought a copy of Borland C for that class (to match my Borland Pascal). I later I went on to teach C & Pascal at a private high school in Fayetteville, NC in 1991-93 and often referenced to K&R.
Too bad, I'm into that stuff Mr. Sorcerer
I shouldn't have watched this
I worked on a very popular enterprise storage system written entirely in C, except for a couple of critical loops in assembly. It was a joy to build and even support. Miss the old days.
I really like programming. I learned basic in a casio fx750p back in 1985 and then in the 90's visual basic and amos on the Commodore amiga
I am a faculty now for about 13 years and do most of my research by developing my own solvers. I have been coding for about 27 years (started out in high school). I have learnt C++, Fortran and C. There is no greater joy that i derive than formulating a problem in the form of a code and experiencing it work.
Old languages are like old cars. The newer ones are better, but also more complicated. People like old cars for nostalgia, but also because they are easier to understand. Understanding an old car gives an insight into a newer one that, at first sight, is impenetrable. And who doesn't like a bit of nostalgia. The book by Kernighan and Ritchie is beautifully written and warrants a place on the bookshelf of anyone interested in technology, even if they never write any code. This was a great episode, thanks.
100% agreed. I graduated from CS 25 years ago, and C and Java were the main used languages. I’m now learning Python and is quite difficult for me. Is like my brain isn’t wired for higher languages.
I agree with you, any language that you learn, is just for the learning. In fact, -anything- you learn is always just for the fact that learning is for -you-, never for someone else. Having past the three quarter century mark, I can confirm that I have been learning all my life. In fact, I used the C language for the first time at the end of the 70’s. It is still my favorite language even after learning 30+ other ones. Each one has its own purpose, that is sure. I did not limit myself to computer languages. I am trilingual since I was a small boy and I have very good knowledge of two other spoken languages. Additionally, I am learning even another one. That’s in addition to the fact that last year, I became a ham radio operator, successfully passing the HAREC exam, the top license, the most complex but also the most complete one. So, never stop learning! It keeps the brain busy. By the way, Kernighan and Ritchie did not invent the C++ language as you seem to say in this video, just C.
Come across a lot of RUclips comments about how they wish the person in the video had been their teacher when they were younger. However, this overlooks the viewer's own mindset at the time-distracted, unfocused, uninterested, not really wanting to be there etc, all of which significantly impacts learning. Actively seeking knowledge because you want to learn something makes a big difference.
As a CS and math double major, I love Python more than any language. The turnaround time from thought into code seems substantially less than most other languages due to its minimal syntax. And with the recent advancements in machine learning, I love being able to easily connect advanced math concepts and CS with the robust ML tools available for Python. 🐍
Python’s robust ecosystem of libraries is what makes it my favorite. I’ve found that no matter what project I want to do, there’s likely a library out there that makes it 10 times easier
FWIW, the "Wizard Book" is "Structure and Interpretation of Computer Programs". It uses Lisp throughout because Lisp had arguably the simplest syntax of any computer language of its day, and the Wizard Book is a deep dive into a VERY deep subject.
It uses Scheme, not Lisp.
@@pschneider1968 Scheme is a Lisp variant. SICP does indeed use Scheme throughout -- and it therefore uses Lisp throughout. Importantly -- this choice was made in no small part because both Scheme and Lisp have minimal syntactic complexity.
@@thomasstambaugh5181 Yeah, that's right. I guess Common Lisp was standardized wwwaaayy after this book was published. I remember working through the book in, ehr... 1995 or 96? using the R^3 version of MIT scheme... Long time ago.
@@pschneider1968 Heh -- I learned Lisp in 1973. Lisp was at the center of the first great AI boom of the 1980s. I worked with two competing vendors in Cambridge -- Symbolics and Lisp Machines Inc (LMI) -- during their heyday. Lisp was universal in the Computer Science community long before Common Lisp was standardized (and long before Scheme was created).
@@thomasstambaugh5181but it is important to note that the choice of Scheme wasn't just some random event in selecting that versus other LISP variants of the time. When this was happening, Scheme benefited from some of the early attempts to describe the meaning of programs via robust semantic formalisms such as denotational semantics. LISP generally I don't believe was in that state at that time. The goal at MIT and elsewhere, at that time, was to sidestep problems like other languages had experienced where different ports or variants got tangled up in differing human intepretations of prose-based language descriptions. It was a long journey from Algol until Scheme wherr finally made such attempts finally came together.
Yeah, I have been at this that long to remember, lol.
Thank you. I resonated with your apptoach to learn for the sake of learning. I love your videos.
As a newish programmer (JavaScript/TypeScript - Python - SQL) I agree with the video and its spirit. Learning different programming languages (and just continuous learning) is a superpower because it gives you the ability to understand both why languages are commonly targeted to specific areas, and to see the shared structures and patters across programming.
I'm interested in learning systems languages like C, mostly because it gives you a view of view of how software works under the hood and fill some gaps in my knowledge, even if probably I wouldn't program a lot with that language.
Also, that video title was enough to want to see it and become a new subscriber 😅
Oooh....I remember getting frustrated trying to self-teach out of K&R and getting stuck on one of the first exercises.
Finally got it. And learned to pay closer attention when reading! (My bug was failing to distinguish = from ==).
A lot of us did that
Weird, I read that exact C programming language book maybe 40 years ago. Now I'm wondering where my copy ever went
Just learnt Assembly as a second year in math and computer engineering so don’t worry it’s still around! It was very useful, I don’t think I understood pointers or any memory management that was in C until there was that fundamental level of understanding that came from learning assembly
Good to see such a video from you. I'm a senior C ANSI programmer and I just love this language-it's by far my favorite programming language of all time. The problem is that I just cannot find a job in software development anymore, first because I'm a little old now, and second because I have no professional experience with modern programming languages like Python, Rust, C#, etc. - even though I know how to program in these languages. But it's ok, I will keep trying to find a job to work with development again, even if it's a junior position. I just love programming.
Anyway, another great book I can recomend to anyone who is studying C is Frantisek Franek's "Memory as a Programming Concept in C and C++". Quite intermediate/advanced level, but it's a classic.
Enjoy your trip! Computer programming is just a fabulous world.
K&R 1st edition didn’t allow you to pass pointers as parameters. This was the major change between different versions. But, if you know one programming language you can basically learn any of them.
I think most programmers arrive at this wisdom somewhere on or about the third "language" they learn.
I like to say programming "languages" are more like dialects of the same language.
The real differences are just in the 'slang' and 'etiquette' of re-using OPC (Other People's Code).
_"1st edition didn’t allow you to pass pointers as parameters."_
What!? You certainly could pass pointers around. Every program started with
int main(argc, argv)
int argc;
char *argv[]; ...
What you didn't have was references, but they are just syntactic sugar.
@@michaelsommers2356 my bad. It was 20+ years ago…..
Since you asked, Bjarne Stroustrup is pronounced "bee-yarn-eh strow-strup" . How do I know? I've talked to him several times (used to work where he worked).
Pronounce BS any way you want. In C++ you can override any built-in keywords or operators to mean anything else😢 Whereas + in math is fundamental and universal, + in C++ could be made to mean literally any operation, or something that takes infinite time, or nothing at all.
I never liked idea of overloading operators.
If you talk to the right mathematicians they will use + to mean all sorts of wierd things.
@@whickervision742 bruh, you use the same + for scalar, vector and matrix addition, any C++ linear algebra library will have those operations defined with the operator+(), meanwhile in C you'd have those operations as functions going by names like mat3x2f32_add()
not saying that the C way of doing it is bad, but saying that it's exactly like you write it in maths is absurd
Remember that Kernighan and Riche book well! I agree it was helpful along with other texts when I was learned C back in the 80s. One of my professors was adamant that we read it.
Assembly is kicking around. Had to learn some RISC-V for a systems course some years ago.
assembly is critical for debugging regardless of where you work on the stack
I think the critical languages to know are C, Python, and any Lisp. C to understand how modern systems utilize memory. Python to understand how to manipulate data and abstractions. And Lisp to learn how to structure programs, with uniform syntax and expression-based programming. The mix of ideas in these three puts you right in the middle of a nice triangle: Learning to solve a problem, learning to craft a solution, and learning how that solution runs on the system.
Most jobs in SWE today are using C#, Java, Javascript/Typescript and some C++. So none of the languages described above. They also require you to use abstraction patterns that are not commonly seen using Lisp, Python or C. Your backends are going to built using established design patterns like Repository Pattern, Dependency Injection, and Model-View-Controller (MVC) or Model-View-ViewModel (MVVM).. which none of those languages have. OOP is still quite common in the jobs that aren't laying off like FAANG.
C is the only real fundamental language on that list, since C will literally have you realize when you are writing bad C#, Java code and how you can use memory better. But lisp, as a whole is great for mathematics enthusiasts, hobbyists, and script kiddies. Python will be great for those that want to quickly prototype something, or use some useful libraries for data analysis, but outside of that, is not a language used to build scalable systems.
I'm feeling old - I took the class the Wizard Book is named after, with Sussman and Abelson as the instructors, back in the spring of 1982 at MIT. Except, way back then, the book was lecture notes printed out on 8.5x11 paper. I enjoyed it so much I became a student TA for them the next several semesters. Gotta love a programming book that mixes computer puns into its lessons! :-)
The lectures from one instance of the course are on RUclips.
@michaelsommers2356 Yeah those lectures are great in particular the ones in the middle that explain recursion and higher order functions
Despite going through SICP a couple of times for learning, TAing, and teaching, I don't think I've every actually seen the cover art until your comment made me look it up. XD
Man, you're always so accurate with your videos, haha. It feels like you appear whenever I'm in need of guidance or something. Thanks for that!
You are 100% right - learning should be fun, it should be because you want to do it.
And you should set aside enough to learn it properly - not just a short amount of time so that you can rush through it.
Hello there from vietnam, ho chi minh city, it’s 7:55AM in the morning here and i am watching :”> I just want to reteach myself on math as 31 for the sake of learning and i can starting to see the beauty of math in every daily things argggg and found your channel
hey, good to see a fellow Vietnamese here, I'm also 31 and want to relearn math as well. What a coincidence
You two should meet up
Do it! You can't go wrong.
I was average at Math at school, didn't give much thought back then, Math drifted into the past behind me. Nowadays I love Maths bro, good choice!
Same here mate. My kid self was a idiot for rejecting math, and I'm now trying to correct this.
REAL MEN PROGRAM IN "C"!!
And sorcerers program in HolyC
Pascal is for quiche eaters
@@ccriztoff XD
...
"There are some who call me ... Tim."
No matter what language is on the table! :)
Real time and system level programming could become really ugly in C++ but not in C.
True
I'm an old Dinosaur who started with C back in the early 90s. Then C++. I've recently been forced to learn C#. And now PHP. It amazes me how C-like PHP is. I'll NEVER regret being a C programmer! Everybody should start there! (imho)
The beloved K&R. There have been songs/poems written about this book. Also, prior to the first iterations of ANSI-C. there was K&R C with it's own idiosyncracies :) I love your channel!
main()
int argc;
char *argv[];
{ ... }
vs.
main(int ac, char **av) { ... }
A few years ago I was working in the semiconductors industry. You can't get very far without knowing LISP (SKILL-LISP) or another old "unused" language TCL. Just about no such thing as a "dead" language
Yeah, critical financial infrastructure pretty much runs on COBOL
Tickle isn't that old. It's a funky 90s dynamic language. The commonly used (in Python and other languages) TK ui framework comes from tickle. I played around in it for a few years, kind of dig it, but never found professional use for it. Python and Lua sort of replaced it in the language-to-get-things-done-quickly niche.
"You probably shouldn't watch this" - Reverse psychology ❤
That sure brings back memories. I learned BASIC on a Commodore VIC-20. I learned 6502 Assembly on a C-64 when the screen dump I wrote in basic took hours to print. Then life intervened for the next 40 years. I often look at the various languages that come out over time and I think I might be ready to learn some more to re-experience the delight I used to get when I finally figured out what line was locking up my computer and I could fix it!
Using the grammar at the back of the K & R book I wrote and sold C compilers for the CDC 6500 NOS 1.4 OS in 1982. The compiler was written in PASCAL. Also did an 8086 code generator that was cross compiled on the CDC machine and ran C programs on a SBC86-12 Multibus card.
And as far as “dead” languages if your weather forecast was right, thank FORTAN. If your paycheck cleared, thank COBOL.
I wouldn't call them dead, but how many new projects starting today would use fortran or cobol? I've never coded in cobol, but I have done some work in fortran. If you're a good programmer, the language doesn't much matter - you can get used to anything. The concepts are all the same, it's just the syntax that's really different. It's just how long it takes you to get used to the syntax that's the issue.
Learned FORTRAN in college. Got to write some programs in it when I worked for the phone company. There I learned Basic, C, C++, VB, dBase, and some scripting languages that I can’t even remember. FORTRAN was a memory by the mid 90s. Pascal was hot but I never used it. C++ was in demand so I did some work with that and then moved on to Java.
I basically agree with what you’re saying here. I would never advise someone to learn or not learn a language based on employability.
The only other thing I would add is learning how to program and learning a language are not the same thing.
You’re referring to Structure and Interpretation of Computer Programs
yes, they still teach assembly, and no, nobody likes java
as a future java dev i agree but well i have been coding in java for 6 months now😅
Nah, there are programmers in banks and brokerages that love java, next best thing to cobol
I hate java. I've been trying to learn it for 25 years. My brain says no. Too many years coding in C and C++.
For Bjorn, the "j" has a "y" sound, and if you can get a little Scandinavian swing in your voice for the "o" that'll help too ;) I've still got that C programming language book on my shelf. Was a great book in the early 80's. Other than historical value I wouldn't recommend it today though. Way better resources online for free. Languages I know? Well, I haven't done anything with some of them in years but in rough order of how long ago I learned them, various assembly languages, FORTH (boy that brings back memories), C, Pascal, C++, Perl, Python, Java, C#. I've mainly worked as a Windows developer or as a developer writing enterprise software on the Microsoft stack so for the past 20 years C# has been the most common language I've used and it's also my favorite.
I've just turned 70. My introduction to programming started with Basic on a VIC-20 computer, back in the early 80s. I then learnt machine code programing and then ASM.
I loved it all. A couple of decades later, the Atmel AVR microcontrollers appeared.
It was quite amazing how the skills I'd learnt from my VIC-20 ASM days were relevant again.
I was programming AT90S2313 Atmel micros in no time at all.
I've never looked back at the hours spent learning with any animosity at all.
It is always worth it.
My suggestions on programming languages to learn:
- C++ (low level compiled)
- Python (high level interpreted)
- Javascript (web)
- Mathematica/MatLab (commercial)
If not those, at least the scheme:
- Compiled
- Interpreted
- Web
- Commercial.
The logic is the same, the capabilities are different.
If you think C++ is low-level, give C a shot, and learn what low-level really is.
@@michaelsommers2356 There are opinions on this, and I fall into the category that C++ is still low level, comparing it to more general programming languages. But if you really want to go low level, learn assembly....not much more for it.
Also, C I have been using for over 20 years now, so nothing extremely new there.
@@michaelsommers2356 There are two trains of thought about this, one says that CPP is a high level language, some say that it is still low; I am in the latter group. I mean, learn Assembly if you want to learn a low level language.
For what I do, non-embedded systems, I find that C++ is more useful than C. The bonus of learning C++ is that you will learn C simultaneously (to a greater extent, anyway). C was the first language that I learned 20+ years ago and not so long after I started using C++ and it is what I have been using for the longest time; along with Python and JavaScript. For my PhD I used Mathematica extensively, just for time sakes and ease. Don't take my word as the final word, but it's just my preference as a (almost) professional programmer.
@@michaelsommers2356 If you think C is low-level, give assembly a shot, and learn what low-level really is. /s
There is no such a thing as a "compiled" or an "interpreted" language. There are languages that are better implemented as compiled, there are languages that are not worth even trying compiling them and interpretation is enough, but you absolutely can interpret C++ (ever seen CINT?) or compile Python (seen IronPython?).
Also, why web? I've been programming since early 80s, and never touched anything web, ever. Don't think I missed anything worthwhile.
Make Fortran Great Again.
Fortran has always been great
@@ajarivas72 yes, especially in high performance computing.
@@CM_Burns
For 8 years Fortran was the only language I programmed in.
I compiled on Windows, UNIX and Linux.
For some time I was the user of 80% of the resources of the university mainframe.
Learn what you what you want to learn. Simple. Brilliant. You nailed the message in this video. I am a hobbyist mathematician. I like to do geometry and number theory problems. I am a hobbyist programmer. I like to program in Processing [a JAVA superset designed for visual manipulation]], Racket [a modern dialect of Lisp],, and Supercollidor, a domain specific language for sound manipulation. Can you tell I am an artist?
Oh My! More languages than I can remember! Fortran (first!), Algol, Pascal, Snobol (a string processing language with regular expression matching!), C (on UNIX over 50 years ago), Python, Perl, C++ and C# (still a novice for those), and more assembly languages than I can remember. I have a lot of respect for the inventors of Rust, that may be next.
I agree with many others: learn C first. After that you'll be amazed how many others you can already read!
And never stop learning, for two reasons. First you never know where you will end up. In my career I finished doing things I NEVER expected. Second, the process keeps your brain young and engaged.
I am currently playing with bare hardware micro computers like the Pi Pico (look on Github) and designing analog printed circuit boards, another thing I never expected to do.
I started with TRS-80 BASIC, then learned Fortran, and then my One True Love: Borland's Turbo Pascal. The manuals' technical writing was without peer.
I had a very similar path! Did you ever use Delphi? It was Borland's answer to Visual Basic and was superior in every way. It was compiled, not interpreted like VB.
@@JoeThePilot No, I never used Delphi. I got out of programming right when Delphi came in. I hear it was great!
Wow, I had a very similar arc. Basic in high school, Fortran as an undergrad, Turbo Pascal as a grad student. Transitioned from TP to C when I went pro (very few jobs using TP in the early 90s).
My company has plenty of Delphi code in production.
to anyone picking a language to learn: you should use the correct tool for the job. what do you want to do? pick your language based on that.
i love learning and sometimes i get too wrapped up in the learning process but at the end of the day i think code is a means to an end, a tool, and i think people should use the right tools for the job. for me, that job has been web development, so i learned go (fast code, fast development time) and javascript/typescript (required for client, fast development time). programming is a very large discipline, might be worthwhile to figure out what you actually want to do so you can focus your learning.
I did the other way. I picked the jobs most suited to the tools I preferred... 99% C++. Saved me a lot of hair pulling and head bashing learning a bunch of crappy "flavour of the month" scripting languages.
Fun fact: toward the end of newer editions of the Chapman book on Fortran, there's a section on interoperability with C/C++ in which the author essentially says "Yeah, C is way better at non-math stuff than Fortran, so just write those parts of your program in C."
Thank you for encouraging learning for the sake of learning! Sometimes I feel silly pursuing coding the projects I care about
C is a beautiful language. It is the only high level language that enables you to reason at hardware level.
I second that sentiment !!
If C is high level what is JavaScript and Python?
@@ccriztoff Some really do view them as "3.5 generation" programming languages because they abstract away a lot of the stuff you have to do yourself in a strictly 3rd generation language like C (but not as much as a true 4GL like e.g. SQL).
@@ccriztoff Script interpreters. :-)
C can be seen or used at two different levels: as a general structured high level language, using libraries and avoiding pointers, for example. Or as a low level syntax sugar of assembler. It can be both.
Learn to code... Learn to GPT....
Maybe in 50 years
Wait does this mean people were forced to learn before AI?!
@@dr4cula472 max. 5 years
@@ccriztoff There were people back then?
AI will make people stupid, unfortunately( , AI assistants must be used by professionals who already know the material very well
Different languages occupy different design space.
The best book I encountered explaining this is: "Concepts, Techniques, and Models of Computer Programming".
There is short summary titled: "Programming Paradigms for Dummies".
I don't follow the rules
Who likes Java?!?!
me I do!!
Control freaks that like to beat around the bush endlessly without achieving much?
I hate it with a vengeance.
I know many including C++, Haskell, Python and more, but my favorite is F#, a functional programming language that runs on .NET making it possible to use C# libraries. A close second is Swift, it's similar to Rust but with automatic memory management, better OOP and more concise.
the main criteria for me personally to learn something is to use it for something(which has always been to make more money, not directly but ultimately).
application is a great driver for learning purposes.
I'm approaching python and coding at hobby level. I just took stock of the things I had and thot what can be done or taught free of charge. Running ubuntu on a laptop so I've been learning that too. It's amazing what you'll push to get working on an os that doesn't easily run games natively lol
Yes, assembler is still taught. Microcontroller courses at my university use assembler to teach students how to understand the instructions on a basic level.
I've been programming for more than 40 years. I started with Basic, then Fortran, C, Pascal, C++, Java, Ruby, various scripting languages, dabbled in JavaScript, PHP, and learned Python pretty well.
A programming language is just a technology that facilitates expressing some algorithm in a way that both you and the computer you are using understand.
Computers work in very simplistic ways, Look at the assembly instructions for the hardware you happen to programming for. These are very simple taken one at a time. But are often difficult to understand taken in quantity. Even though binary numbers are fairly easy to understand it's a lot easier to understand more familiar decimal numbers. But at times it is better to use something like hexadecimal numbers.
Learning algorithms, data structures, and other concepts like design patterns, etc. are much more important than learning a specific language. Grasping algorithmic complexity is another area that I've seen really smart people not really comprehend.
I love, love, love the wizard book, Structure and Interpretation of Computer Programs, and I would suggest it to anyone who is learning programming for the fun of it. There is a lot to it but it all spelled out clearly and everything builds on what came before. Lisp is not a language I use on a daily basis but the theoretical groundwork that I got from SICP has helped me almost everyday of my career.
The K&R C book is definitely an excellent book for beginning programmers, and explains the concepts in a clear and straightforward way. I took an Intro to C course in my first year of college, and can honestly say that two weeks with the K&R book was more valuable than a semester of formal instruction.
The best programming language book I've seen is The Art of the Metaobject Protocol by Kiczales, Rivieres and Bobrow, which describes the Common LISP Object System. Even if you never write a line of LISP code, that book explains everything that goes into the implementation of an object system, including how methods are dispatched, inheritance, meta-classes and more. I have found it very applicable to programming C++/Qt, Java, Ruby, Python and C#, so it's definitely worth checking out.
Thank you for the video :) I first learned C++ eons years ago and never used it (I worked for a short while as 1st-2nd line IT support), when I realised that programming perhaps wasn't for me. It often felt that I was spending more time looking for the missing semicolon 🙄than learning how to code. It was frustrating! I'm now teaching myself to code in Python mostly thinking about still being able to earn a living when I'll be retired (here in UK we might go on working.... forever 😃).
Whereas I learned C++ eons ago, loved it and have been using it for eons.