Video summary
In this discussion, Brian Kernighan and Lex Fridman explore the evolution of JavaScript from its early reputation as an irregular and aesthetically displeasing language to a dominant force in modern computing. Initially dismissed by academic circles where working with such code was met with ridicule due to perceived ugliness, JavaScript has undergone significant transformation through improved compilation technologies and backend adoption platforms like Node.js. Kernighan notes that while the language itself may still be considered "ugly" compared to others, its efficiency has been refined enough to make it a viable solution not just for front-end web development but also for server-side applications, challenging previous assumptions about where such code could effectively operate. The conversation shifts to how programming experiences have fundamentally changed from the UNIX and C eras of building software from scratch to today's reliance on extensive libraries in ecosystems like Python and JavaScript. Fridman highlights that while leveraging pre-built packages offers convenience, it introduces a lack of transparency regarding dependencies; developers often download massive amounts of code via tools like `pip install` or NPM without fully understanding what they are importing. This shift means programmers no longer build everything themselves but instead assemble solutions atop layers of existing work, which can obscure the underlying mechanics and create significant challenges when troubleshooting complex issues in machine learning projects where dependencies fail unexpectedly. A major point of contention arises regarding security and discipline within these modern package management environments, particularly JavaScript's NPM ecosystem compared to Python's MPM (likely referring to PyPI or similar). Kernighan expresses concern that the lack of control over thousands of different packages creates severe security vulnerabilities, making it risky to run critical infrastructure like a "nuclear power plant" on such systems. He argues that while there is less discipline in managing these dependencies today compared to older days, this freedom comes at the cost of stability and safety, leaving developers with little recourse if an obscure dependency causes system failures or introduces security flaws into their applications. Despite acknowledging JavaScript's importance as a language worth knowing more about for practical experience, Kernighan concludes that it is unlikely to ever "take over the world" in the sense of replacing all other languages universally. He suggests that while the technology has evolved and become efficient enough for serious backend work, its inherent limitations regarding maintainability and security issues prevent total dominance. The dialogue ultimately reflects a nuanced view where JavaScript stands as an important tool shaped by technological advancements but constrained by the chaotic nature of modern dependency management, contrasting sharply with the more controlled environments of languages like C or Python in specific contexts.
Read the full video transcript
so what do you think about another
language of JavaScript that's this well
let me just sort of comment on what I
said when I was brought up sort of
JavaScript pasina's the probably like
the ugliest language possible and yet
it's quite arguably quite possibly
taking over not just a fun in the
backend of the internet but possibly in
the future taking over everything
because they've now learned to make it
very efficient you know so what do you
think about this yeah well I think
you've captured it a lot of ways when it
first came out javascript was deemed to
be fairly irregular in an ugly language
and certainly in the academy if you said
you were working on JavaScript people
would ridicule you it was just not fit
for academics to work on I think a lot
of that has evolved the language itself
has evolved and certainly the technology
of compiling it is fantastically better
than it was and so in that sense it's a
absolutely a viable solution on backends
as well it's the front-end used well I
think it's a pretty good language I've
written a modest amount of it and I've
played with JavaScript translators and
things like that I'm not a real expert
and it's hard to keep up even there with
the new things that come along with it
um so I don't know whether it will ever
take over the world I think not but it
it's certainly an important language and
where's knowing more about there's this
may be to get your comment on something
which JavaScript and actually most
languages of Python such a big part of
the experience of programming with those
languages includes libraries sort of
using building on top of the code that
other people have built I think that's
probably different from the experience
that we just talked about from UNIX and
C days when you're building stuff from
scratch what do you think about this
world of essentially leveraging building
up libraries on top of each other and
leveraging them yeah that's a very
perceptive kind of question one of the
reasons programming was fun in the old
days was that you were really building
it all yourself but the number of
libraries you had to deal with
quite small maybe it was printf or the
standard library or something like that
and that is not the case today and if
you want to do something in you
mentioned Python and JavaScript and
those are the two finding examples you
have to typically download a boatload of
other stuff and you have no idea what
you're getting absolutely nothing
I've been doing some playing with
machine learning over the last couple of
days and gee something doesn't work well
you pip install this okay and down comes
another gazillion megabytes of something
and you have no idea what it was and if
you're lucky it works and if it doesn't
work you have no recourse there's
absolutely no way you could figure out
which in these thousand different
packages and I think it's worse in the
MPM NPM environment for JavaScript I
think there's less discipline less
controller and there's aspects of not
just not understanding how it works but
they're security issues is there Busta's
issues so you don't want to run a
nuclear power plant using JavaScript
essentially Oh probably not
you