Тёмный

Funky Music from Functional Programming - Computerphile 

Computerphile
Подписаться 2,4 млн
Просмотров 69 тыс.
50% 1

Functional Programming is often considered the stuffy tool of academics, but can it be used for creative and entertainment applications? Dr Henrik Nilsson demonstrates one application built with Reactive Functional Programming.
Quantum Computing 'Magic': • Quantum Computing 'Mag...
Dijkstra's Algorithm: • Dijkstra's Algorithm -...
Conference paper on the Arpeggigon:bit.ly/Computerphile_Arpeg_Con...
Technical report on the Arpeggigon (extended version of the above):
bit.ly/Computerphile_Arpeg_tech
The open source code:
bit.ly/Computerphile_FRP-Code
The Reactogon: bit.ly/Computerphile_Reactogon
/ computerphile
/ computer_phile
This video was filmed and edited by Sean Riley.
Computer Science at the University of Nottingham: bit.ly/nottscomputer
Computerphile is a sister project to Brady Haran's Numberphile. More at www.bradyharan.com

Опубликовано:

 

5 янв 2017

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 110   
@wohdinhel
@wohdinhel 7 лет назад
Hmm... Human music. I like it.
@yyny0
@yyny0 7 лет назад
Reference
@MisterBerdill
@MisterBerdill 7 лет назад
11/10 reference
@flowerman581
@flowerman581 7 лет назад
wohdin +
@JustinWarkentin
@JustinWarkentin 7 лет назад
Unfortunately I think this video did a poor job of explaining anything about what functional reactive programming is. It's a very powerful concept and it's not tied to any specific languages or frameworks though there are some excellent frameworks out there for it. It is very useful for large, complex or distributed systems like he said but he didn't really explain why at all. It kind of sounds like he doesn't have a strong understanding of it himself.
@luffyorama
@luffyorama 7 лет назад
I'm interested with functional programming (Haskell) but still don't have time to learn it (and I'm still struggling learning with Python and Fortran though lol). I hope someday I can learn a thing or two about functional programming.
@keiwando
@keiwando 7 лет назад
Yeah, I have to agree. The software he shows is nice but it can obviously also be programmed in most other (non-functional) languages as well and I would have instead really liked to hear a - maybe more technical - explanation on what the concept of FRP really is. If I didn't already know what a perfect fifth and a major third are I would have learned more about music than about functional programming in this video - but as it is I don't think I learned much.
@lord123abc
@lord123abc 7 лет назад
I agree. However, it's unfair to assume he doesn't have a great understanding of it.
@phiefer3
@phiefer3 7 лет назад
The purpose of this video wasn't to explain what frp is, they have a few other videos on function programming. This video, as the description explains, is simply to show a more hands-on example of something that could be done with it, as opposed to videos that just explain what it is without really demonstrating ways of applying it.
@JustinWarkentin
@JustinWarkentin 7 лет назад
phiefer3 You can do anything with it. It's just one approach to solving problems. This video didn't even tie the concept to the demonstration well. But, my main complaint was that they specifically mentioned FRP and asked for an explanation of it in the video but that request was not met.
@bowiebrewster6266
@bowiebrewster6266 7 лет назад
not trying to be an asshole here- but some subtitles would really help me understand
@AzazeoAinamart
@AzazeoAinamart 7 лет назад
I'm not a native english-speaker but have no problem with understanding this video
@renaared
@renaared 7 лет назад
we do.
@lucaspelegrino1
@lucaspelegrino1 7 лет назад
Me too! I'm not a native speaker, so I can't understand a lot
@ricodelta1
@ricodelta1 7 лет назад
thats racist
@corkhead0
@corkhead0 7 лет назад
His accent is fine, clean the mud out of your ears.
@ILDiEnne
@ILDiEnne 7 лет назад
Am I the only one who appreciates that the pattern of the buttons in the program is similar to the pattern on the chairs?
@Lugitaro
@Lugitaro 7 лет назад
This kind of music makes me think of Electroplankton on Nintendo DS.
@williamstenberg1391
@williamstenberg1391 7 лет назад
Would be interested in how those syntax structures in frp deal with time.
@clul100
@clul100 7 лет назад
If you make a video with him again, please tell him to talk slower. Especially as a non native english speaker I only understand every other word.
@PsyciCJuuN
@PsyciCJuuN 7 лет назад
put the video on 0.5 speed
@FrozenDroidGaming
@FrozenDroidGaming 7 лет назад
He just has a very hard to understand accent.
@NathanTAK
@NathanTAK 7 лет назад
It just occurred to me this hasn't been said yet: Play that funky music, white boy.
@Architector_4
@Architector_4 7 лет назад
Can the resulting masterpiece be exported in .mid file to develop it further in other DAWs?
@guerricchupin3134
@guerricchupin3134 7 лет назад
Not yet, but it's a feature we're willing to implement ;)
@henriknilsson9872
@henriknilsson9872 7 лет назад
Indeed. Meanwhile, as the application is MIDI-based, the generated MIDI data could simply be recorded using any kind of MIDI recorder capable of saving the data as e.g. a standard MIDI file.
@NoahBirnel
@NoahBirnel 7 лет назад
Where is the source code?
@younessamr6802
@younessamr6802 7 лет назад
the software is written in Haskell
@MatthewHaydenRE
@MatthewHaydenRE 7 лет назад
Youness Amr knowing Henrik, probably Yampa.
@daniloimparato
@daniloimparato 7 лет назад
I wonder what would happen if one played game of life on top of this
@BurnabyAlex
@BurnabyAlex 7 лет назад
6:50 you can use reactive programming in manufacturing. When you want everything to sync up before shipping. A sale triggers a pull from manufacturing which triggers a pull from inventory or from vendors.
@TimTeatro
@TimTeatro 7 лет назад
What toolkit are you using for graphics? What language is it implemented in?
@TheBedrockCreeper
@TheBedrockCreeper 7 лет назад
I tried it out, but I must have issues with my audio setup because each node had a random chance that it would play the note. The virtual midi keyboard I was using seems to work though. The GUI is super polished though, shiny!
@TheMasterpikaReturn
@TheMasterpikaReturn 7 лет назад
Uh some more Haskell. I like it.
@sarimsiddique142
@sarimsiddique142 7 лет назад
The only thing I got out of this video was that it's built using real functional programming. The Doctor's English is really hard to understand too.
@moycakes
@moycakes 7 лет назад
Oh hey, I remember the Reactagon from ages ago. I actually wrote something like this inside of Secondlife again, many years ago. But my version had about a dozen different tiles to use, instead of just the start arrows, redirection arrows, and the burst.
@ChrisOfChin
@ChrisOfChin 7 лет назад
second life lol
@unhealthytruthseeker
@unhealthytruthseeker 5 лет назад
A two-dimensional grid like this can actually be used to implement much better tuning systems than 12 EDO in a transposition invariant way. For example, both meantone temperament(s) and Pythagorean tuning can be implemented with a 2d lattice structure. Any "rank-2" temperament can be implemented in this way.
@skvello
@skvello 7 лет назад
I can see this thing being encapsulated into a VST plugin which you can then use in your favourite DAW using your own samples.
@dealloc
@dealloc 7 лет назад
I guess you could use STG (from GHC) to generate assembly for the actual logic, but you'd still need a layer for VST/AU plugin that you can run it on. Shouldn't be impossible, but certainly more complicated than writing it in pure C/C++.
@henriknilsson9872
@henriknilsson9872 7 лет назад
Not sure how feasible it is to actually turn the application into a real VST plugin. Would certainly require a fair bit of work in terms of library bindings etc. if it is feasible. That said, it communicates over MIDI, so it can be interfaced to any software/hardware that "speaks" MIDI, including pretty much any DAW. RIght now, it uses JACK for MIDI.
@ambarchakravartty8180
@ambarchakravartty8180 6 лет назад
Which programming language has been used in making this software
@munthon
@munthon 7 лет назад
Don't know about music but in web servers RFP is already the thing not only for Drs in universities but actual products for every day use.
@nexit1993
@nexit1993 7 лет назад
Seriously I want to install their programm but the Install Guide on their website is so short that I am not sure where to start. I never heard of Funktional Programming... What Liberies are neccassary? What is a Jack Server? .....
@BasteballGame
@BasteballGame 7 лет назад
The next time you make a video about sound, please stop talking for a few seconds so we can actually hear the sound. Every time he hits play he (and the interviewer) just talk over it.
@tpat90
@tpat90 7 лет назад
It's actually about the program, not about the sound. If you want to hear the sound, download the program and use it yourself. This video is direct at program interested people, to see the some RFP in use and that it can do more than calculate some formula.
@BasteballGame
@BasteballGame 7 лет назад
I get it. I really do. As a programmer who's also a musician, I'm interested in both. Presumably the purpose of this video was to a) explain what functional reactive programming is, and b) to demonstrate something cool that was built using it. When it came to (b), the video ruined the demonstration by talking over the sound the cool thing was making. Also, suggesting that someone - whose computer literacy you cannot assume is very high - download source code and set up a Haskell SDK to run it in order to enjoy a sound that was supposedly a central feature of a video is simply ridiculous.
@tpat90
@tpat90 7 лет назад
I suggest that any person, who is interested in RFP, can setup a Haskell SDK to run it. If the person can't do so, he will learn it. Learning to read the doc is important, if you can't read the doc, you will have a hard time on stackoverflow.
@dealloc
@dealloc 7 лет назад
+Jay Young It wasn't specifically about what FRP is, but rather a showcase on how it could be used. It was also not to demonstrate how it makes sound, but just the application itself in general.
@TXWatson
@TXWatson 7 лет назад
Tried to figure out how to install it (starting from roughly zero programming knowledge) but I've given up due to lack of perseverance. If this ever makes its way into being an app that can be downloaded as a single program that can run itself without scaffolding, I hope you let us know -- this is really cool and I'd love to play with it.
@henriknilsson9872
@henriknilsson9872 7 лет назад
Yes, we know getting it up and running unfortunately at present requires a fair bit of knowledge. We definitely want to make installation a lot easier, and we want the application to run on major platforms, but the time we have to work on those aspects is limited. That said, we are very happy to know you find the program interesting: such feedback will certainly encourage us to take this further.
@lkbergen
@lkbergen 7 лет назад
if this is able to sync with midi clocks within a DAW, this will make for a great VST/AU.
@henriknilsson9872
@henriknilsson9872 7 лет назад
It doesn't yet synch to MIDI, but that is high up on our list of priorities to add. Would indeed open up for a lot more applications for people interested in experimental music. But it is also interesting to see how to best express synchronization in FRP.
@krasserkalle
@krasserkalle 7 лет назад
Would be nice if the arpeggigon had an actual installation instruction (especially of the dependencies) or even better if the installation would be straightforward...
@sinom
@sinom 7 лет назад
as soon as you add the abs(x) fuction you can make any logical gate and through that just emulate a pc with a normal language on the pc q:
@YanPashkovsky
@YanPashkovsky 7 лет назад
So what are the benefits of writing such program in Haskell e.g. instead of Java e. g.?
@henriknilsson9872
@henriknilsson9872 7 лет назад
There are two aspects to this. Firstly, all the usual benefits of functional programming applies. Such as clear and concise code, fewer bugs, etc. Of course, opinions vary, but at least in my opinion, the accumulated evidence is by now compelling. Secondly, Functional Reactive Programming (FRP), like other similar paradigms such as synchronous dataflow, lets you express aspects specific application domains where time is central (such as music) more directly, which also translates to easier-to-write, clearer code with fewer errors. In particular, one can program with time-varying entities directly and as a whole (such as the hexagonal grid with the tokens that is allowed to be changed, even while the Arpeggigon is running), rather than having to express this through a framework of events and call-backs leading to the dreaded "call-back soup" and inversion of control. Additionally, the particular flavour of FRP used here (Yampa) allows you to program directly with both discrete and continous time, which is helpful for musical applications. For example, notes being played happen at discrete points in time, while a crescendo is a gradual change over time. Now, it is of course possible to implement FRP or FRP-like frameworks in pretty much any general-purpose langauge. This has been done successfully a number of times (ReactiveX and Cycle.js spring to mind). And that is the whole point: one should strive to use a language that is appropriate for the problem at hand, and if the language that one is using isn't quite there, then strive to adapt it to the extent possible. Which is the idea of Embedded Domain-Specific Languages (EDSL). And this last point brings another strength of functional languages to the fore, and then perhaps Haskell in particular: they are truly excellent host languages for EDSLs.
@shiningarmor2838
@shiningarmor2838 7 лет назад
I've seen this instrument before!
@TimTeatro
@TimTeatro 7 лет назад
I'm a bit irritated that the video makes it sound as if FRP is a language, and that it isn't available to C or Java programmers. FRP is a paradigm and collection of patterns. It's a style of software architecture. (And yes, I know around 6:00 there is a clarification, but not one that seems to balance the misunderstanding very well.)
@Desmaad
@Desmaad 7 лет назад
I recognize the hardware synth he's using is a Yamaha one, but I can't remember the exact model number. I know it's a desktop version of the SY-22 range.
@thimkthimk
@thimkthimk 7 лет назад
TG-33.
@wobblycogsyt
@wobblycogsyt 7 лет назад
I don't think he really got across what it was he was trying to achieve or why functional programming made things easier. The software looked fun but I didn't see anything that would be difficult to develop in a non-functional language.
@0214hjalle
@0214hjalle 7 лет назад
A Philip Glass app:)
@ThatGuy-nv2wo
@ThatGuy-nv2wo 7 лет назад
I don't get what he's saying, not in the term of actual words, but this would be very easy to make in C
@jakayboy
@jakayboy 7 лет назад
Not very funky, but interesting nonetheless reminds me of the tenori-on by Yamaha maybe it could be programmed onto a tenori-on possibly.
@cropotkin
@cropotkin 7 лет назад
it would be better if you actually let us hear the music without talking over every single example
@kevnar
@kevnar 7 лет назад
I made a music program that uses a subdivide and displace 2D terrain generation algorithm, and maps the height field to notes on a piano. It was pretty cool. It had a smoother flow than simply throwing down random notes in a scale.
@kevnar
@kevnar 7 лет назад
There's a couple of examples of other programs I made with more advanced algorithms. If you PM me, I can send you a link to my latest one.
@elraviv
@elraviv 7 лет назад
This video did NOT explaining a thing about functional reactive programming.
@WilliamWallace14051
@WilliamWallace14051 7 лет назад
It would have been nice to let the examples play briefly without speaking over them.
@Managarm
@Managarm 7 лет назад
Reminds me of launchpads...
@code-dredd
@code-dredd 7 лет назад
So, why would someone want to use the tool they showed, or something like it, instead of another tool that actually shows things like musical notes and so on (i.e. things musicians can read and understand)? Is this supposed to be use for *algorithmically generating new music* or something along those lines? In other contexts (e.g. games), it seems purely functional programming might not have a lot of advantages and might actually have quite a few disadvantages. For example, one reason I see is that, in high-performance applications, the results of expensive calculations are often stored/cached in variables in order to avoid the unnecessary expense of re-calculating the same value repeatedly.
@tpat90
@tpat90 7 лет назад
It's a thingy to play around with, a project somebody build for fun. At least in my circle of friends there aren't many people that enjoy programming functional, we are mostly a bunch of object oriented jerks and it's a joy to see some other approach to a program like this. The music part is a neat thing, playing around with the code and maybe thinking about it, is the actual practical thing here.
@iAmTheSquidThing
@iAmTheSquidThing 7 лет назад
The harmonic table is not a new invention. Though not as common as the piano keyboard, It's been around for a long time. It's often used on accordions.
@code-dredd
@code-dredd 7 лет назад
Patrick Abraham I can see some applications where the functional programming paradigm might be beneficial in contrast with OOP, especially if the correctness of a system needs stronger guarantees, and so on, but the video looks like it's about the professor's research area, which just happens to be using the functional approach as a matter of preference. (He did admit that other languages could've been used, the difference being that they would've had to create an external library or framework to express their concepts instead of building it directly into the language itself.) Research is usually funded by grants, and if its a public institution, grant money may in fact be taxpayer money. In any case, it seems rather pointless to have a funded research-level project (the professor does get a salary) where the aim is to have what boils down to a "fun toy" with no apparent, or intended, practical application. Now, I understand that the point of the video (based on some of the questions asked) is to show one "practical" (i.e. real-world) application of the functional programming paradigm, which his project aims to show, but the lack of a real-world problem being addressed by using that paradigm ends up coming across like a self-inflicted shot in the foot :c I would've liked to see an application where a real world problem is being solved or at least addressed in some way, but either the video does not focus on that enough to make it justice, or the project itself is as pointless as I thought it was based on my initial impression and the professor's description, or I just didn't get why that project is worth the formal research effort at that level.. :/
@code-dredd
@code-dredd 7 лет назад
+Alan Hunter Thanks for responding. I'm getting the impression that you might be mixing different concepts due to (admittedly) easy-to-confuse terminology. Please see what I mean below, and I'll try to be explicit to avoid further confusion and ambiguity. >> The graphics card in your computer is a highly efficient machine built specifically for functional programming approaches. GPUs are built mainly to exploit the benefits of parallelism and have high throughput. Yes, you can write functions, but writing a function (i.e. a procedure) is *not* the same as using a language that supports the functional *programming paradigm*. The OpenGL Shading Language (GLSL) supports a procedural (aka: imperative) programming paradigm, like C. It's does not support the functional programming paradigm such as Standard ML and Racket (formerly Scheme) do, where functions (i.e. procedures) are considered "first-class citizens" and also never produce any side-effects (e.g. modify variables, because in purely functional languages, there're no "variables"; see later). My guess is that you might be getting confused with the term "functional". >> In the functional approach there you do still have stored and cached variables. They are however static to the iteration they are used in and usually the result becomes the value of that variable for the next pass. Hence, why I said there were no "variables" above, but I'd use the term "constant" rather than "static", as they mean different things. For example, if you write a program in Racket, the "changes" in the "variables" occur when you invoke functions with modified values passed in, *but the original "variables" remain unchanged like constants*, because, as mentioned, direct assignments are not allowed; loops are implemented by means of recursion (you have to, otherwise, you'd need to make direct variable assignments and produce side-effects, which is a no-no in functional programming paradigms) But ultimately, all of these approaches are forced to compromise somewhere because all of our machines are based on Turing Machines. >> Then a vertex shader is ran for every vertex in the geometry. Inside the vertex shader you can't look up one of the other vertices in the geometry. The entire vertex shader is just a mathematical transform converting the programmer's representation of the geometry into screen coordinate representation That is true, though unrelated. The vertex shader is simply one stage of several in the modern graphics pipeline. (I'll be using OpenGL for the purposes of discussion.) Vertex shaders are written in GLSL, and GLSL is not a functional language; it's a procedural/imperative language. In fact, you can quickly notice this because variable assignments are possible in GLSL. For example, at a minimum, a vertex shader must assign a result to the built-in variable called gl_Position. A pure functional language is not supposed to allow assignments to variables; those are the "side-effects" I mentioned previously. >> and possibly passing some data along to the pixel shaders that will run later. In the case of GLSL, both vertex and fragment shaders are the required minimum, so you *always* pass something from one to the other. (The fragment shader is the equivalent of a pixel shader in HLSL.) >> the GPU will mix those colors for you avoiding the need to know about neighbors. We leverage this function for a lot of really cool dirty tricks. [...] It's all highly functional in nature. Yes it's "functional" in the sense that it has a lot of functionality (i.e. lots of built-in features that we don't have to re-code, like a library), but the fact that the graphics pipeline has "functions" is *not* the same as saying that it's "functional" in the programming paradigm sense. This is the main reason I think you're likely confused with the terminology. By your reasoning, the C language would also be "functional", when this is really not the case. In fact, C does not even support the object-oriented programming paradigm (and I'm not suggesting this is somehow a "bad" thing), even though you can use structs *as if* they were "classes" with public members. >> You are crafting a mathmetical function to run across every element for a given stage of the pipeline. Yes, but writing a function can be done in any language regardless of whether it supports the functional paradigm. You can write functions in C, C++, Python, Perl, Bash, and so on, none of which support the paradigm. In the functional paradigm, you have to think about the problems you're trying to solve in fundamentally different ways, relative to other paradigms such as object-oriented, imperative, or logical (e.g. Prolog), whereas the purpose of a "function" in any program/language is to encapsulate a reusable portion of logic. You can implement functions in all of the above languages, even though they support different paradigms. >> Your data and functions absolutely have to be able to stand independently but yet also work cooperatively without any real team work involved. Yes, but as I've (hopefully) clarified by now, this has nothing to do with functional programming languages, in the paradigm sense. >> The crazy thing is, this approach has turned out to be game changing for fields that have to deal with a lot of data or a lot of computations. The reason the programmable gfx pipeline is such an improvement is that it gave more control and power to developers, which used to be constrained by the fixed/non-programmable immediate-mode pipeline, which in addition to being very inflexible (i.e. you couldn't change it), was also a bottleneck... with the modern programmable pipeline, developers could now write their own set of custom shaders in a C-like high level language (i.e. not GPU-specific assembly instructions) and were no longer constrained like before. In fact, OpenGL is modeled after a Finite State Machine (FSM), and pretty much everything you do with an OpenGL function call (e.g. glFrontFace) is change the internal state of the FSM. In short, the modern graphics pipeline is really not "functional" at all in the sense of the programming paradigms.
@illustriouschin
@illustriouschin 7 лет назад
I want to see an existing song played on this. surely something classical wouldn't be copyrighted.
@illustriouschin
@illustriouschin 7 лет назад
Sari Masu nuh uh
@TheOnlyLonelyMonkey
@TheOnlyLonelyMonkey 7 лет назад
+Sari Masu :*
@Managarm
@Managarm 7 лет назад
Search for songs played on launchpads, they seem to be quite similar (and much more colorful ^_^).
@fburton8
@fburton8 7 лет назад
+Gordon Chin I may have misunderstood what the program is for, but it appears only to produce more or less complex patterns, at least as demonstrated. To create something people would recognize as a song or classical piece would require some very contrived and inefficient 'programming'.
@Epinardscaramel
@Epinardscaramel 7 лет назад
He works in the f**ing programming lab?
@illusionists
@illusionists 7 лет назад
lol, white European definition of funky music is Kraftwerk
@garryiglesias4074
@garryiglesias4074 7 лет назад
We are the robots...
@henriknilsson9872
@henriknilsson9872 7 лет назад
:-)
@sethapex9670
@sethapex9670 7 лет назад
I wish programming could be made easier for the user.
@whydoihavetodothisannoying
@whydoihavetodothisannoying 7 лет назад
It's so easy to start coding, making it any easier would make a lot of low level IT jobs vanish.
@JamEngulfer
@JamEngulfer 7 лет назад
When you increase ease of use, you decrease how powerful it is. Things like Scratch are very easy to use, but they don't do much.
@ABaumstumpf
@ABaumstumpf 7 лет назад
it is easy already - depending on what you want to do and what language you want to use. But there is nothing for free - if you want a really simple solution, than it won't be flexible. You could look at processing - a java-based environment with a graphical interface already build in. really easy to get going, but as soon as you try anything bigger you notice the performance is horrendous. drawing just a few simple cubes the easy way, like 100 of them, can already drop you below 30 fps. You can then switch the render-mode and use a bit better structured program to go past 100 again, or you go all the way and write correct shaders and you can draw a couple hundred or even thousand boxes and still have over 100 fps.
@JoQeZzZ
@JoQeZzZ 7 лет назад
Programming isn't made for the user. Programming creates a program that is made for users.
@UberMun
@UberMun 7 лет назад
I mean you managed to learn english and mathematics right? well programming is for the most part pretty much jus baby-talk english with high school math strewn in every so often.
@MasterQueb222
@MasterQueb222 7 лет назад
I don't really get what's cool about this
@ondrejrypacek7949
@ondrejrypacek7949 7 лет назад
That it is written in a purely functional language, Haskell.
@MasterQueb222
@MasterQueb222 7 лет назад
Yeah I guess that must have been hard haha but still
@r4uz
@r4uz 7 лет назад
So what? Does it make the music better?
@dealloc
@dealloc 7 лет назад
The point is not to make the music better, but to showcase how Functional (Reactive) Programming can be used to write applications. Since OOP is still the most wildly used paradigm, it's nice to have a video on how FRP can take small and simple things and put them together like bricks without a massive amount of glue (interfaces, classes, etc.) by using functions.
@DaRealBzzz
@DaRealBzzz 7 лет назад
Most "meh" video of the entire channel. Maybe of all of Bradys channels...
@procactus9109
@procactus9109 7 лет назад
What? Why is this guy talking?
Далее
How Machine Language Works
19:48
Просмотров 943 тыс.
ОСКАР И ДЖОНИ БРОСИЛИ НАС 😭
01:00
Кто то встречал их на улице?
00:59
Has Generative AI Already Peaked? - Computerphile
12:48
Game Physics (in Assembler) - Computerphile
19:24
Просмотров 711 тыс.
Just In Time (JIT) Compilers - Computerphile
10:41
Просмотров 263 тыс.
Babbage's Analytical Engine - Computerphile
13:26
Просмотров 219 тыс.
Dijkstra's Algorithm - Computerphile
10:43
Просмотров 1,3 млн
Why Does Scrum Make Programmers HATE Coding?
16:14
Просмотров 503 тыс.
CONCURRENCY IS NOT WHAT YOU THINK
16:59
Просмотров 89 тыс.