Full podcast episode: th-cam.com/video/-DVyjdw4t9I/w-d-xo.html Lex Fridman podcast channel: th-cam.com/users/lexfridman Guest bio: Guido van Rossum is the creator of Python programming language.
@@0_Dseven As someone who struggled finishing projects for a few years and did odd jobs, now I work in IT and programming stuff is my daily task, pick Python. EDX has a good free course from Georgia tech, that helps you with basics to intermediate stuff. Python has a lot of fun options to start small projects, from little games to automating stuff to machine learning or robotics (I suggest using PyCharm as IDE at first). JS can turn into a buggy cluster poop really quickly and you might get frustrated and demoralised in your learning process. It is very forgiving, to the point you might not spot a bug for days on a growing project.
@@awdwadawda352 thank you for the reply, I already now the basics of programming I learned JS + Python, and I'm a beginner at the moment My question was about the original comment, that's if you really comfortable with one programming language how easy it's to move to another one
12:35 I agree with Guido here, hard to guess which languages will make you happy. I find using the same language at another company is often a bigger difference than to stay at the same place and switch languages. And I often find myself having incorrect assumptions about which field is a good fit for a personality. Like "I'm creative so I probably wouldn't like backend" or "I wanna feel like I'm doing important work so I should be in healthcare software" I would say you can kinda make a rough guess about which languages are moving up or down. Rust is clearly moving up. But trendy langs might not be wanted on the job market. For example Node is huge but very few recruiters email me about Node, instead I get tons of C# offers and my profile clearly states I'm not in C# anymore since years back. thr job market is very country specific though.
It doesn't really matter what you learn first. My first 2 languages were visual basic and actionscript. They don't even exist anymore. But once you learn how to program, you can pick up any language.
Start with Python, JS, or C# and if you are going to code for a living, keep digging in there. Get comfortable in two of those and then your third language should be C++ just so that you deepen your appreciation for your first two languages.
@@iparagonepersonalvlogs1061 Taking your idea further. I think you can not code an efficient app if you have not heard of time and space complexity. And that is why starting with c++ may take you farther in the same period of learning time. By the way, the complexity analysis was introduced by Donald Knuth, Lex did brilliant interviews with him as well.
I think at 12:40 what Lex does not realize Guido was saying is that in any moment things can change and so there is no point is stressing too hard about the right choice because that will always change in ur life
Figure out what you want to build, look online to see what everyone else, or most, are doing in that space and go from there. Along the way, don't fret over learning the newest programming trends. Focus on learning programming paradigms, algorithms and, industry best practices and you'll be better able to adapt to changes in technology.
I think Lex is overstating the problem of ' picking wrong'. If you master a language, and you start over with a new language, you are going to master it very quickly. The concepts like Algorithms and Data Structures are always going to be there, and Syntax takes no time at all. You don't start over with concepts like testing, version control, deployment etc. I started out with C# because of Unity, but it wasn't even a speedbump to become just as proficient at Python.
I think the biggest challenge you may face in switching languages is going from a language that encourages a OOP programming paradigm vs a functional programing paradigm. Some people struggle doing that, you can spend 20 years programming in JAVA for example, and it may be a bit challenging to then work in Haskell at first.
To beginners watching this: Don't spend time picking your first language. There's no risk of making the wrong choice of 1st lang, you can learn many languages and your first one means the least. In a programming education you might take your basic class in Java, move on to C, learn deeper about classes in C++, move on to JS, try some functional programming in Haskell. Not until later you actually get going with more practical projects and language choice becomes important. I see far too beginners get stuck because they imagine they carefully have to pick the best first lang.
Exactly. The common language you can consult and talk with someone about is the right choice for you in that specific situation. If by have no one irl to talk to, the language where you can find an active forum is best. Skills are transferable. If not your approach to learning is flawed. Python is rather friendly for beginners though and for absolute beginners there is Hedy :-)
Do you build a bridge in French or Mandarin? Knowing about bridge building matters more. Going between programming languages is super trivial. Assembly helps to see it from the hardware's point of view. C will teach you about memory management. Python plays well with others (has great libraries, maybe written in C++), but is not all that great by itself, except for being really accessible. Best way to learn is to teach others and there the community comes to play. Long time ago I was on Usenet News answering questions about Paradox database. It was a very good experience for a long time, till many people did not want to learn, they just wanted me to do their work for them. That killed it, but it was good for quite a while. Teaching is a good way to learn.
It's never too late to learn something new or to start with programming, but I agree with Guido that you have to be sure it will be useful to you to achieve your goals in the far future. Currently Python, JS, C# and Java are the most in demand and are here to stay for long time, so any of them to start with, won't be wrong.
Very true. I had a hard time with c++ in my youth and that kinda drove me away from programing in general. Now, necessity makes the rule, and Python (to me) is a god send that made me appreciate and actually enjoy programing again.
And as long as WordPress stays around, PHP isn't going anywhere so there are tons of PHP jobs. If you're doing mobile development you're probably going to be coding in Swift (iOS) or Kotlin (Android). If you're coding for web, its going to be JavaScript and TypeScript.
@@PhreakPhantom Yeah, absolutely. I mean C++ is tough to learn, needs alot of time to get familiar with. However, with Swift on the horizon, I don't think C/C++ would be used alot in the near future, so I won't recommend them to beginners. Now with Python, many people can get much easier introduction to programming and not just that, but also the language could be used for many variety of things.
Love the advice being shared. In addition to taking risks and doing a bit of everything, I would say invest in whatever language/tools are being used in the field you want to work in. If you're a game dev, you're going to be working with a very different set of tools than someone doing web dev.
I'm currently taking a Project Management graduate certificate and was wondering what programming languages I should be literate in. As well as different software dev models and design models used. I know it's not one size fits all. I am coming from a political science background and I am hoping to get a co-op in may. I line in Kanata, Canada fairly close to a lot of tech (Silicon Valley North). I'm hoping to land a job in the public sector but I am also willing to go private sector as well.
@@timmanto1022 It's really hard to say because Project Managers aren't really required to be technically skilled in development. Unless you want to become a developer, learning programming languages shouldn't be your focus. If you do wanna become a developer, Python or JavaScript are your best bets for a beginner.
@@timmanto1022 If you're just going to be a PM, I would recommend something like Python or JavaScript. As a PM professional, you will be translating requirements into tasks/items that your developers can tell you if it is possible, how long, etc etc. You'll definitely start getting a better idea as you do more projects :)
Lex seems focused on optimising to too fine a degree - something I've been guilty of, myself. You waste cycles and run your brain hot by focusing on an exact value and continually polling yourself as to whether it was the right choice. If you're learning the principles and an implementation, then you are within the confidence interval of having made a good choice and it's easy enough to jump over to a slightly different implementation or language, if it makes sense to do so. You will already have a head-start on picking up the 'next thing' and your brain will thank you.
He just seems anxious. He's interviewing a legend in the industry who has much wisdom to share but instead of asking even a single question he spends the time kvetching about language choices. I mean I can relate to this. Anxiety is usually inhibiting a core emotion. In this case I think he's a little fearful at what misery he may feel in the future about his choices and a bit sad to see the inventory of his losses (time invested in action script, for example). I wonder if these feelings could be tempered with some exuberance over the idea that a person can make their livelihood pushing around bits using sophisticated abstractions on top of a mind boggling array of complicated inventions.
He is so right. Concepts matter. Modern php with symphony acts like spring boot ... Php acts like an oop java aquivalent.... In the end, it is all about the problem context and the devs you are with and where they feel the sweet spot... Languages does not matter... It is all about sequence, looping and deciding... The logic is the same... Here and there some additive concepts... But c# feels a lot like java, dart feels a lot like java, in php u have traits, in dart you have mixins, in ruby you have mixins but u are missng type safety. I will code in every language as long it is in the same oop like context grown... So why should i care about python, or ruby, or javascript, or dart, or go or c++, or rust or crystal (ruby clone) ... The team decides, the manager decides or at the end, just get shit done...
Overthinking and assumption of no change at its finest Programming is one of those fields on whether you have to heavily adapt or sink. can't be too attached to anything. unless you're a depth of field expert, usually best to have breath
I’m 45 years old and right now I’m learning React+Django full stack. But I expect this to change and evolve in 3 years. It’s really fun. I do this on weekends on my own time. My full time job is in product strategy for a tech company.
Same age, actually working on RubyOnRails on backend and Angular in front. I'd like to learn something else, could be a deterministic language just for the sake of putting my hands in something more physical than ERPs, could be Python and ML, could be Haskell but I fear that it would be an insanely harder way to do things I already do with generators in Rails.
I'm in my forties as well! And finally deciding to become a full-stack JS web dev, after dabbling around the edges for a decade+ doing basic front-end interactivity. Going with Astro, plus either Svelte or HTMX.
I wouldn't think of a lot of skills as permanent lifelong tools, or the process of learning them as a one time thing. Learn what is most useful in the moment that aligns with your long term vision and be prepared to continue learning new skills throughout the duration of your life.
Quite different with sirs George Hotz (learn assembler and C first) and Bjarne Stroustrup (learn at least 5 industry standard ones and machine language, the zeros and ones themselves), To get good at something, like tools, we must have different good tools for your purpose but the basic must be there so C and assmbler, Hot'z is kind of right, coz' they share concepts anyway (good means also a standard and has good documentation) but be willing to switch to new stuff even though nothing will get transferred but most of the time there are a lot. God bless, Rev. 21:4
I'm 50s. Early in my career I got frustrated with all the platform changes I was having to deal with and made many mistakes in predicting future tech. Sorry, I don't have the solution. Computing is like the Red Queen story, you have to run at full speed just to keep up.
Guido van Rossum is a iving legend. And those podtcasts are a digital monument. As pointed out by many other comments the differences in the current languages are mostly syntactic sugar. It is just effort but not a complete change of paradigme. The big deal will be with the quantum computing transition. Then it will be oooh my gosh....
If you're a senior dev you can easily switch to another language. Concepts are the same, patterns are the same. How hard can it be to just learn slightly different syntax? I've started with .net then switched to js/ts then .net and js/ts again. Wrote some c, python, SQL stored procedures scripts written in bash. Never was a problem for me. If you're afraid of change and learning new stuff then programming is not your thing.
This is kinda a trash question to ask urself. What programming lg should i learn?. What technology should i learn would be the correct question, so, once u have an answer for this question, then u can move on what programming lg do you need to make that technology works
Learn the programming language that helps your field, there is no one best language. Python is multipurpose I think it makes sense why everyone should learn it
const TypeScript:string[] = ["react native", "react", "tensorflow", "node/bun/deno", "electron"]... TypeScript has solution for absolutely everything... It is the most powerful language that you can do anything you want with.
@@MyBoxer96 C++ is strictly typed and I still get some wierd bugs sometimes, cause I use the wrong datatype, but I use it correctly. But the compiler does not tell me anything cause it will not know what I am about to use with it. For me, most bugs are easy to catch when its a variable with wrong name, or that I accidently try to add a string with an integer. But its good there are both plain JS and TS so we can chose what we want :) (and use good extensions in vs code to help)
The programming language is often a side effect of what you want to accomplish and not an independent decision. For example, whether you use Python or Typescript or Swift or C++ or Matlab or Java or anything else is often not a function of the merits of a language. The language decision is a function of where code needs to be deployed, what libraries you need access to, what the rest of the code base you are working with is written in, etc… Learning a programming language is no big deal: spend a weekend reading online resources or a book and gets tons of practical experience afterwards. Learning a new language doesn’t take much time and takes less and less time the more languages you have experience with. It’s probably more worthwhile learning what ecosystems best fit the problem you are trying to solve. Very rarely do people build little things from scratch where they can truly pick programming language based on language merits. The decision is also always short term. People are writing code today, trying to speculate about the future doesn’t seem worthwhile given how easy it is to learn a language.
Action script was the best - no replacement available after 10 years - Politically motivated dead to control Development on apple devices and force 30% payments DOES NOT make an amazing tech obsolete.
Actionscript was awesome and got a bad rap. Adobe devs and product management sucked then and is even worse today and that gave Steve Jobs an excuse to funnel everyone through the app store - he knew that html/js was not a viable alternative or competitor to flash when it came to legit apps. Kevin Lynch (then CTO of Adobe) demo'd on stage at Adobe MAX conference along with a rep from Apple a working version of Flash on the iPhone. I was there and saw it along with hundreds others. It's a shame.
Here's something interesting for you to ponder Lex: Both ActionScript and JavaScript are derived from ECMAScript standard, so they are in essense the same language. ActuonScript eventually diverged from the standard with AS3, but I became a JavaScript / TypeScript expert in a short amount of time because I was an expert in ActionScript ;)
Interesting ! Reflecting on past experiences, mistakes made, knowledge gained . The same knowledge that holds you back to try something "better" as you start defining what better actually means for you. A mental trip exploring your options, generate some gut feeling be brave and jump in.. Enjoy the ride. Great stuff.
For my opinion JS and Python are leading in the field of tech coz JS is suitable for web and mobile the Python is super robust for backend side. both JS and Python have a huge community which is making them the best ones
5:59 Because of Borland/Embarcadero C/C++ is very enriched and very relevant. Like python, they have a very rich ecosystem of routines and libraries that is well thought and and future proof, and has been around since 1995. I don't like a language to be treated like last summers styles. For me it don't work that way.
I recommended learn Julia as a backup. after 5-7 years it will be in demand.
2 ปีที่แล้ว +1
I'm afraid there's nothing like Flash & ActionScript nowadays. Nothing. Html & JS does not even come close to the ease of combining animations and dynamic content that Flash provided.
That also makes it more interesting, because it forces you to learn new programming technologies all the time, instead of staying stuck on one programming language
Subjective is a confusing term. What someone truly wants can be objectively determined through introspection. But that’s often dismissed with the term “subjective” as if it’s not as real as external knowledge.
Since you have C background, I’d recommend learning Go. It’s crazy simple, has a killer standard library, and the most simply reasoned about concurrency model ever. Go is C for today.
@@shu3684 I can under understand that, and agree there are aspects of Zig that make it more of a C for today. Goroutines and channels are under appreciated, as is the extreme simplicity of Go.
I'd love to hear a second opinion on this. Is this true? Are all programming languages essentially different style of cars or type writers that are just a means to an end and ultimately function similarly enough that the difference are essentially negligible?
@@SlowPok3Gaming Certain languages have distinct differences. Compiled languages are more performant than interpreted languages (that’s why C++ is used for game dev). Some languages have garbage collection, some don’t. JavaScript is necessary to know for web development unless you are strictly backend. With that being said, yeah it’s all kinda the same shit at the high level, When getting into the details, there can be some huge differences though.
@@SlowPok3Gaming umm they're all very different tbh. You can't use python for making a musical instrument for example, because it's simply too slow. When you hit a piano key, the sound needs to come out so fast that we perceive it as immediate, even though it's physically impossible for a computer to give an immediate response like that. But with c++, it's definitely close enough
For me, learning the ins and outs of ActionScript 3 proved to be super valuable later when started coding in JavaScript doing Node.js stuff. They both have roots in ECMAScript.
Yeah, but it doesn't have a large user base and as many job opportunities. It is probably technically a very good language but for most people Python is more relevant, even if would be less good than Julia.
I am about to start my first semester of college in spring as a major in computer science. I am both excited and nervous as I have zero experience in programming or anything of that nature.
Better figure out early on what field do you want to pursue , to learn the tools you’ll need in advance so you would be battle ready for internship. Trust me most of your piers will already have some programming experience. You don’t want to fall behind
I’d definitely start with HTML and CSS. Once you have a good foundation, figure out how to save a form using JavaScript to communicate to an API like node.js and express. You can save it in memory or if you want to go further you can save it in a database that communicates with your backend.
Here i think Lex is a bit too inside the box tbf! Even if you learned a skill which might not make sense now, you probably kept your brain busy - and did what programming is: problem solving. And sometimes certain things just seem blurry and invaluable, but then you can go watch steve jobs connecting the dots :)
There are the classical languages where C# and Java have come out on top... Easiest to learn by the way and pretty much mandatory. Start there. But when it comes down to JS vs Python I will recommend JS 110% of the time for two pretty simple reasons: 1) It blows the door off of Python in terms of speed.... unless you take pains to compile Python to native. 2) It can run as native code (via Node) or in Browsers. (In or out of a Browser, suck on that Python!) JS does alter (throws away) many rules of classic languages.... but... by doing so it gives one abilities that some would call... unnatural.
I'm in a position where I want to learn to program and I'm sure I can I'm just frozen at deciding which language I should focus on. I can read and alter code once it's been created but can't make it from scratch. What should I do? I really want to start.
I guess it depends on what your end game is. Do you wanna work as a programmer? Is it just for fun? If you have something specific in mind that you want to work on, then maybe try and look into what tools people usually use.
@@KarlKatten I mean I've been looking into it for a very long time . I would say I have two main goals, being able to modify and ultimately design complex physics and interactions for VR games and apps specifically. My second main goal is just to understand computer science better. I want an employable skill that will last me until retirement age and not waste time accidently on a niche or a dying technology. I'm not so plugged into the ecosystem that I understand what's popular and what's dying and I'm not sure who's opinion to trust. Thanks for replying. Thanks 🙏
@@SlowPok3Gaming Since you're interested in games/VR I would suggest C#. It can be used as a scripting language in the Unity engine. C# is also a general purpose language that sees a lot of use in corporate environments so knowledge would carry over there if you're looking for employment. Once you've learned a few things in C# you could move to C++ which has a relatively similar syntax and would teach you a lot about computer science (memory management, etc) while also being very relevant to the gaming space.
I'm a beginner Business Systems Analyst and/or what programming or software development/design models should I know about? What is used in the private sector.
Programming languages are like religions. Differrent or less different habits and rituals to serve the same spiritual emptyness. As long as i can keep my foreskin, i code in every fucking language if it pays the bills...
ActionScript was never a technology with a future. It was limited in it's use and because Flash was going away so was ActionScript. Flash's only serious purpose was to make marketing shows available in the browser. Java on the other hand was a technology meant to run anywhere. Applets were just a tiny subset of it possibilities. You could create a full desktop program from the beginning and run it on any system with a JVM. Additionally it was faster than scripts from the start. So there is no comparison. As for future viability you can look at those past technologies and check for certain properties in trending ones. What problems does it solve? How long will this problem remain a problem? How comprehensive does it solve a problem? If it's more like a hack or workaround it will be replaced by a solution that solves all underlying issues as well. How intuitive/elegant is it? Can there be competition? How will there ever be a competition to JavaScript? Sure, there is TypeScript which makes the Code better, but it runs on top of JavaScript. So whoever is fine with JavaScript will stay there. Now it gained use on the server side and those guys who were frontend specialist can now use what the know even on the backend. So this path will remain open for new people for a long time. IntelliJ and the whole JetBrains family do it so well and almost everything you need is part of the IDE. Borland IDEs had similar success, but they didn't keep up. Can happen to JetBrains, too. But that will not be the problem of the developer as it can only be replaced by something even better. So it will be used until it won't anymore. Java won't go away in the next 30 years and neither will Python or PHP. Perl lost because it was not as accessible. Very few new scripters will start with Perl. Python is very clean and elegant and the AI libraries are very useful. PHP is easy to get in, because it is everywhere and you can code within the HTML. C and C++ will stay for all performance related work. Weakness are pointers and memory leaks. It can only be replaced by a technology mitigating these problems without sacrificing performance. There are also niche technologies that have a use in certain areas that will not go away soon, like Lisp, Ruby or Swift. And C# will stay relevant as long as it's Microsofts flagship. There have been quite a few languages running on the JVM, like Scala or Kotlin. The have their purpose or fan base, but only if they will make programming easier for all types of applications they will gain followers. A revolution can only emerge, when there is a new way of programming. So far I am not seeing anything. The current move is into the cloud, because somebody else makes sure you don't have to worry about the hardware. Even there the most accessible technologies solving the problem the easiest way will be the future. But overall I would advise to learn different languages, because there is so much to learn even about the ones you are already using.
No, it didn't. Flash was terrible shitty proprietary technology was a horrible security record with tons of vulnerabilities. It wasn't suited for mobile devices. It was a bane to the web and stayed for too long.
@@fred.flintstone4099 so if it wasn't suited why are tons of popular apps made with Air? It's the same thing. one was accepted and the other wasn't. You can still put a game on the app store with air.
@@funmaster4632 Apps were made with Air because tons of people knew Flash. It filled a niche that hasn't been filled ever since. Flash is shitty, but it was unique in what it did. Animators and hobbyists loved it, but professionals hated it.
@@fred.flintstone4099 and people could transfer their flash games to air in which google, Microsoft and apple could charge 30 percent without a competitive market. Its odd hardly any articles were written about airs security problems or the fact that it didn't run well on mobile. I agree with you about proprietary aspect of adobe. But you will never convince me it wasn't about money and the power of the big 3 to control their stores.
@@funmaster4632 The Adobe days were the late days, and the iPhone and Android days were the late days of Flash when it was already on the way out. The app store thing was just the spike in the coffin, but it was already dying since before Adobe, since the Macromedia days. It was already hated on the PC years before the iPhone even existed.
I think there is a balance most of the older generation can't let go of the ancient tools while the new generation moves extremely fast. As a developer you have to be able to do both.
Full podcast episode: th-cam.com/video/-DVyjdw4t9I/w-d-xo.html
Lex Fridman podcast channel: th-cam.com/users/lexfridman
Guest bio: Guido van Rossum is the creator of Python programming language.
@@snotchy2 WWE lz3l😢😢
"Why fix if something is not broken" - php IS broken.
in other words .. DON'T just sit there, do something even if it's WRONG
If you programmed your whole life, you can easily pick up any new language in less than a week and have a good grasp of things within a month.
agreed
sorry for this, but what kind of background you have ?
I just want to be sure how I'll make my decision
@@0_Dseven As someone who struggled finishing projects for a few years and did odd jobs, now I work in IT and programming stuff is my daily task, pick Python. EDX has a good free course from Georgia tech, that helps you with basics to intermediate stuff. Python has a lot of fun options to start small projects, from little games to automating stuff to machine learning or robotics (I suggest using PyCharm as IDE at first). JS can turn into a buggy cluster poop really quickly and you might get frustrated and demoralised in your learning process. It is very forgiving, to the point you might not spot a bug for days on a growing project.
@@awdwadawda352 thank you for the reply, I already now the basics of programming I learned JS + Python, and I'm a beginner at the moment
My question was about the original comment, that's if you really comfortable with one programming language how easy it's to move to another one
@@0_Dseven oh, apologies!
12:35 I agree with Guido here, hard to guess which languages will make you happy. I find using the same language at another company is often a bigger difference than to stay at the same place and switch languages.
And I often find myself having incorrect assumptions about which field is a good fit for a personality. Like "I'm creative so I probably wouldn't like backend" or "I wanna feel like I'm doing important work so I should be in healthcare software"
I would say you can kinda make a rough guess about which languages are moving up or down. Rust is clearly moving up. But trendy langs might not be wanted on the job market. For example Node is huge but very few recruiters email me about Node, instead I get tons of C# offers and my profile clearly states I'm not in C# anymore since years back.
thr job market is very country specific though.
It doesn't really matter what you learn first. My first 2 languages were visual basic and actionscript. They don't even exist anymore. But once you learn how to program, you can pick up any language.
You don’t learn the programming language but you learn how to learn programming languages.
100% True. This is why I was unable to apply anything that I learned for 4 years. I needed to teach myself how to teach myself.
Start with Python, JS, or C# and if you are going to code for a living, keep digging in there. Get comfortable in two of those and then your third language should be C++ just so that you deepen your appreciation for your first two languages.
Depending on the college, they'll already make you learn C++ anyways since C++ gets closely connected to data structures and algorithms.
@@iparagonepersonalvlogs1061 Taking your idea further. I think you can not code an efficient app if you have not heard of time and space complexity. And that is why starting with c++ may take you farther in the same period of learning time.
By the way, the complexity analysis was introduced by Donald Knuth, Lex did brilliant interviews with him as well.
I think at 12:40 what Lex does not realize Guido was saying is that in any moment things can change and so there is no point is stressing too hard about the right choice because that will always change in ur life
Figure out what you want to build, look online to see what everyone else, or most, are doing in that space and go from there. Along the way, don't fret over learning the newest programming trends. Focus on learning programming paradigms, algorithms and, industry best practices and you'll be better able to adapt to changes in technology.
This. Easy to learn a new framework or language with an end goal in mind rather than just general learning
Left ASP, left PHP, left JAVA, felt in love with Python, now working with Typescript and C# for money. Will never forget Python ❤
I'm looking to learn C# ... Any advice?
I think Lex is overstating the problem of ' picking wrong'. If you master a language, and you start over with a new language, you are going to master it very quickly. The concepts like Algorithms and Data Structures are always going to be there, and Syntax takes no time at all. You don't start over with concepts like testing, version control, deployment etc. I started out with C# because of Unity, but it wasn't even a speedbump to become just as proficient at Python.
I think the biggest challenge you may face in switching languages is going from a language that encourages a OOP programming paradigm vs a functional programing paradigm. Some people struggle doing that, you can spend 20 years programming in JAVA for example, and it may be a bit challenging to then work in Haskell at first.
To beginners watching this: Don't spend time picking your first language. There's no risk of making the wrong choice of 1st lang, you can learn many languages and your first one means the least. In a programming education you might take your basic class in Java, move on to C, learn deeper about classes in C++, move on to JS, try some functional programming in Haskell. Not until later you actually get going with more practical projects and language choice becomes important.
I see far too beginners get stuck because they imagine they carefully have to pick the best first lang.
Exactly.
The common language you can consult and talk with someone about is the right choice for you in that specific situation.
If by have no one irl to talk to, the language where you can find an active forum is best.
Skills are transferable.
If not your approach to learning is flawed.
Python is rather friendly for beginners though and for absolute beginners there is Hedy :-)
C. Why? If you know the syntax of C it’s easy to learn C++, C# and Java.
Do you build a bridge in French or Mandarin? Knowing about bridge building matters more. Going between programming languages is super trivial. Assembly helps to see it from the hardware's point of view. C will teach you about memory management. Python plays well with others (has great libraries, maybe written in C++), but is not all that great by itself, except for being really accessible. Best way to learn is to teach others and there the community comes to play. Long time ago I was on Usenet News answering questions about Paradox database. It was a very good experience for a long time, till many people did not want to learn, they just wanted me to do their work for them. That killed it, but it was good for quite a while. Teaching is a good way to learn.
It's never too late to learn something new or to start with programming, but I agree with Guido that you have to be sure it will be useful to you to achieve your goals in the far future. Currently Python, JS, C# and Java are the most in demand and are here to stay for long time, so any of them to start with, won't be wrong.
This comment should’ve been the video.
Very true. I had a hard time with c++ in my youth and that kinda drove me away from programing in general. Now, necessity makes the rule, and Python (to me) is a god send that made me appreciate and actually enjoy programing again.
“Lex Fridman is dangerous” great youtube video
And as long as WordPress stays around, PHP isn't going anywhere so there are tons of PHP jobs. If you're doing mobile development you're probably going to be coding in Swift (iOS) or Kotlin (Android). If you're coding for web, its going to be JavaScript and TypeScript.
@@PhreakPhantom Yeah, absolutely. I mean C++ is tough to learn, needs alot of time to get familiar with. However, with Swift on the horizon, I don't think C/C++ would be used alot in the near future, so I won't recommend them to beginners. Now with Python, many people can get much easier introduction to programming and not just that, but also the language could be used for many variety of things.
Love the advice being shared. In addition to taking risks and doing a bit of everything, I would say invest in whatever language/tools are being used in the field you want to work in. If you're a game dev, you're going to be working with a very different set of tools than someone doing web dev.
I'm currently taking a Project Management graduate certificate and was wondering what programming languages I should be literate in. As well as different software dev models and design models used. I know it's not one size fits all.
I am coming from a political science background and I am hoping to get a co-op in may. I line in Kanata, Canada fairly close to a lot of tech (Silicon Valley North). I'm hoping to land a job in the public sector but I am also willing to go private sector as well.
@@timmanto1022 It's really hard to say because Project Managers aren't really required to be technically skilled in development. Unless you want to become a developer, learning programming languages shouldn't be your focus.
If you do wanna become a developer, Python or JavaScript are your best bets for a beginner.
@@timmanto1022 If you're just going to be a PM, I would recommend something like Python or JavaScript. As a PM professional, you will be translating requirements into tasks/items that your developers can tell you if it is possible, how long, etc etc. You'll definitely start getting a better idea as you do more projects :)
@@robswc Thanks Rob!
What languages are used in the cyber security sector? Appreciate any response.
The thing is, A good programmer can do any thing with their experience! The matter is being a good and skilled programmer.
Lex seems focused on optimising to too fine a degree - something I've been guilty of, myself. You waste cycles and run your brain hot by focusing on an exact value and continually polling yourself as to whether it was the right choice. If you're learning the principles and an implementation, then you are within the confidence interval of having made a good choice and it's easy enough to jump over to a slightly different implementation or language, if it makes sense to do so. You will already have a head-start on picking up the 'next thing' and your brain will thank you.
He just seems anxious. He's interviewing a legend in the industry who has much wisdom to share but instead of asking even a single question he spends the time kvetching about language choices. I mean I can relate to this. Anxiety is usually inhibiting a core emotion. In this case I think he's a little fearful at what misery he may feel in the future about his choices and a bit sad to see the inventory of his losses (time invested in action script, for example). I wonder if these feelings could be tempered with some exuberance over the idea that a person can make their livelihood pushing around bits using sophisticated abstractions on top of a mind boggling array of complicated inventions.
He is so right. Concepts matter. Modern php with symphony acts like spring boot ... Php acts like an oop java aquivalent.... In the end, it is all about the problem context and the devs you are with and where they feel the sweet spot... Languages does not matter... It is all about sequence, looping and deciding... The logic is the same... Here and there some additive concepts... But c# feels a lot like java, dart feels a lot like java, in php u have traits, in dart you have mixins, in ruby you have mixins but u are missng type safety. I will code in every language as long it is in the same oop like context grown... So why should i care about python, or ruby, or javascript, or dart, or go or c++, or rust or crystal (ruby clone) ... The team decides, the manager decides or at the end, just get shit done...
When flash was working properly it was ground breaking and amazing.
If you want to code with just one language throughout your career, just go with java
Overthinking and assumption of no change at its finest
Programming is one of those fields on whether you have to heavily adapt or sink. can't be too attached to anything. unless you're a depth of field expert, usually best to have breath
I’m 45 years old and right now I’m learning React+Django full stack. But I expect this to change and evolve in 3 years. It’s really fun. I do this on weekends on my own time. My full time job is in product strategy for a tech company.
Same age, actually working on RubyOnRails on backend and Angular in front. I'd like to learn something else, could be a deterministic language just for the sake of putting my hands in something more physical than ERPs, could be Python and ML, could be Haskell but I fear that it would be an insanely harder way to do things I already do with generators in Rails.
I'm in my forties as well! And finally deciding to become a full-stack JS web dev, after dabbling around the edges for a decade+ doing basic front-end interactivity. Going with Astro, plus either Svelte or HTMX.
I wouldn't think of a lot of skills as permanent lifelong tools, or the process of learning them as a one time thing. Learn what is most useful in the moment that aligns with your long term vision and be prepared to continue learning new skills throughout the duration of your life.
after a long conclusion I will stick to BASIC
I'm with guido on this one!! things do change! & you can be wrong.
Learn the theory behind programming, loops, functions, variables etc. - then it becomes a matter of learning syntax
Quite different with sirs George Hotz (learn assembler and C first) and Bjarne Stroustrup (learn at least 5 industry standard ones and machine language, the zeros and ones themselves),
To get good at something, like tools, we must have different good tools for your purpose but the basic must be there so C and assmbler, Hot'z is kind of right, coz' they share concepts anyway (good means also a standard and has good documentation) but be willing to switch to new stuff even though nothing will get transferred but most of the time there are a lot.
God bless, Rev. 21:4
I'm 50s. Early in my career I got frustrated with all the platform changes I was having to deal with and made many mistakes in predicting future tech. Sorry, I don't have the solution.
Computing is like the Red Queen story, you have to run at full speed just to keep up.
Guido van Rossum is a iving legend. And those podtcasts are a digital monument. As pointed out by many other comments the differences in the current languages are mostly syntactic sugar. It is just effort but not a complete change of paradigme.
The big deal will be with the quantum computing transition. Then it will be oooh my gosh....
If you're a senior dev you can easily switch to another language.
Concepts are the same, patterns are the same. How hard can it be to just learn slightly different syntax?
I've started with .net then switched to js/ts then .net and js/ts again. Wrote some c, python, SQL stored procedures scripts written in bash. Never was a problem for me.
If you're afraid of change and learning new stuff then programming is not your thing.
Depends on the language. C# to Java is easy. Python to C++ to Haskell to Erlang to Rust to APL might be a little more challenging.
This is kinda a trash question to ask urself. What programming lg should i learn?. What technology should i learn would be the correct question, so, once u have an answer for this question, then u can move on what programming lg do you need to make that technology works
Learn the programming language that helps your field, there is no one best language. Python is multipurpose I think it makes sense why everyone should learn it
const TypeScript:string[] = ["react native", "react", "tensorflow", "node/bun/deno", "electron"]... TypeScript has solution for absolutely everything... It is the most powerful language that you can do anything you want with.
I prefer just plain javascript without the TS-stuff, but you should not forget wasm which is possible thanks to javascript.
@@AndrewTSq JavaScript is not comparable to TypeScript in large scale applications.
@@MyBoxer96 why? TS gets turned into javascript.
@@AndrewTSq Primarily because it is strictly typed and catches runtime errors
@@MyBoxer96 C++ is strictly typed and I still get some wierd bugs sometimes, cause I use the wrong datatype, but I use it correctly. But the compiler does not tell me anything cause it will not know what I am about to use with it. For me, most bugs are easy to catch when its a variable with wrong name, or that I accidently try to add a string with an integer. But its good there are both plain JS and TS so we can chose what we want :) (and use good extensions in vs code to help)
The programming language is often a side effect of what you want to accomplish and not an independent decision.
For example, whether you use Python or Typescript or Swift or C++ or Matlab or Java or anything else is often not a function of the merits of a language. The language decision is a function of where code needs to be deployed, what libraries you need access to, what the rest of the code base you are working with is written in, etc…
Learning a programming language is no big deal: spend a weekend reading online resources or a book and gets tons of practical experience afterwards. Learning a new language doesn’t take much time and takes less and less time the more languages you have experience with.
It’s probably more worthwhile learning what ecosystems best fit the problem you are trying to solve.
Very rarely do people build little things from scratch where they can truly pick programming language based on language merits.
The decision is also always short term. People are writing code today, trying to speculate about the future doesn’t seem worthwhile given how easy it is to learn a language.
What kind of application/software/etc do you want to build? Then do a little research on which tools (languages) are best for the job.
ikr, this whole video is a little strange, there just tools, why is he talking about spirituality and existentialism
Action script was the best - no replacement available after 10 years - Politically motivated dead to control Development on apple devices and force 30% payments DOES NOT make an amazing tech obsolete.
Actionscript was awesome and got a bad rap. Adobe devs and product management sucked then and is even worse today and that gave Steve Jobs an excuse to funnel everyone through the app store - he knew that html/js was not a viable alternative or competitor to flash when it came to legit apps. Kevin Lynch (then CTO of Adobe) demo'd on stage at Adobe MAX conference along with a rep from Apple a working version of Flash on the iPhone. I was there and saw it along with hundreds others. It's a shame.
Man, even 2x speed is too slow
Here's something interesting for you to ponder Lex: Both ActionScript and JavaScript are derived from ECMAScript standard, so they are in essense the same language.
ActuonScript eventually diverged from the standard with AS3, but I became a JavaScript / TypeScript expert in a short amount of time because I was an expert in ActionScript ;)
Interesting ! Reflecting on past experiences, mistakes made, knowledge gained . The same knowledge that holds you back to try something "better" as you start defining what better actually means for you. A mental trip exploring your options, generate some gut feeling be brave and jump in.. Enjoy the ride. Great stuff.
Guido nailed it here: 14:29
For my opinion JS and Python are leading in the field of tech coz JS is suitable for web and mobile the Python is super robust for backend side. both JS and Python have a huge community which is making them the best ones
Is python that great? I feel like the space as code thing is super basic and would make more complicated code look like trash
5:59 Because of Borland/Embarcadero C/C++ is very enriched and very relevant. Like python, they have a very rich ecosystem of routines and libraries that is well thought and and future proof, and has been around since 1995. I don't like a language to be treated like last summers styles. For me it don't work that way.
I recommended learn Julia as a backup. after 5-7 years it will be in demand.
I'm afraid there's nothing like Flash & ActionScript nowadays. Nothing. Html & JS does not even come close to the ease of combining animations and dynamic content that Flash provided.
That also makes it more interesting, because it forces you to learn new programming technologies all the time, instead of staying stuck on one programming language
If you learn Rust do your skills become rust-proof?
c and english i yet to see one who explored these 2 treasures good enough
Subjective is a confusing term. What someone truly wants can be objectively determined through introspection. But that’s often dismissed with the term “subjective” as if it’s not as real as external knowledge.
Subjective is one of the most over used and incorrectly used terms. People use it to justify not being challenged on a particular belief.
I forgot ALL about Action Script until 1 min into this video, haha! I did quite a bit of that in the early - mid 00's. Wow.
Since you have C background, I’d recommend learning Go.
It’s crazy simple, has a killer standard library, and the most simply reasoned about concurrency model ever.
Go is C for today.
@Dave May Plenty of people using go, including the most important from my perspective, me.
Why would it matter how many people are using it?
@@tommornini2470 i would say Zig is more of a C for today
@@shu3684 I can under understand that, and agree there are aspects of Zig that make it more of a C for today.
Goroutines and channels are under appreciated, as is the extreme simplicity of Go.
Discussions on programming languages are overrated. It's like a discussion on the best typewriter for writing masterpieces of literature.
I'd love to hear a second opinion on this. Is this true? Are all programming languages essentially different style of cars or type writers that are just a means to an end and ultimately function similarly enough that the difference are essentially negligible?
@@SlowPok3Gaming Certain languages have distinct differences. Compiled languages are more performant than interpreted languages (that’s why C++ is used for game dev). Some languages have garbage collection, some don’t. JavaScript is necessary to know for web development unless you are strictly backend. With that being said, yeah it’s all kinda the same shit at the high level, When getting into the details, there can be some huge differences though.
@@DevNug thanks
@@SlowPok3Gaming umm they're all very different tbh. You can't use python for making a musical instrument for example, because it's simply too slow. When you hit a piano key, the sound needs to come out so fast that we perceive it as immediate, even though it's physically impossible for a computer to give an immediate response like that. But with c++, it's definitely close enough
Well in a way yes. But just like how different cars like trucks and sport cars have different use cases so do different programming languages.
Java is the language that can introspect itself. Others are more or less usable to build such apps.
Most languages have support for "reflection". Reflection has its uses but isn't useful for most applications though.
Right now i like dart, flutter and go. Maybe rust would be great too. But for me in my playground bubble go goes deep enough.
For me, learning the ins and outs of ActionScript 3 proved to be super valuable later when started coding in JavaScript doing Node.js stuff. They both have roots in ECMAScript.
the correct answer is obviously vb
😆
Is Lex saying that Python is the best language for machine learning?
I think, Julia is powerful and different enough to make a new and valuable experience!😉
Yeah, but it doesn't have a large user base and as many job opportunities. It is probably technically a very good language but for most people Python is more relevant, even if would be less good than Julia.
pls let your guest talk 95% of the session. we came here for the guest
Typescript.
I am about to start my first semester of college in spring as a major in computer science. I am both excited and nervous as I have zero experience in programming or anything of that nature.
Enjoy the ride!
Better figure out early on what field do you want to pursue , to learn the tools you’ll need in advance so you would be battle ready for internship. Trust me most of your piers will already have some programming experience. You don’t want to fall behind
Thanks sir
Why did Actionscript and Flash disappear?
Do people understand that it is possible to learn multiple languages?
Lua changed my life.
I haven’t seen web animations as good as the flash ones
I want to become a web developer should I focus solely on html and css first and then JavaScript later or all together ? Any feedback is amazing
I’d definitely start with HTML and CSS. Once you have a good foundation, figure out how to save a form using JavaScript to communicate to an API like node.js and express. You can save it in memory or if you want to go further you can save it in a database that communicates with your backend.
Here i think Lex is a bit too inside the box tbf! Even if you learned a skill which might not make sense now, you probably kept your brain busy - and did what programming is: problem solving. And sometimes certain things just seem blurry and invaluable, but then you can go watch steve jobs connecting the dots :)
There are the classical languages where C# and Java have come out on top... Easiest to learn by the way and pretty much mandatory. Start there.
But when it comes down to JS vs Python I will recommend JS 110% of the time for two pretty simple reasons:
1) It blows the door off of Python in terms of speed.... unless you take pains to compile Python to native.
2) It can run as native code (via Node) or in Browsers. (In or out of a Browser, suck on that Python!)
JS does alter (throws away) many rules of classic languages.... but... by doing so it gives one abilities that some would call... unnatural.
I built an entire SaaS in Flex hurt when adobe dropped it
I'm in a position where I want to learn to program and I'm sure I can I'm just frozen at deciding which language I should focus on. I can read and alter code once it's been created but can't make it from scratch. What should I do? I really want to start.
I guess it depends on what your end game is. Do you wanna work as a programmer? Is it just for fun?
If you have something specific in mind that you want to work on, then maybe try and look into what tools people usually use.
@@KarlKatten I mean I've been looking into it for a very long time . I would say I have two main goals, being able to modify and ultimately design complex physics and interactions for VR games and apps specifically. My second main goal is just to understand computer science better. I want an employable skill that will last me until retirement age and not waste time accidently on a niche or a dying technology. I'm not so plugged into the ecosystem that I understand what's popular and what's dying and I'm not sure who's opinion to trust. Thanks for replying. Thanks 🙏
@@SlowPok3Gaming Since you're interested in games/VR I would suggest C#. It can be used as a scripting language in the Unity engine. C# is also a general purpose language that sees a lot of use in corporate environments so knowledge would carry over there if you're looking for employment. Once you've learned a few things in C# you could move to C++ which has a relatively similar syntax and would teach you a lot about computer science (memory management, etc) while also being very relevant to the gaming space.
Writing code is easier than reading and altering already written code.
@@tom_marsden this is the answer I was looking for thank you a ton
Did you hear about htmx
I'm a beginner Business Systems Analyst and/or what programming or software development/design models should I know about? What is used in the private sector.
It's really hard not to see the C++ community as toxic in comparison to the Python community.
JavaScript just learn it forget everything else.
Programming languages are like religions. Differrent or less different habits and rituals to serve the same spiritual emptyness. As long as i can keep my foreskin, i code in every fucking language if it pays the bills...
This is Therapy
Learn to solve problems. Programming is a mean, not an end.
ActionScript was never a technology with a future. It was limited in it's use and because Flash was going away so was ActionScript. Flash's only serious purpose was to make marketing shows available in the browser. Java on the other hand was a technology meant to run anywhere. Applets were just a tiny subset of it possibilities. You could create a full desktop program from the beginning and run it on any system with a JVM. Additionally it was faster than scripts from the start. So there is no comparison.
As for future viability you can look at those past technologies and check for certain properties in trending ones.
What problems does it solve?
How long will this problem remain a problem?
How comprehensive does it solve a problem? If it's more like a hack or workaround it will be replaced by a solution that solves all underlying issues as well.
How intuitive/elegant is it?
Can there be competition? How will there ever be a competition to JavaScript? Sure, there is TypeScript which makes the Code better, but it runs on top of JavaScript. So whoever is fine with JavaScript will stay there. Now it gained use on the server side and those guys who were frontend specialist can now use what the know even on the backend. So this path will remain open for new people for a long time.
IntelliJ and the whole JetBrains family do it so well and almost everything you need is part of the IDE. Borland IDEs had similar success, but they didn't keep up. Can happen to JetBrains, too. But that will not be the problem of the developer as it can only be replaced by something even better. So it will be used until it won't anymore.
Java won't go away in the next 30 years and neither will Python or PHP. Perl lost because it was not as accessible. Very few new scripters will start with Perl. Python is very clean and elegant and the AI libraries are very useful. PHP is easy to get in, because it is everywhere and you can code within the HTML.
C and C++ will stay for all performance related work. Weakness are pointers and memory leaks. It can only be replaced by a technology mitigating these problems without sacrificing performance.
There are also niche technologies that have a use in certain areas that will not go away soon, like Lisp, Ruby or Swift. And C# will stay relevant as long as it's Microsofts flagship.
There have been quite a few languages running on the JVM, like Scala or Kotlin. The have their purpose or fan base, but only if they will make programming easier for all types of applications they will gain followers.
A revolution can only emerge, when there is a new way of programming. So far I am not seeing anything.
The current move is into the cloud, because somebody else makes sure you don't have to worry about the hardware. Even there the most accessible technologies solving the problem the easiest way will be the future.
But overall I would advise to learn different languages, because there is so much to learn even about the ones you are already using.
7:44 Now we know that Lex was created using C++.
What about chat gpt
Why limit yourself?
Because it takes time, a lot of time. Need that for gym, family, friends and other stuff.
No matter what is the question, if the answer is JavaScript it's wrong.
Flash was awesome because there were so many cool Flash games like Crush The Castle and Shaun The Sheep :-)
if you learn C or C++, you will be fine
damn ik hoor niet eens het sterke nederlands accent wat ik had verwacht
Nee, dat verbaaste me ook.
one of the most boring interviewees on the face of the planet, but I love watching this -- it's weirdly meditative
That was really an absurd poitn lex was trying to make, basically he is too afraid to switch programming language ?? wth.
Taking from the cover, one should note that both Python and JS aren't "programming languages", but "scripting languages". Ironic.
flash got removed for the app stores to hold a monopoly. JavaScript is just now close in browser game capability and it is really not better.
No, it didn't. Flash was terrible shitty proprietary technology was a horrible security record with tons of vulnerabilities. It wasn't suited for mobile devices. It was a bane to the web and stayed for too long.
@@fred.flintstone4099 so if it wasn't suited why are tons of popular apps made with Air? It's the same thing. one was accepted and the other wasn't. You can still put a game on the app store with air.
@@funmaster4632 Apps were made with Air because tons of people knew Flash. It filled a niche that hasn't been filled ever since. Flash is shitty, but it was unique in what it did. Animators and hobbyists loved it, but professionals hated it.
@@fred.flintstone4099 and people could transfer their flash games to air in which google, Microsoft and apple could charge 30 percent without a competitive market. Its odd hardly any articles were written about airs security problems or the fact that it didn't run well on mobile. I agree with you about proprietary aspect of adobe. But you will never convince me it wasn't about money and the power of the big 3 to control their stores.
@@funmaster4632 The Adobe days were the late days, and the iPhone and Android days were the late days of Flash when it was already on the way out. The app store thing was just the spike in the coffin, but it was already dying since before Adobe, since the Macromedia days. It was already hated on the PC years before the iPhone even existed.
JavaScript is a mistake, so was php. TypeScript is the latest attempt to undo all the mistakes.
Arnold C is the best language
I loved this video. The way programming and its language is so romanticized, only a true "nerd" would empathize.
it is more like a therapy session :), the therapist: just move on.
I think there is a balance most of the older generation can't let go of the ancient tools while the new generation moves extremely fast. As a developer you have to be able to do both.
Plutus on #Cardano
C#
Learn Flutter 🤷🏻♂️
Everybody missing Flash +1 this. (By the way it was basically ecmascript with types)
And it was proprietary and a had a really shitty runtime full of vulnerabilities. If you want EcmaScript with types there is TypeScript.
Action script lasted Hella long man not a good example