Programming languages that everyone should learn | George Hotz and Lex Fridman
HTML-код
- Опубликовано: 24 окт 2020
- Lex Fridman Podcast full episode: • George Hotz: Hacking t...
Please support this podcast by checking out our sponsors:
- Four Sigmatic: foursigmatic.com/lex and use code LexPod to get up to 40% & free shipping
- Decoding Digital: appdirect.com/decoding-digital
- ExpressVPN: expressvpn.com/lexpod and use code LexPod to get 3 months free
PODCAST INFO:
Podcast website: lexfridman.com/podcast
Apple Podcasts: apple.co/2lwqZIr
Spotify: spoti.fi/2nEwCF8
RSS: lexfridman.com/feed/podcast/
Full episodes playlist: • Lex Fridman Podcast
Clips playlist: • Lex Fridman Podcast Clips
CONNECT:
- Subscribe to this RUclips channel
- Twitter: / lexfridman
- LinkedIn: / lexfridman
- Facebook: / lexfridmanpage
- Instagram: / lexfridman
- Medium: / lexfridman
- Support on Patreon: / lexfridman - Наука
"I'm not a great Haskell programmer, I wrote a compiler in Haskell once"
Bruuh
I struggled in school to build a full compiler with java lol
Pfftttt....yeah....rookie.
@@mohamadeen omg..i am so backward
@@mohamadeen Thats actually an interesting "feature" of the Haskell paradigm, is that it's really geared towards "pure-data transformations" that are compilers. I'm not a Haskell user but I've used a parser combinator and a page of code gives you an AST-like structure, if you leverage the hosted environment you're close to done.
The flex
“I’m not a great Haskell programmer. I wrote a compiler in Haskell once.”
- George Hotz
XD
Yeah wtf
As an English learner, I doubted my ears lol
Yeah I'm so disappointed w myself lol
Like who does that?
Languages mentioned:
- Assembly (1949) [Imperative Programming]
- C (1972) [Imperative Programming]
- Python (1991) [Imperative Programming]
- PyTorch (2016) [Differentiable Programming]
- Haskell (1990) [Functional Programming]
- Coq (1989) [Dependently Typed]
- Verilog (1984) | VHDL (1980) [Hardware]
@@delete7316 I don't think so 🤣
No LISP?
@@geocam2 rust is not mentioned in george's list. the list is for learning different types of programming paradigms (george's most important paradigms). What paradigm do you learn in rust that is not mentioned in the list?
@@geocam2 parallel programming is available in a lot of programming languages and is closer to a concept rather than a paradigm. rust is imperative programming.
@@godfather7339 that's what I was thinking lisp declarative language , Emacs
Plot twist: There was a nudist parade happening outside of Lex's window.
at 2:19-2:20, you can tell he saw some shit.
@@frankcastillo2855 he had nam flashback right there
@@blackraider777 😐He is Russian 🤭 😄 😅 😂 🤣 🤣 😆 🤧 🙄
@@mennovanlavieren3885 things Lex saw in that jungle can't be unseen....
Not at all. He simply doesn't respect his interviewee.
This dude knows the importance of fundamentals. Loving the programming binge you've been on lately.
Well said, understanding how things work makes you appreciate the tech more.
Another super RUclipsr watching this... nice!
@@randiaz95 you have existential crisis ig
@@randiaz95 I can think of an analog relating to the English language. I studied classical languages in college and those years of studying e.g. Latin has made me hyper aware of English word etymology/word-roots.
I don’t read much literature these days because I write code for work, but I have a friend who teaches English at the college level who sometimes asks me if I know the meaning of obscure words and I can deduce their meaning with a high degree of accuracy because I “appreciate” where English words come from having studied an ancestor to this language.
An appreciation of English via dead and ancient (perhaps useless) languages makes me able to outperform someone who teaches English to college students.
I have a feeling that there might be grammatical errors in my response since I said all that hahaha.
sometimes you just need to get the job done because life is short and maybe you dont especially want to go on the rabbit hole.
@@alexzander__6334 i can tell you from personal experience, as someone who writes software for a living but studied dead languages (Latin etc) in college, that even a surface study of assembly language has helped me in a “practical” sense.
Even one week of studying assembly made me view how a computer functions in a much clearer way. No rabbit holes necessary - merely a couple weeks and good source material.
this is podcast is like joe rogan for nerds.
More controversial sometimes!🤓🤣
😂😂😂😂😂
Idk about nerds, I am just getting into programming and I find it really cool. Programmers are some of the highest paid people too.
geeks not nerds😂😂
@@JS-bk4pn shut it nerd
This channel is great, it's like those late night college brain sessions have been cut free of the University. Dorm not required.
such a great way to put it.....
Excellent advice. I started out in machine code for the RCA 1802, then graduated to assembler for 8080, and a bit of C. Now I understand what is going on behind the curtain in Python. Building an early machine in wirewrap gave insight into the read internals. I'm very happy with Anaconda and the help it gives - also happy to understand what it is doing. As usual great conversations with guests. You let them answer!
Note for anyone wanting to learn programming, it might not be a good idea to learn the languages in that order (though some people might enjoy it). Programming has many layers and concepts, and for a beginner it can be overwhelming. One of the nice things about starting with Python is that you can focus on just the programming aspect (instead of worrying about compiling and other more low level concepts). Then once you get comfortable with that, you can choose to go as deep as you want.
I'm just speaking from experience. I spent years trying to learn C++ and it didn't click (I was pretty young at the time). Then later on I got to use Python and it clicked. I definitely see the benefits of learning assembly and C, but I don't think they are always great for a first introduction to programming.
i think java then going to c++ is best. Then finally python
I would argue that one thing which will absolutely help you no matter what language you learn is a good teacher - someone who can teach in a way that you will understand, can explain the concepts simply, visualize the concepts so it clicks (including practical examples). The quality of the teacher makes all the difference in the world, IMO.
+1
If you want to do something with AI, Java is pretty much useless. Java is a web language. If you actually want to build technology, as in actual programs, no need for Java.
I agree with you
1:40 "I'm not a great haskell programmer, I wrote compiler in haskell once." Ow.
To be fair, parsing and compiler writing are some of the strong suits of Haskell. It makes things like tokenization and building ASTs relatively easy and intuitive, at least compared to C-like langauges
Everybody should write a compiler. It is a journey everybody should try.
@@Guztav1337 what would you say you got out of it?
@@johndoesson I wrote a compiler for some obscure Pascal-like language in C and Assembly for a class, and I learned a lot about regular expressions and state machines, some smaller instruction set Assembly (we used MIPS), abstraction and layering, how a computer actually works, and (very important) how many actual instructions you need for a single C instruction (z = x + 1 is not the same as z = x + y because in the second case you have to additionally load y to a register, maybe use a temp variable etc) and how registers work. Keep in mind I was already employed as a programmer for half a year already at that time, so I wasn't new to the game.
Years later I got into microcontrollers and after a while had to use registers again, this time in C. Understanding what's happening underneath probably saved me a fair bit of time I would probably not have invested otherwise.
@@czonios Cool, just finished a course where we learned MIPS assembly and now taking another course in theoretical comp sci where we are learning about state machines and regular expressions. Yes, I agree on the part about assembly giving a greater understanding of how it works. But do you mean that a compiler is basically assembly code using state machines are regular expressions? Because that would make sense. Also dabble with microcontrollers, mostly Arduinos up until now, great stuff.
I've embarked on this path as of late, after years of being a high level web developer with no formal degree in CS, i'm embarking on a knowledge journey all the way back to assembly and machine code and C and really trying to understand what a computer does and how it works from a mere transistor point upwards. it's a great and long journey but one that i find fascinating and the more i learn the more i feel like i have superpowers. low level programmers who fundamentally understand these. concepts are like computer whisperers
Do you mind pointing out the benefits for a web developer of learning assembly because I also feel the urge inside of me to know what's actually happening under the hood and at the bare metal level. I would really appreciate if you could highlight some of the benefits you've received in your web development journey by learning assembly.
The algorithm loves “best programming languages” videos. Good job Lex, keep feeding the algorithm what it wants, the world needs to watch your podcast
I started with arduino/PIC micros, but when I had to do fast stuff (measuring speed of a projectile from 12 photodiodes in a barrel) I tried to do that in assembly. Man, that opened my mind
Love your videos mate ! great interviews!
That was great, thanks for looping back to talk about this part Lex.
Actually, designing a “sequential circuit” in HDL language is the ART, since they are by nature parallel languages. The beauty is creating FSMD (Finite State Machines) + (Data-flow) in VHDL that accelerates algorithms in Hardware.
"...yyyeah, i'm not a great haskell programmer. i wrote a compiler in haskell once." holy crap balls! one can only imagine everything he did in C!
It depends on the type of compiler he wrote. If it's a small compiler for a small subset of a language, it wouldn't be that complicated. But I guess he didn't specify, so possibly it could have been something very complex.
Stuck with me as well. xD Classic Hotz
there are things that can be "simpler" in haskell than C/C++ etc. like parsing. Dont get me wrong, i struggle with haskells "higher" concepts a lot but you can do a lot of powerfull stuff with just some basics knowledge. my first project was a sloppy brainfuck interpreter. Its not an easy language but you can do really elegant stuff with it in a way thats impossible in imperative languages
@@joshuastein1888 facts
Probably wrote a program that solves the halting problem in C (and a python program that solves the travelling salesman problem in polynomial time while we're at it)
Great man, awesome episode 👏🏻👏🏻👏🏻
I love this podcast so much
Great job
Trying to build Tic-Tac-Toe using Javascript and to me they're speaking a foreign language. One step at a time.
Same here! Plus, they're actually speaking a foreign language, since I'm not native English ;)
@Theodore Pugin How'd everything end up for ya?
"One step at a time." Very wise! These guys are speaking a foreign language to you now, but at one point they were in the same position as you, also taking it one step at a time for many years. Before you know it, you will have taken enough steps to be where they are right now:)
@@giorgionapoli85Your circumstances and excitements over this or that are not important to others. Don't you realize that? So save them to yourself and don't pollute the internet with even more trash.
oh so George is the 10X engineer that I kept hearing about on twitter a while ago
Such great advice!
Lex’s lack of eye contact has me dying lololol me too Lex
He's looking straight at George
Like these both have to be on autism spectrum if not autistic, right?
@@pery1952 nah
@@ոakedsquirtle If not Lex then definitely George.
@@pietart3596 is George outside?
I dont code to appreciate programming languages. I code to get shit done and solve problems. Most programming advice is like "You should learn this because I had to learn this".
Well said.
That is no excuse for black box towers. You still have to understand what is going on unless you do not care about code quality and performance.
@@wumi2419 it depends on your role, its like the difference between the architect and the worker but translated into software projects, if you are going to design a whole system then yeah probably knowing assembly and C and how they interact with the hardware in such a low level is going to be very useful in order to design a good and efficient system, but if you are just a hired programmer to build that system, you literally dont have to know what even assembly is, the same way an architect can design a complex building structure but the only thing the worker needs to know is how to place bricks properly, he doesnt even care about how bricks are made or why the building has this specific structure.
My point is that not every construction worker wants to become an architect, and not every programmer wants to become a George Hotz.
I agree. This guy is kind of an idiot. Do you have to be a blacksmith to wield a sword in battle?
@@wumi2419 but you don’t need to learn assembly to understand what is going on. The whole mission of computer science is to provide abstraction to solve problems faster.
I haven't written a line of assembly language in many years, but it was the first language I learned, and it has been had a huge impact on my programming for over 45 years as a software engineer. I agree with George that if you want to be a really good programmer, learning assembly language will help.
really ? Please elaborate ?
How does learning assembly help you if you are working as a backend java developer. It doesn't seem useful at all.
@@DanReh MY ASS
2:02 when I understood this concept during my electrical engineering study a whole new dimension in programming was introduced to me.
How is it possible ? Code is transformed into instruction set and it is executed from the begining to the end, if it were at once there everything would work instantaneously. Perhaps he mean that functions do not quite execute in the order thay are written ?
@@RafQ321 The hardware of the FPGA gets "programmed" according to the description thats coded. You basically describe the functionality and the hardware to implement that gets built on the FPGA meaning the circuit structure to have the functionality gets built on the chip physically. Just google FPGA and ASIC for more info.
Thanks, I definitly will read about that ;)
Yes, it's important for electrical engineering, and computer engineering, but no one else.
@@RafQ321 It helps thinking about it this way:
when you power on a piece of hardware, all the registers, arithmetic and logic units etc. power on at the same time. This is why all 'blocks' in verilog are executed at the same time.
Regarding your point of instructions executing from beginning to the end: there is no concept of 'execution' for a piece of code written in Verilog.
Its either simulation or synthesis.
when it comes to simulation, all the blocks in verilog start executing at the same 'time step'
Wow, the way of thinking is revealing!
I have not a clue what these two were saying, still watched it till the end.
Hahahaha! Yes, me too.
Makes sense man. When I took a fundamental course in accounting, we learned to do everything by hand... reconciling books, ledger entries, prepare proper financial statements and once wet had that down, we learned the software that does all of that.
Great analogy! Now I understand why it is important to know the base layers of programming like assembly and c
maybe if you want to waste a bunch of time or are focusing on circuit boards... Then learn assembly.
@@centripetal6157 I love to waste time. *And* circuit boards. haha
WOW I was just getting into this guys ideas and i find he was on your show Lex!! I was so excited cuz knew you think like me somewhat. Then I see this eas uploaded LAST MONTH!!! WOW what a coincidence!!
super helpful thank you
I’m learning JavaScript HTML and CSS right now. I studied a little Python and a little GO.
When I hear Lex saying he’s up all night programming, I wonder what language he’s using and what exactly he’s working on? Stuff he gets paid for? Stuff he does due to pure interest? Creating AI?
Check out the game Turing Complete. I started with the webdev stuff too, TC is a game that will teach you all the most basic low level programming concepts by guiding you through building a computer circuit by circuit.
Quick question,, what's a com pu ter?
Man i love your podcast your are amazing Lex.... hands down the best damn podcast.
Agreed.... especially working on embedded stuff.
This program gives me the confort to know that there are great minds working on solving world issues.
I believe the technical term for a software paradigm for machine learning is called Differential Programming. en.m.wikipedia.org/wiki/Differentiable_programming
Makes sense. Neural nets are based on differentials and gradients. It all comes down to the weights in the end.
Absolutely agree with that. Machine Language, Assembly, C (++), Python, etc...
The thing with ML is that it defines only a small subset of concepts that are pure maths. These things have been around for around 50 years now. Classification, Regression, Association, Control and Clustering. The rest is based on the fitness of the developer to utilise that decision to facilitate a particular outcome.
I don’t know if it’s really a programming paradigm. It’s more a collection of algorithms.
Great vid. Used to think Uni was just for the degree. Once I learned data structures, and C, I fell in love with what's behind the code. Not saying you have to go to uni, not at all, just saying that uni opened my eyes to that part of coding.
Great choice of programming languages: assembly, C, Python. I think Python could probably be replaced by any number of other languages but the first two would definitely be keepers in any list of mine.
@Bebtelovimab what are you talking about? Have you ever coded in C and Assembly?
@Bebtelovimab Do you even know what PyTorch is? How is an ML framework "Python on steroids?"
He didn't say "Python".
Phenomenal energy, Lex.
I could understand c. I had a harder problem understanding a command line compiler and operating system.
Nice video
Ay
This is so true. I went through CS50 which is mostly in C. Now Im learning python and i have to keep myself is check not to go the long way around a problem, because sometime I dont even think theres a simple method or function built in for something thats like 10+ lines of custom code in C.
Do you think C should be the first language you learn ?
@@bharatjeevan i am really not qualified to give such advice. But I for fure recommend the CS50 course. It veeery difficult but worth it.
fire, thanks
I 100% agree with Hotz’s approach (understanding how a processor actually executes instructions) although I’d start with BASIC, specifically for the reason most people dislike it, the GOTO function (as it’s essentially a jump instruction). Writing your first function in assembly you’ll actually grasp how the processor knows where to go (with the return address being the last variable pushed onto the stack).
1. BASIC
2. ASM x51 (yes, for a micro controller)
3. ASM x86
4. Plain C
5. Java (just as an introduction to VMs and garbage collection)
6. NodeJS (with TypeScript)
Something that I haven’t heard in a while: C also has a goto statement
Damn someone finally mentioned HDLs.
Technically not a computer language. If you treat it as such you will have problems. I know Verilog looks like C and HDML looks like Ada/Pascal, but they are not imperative in any way. You can't think of it as a computer language or programming language. It's a hardware description language - hence the name.
@@BitwiseMobile
So which own to learn as a software guy Verilog or HDL
@@ko-Daegu They both have plus and minuses, so it really depends on your needs. In some cases you don't even need to know any HDL and can use RTL instead.
1:35 "Is Haskell your goto?" - no pun intended?
I think he meant within the Functional Programming Paradigm
Dataflow programming, which is an abstraction layer to get the ideas of DATAFLOW architectures to be amenable to Von Neumann architectures.
Yup, George is spot on with that.
Data engineering is exceptional useful, especially in event driven systems.
I learn assembly because of his suggestion, now I can actually visualise how machine code executes in CPU. I loved it. My understanding is broadened. ❤ he is a 10X developer, not a myth anymore
Assembly is about hardware as well. You literally write the instructions that are almost always directly understood by your hardware
At the end of the day, most of the programming standards are moving towards abstractions, you can learn python without knowing a thing about C. I love C(incl C++) because it gives you more control of the hardware and embedded systems.
If you dont stand outside with flashlights turning them on and off then writing down wether or not you turned that light on or off to write binary code, you have no idea whats going on
0:45 Or study electronics, you will learn how to code with physical logic gates. It will make you appreciate even assembly.
That's what we have "Turing Complete" by Zachtronics for. 😅
Dissapointed he didn't mention declarative programming. Understanding how Prolog and SQL (and perhaps Maude) work is definitely a worthy perspective to have!
Dude this is why Maniacs like this should rule the World,
everyone wonders why he Knows everything,
he simply dos not cut corners, he leaned it all.
Dear in head light moment 4 me
farming rice is my best programming lamguage.
It can literally start a new civilization.
Yeah man, like if you don't know how people made money to build and manufacture computers, whats the point.
@@mokus603 right and honestly we should all know the theory of everything by Steven Hawkins because if you don't know why things "are" then why even bro
Data-driven programming already exists though. And it has nothing to do with machine learning.
The existing paradigm that is closest to pytorch et al is declarative.
en.wikipedia.org/wiki/Data-driven_programming
That is correct. Data-driven means you are not wrapping input data in some artificial models in order to process it and then convert back to data. Also means data structures are exposed in your source code and are generic enough to handle 90% data processing cases. No data hiding. Generic structures. Data-oriented abstractions (for handling sequential, textual, associative, ordered and unique collections of data). No interpretation or very late interpretation. I wouldn't tell that in ML data is exposed. There are a lot of black boxes.
@3:33 "Imperative, functional, hardware... I don't know a better word for it..." The word is "concurrent", it will help you become a good concurrent programmer. As a side note Verilog is not a programming language, so its better to concurrent programming over Verilog if one is constrained by time (or at least that should be the priority).
I'm glad that I learned all of these in Uni. I don't think I would have had any reason or motivation to learn VHDL
This makes so much sense to me. Been learning to program for the past year and am now realizing that a ton of the things i want to do i can't because i don't have a CS background
You can if you believe!
What are you talking about? You don't need a CS background at all. Just work
Don't focus on having a CS background. If there's one topic that the Internet has an abundance of information on, it's coding and computers. You can learn everything you would've at a university for free online. Can't say the same about other subjects.
George for me is like a rockstar in programming world. He is on this high level which I won't never achieve, because of my own limitations. Total respect for him
what limitations?
@@Dekibtw ADHD
@@Bratek193 oh, wow. I thought you underestimated your abilities. Sorry to hear that
@@Bratek193 Genuine question, have you tried Adderall? I don't have ADHD so I won't pretend to understand it, but it seems to really help people with ADHD take back some control.
@@Bratek193 Same here but Concerta has worked wonders for me, I can literally code and sift through documentation for hours. Please try to get medicated, it will make a world of difference. It felt like I had just opened my eyes for the first time.
What about the Logic paradigm & Prolog? That requires a huge mind-twist too..
How does the scheduler of the OS deal with a Verilog program, to execute/evaluate several code statements at once?
Wow I actually did learn all of those in this order!
I've been envying those people who jump straight to web-dev courses and know usefull stuf, and here I am with all those hardware knowledge
But perhaps it is actually good if such god of programming says so
2:49 when i messing with junior ml engineer at first day of work
Entity Component System Architecture seems like a paradigm to me as well........
Learning VHDL makes you appreciate any other language other than assembly
*me trying for hours to center a div using CSS* uhuh, what else
i gotchu:
You have to 'wrap' the element that you want to center (div for example) with a div element, put a class on that div then use css to relate to that div to set "display:flex" and "justify-content: center".
There are definitely other ways to do it (for just text you can only do "text-align: center" on the child div but this is just to have bases covered.
Hope this works lol
Display: grid;
Place-items: center;
That's it.
HTML+CSS is like using magic the gathering to draw rectangles. Fuck that. Give me my shader code.
CSS is not programming but styling or dressing HTML.
I tell you this:
You will learn CSS a 100 times faster than actually learning how to program.
@@jazzyniko css is a lot more annoying than anything I've done with c++. I won't say harder, but I've seen many people who'd rather spend 12hours on a single c++ program than on css.
I am sure he is right, but being more practical I think I should start with Javascript, and Python, maybe c++ if one wants to go a bit deeper. but i don't see how assembly or even c++ will help you code with python or js which are super usefull
What about the stack based (Forth) and array based (APL, BQN, etc) paradigms.
Assembly. At least the basics of it, to learn how a cpu works etc
C. Industry standard.
Python. Perhaps the most human friendly language.
“Code in assembly”
Take your meds
Anyone got any ideas why George mentioned that we should learn pyTorch over Tensorflow? It seems like everything on the internet points the other way.
I came to this EXACT combo on my own! Validation
Something makes me think either something weird is going on outside the window or Lex is trying to scare Hotz..
I had programmed a lot in x86 assembly and also abstracted some classes and functions that generate ASM (I also know C, python and some HDL). However, I do not agree that you need to learn assembly, unless you need to implement complilers, or maybe work in high performance embeded systems. Honestly, I am no better programmer by knowing assembly. C in the other hand will make you a good programmer, giving you a good understanding on how memory, arrays, and pointers work.
I think it's necessary to know C because you need to understand memory layout to write efficient programs. Assembly is useful to understand how the processor works, and necessary when optimization is needed because high throughput dictates it.
@@tetsuoiiii yes agree, but assembly, for most programmers is not required, as an analogy, you do not need to know physics to balance chemistry equations and make predictable and precise compounds. But in some cases physics can be useful in chemistry to explaining things, I see it as different abstraction levels.
I struggled to get started with programming until I started learning assembly. Not that I know assembly, I just have a basic idea of how it works and now I'm not going "What the heck is going on?" when I'm practicing Java
pythorch suggestion was actually good for its time
TLDR of this video according to Hotz: 4 types of paradigm/discipline of programming.
- imperative language (your generic programming language where most of you would be in this category), his top 3: C , Assembly (learning this is important as it helps build intuition on what goes behind the scenes when any code is compiled), and Python.
- functional language: Haskell.
- hardware description language: Verilog (if you've taken an EE/CE course then you know whats up), builds up intuition on concurrent programming
- differentiable language (aka data-driven programming, mainly used for machine learning programs): Pytorch > Tensorflow
god bless you!
While I don’t want to push aside the possibility of benefits gained from learning Assembly or C, I disagree with the notion of the latter two being a requirement in a programmers toolkit.
Programming ultimately is a way of solving a problem. While there may be a vast collection of tools to use for tackling that problem, ultimately, you should pick whatever you’re most comfortable with or whatever gets the job done most efficiently.
Say, I am a frontend developer. Surely, I could get down to the atomic level of how a webpage is constructed and do all of that in either C or Assembly. But why would you do that when you could all do it just as easily at a 100th of the time and effort in languages like JS?
Unless your work requires being closer to the architecture of the computer, there is no reason to not choose whatever works best for you and gets the job done time efficiently.
computers can build beautiful things , after a couple years of studying it becomes clear that machine learning is on another level , 1 that i will hopefully reach sometime in the near future. The best thing about Computer Science is that all you need is a computer to explore it
0:28 tbh assembly is very high level and barely tells you what is going on with a computer. Assembly isn't going to teach you about TLB misses, cache misses, branch prediction, hardware prefetching, pipelining, branch target prediction, or virtual memory. And those are all more important than being able to read assembly imo. I still think assembly analysis can be useful though for looking for branches and loads in the binary and generally getting a very rough idea of how efficient something is (also for checking if SIMD and FMA instructions are being emitted).
Maybe it's because I do 3d graphics that I find Data Oriented Design to be very important. But I did agree with George Hotz's list and found it interesting. My list would be different, but nothing I really disagreed with him on.
IMO, master the one language that will enable you to create the one thing, or things, that you are most passionate about. Then when you've "made it", however you measure that, learn whatever else you find interesting.
There's learning to code for yourself, and then there's learning to code for someone else. My advice is that learning to code for yourself will guarantee your success. If you need to automate your work, and Python's the simplest way to get that done, then learn Python. Even if companies don't say they need your language skills, you will have built so much on your own that there's bound to be someone who will pay for what you're able to create
Learning to code for someone else gives you a clear career goal (get a job with Epic), but the real result of that is that you're fine-tuning yourself for a job competition. One in 350 coders will be selected for the job you're tuning yourself to get. And coding skill probably won't even be what gets the winner their job. It will be the way the candidate made the interviewer feel during the interview. Or the random delightful conversation had in the bar after a conference. Sounds risky.
He just described what we learnt in electrical engineering.
I always wanted to learn C programming. I just found this amazing channel for nerds like me.
the "rooting for success" problem, or lack thereof, related to current platforms is very interesting.....sounds a bit like linkedIn, everyone is forced, largely, to be positive cause its tied to their profressional image
Disclamer: The question answered really is "Programming languages that a computer scientist should learn ".
Tbh "Programming languages that a computer enthusiast should learn that needs to understand the journey and does not care about the results".
I was thinking in a way to explain Assembly and C to people that dont know what's the different between Source Code and an App and man it was going to be looong conversation.
I still think everybody should learn to make a very basic program in Assembly, C, and Python.
A program that computes the area of a rectangle, for example.
_Everybody_ should do that at school or something.
@@Guztav1337 I think programming will be mandatory in the west to at least some extent in school, it's creeping in into every field and will probably become more mainstream curriculum, but I think few will actually work with it, will not become mainstream. Most people tend to shy away from pure logic, just look at math.
@@johndoesson Math is an axiomatic system. Requires integration into a scientific discipline to explain objectivity.
Math in subjective avenues is a fruitless endeavour
I have one: ladder logic for industrial automation.
Yeah, PLCs are fun lol
Verilog is like ladder logic, unrolled back into actual gates (instead of relays).... all the lines execute simultaneously.
It's so basic that one won't really learn anything new from it.
Knowing Assembly often answers the question "what is it really?" Writing in a high level language while having a mental picture of what it translates to, I find valuable. BTW, what came of in the end writing the compiler in the language to be compiled?
"Human Resource Machine" and esp. "Turing Complete" give you the rest. 😅
For not complete novices but programmers in the early stages of their journey, what tools does anyone recommend to learn these low-level programming concepts (no CS degree) or languages such as Assembly and C
pretty much all languages learnt in an electrical engineering degree, assembler/C/C++/VHDL , except Pytorch
Verilog to
I took and Computer Eng elective and got Prolog as well
@@treadstonecorporation9555 loved Prolog ... 35+ years ago
Well, he's right about knowing assembly gives you knowledge about the machine. C gives you memory issues and segfaults. He's wrong in saying those 3 "to start."
Anyone learning should start with Ada, it'll teach you better design from a data and code perspective and you don't really have to use pointers. Start higher, then go lower. Yes, you should learn C, only because of the amount of stuff written in it and so you can bind to those libraries from a higher level language when you need to.
Could the interviewer be anymore bored?
2 second version: assembly C python verilog haskell (write a compiler) pytorch
George hotz, the legend
Heck ya C rocks! Made my fortune coding C. Love it because it is readable yet the syntax will fit in your head without a great deal of effort.
not much you can do with it though. c++ is where its at
@@zarni000 The entire Linux kernel is written in C. You can definitely do a lot of things in C. C++ is an eyesore.
@@Moviemakerminutes of course it is. But do you know how much work it was? I didnt say you cannot do all things. But you basically have to do most everything from scratch. There is a reason c++ was the next generation of c.
@@zarni000 Your literal words were “not much you can do with it though” which implies you couldn’t do all things in it. C and C++ can both do all the things. It’s about tradeoffs. There were reasons for C++, yes, but unfortunately these reasons haven’t been addressed.
@@Moviemakerminutes well I guess I misspoke. I meant not much you can do as efficiently as with c++. Technically you can if course do everything in assembly too that you can do with c++ but the time cost is absurd