Тёмный

Simon Peyton Jones - Haskell is useless 

bunidanoable
Подписаться 306
Просмотров 365 тыс.
50% 1

Simon Peyton Jones talking about the future of programming languages

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

 

31 май 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 558   
@johnmurphy9727
@johnmurphy9727 3 года назад
I love seeing this recommended to me when I have an exam in haskell in an hour
@bahioTeixeira
@bahioTeixeira 3 года назад
same here
@rufengma3873
@rufengma3873 3 года назад
hahaha
@leonardodias3393
@leonardodias3393 3 года назад
This didnt age well
@lampamarc365
@lampamarc365 2 года назад
i have an exam in haskell today hahaha
@johnmurphy9727
@johnmurphy9727 2 года назад
@@lampamarc365 good luck 0.o
@jameseiner
@jameseiner Год назад
It's so funny to see some wizards discuss their powerful spells
@tykjpelk
@tykjpelk 10 месяцев назад
Restoration is a perfectly valid school of magic.
@triggerost9023
@triggerost9023 2 года назад
Worth to mention that he is a lead developer of GHC. And I think this is called academic spirit.
@intangiblematter_misc
@intangiblematter_misc Год назад
This just makes it 100000x funnier
@ya64
@ya64 7 месяцев назад
I would argue that the heat produced by the black box could be considered a side-effect.
@BazIrvine
@BazIrvine 3 года назад
They have a purpose, they have competence and they get to create daily this is why these fellas are so happy.
@anweshbhattacharya8017
@anweshbhattacharya8017 2 года назад
Underrated comment.
@richard759
@richard759 5 лет назад
I love the spirit of the video. 2011, man it feels so far away
@markgreen2170
@markgreen2170 4 года назад
"feels so far away" ...Haskell was the first computer language I learned, first year of cs, at UT Austin 1996-2000 ...revisiting my roots.
@BrandonS-lk2qc
@BrandonS-lk2qc 4 года назад
Mannnn....you said it. Time dilation is weird since the advent of the computing age. I remember 1997 less fondly than 2011, which also is more nostalgic, despite being more recent
@CripplingDuality
@CripplingDuality 3 года назад
@@markgreen2170 blows my mind...my first was C. Many of my peers and those after me first learned Java, PHP, or worse, Javascript.
@SamWhitlock
@SamWhitlock 3 года назад
@@markgreen2170 how was it going to less "useless" languages (according to Simon's definition)? I imagine going from Haskell to C or primitive C++ was a shock!
@markgreen2170
@markgreen2170 3 года назад
@@SamWhitlock Yes, it took some getting used to ...everything we did in Haskell was a recursive function! Once I learned the data structures and understood pointers in C/C++ I was good.
@asdfghyter
@asdfghyter 8 лет назад
That last bit is so true. Once a feature is is implemented in Haskell, some mathematician will realize that it is related to some field of mathematics in a way that says that the feature is fundamental for the whole structure. Also, there will of course be contravariant versions of the feature that may or may not be more useful than the original version.
@JAt0m
@JAt0m 7 лет назад
Best comment on this video. There's so much to draw from this conversation and so little actually being drawn from it (judging from the other comments).
@willmcpherson2
@willmcpherson2 5 лет назад
Jan Wirth Agreed It’s a 6 minute conversation spanning multiple fields, multiple paradigms and multiple decades
@asdfghyter
@asdfghyter 2 года назад
@r f Yes, of course. My point is (I think - I made this comment five years ago) that it is a two-way street and that constructs that were made for purely pragmatic reasons often are discovered to be significant mathematically, which then allows Haskell to use more of the same mathematical abstractions.
@gayxor
@gayxor 2 года назад
why does it take haskell to implement tings so that a mathematician to "realize" things exist i dont see the key position haskell has here. cant any mathemtician relate anything from any programming language with math
@asdfghyter
@asdfghyter 2 года назад
@@gayxor It's way more difficult to make mathematical models and connections in an imperative language than in a declarative language that is already so heavily inspired by mathematics.
@H3idil3in
@H3idil3in 9 лет назад
These comments from people not seeing one of the (main) designers of Haskell is making fun of Haskell's development (and programming languages in general) ;-)
@MercedeX7
@MercedeX7 6 лет назад
Don Heidi really?
@YashasLokesh287
@YashasLokesh287 4 года назад
Mercede look him up on RU-vid
@MasthaX
@MasthaX 3 года назад
Well he's right though. It's useless for most general use cases. But very useful when having defined data/state. But if you'd go pure why not go assembly.. control every register, memory address and modes.. It's allot of work surely, but it can be done. You'd also be writing lot's of nice reusable code. Downside it may be too architecture specific.
@dustvoice
@dustvoice 3 года назад
@@MasthaX Because those two things differ in the underlying concept?! "why not go assembly.. control every register, memory address and modes" - This is called an imperative programming language. Haskell is NOT imperative by design. It's a functional programming language. HUGE difference there. Haskell is for example mathematically provable, assembly magnitudes harder to do that. It has nothing to do with "pure". It's different use cases. There is no one to rule them all programming language and there never will be. You use what is useful and correct for the job. I can recommend getting some reading into some introductory lectures about object oriented, imperative and functional languages of computer science offering universities, for anyone interested in the concrete details. I learned a LOT when I had them and there are several universities offering such free resources.
@cnidariantide4207
@cnidariantide4207 3 года назад
I have this problem a lot, where people react negatively to the irony in a statement-whereas the irony is the very thing which makes it interesting and memorable.
@chrisxdeboy
@chrisxdeboy 10 лет назад
Nirvana, is that a variant of Lisp?
@ulissemini5492
@ulissemini5492 5 лет назад
this comment made my day
@alonzoc537
@alonzoc537 4 года назад
I think it's a scheme...
@niiksaak
@niiksaak 4 года назад
you meant a *subset* of lisp
@ecranfortessa
@ecranfortessa 3 года назад
Rock band
@insertoyouroemail
@insertoyouroemail 3 года назад
sneaky devil
@leonie9248
@leonie9248 2 года назад
These people are so wonderful, geeky and lighthearted. :) I’m proud to learn Haskell to be a Plutus Cardano developer!
@ianb7400
@ianb7400 2 года назад
I had the same reaction - we need more of this energy in computer science! I'm also learning me a Haskell for Plutus development. Nice to find a fellow traveler here
@chrismetsios4005
@chrismetsios4005 2 года назад
Same gere
@nataestanislaubastos7637
@nataestanislaubastos7637 2 года назад
now haskell is going main stream baby
@ye_boi
@ye_boi 2 года назад
​@@nataestanislaubastos7637 do you mean that haskell is going to rise in popularity and you have reasonable arguments that this is going to be the case?
@nataestanislaubastos7637
@nataestanislaubastos7637 2 года назад
@@ye_boi It is just that a lot of people are learning haskell because of plutus. Probably plutus is gonna be the killer app of haskell.
@diwr
@diwr 12 лет назад
thanks for upload this. It was insightful!
@imadetheuniverse4fun
@imadetheuniverse4fun 2 года назад
Man I could watch hours of this kind of open discussion.
@Jimserac
@Jimserac 6 лет назад
I'd love to hear Simon's impression of "A Discipline of Programming" by Dijkstra. I spent some months back in 1981 reading and working through this book and ended up criticizing it for its presumptuous and supercilious approach while at the same time admiring the elegance of, ofr example, the problem of the Dutch National Flag colors. Would Peyton accept or deny the formalism attempted by Dijkstra. Because if he accepts it, then the path to the ideal programming language could be worked out symbolically rather than at the other end, by a bunch of bumbling humans going by their feelings.
@whukriede
@whukriede 2 года назад
I would consider that very book of Dijkstra's the bible of imperative programming done right. Yes, the functional world takes a decidedly different approach. Both methods (what they have in common is that they are founded on sound mathematics) are to be admired, but I do not understand how they're connected to each other. They must be somehow.
@gloverelaxis
@gloverelaxis 4 года назад
i'm very much a fan of explicitly annotating functions as either a) "pure functions" which are systematically prevented from performing any side-effects (or calling any effectful functions) or b) "pure procedures" which can call any other type of function, but which are prevented from returning any values. i think it would be a very useful feature in any language, compiled or interpreted!
@programagor
@programagor 2 года назад
Returned values are useful to determine if a procedure completed successfully.
@jkf16m96
@jkf16m96 2 года назад
@@programagor if the language supports exceptions, that's the way to go with that.
@alucinorbeats
@alucinorbeats Год назад
@@jkf16m96 Using exceptions to control flow can get a bit convoluted. IMO a return type that strictly related to the procedure's outcome, not including any internal details, is a good middle ground. I think the purity of functions matters more than the purity of procedures.
@andrewsauer9669
@andrewsauer9669 Год назад
Nice to see smart people chillin and discussing high level ideas
@markmiller7686
@markmiller7686 9 лет назад
It was a nice surprise seeing Butler Lampson "pop" in at the last moment. :) I am a bit concerned about this construction of "useful and safe" as the ideal. What I've seen of the "useful" languages is that they're usually clunky in how they express ideas, and the nice thing about the "useless" languages is that they usually express ideas beautifully. I wish such discussions would add a third axis called "expressive," because humans have to read code, and I think it would be better if the expression of useful ideas had less cruft in it, or at least didn't mandate it, allowing it to be added where necessary to cement some formal protocol if that's desired.
@SeverityOne
@SeverityOne 4 года назад
The problem with this beautiful, functional code is that it is, by and large, useless, as the title of this video states. It's lovely that you can express a quicksort in just a handful of characters, but the overwhelming majority of developers never have to write a quicksort. For one thing, it comes as part of a standard library. The vast majority of programmers write programmes that get data from persistent storage, perhaps process it a little bit, and present it to the user, or the other way around: they take input, perhaps process a little bit, and put it in persistent storage. The "perhaps process it a little bit" is where functional programming comes in. But it's so little, that it doesn't warrant using a purely functional language. What you can do is use the functional style, which is becoming easier to do with the likes of Java > 8 and such. It isn't pretty, it's a bit of a hack (as are many things in Java), but it works. I find this video, with one of the creators of Haskell calling it useless, refreshing when set against all those "OOP sucks because it isn't functional and functional is pure so it must be good" videos out there, with people talking absolute rubbish for the best part of an hour.
@skull4110
@skull4110 3 года назад
Ahhh good ol conversations from the before times.
@derloopkat
@derloopkat 8 лет назад
not switching on you PC is the safest thing you ever can do
@MrCmon113
@MrCmon113 7 лет назад
No, that is guaranteed disaster. Or like my professor said: "It's very hard to imagine a computer scientist without a computer."
@sirknight4981
@sirknight4981 5 лет назад
@@MrCmon113 Isn't that basically what the first computer scientist were? Maybe that's what your professor was talking about but I have no real context.
@Uncompetative
@Uncompetative 10 лет назад
Pure functions can contain imperative tensors, sparse arrays and hash tables so long as they are local temporaries that only last for the duration of a function invocation. GPGPU such as OpenCL and CUDA can harness APL/Fortran whole array operations in order to avoid unnecessary iteration over elements with nested error prone FOR loops. The highest level can support RDBMS with ACID transactions. The trick is to mix all of the different paradigms so that they are layered with respect to latency.
@wanderer7480
@wanderer7480 3 года назад
Yeah, pureness doesn't means local unmutabilty.
@sagitswag1785
@sagitswag1785 Год назад
I might be wrong, but this is an honest question. Wouldnt having mutable state within a function lead to the exact same result as the imperative paradigm, since you can just wrap the whole program in a function and have the mutable state in it, effectively emulating a "global" state?
@____uncompetative
@____uncompetative Год назад
​@@sagitswag1785 Pure functions don't have Sequence Points like Imperative Code. A Sequence Point defines any point in a program's execution at which it is guaranteed that all side effects of previous evaluations will have been performed, and no side effects from subsequent evaluations have yet been performed. This behaviour was a lot more obvious in early versions of BASIC which had line numbers, where the Sequence Point S2 is unaffected from side effects which may occur in S1 and S3 10 S1 20 S2 30 S3 nowadays the C/C++ version of this code would look more like: S1; S2; S3; As there can be no side effects within a pure function by definition it isn't imperative code and what C calls 'functions' are potentially side-effecting 'procedure' calls which those maintaining the code can not be confident won't cause a side-effect. Pure functions are referentially transparent (i.e. Fibonacci of 10 can be replaced with its precomputed value as all pure functions are deterministic, so that they always return the same output for the same input, provided that they are non-recursive as that could lead to a stack overflow in certain scenarios). Consequently, there is very little "wiggle room" to adapt the semantics of pure functions to support change of state as it seems like you are being imperative. However, it doesn't matter so long as you tidy up after yourself and always return the same answer to the same input, even if the input parameterises a constructor of a local array which is destructively updated and then has a reference to its location in the heap returned as the result on the top of the stack which is then attached to whatever in the caller wanted the value of the function, such as some symbolic variable definition, or unnamed invisible temporary variable within a complex expression in which the reduced evaluation of that is then used somewhere, again as a reference to a value (so its not dealing with some things being values and some not, and having to put &r in some places and v in others, as everything is a reference, so nothing needs an & annotation). This logically implies that the language prohibits the calling of "objects" from within functions. Really, you don't want to use the OOP paradigm at all as it provides no advantage to the programmer (only reassurance to managers). Almost everything good about it can be done with just Prototypes along with the enforcement of the Command-Query Separation Principle which effectively splits a Procedure call into a Command that causes a side effect and returns no result (so the caller doesn't even bother waiting for the result), and a query which interrogates the result (which also doesn't stall the caller waiting for the result of its query, but will defer this stall until absolutely necessary, when the values returned are needed in a subsequent Sequence Point, thereby supporting distribution of prototypes across CPU cores even if this means those are on remote systems it doesn't OWN which necessitates AOP (Agent Oriented Programming) to "pay" that remote system for the privilege of running there to transact some long lived "parasitic" service for the benefit of its sender and not cause a DDoS (AT&T's _Telescript_ did this, and had it taken off no one would be wasting hours on slow websites filling in forms for the benefit of their databases, as the Agent would know your details and act on your behalf for you, and buy those concert tickets, or preorder that PS5 so you didn't have to wait in a virtual queue for hours), this means that you have to have Encapsulation, but can't do Inheritance as the remote system has no clue about your system's potentially modified Inheritance Taxonomy. OOP almost gets it right, but elaborates its ideas too much with Classes, and that takes the focus off Messages, and References then make everything coupled again, with Virtual Friend Functions making a mockery of the concept of Encapsulation when an optimising compiler can get around the overhead of Getter (Queries) and Setter (Commands) quite easily, so that the .exe is not "plastic" OOP itself but "hard" monolithic code. You are right to say that you could abuse the language design and use it against how it was intended so that the large scale Prototypes (Modules) which decomposed the State into different localities in which Commands and Queries operated on them, which were themselves written in terms of infix operators like + x ÷ - which desugar to pure Functions like Add(3, 4) which are visible everywhere as they are in the global namespace (similar to how _Mathematica_ works, except with Prototypes as a way to cope with large-scale software engineering and the difficulties of collaborative development, as junior developers would otherwise likely break something that affects the whole system if their work was not in some sense 'sandboxed' to just one Module they were known to have changed the code of, narrowing down the search for faults and identifying who is responsible so that they learn from their mistakes rather than have a senior guru running around putting out the fires they started and not having much time to be productive on their own contributions to the code base. It is a bit like Seymour Skinner passing off Krusty Burgers as his home cooked "Steamed Hams": ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-4jXEuIHY9ic.html The Superintendent doesn't know he was given Krusty Burgers. He had a pleasant meal. As far as he is concerned his visit was a success. Had Skinner turned his oven off before going to Krusty Burger (off screen), the burnt clams wouldn't have caught fire and set his kitchen and then house ablaze. It illustrates the perils of improper resource management, but also the benefits of encapsulation as the inner workings of Skinner's kitchen and what he makes there (or gets by going out the window and across the road to the burger restaurant) are as hidden from the client that is his guest, the server or host can pull all kinds of tricks behind the scenes so long as the guest never notices. You can have local temporary side effects within a function on state it creates and then destroys or keeps around whilst it has a non-zero reference count - this is needed for recursive functions which will potentially require a garbage collector limiting this overhead to be opt-in via the use of the *rec* declaration: ‎ ‎ ‎ ‎ ‎ ‎ ‎ def Fibonacci[0] = 0 ‎ ‎ ‎ ‎ ‎ ‎ ‎ def Fibonacci[1] = 1 ‎ ‎ ‎ ‎ ‎ ‎ ‎ rec Fibonacci[n] = Fibonacci[n - 1] + Fibonacci[n - 2] Fibonacci[10] 55 If a function did destructive updates on state it temporarily created on the heap and then raised an exception then it would need to undo how it had changed the heap and the stack as if it had never been invoked, define the error string (usually ""), which is referenced by a register that has to change value to refer to different constant literal strings stored at the top of the heap (above all the dynamic stuff in high memory), this makes it simple to check that the function returned error free or handle the error by causing the caller of that to fail, and so on, until it is sent to the 'God' prototype ANY that every TYPE inherits from, where it logs the error to the console and provides feedback through the IDE to the programmer having halted the evaluation of the system within its Virtual Machine sandbox It doesn't do a full unwind of Failure through everything that called everything to call the Failing thing, as if I want to understand that I will enable the debugger and step through the code as it runs to see it change values and state as it evaluates each operator, function, expression and every statement (Sequence Point). Functions keep disasters within the kitchen because they put out their own fires. Queries keep guests from knowing what is really going on in the implementation of Functions, and Modules separate one detached house from the next stopping the fire from spreading along the street to the adjacent houses and allowing it alone to be torn down and rebuilt if necessary as that was where the catastrophic failure happened, not throughout the interlaced state of the program - i.e. the whole of Springfield.
@cleoz9274
@cleoz9274 8 лет назад
And then someone will come up with a much worse language that will borrow most of it's concepts from Nirvana and then clumsily implement them in order to support a popular new technology, leaving Nirvana behind for the nerds to pick apart. And that newer language will probably be called something like 'foo' or a 'fooFighter'.
@memorablename5187
@memorablename5187 7 лет назад
lol
@soda9023
@soda9023 4 года назад
What is your profile picture
@GregWintherArtist
@GregWintherArtist 8 лет назад
This video made my day.
@choyou3932
@choyou3932 3 года назад
i thought this is going to be a rant video, had a lot of laugh at this.
@Uncompetative
@Uncompetative 10 лет назад
Given that a lazy functional language permits a function to take part of a list of indefinite length at a time, process it and pipe the output elsewhere, it should be recognized that this stream of dataflow need not be continuous, but be like a queue with stuff being taken from the head as other stuff joins the rear. This is fine for pipelined functions, but x' = f[x] has to await new x to flow in before it can move on to the next epoch.
@AnimeshSharma1977
@AnimeshSharma1977 9 лет назад
It is humbling to hear the gurus [1,2,3] talking about state of programming languages and how the ideas are being cross fertilized towards a safer and *useful* language :) 1. en.wikipedia.org/wiki/Simon_Peyton_Jones [Haskell guy] 2. en.wikipedia.org/wiki/Erik_Meijer_(computer_scientist) [pretty much everything under the cover of Visual Studio] 3. en.wikipedia.org/wiki/Butler_Lampson [Xerox founder] PS: Bill Gates paid their bill ;)
@MediaFilter
@MediaFilter 8 лет назад
+Animesh Sharma Thank you for sharing - I knew of Simon, was blown away by who Butler is after looking him up, and was wondering what Erik's surname was. ;)
@ColetraneMusic
@ColetraneMusic 8 лет назад
Lol, came here from searching for Haskell tutorials after being frustrated to no end.
@nougla
@nougla 6 лет назад
Same a year later LOL
@forbescallum
@forbescallum 5 лет назад
There seems to be some kind of conceptual ceiling prior to which you're just not able to do much of use in Haskell, or at least not well I.e. in the maintainable and beautiful way it's intended to be written. You can learn loads of concepts before breaking that ceiling. The first time I tried it I had a lot of fun but sort of fizzled out. Coming back a couple years later I'm surprised at how much I retained and I feel like I'm much closer to thinking in Haskell.
@gggfx4144
@gggfx4144 5 лет назад
Well a bit late but try ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-02_H3LjqMr8.html or search "Haskell Tutorial" and there is a video which so far seems alright.
@Uncompetative
@Uncompetative 10 лет назад
Variables can have no definition and be treated as symbolic names. Expressions may use these names and the language will simplify the expression as much as it can, substituting values when they get defined and cancelling things out. This is "Term Graph Rewriting". A user interface can be coupled to the outside of the interpreter and produce new constant values as it is interactively manipulated. Within an epoch these appear to be Constraints.
@Maverickx89
@Maverickx89 9 лет назад
Scala gives you all the tools from both imperative and functional world. I'd argue it's where it should go. It's a complex language, but once mastered you will have all the right tools to find a short, safe and extensible solution for any of your problems (except real time stuff of course :( )
@lakantoj
@lakantoj 2 года назад
Scala 3 is good for now, but how do we know is ultimately?
@BeansEnjoyer911
@BeansEnjoyer911 Год назад
Haskell will allow you to basically write imperative code as well. See: Haskell do notation.
@strelkan
@strelkan Год назад
I think it's Rust now
@stumbling
@stumbling 8 лет назад
I'm convinced Butler Lampson is played by Robin Williams.
@AleXoundOS
@AleXoundOS 4 года назад
Is Butler W. Lampson among them? Or who is this at 5:30?
@Uncompetative
@Uncompetative 10 лет назад
The pipeline h[g[f[x]]] can finish processing early entries in a list in h whilst simultaneously processing later entries with f as this is equivalent to x => f => g => h => resultantStream. m = p[a] w = q[b] Have no order of evaluation and can be processed simultaneously as well. A distributed asynchronous concurrency can be built atop an API that conforms to the command-query separation principle through the use of Prototypal actors. Metaclasses, Classes & Objects merely complicate matters.
@CBMaster2
@CBMaster2 9 лет назад
Title is missleading
@iNuchalHead
@iNuchalHead 9 лет назад
Yeah. It's _mostly_ useless.
@ConstantinSchieber
@ConstantinSchieber 9 лет назад
***** Mostly effectless ;-)
@iNuchalHead
@iNuchalHead 9 лет назад
***** You shouldn't have to explain _that_. You shouldn't have to explain that _here_.
@otakarbeinhauer
@otakarbeinhauer 7 лет назад
Exactly what i wanted to say. A bit click-baiting.
@Dylann8245
@Dylann8245 6 лет назад
It was in the useless row on his chart.
@NormanZhou
@NormanZhou 8 лет назад
I love this talk.
@taotree
@taotree 11 лет назад
I think he said "Nirvana". So, it's not something that exists, it's a reference to what we would ideally like to have.
@contrapasta2454
@contrapasta2454 5 лет назад
Simon Peyton Jones has handwriting like I do. It's the handwriting equivalent of firing for effect.
@vansnyder6431
@vansnyder6431 7 лет назад
Functions in Ada have always been pure. It may surprise some that Fortran has had pure functions since 1995. I first saw comprehensions in Id, the language Arvind and his students at MIT developed for dataflow programming. They were incorporated into pH, which is "Parallel Haskell," a kind of confluence of Id and Haskell. I suspect they came into Haskell via that route, not from C#.
@stefanalecu9532
@stefanalecu9532 7 лет назад
C# didn't even exist back then if I remember correctly
@AlaiMacErc
@AlaiMacErc 3 года назад
My Ada is fairly modest and so rusty as to be hilarious -- though I'm sure I brazenly list it on my CV anyway -- and I'm much too lazy to locate a verified compiler to check, so this might be a hostage to fortune... But I'm pretty sure they've not been 'pure' at least since the Green language draft. There were certain restrictions on them, like passing 'out' or 'in out' parameters to functions, but even they seem to have disappeared in Ada 2012. So now they're exactly procedures with a return value. The first recognisable list comps were allegedly in SETL -- logically enough! -- in 1969(!). Their immediate and much clearer Haskell precursors were of course Miranda's ZF Expressions (1985), and Orwell, which latter seems to have been been when the present name was coined. Whether there's a line that runs from SETL, through Id, to those would be a further interesting footnote.
@davidjohnston4240
@davidjohnston4240 7 месяцев назад
@@AlaiMacErc ADA lives on in VHDL. Some of us are rather fluent in it as a result.
@krosh08
@krosh08 11 лет назад
Butler Lampson (who invented PC 40 years ago) looks awesome for a ~70-year-old guy.
@PrinceMapleD
@PrinceMapleD 11 лет назад
great video!
@Yetipfote
@Yetipfote 2 года назад
wait, when the black box is getting hot when you press "go" on it, isn't that a side-effect??
@leif5046
@leif5046 2 года назад
There are two languages in the top-right corner: Erlang/OTP (including Elixir), and Clojure. Dynamic and functional.
@whukriede
@whukriede 2 года назад
Who are the people in this clip? I didn't get this. Simon Peyton Jones, Butler Lampson, Erik Meijer, and ?
@sylwesterunski7451
@sylwesterunski7451 3 года назад
Also look languages goes down, in Haskell direction :) But seriously: in chemistry is something like buffer - allow to have acidity stable for some amount of changes in ingradients -> looks like "buffer" is universal thing, it's like part of continuum where we can breath a bit. And there is one overlooked aspect of programming: knowledge of domain, syntax is just beginning. Make domain / API stable [for extended periods of time] across as many languages as possible and you have less problems overall.
@MagyarUS
@MagyarUS 3 месяца назад
We need more panels like this. More authentic.
@Pedritox0953
@Pedritox0953 10 месяцев назад
Great video!
@anisometropie
@anisometropie 4 года назад
I’d sure enjoy to share these’s guys company and have good laugh, talk about nifty convoluted topics, or have deep conversations about the meaning of things.
@vedivice
@vedivice 12 лет назад
And now realize that you can program in C and Haskell at the same time with Haskell's ffi.
@slomnim
@slomnim 3 года назад
Rust and haskell in cardano blockchain works well
@usejasiri
@usejasiri 2 года назад
2020, and Haskell is being used to build blockchains at Cardano, I think Haskell is becoming useful. I think on the useful and safe Nirvana point, today we have Rust at that sweet spot
@leonie9248
@leonie9248 2 года назад
Fully agreed with both of your statements.
@reverendbluejeans1748
@reverendbluejeans1748 2 года назад
I don’t know how I got here. But lambda calculus might help
@jonaskoelker
@jonaskoelker 2 года назад
> we have Rust at that sweet spot Rust is awesome and very enjoyable to write in. I think it's a big step in the direction of Nirvana, but I won't rule out all future progress. And in one area, Rust is limited: without higher-kinded types you can't build a generic library of monad utilities. My current understanding of monads is that they let you choose a local a-la-carte trade-off between safety (= pure functional code) and usefulness (= I/O and emulated state, exceptions etc.); or maybe stated better, a trade-off between analytical power (~ safety) and expressive power (~ usefulness). I've also heard the phrase "dependent types" thrown around, without fully grokking what it is or why it might be useful. So I can't rule out the idea that they can be useful in moving closer to Nirvana.
@dieSpinnt
@dieSpinnt 2 года назад
Blockchain? cool! That is the 4. category, i love so very much. Useless AND Unsafe. (And a little grain of Harmful to the planet, too). :P
@someoneelse8263
@someoneelse8263 2 года назад
@@dieSpinnt xD why ?
@abdullahabd7677
@abdullahabd7677 5 лет назад
Simon Peyton Jones: en.wikipedia.org/wiki/Simon_Peyton_Jones Erik Meijer: en.wikipedia.org/wiki/Erik_Meijer_(computer_scientist) Butler Lampson: en.wikipedia.org/wiki/Butler_Lampson
@sphires
@sphires 11 лет назад
I'm a huge fan of Ada (Aerospace here) it really is an amazing language, it's not as safe as a functional language but it has great type handling.
@CripplingDuality
@CripplingDuality 3 года назад
I'm told it's huge in automotive as well, why is that?
@matthiasschuster9505
@matthiasschuster9505 3 года назад
@@CripplingDuality Because you dont like to die in an accident
@wanderer7480
@wanderer7480 3 года назад
@@matthiasschuster9505 lol
@slomnim
@slomnim 3 года назад
Like, say, ADA the crypto using haskell and rust ;)
@Wordsalad69420
@Wordsalad69420 9 месяцев назад
I once asked as Hanskell fan how to do real things like you know, write to a DB. He said "it's complicated". That told me everything I needed to know about Haskell.
@Gioeufshi
@Gioeufshi 10 лет назад
Perfect demotivator, I am learning haskell currently.
@kametrixomtikara8726
@kametrixomtikara8726 8 лет назад
Same, but I'm not giving up, Haskell is so beautiful!
@miscibi
@miscibi 8 лет назад
+Gio Eufshi I get it. But you can also look at it as an enormous opportunity for innovation and new ways of implementing "old" ideas. How's that for motivation?
@RonWolfHowl
@RonWolfHowl 8 лет назад
+Steven 👍👍👍👍👍
@iAmTheSquidThing
@iAmTheSquidThing 7 лет назад
Sounds like it might be good to learn Haskell for the theory though. Even if it's not that practical at the moment.
@seethegalaxy
@seethegalaxy 6 лет назад
He's not actually saying Haskell is useless. Click-bait title.
@vincentnofx
@vincentnofx 3 месяца назад
Was this filmed on a Motorola Razr?
@jeffg4686
@jeffg4686 Год назад
Funny - looking back at this video now that Rust is out. While Rust isn't a side-effect free language, it does move into a quandrant of it's own. Granted, we're looking at a different type of safety. It's not effect-free safety, but Rust's memory-safety guarantees does provide much more provable safe code as compared to existing native languages.
@franzlyonheart4362
@franzlyonheart4362 10 месяцев назад
Its own quadrant -- do you mean the bottom left quadrant?
@turolretar
@turolretar 7 месяцев назад
Why is rust so complicated then, I see no point
@alirezaakbari6093
@alirezaakbari6093 11 лет назад
gorgeous! I hope you could upload more videos
@communty
@communty 10 лет назад
WHAT LOLS WE HAD IN THE LOLMONAD
@BenEehayeh
@BenEehayeh 10 месяцев назад
Where is Lisp, Zig and Go in that graphic?
@memorablename5187
@memorablename5187 7 лет назад
nice explaination
@user-si7gh3gw5e
@user-si7gh3gw5e 3 года назад
Nice place! Nice people! : ))) Is it some MS research center?
@JelloTalks
@JelloTalks Год назад
I think Rust has taken big strides toward the "Safe but Useful Nirvana" realm.
@mohithvj8353
@mohithvj8353 Год назад
@@Kiarie-mg9th stop spewing verbal diarrhea like a simpleton, most of the rust principles were inspired by other programming languages.
@hurrse
@hurrse 6 лет назад
what a comfy video
@mariobroselli3642
@mariobroselli3642 2 месяца назад
Wow 12 years ago. Is there a perfect above right corner lang ?
@LOLjerel
@LOLjerel Год назад
I have no idea what he’s saying but he is saying it very well.
@bocckoka
@bocckoka 5 лет назад
what's going on recently? here's a diagram of programming languages.
@haskelltube
@haskelltube 12 лет назад
excellent
@biomorphic
@biomorphic Год назад
And now we have Rust, we took is both useful and safe.
@Leverquin
@Leverquin 8 лет назад
i didn't catch name of that language on right top corner?
@dubiouslycrisp
@dubiouslycrisp 5 лет назад
Nirvana. It isn't an actual language. He was just saying that would be the ideal language, is anything that would be in that part of the chart.
@kidlatazul
@kidlatazul 8 лет назад
If I wanted to get an advanced degree in computer science, I'd want to study with Bertrand Meyer at ETH in Zurich. Meyer has been working on creating a safe and useful language for over 25 years. His brainchild, Eiffel, is beautifully designed, suitable for general purpose programming, and now void safe (calls to non-initialized pointers are caught as errors at compile time). Maybe not quite yet Nirvana, but started out closer to it than other imperative languages and much easier to learn than functional languages.
@konstantingeist3587
@konstantingeist3587 7 лет назад
"calls to non-initialized pointers are caught as errors at compile time" Uhm in C# you can't use a non-initialized reference, it's a compiler error too (only in local variables though; object members default to null). Static analyzers and strict modes in compilers make it possible in C/C++ as well.
@cnidariantide4207
@cnidariantide4207 3 года назад
Eiffel is one of the great hidden gems (and missed opportunities) among all programming languages. It's a line definitely worth following.
@BryonLape
@BryonLape 3 года назад
The diagram is very similar to immutable/mutable v. safe/unsafe.
@slomnim
@slomnim 3 года назад
Haskell would ideally be the best lang to run a smart contract blockchain on
@sarsaparillasunset3873
@sarsaparillasunset3873 10 месяцев назад
FP programming is like putting together a picture puzzle. And too much time, often, is spent on finding that puzzle piece, that abstraction, to use in this particular spot. And this burden is already significant even for smaller programs. When u have to build a complex enterprise app, the puzzle becomes too difficult. What makes this far more difficult than a picture puzzle is the puzzle pieces, ie the functions, can compose other puzzle pieces. Higher order functions that accept other functions as parameter, are abstractions that are really hard to grasp. It took years for array map/reduce to make its way into the mainstream. Even harder is trying to communicate these abstractions to reguoar Joes
@greatfate
@greatfate Год назад
this video goes hard
@charlesbukenya2054
@charlesbukenya2054 5 лет назад
Very smart dudes
@seanperman2000
@seanperman2000 3 года назад
im a comp si student, and this went over my head :(
@whukriede
@whukriede 2 года назад
Learn some basics, especially lambda calculus and lisp. Then a bit of pure functional languages, ml, haskell etc.
@luisf.caballeroc.885
@luisf.caballeroc.885 15 дней назад
I find that the way he described Haskell wasn’t as a joke at all, it’s a really interesting point of view in my opinion, one that gives more power to Haskell than less
@mijmijrm
@mijmijrm 6 лет назад
forgot about the other dimension called "utilization" .. which goes all the way from "large scale with significant consequence", to "for exploration, experimentation and curiosity". A blank statement about being "useless" is no good unless located in this dimension
@kode4food
@kode4food 8 месяцев назад
I think that may be the only close-to-normal shirt I've ever seen Erik wearing
@crrodriguez
@crrodriguez 9 месяцев назад
over ten years after, transactional memory flopped big time on mainstream and it is not there, as intel disabled the feature via microcode updates and later removed from all mainstream processors.
@iAmTheSquidThing
@iAmTheSquidThing 7 лет назад
I had an idea that maybe a programming language could be purely functional by default, but then with the option to create blocks of imperative code. Could such a thing exist? Or perhaps does it already?
@bnelo12
@bnelo12 7 лет назад
Isn't that what a monad is?
@intelX1000
@intelX1000 7 лет назад
Ocaml has units. DeviousYarn has statement lists.
@EmbraceTheThunder
@EmbraceTheThunder 7 лет назад
Monads sort of let you do something like this by encapsulating your state in its own world. Rust (look at rust-lang by mozilla) also tries to do that by having a lot of safety features by default, then letting you create an "Unsafe{}" block and shove your unsafe code in it... Literally.
@iAmTheSquidThing
@iAmTheSquidThing 7 лет назад
***** Yes. I'm trying to learn about monads at the moment. Also I've recently come across do blocks in Haskell, which seem somewhat like I described.
@elborrador333
@elborrador333 7 лет назад
do notation in Haskell only resembles imperative style code in appearance but is really entirely functional afaik.
@gustavinus
@gustavinus 9 лет назад
Of course he doesn't mean useless as in the sense of not being able to compute stuff. You can make any program in Haskell and the language is awesome for prototyping. But there are not many libraries and above all not many applications for the language in the real world. At least as it is. So I guess his point was on how to make Haskell more usable and useful for future programming, making it a language more useful outside the scientific environment.
@DimitriSabadie
@DimitriSabadie 9 лет назад
Gustavo Neves Not many libraries? Do you even know what you’re talking about? github.com/commercialhaskell/all-cabal-files/tree/master We have almost 8k listed libraries (there’re actually more than that).
@RonWolfHowl
@RonWolfHowl 8 лет назад
Nope. He was talking about the fact that Haskell approaches writing programs by first making procedures sit in the corner and think about what they’ve done, then accomplish the same exact things using methods that you can more easily reason about and understand on a high level. (Though of course he didn’t see things from _quite_ that perspective.) Compare the first programs of a Python programmer and a Ruby programmer and you will see what I mean. One restricts their purview to conditional statements and functions with side effects, and ends up with a towering of a program that calculates Fibonacci numbers. The other builds their program up from smaller, individually comprehensible methods and blocks, and ends up with a full-featured web server. ;P
@josemaria_landa
@josemaria_landa 5 лет назад
And then there's Rust
@NEGIgic
@NEGIgic 3 года назад
@Gabriel Klenner of course it has side-effects, but the thing is that it's safe and useful simultaneously.
@WilcoVerhoef
@WilcoVerhoef 3 года назад
It's yet again a step closer to nirvana
@QuantPhilosopher89
@QuantPhilosopher89 3 года назад
@@NEGIgic But it's not safe in terms of SPJ's definition of safety.
@NEGIgic
@NEGIgic 3 года назад
@@QuantPhilosopher89 actually, it is, if you won't use 'unsafe' keyword.
@QuantPhilosopher89
@QuantPhilosopher89 3 года назад
@@NEGIgic It's still not safe in the sense that SPJ would consider safe. You could eg have a function using side effects being called twice unintentionally, which could cause unintended behavior. This cannot happen in purely functional code, which makes languages such as haskell safer than a language such as rust.
@salkdjfasldkfjsdlk
@salkdjfasldkfjsdlk 9 лет назад
When nerds collide. Good video.
@wliaputs
@wliaputs 3 года назад
Lmao
@HolofractalUniverse
@HolofractalUniverse 4 года назад
'Pony' could be a real candidate for the top right corner too. I mean it got mathematical proofs and everything. And it's still imperative.
@brettknoss486
@brettknoss486 3 года назад
Where does rust find onto this. Also how about high level languages, like Python, COBOL or Julia?
@iamabot3240
@iamabot3240 3 года назад
useless
@Antonio-fo4fl
@Antonio-fo4fl 3 года назад
@@iamabot3240 incorrect but pop off
@jw4659
@jw4659 Год назад
OK - so I am just learning Haskell to be able to use Cardano Plutus, like several people below. This is an old video and it sounds like Haskell has been updated nicely since then and everyone likes it now, right? So I'll just go ahead and learn Plutus.
@MelissaYeuxdoux
@MelissaYeuxdoux 11 лет назад
Anyone have a link to or reference for "Nevada", which he puts at the (safe, useful) position?
@raderh2o
@raderh2o 3 года назад
Niice
@abujessica
@abujessica 2 года назад
is nirvana rust today?
@dandruff2737
@dandruff2737 9 лет назад
Yes
@dushkin_will_explain
@dushkin_will_explain 2 месяца назад
Саймон Пейтон Джонс как всегда так экспрессивен, когда объясняет свои сложные концепции :)
@juanpa-a
@juanpa-a 3 года назад
I need to learn haskell now
@BudgiePanic
@BudgiePanic 2 года назад
How is this looking 10 years later?
@hermask815
@hermask815 Год назад
Wasn’t Eiffel relatively near to nirvana?
@wondamaner
@wondamaner 9 лет назад
CPUs and memory management/access create the largest impediment to progress. We need to stop worrying about caching and visibility. volatile should be the default for all values with the intent that any thread can read any value. Otherwise, the only other choice is to have a functional representation of access where all cores access memory with a functional evaluation of which core last "read" or "wrote" that memory, and then if it wasn't the current core that last wrote it, then there needs to be a "fence" operation performed to go read the current value just as a cache miss should. There doesn't have be all of this drama around cache coherency. We just need to change to making visibility the goal, instead of the struggle. Then developers, could just write parallel code without having to do "data visibility" operations inline with their code.
@supercompooper
@supercompooper Год назад
Hehehe cheered me up
@brauggithebold7956
@brauggithebold7956 5 месяцев назад
I wonder what languages are in the "unsafe and useless" category.
@delicious_seabass
@delicious_seabass 3 месяца назад
Typescript and JS for starters.
@bahadrkaratay8249
@bahadrkaratay8249 Год назад
I had a haskell homework and I am happy to see this to recommended to me...(I couldn't do my homework btw lol) I am kinda good at c and python. I didn't study much on haskell but no regrets. I am about to cyber security. Haskell is so useless for me most possible ways.
@drewestification
@drewestification 5 лет назад
I thought he was going to move haskell to the left
@BeansEnjoyer911
@BeansEnjoyer911 Год назад
"Haskell is safe" well... as long as you aren't just utilizing Monads for imperative & effectful code everywhere. *cries in IO ()*
@WateryIce54321
@WateryIce54321 8 лет назад
I kept waiting to hear Clojure come up :(
@fredoverflow
@fredoverflow 5 лет назад
OSCON 2007 predates the first Clojure release by about 3 months, so basically nobody knew about it back then.
@maxnew453
@maxnew453 Год назад
To one of the randoms reading this: Would rust go this his nirvana space ?
@TheDelcin
@TheDelcin 4 года назад
Absolutely
@megit6607
@megit6607 Год назад
It is sad that I fully understand what they are talking about. At least breaking down every few days in Uni made me able to understand these now
Далее
Lambda Calculus - Computerphile
12:40
Просмотров 999 тыс.
FizzBuzz - You Suck at Coding [0]
12:35
Просмотров 403 тыс.
Debunking Haskell Myths and Stereotypes
10:04
Просмотров 10 тыс.
Running a startup on Haskell
50:23
Просмотров 111 тыс.
What is a Monad? - Computerphile
21:50
Просмотров 590 тыс.
What Can Scala Learn from Rust? by John A. De Goes
59:03
What is the Curse of Lisp?
25:09
Просмотров 25 тыс.
Functional Programming & Haskell - Computerphile
9:19
Просмотров 656 тыс.