A little PSA if you're thinking about watching this for educational purposes: They start out saying that this is going to be a TL;DR about type systems. But they don't do any actual explaining of anything, they just comment on things. Between all the references to things that are never explained, they give a lot of advice they ignore during their own talk. It's kind of fascinating really.. - "Simple, expressive syntax is key!" -> only show complicated code snippets which aren't explained - "Explain things easier, don't just talk about math stuff" -> constantly talk about math stuff - "It's really hard to learn about this stuff" -> constantly make fun of people who don't know about this stuff Apart from that, if you do know a thing or two about type systems, you might be interrested in what they have to say. I can't comment on that, I admit that I don't really know anything about type systems. But I watch a lot of talks on subject matters I don't know much about, and I usually learn stuff. Not here. And at least I don't think this stuff is really over my head, they just move on to something else as if mearly mentioning something is enough to make a point *. And hey, if you know lot's about this stuff, maybe it is, but there isn't much you can really learn here. All in all, the whole talk feels really disjointed, just a bunch of things that would be more effective as a list of links of the concepts they're refering to. There doesn't seem to be a real point besides "static typing is good, idiots" * Example: "If you haven't seen a statically typed language with genuine sum types and pattern matching you're really missing out" -> ... and you're not going to see one here.
Thank you for saving me 30+ minutes of my life. "But I watch a lot of talks on subject matters I don't know much about, and I usually learn stuff. Not here." This summarizes my experience interfacing with both functional programming culture but *especially* the intersection with type systems and anything to do with code "correctness".
I have a couple of issues with this talk. Firstly let me say that I loved the last talk these two speakers gave, and was excited to hear "part 2". Sadly, I found that the talk started with a "no true scotsman" argument, in the form of (paraphrased): "those who think they don't need types apparently haven't used them before, or haven't used a good type system". This is an argument that cannot be argued against, since "good type system" can be used as a moving goal-post. Secondly, ad hominem attacks were leveled several times in this talk. One particular case was one where those who don't use static typing were labeled as "unethical". Especially those dynamic language programmers who didn't practice TDD. This completely rejects other forms of testing, such as property based testing, and or simulation testing. Thirdly, after attacking many languages available, the speakers admitted that they couldn't find any language that fit their criteria, except perhaps Idris, which they admitted was not production-ready. But they claimed that the perfect statically typed language wasn't far off. But over all the talk contained quite a bit of vitriol and sarcasm. I started watching this video with the goal of learning about type systems and how they could benefit me, but instead all I found were appeals to authority, and a general lack of hard facts. Where are the studies that show all the effort gone into all these types of typing are actually worth the cost? Where are the papers that show that software-in-the-large is much more reliable when it relies on advanced type systems? None of this information was provided by the speakers. In short, there are many ways to convince someone of your point-of-view, accusing them of being immoral is rarely a good place to start.
The attempts at dispensing wisdom as fact were the low points, for me, and they look particularly ridiculous if you spend a moment taking them seriously. The assertion that it is morally negligent for a developer of production systems to use a dynamically typed language is nonsensical. It implies an exclusive moral responsibility of programmers to reduce the number of type-related bugs in production - a hopeless claim - as it erases every other difference between an arbitrary dynamically typed language and a static one - and the possibility that those factors could have substantive moral implications (consider, say, speed of development, the wellbeing of the programmers, or the emotional cost of having to work with type nerds). Also, the above, paired with the statement that some type systems are objectively better than others, surely lead us to the conclusion that it is morally negligent for a developer to use any type system other than the most objectively good one? (i.e. the improvement in quality/security between a given dynamic language and any not-the-best type system could possibly be much lower than the improvement had from moving from #2 Magic Type System to #1 Magic Type System. I know this pedantry, but there's something paralysingly ridiculous about a Scala programmer declaiming objective truths.
I didn't see it as a fallacy at all. They're not saying "No true programmer doesn't use static type languages" - they're saying "If this is the argument you've heard and dismissed for static types, you've heard the wrong argument."
"Sadly, I found that the talk started with a "no true scotsman" argument, in the form of (paraphrased): "those who think they don't need types apparently haven't used them before, or haven't used a good type system". This is an argument that cannot be argued against, since "good type system" can be used as a moving goal-post." Did you watch it? The entire purpose of the presentation was to try to more strongly pin down where those 'goal-posts' are. They have not set them up as something to be moved. "Secondly, ad hominem attacks were leveled several times in this talk. One particular case was one where those who don't use static typing were labeled as "unethical". Especially those dynamic language programmers who didn't practice TDD. This completely rejects other forms of testing, such as property based testing, and or simulation testing." That's not an ad-hominem. They were making character observations based on their argument, not constructing an argument based on character observations. I do agree that they were wrong to say that, though.
Reminds me of the quote: "There are only two kinds of programming languages: those people always bitch about and those nobody uses." -- Bjarne Stroustrup
Ugh..the is probably some good info tucked away in here but it's sneering tone seems very un-strangeloop. Spends more time in the intro setting it up so anyone with an alternate view is ignoring facts, than it does making points.
I am half way trough this talk an so far i am disapointed. just swings at programming languages people use every day to solve problems. so what if Go dosent have parametric polymorphism. it's easy to write http-connected services which is great. did these 2 ever have to work in an enterprise environment where time to market and in house know-how counts more then theoretical aspects?
I think you'd have to be a little sensitive to find this talk insulting. Most Type systems are terrible, and languages without type are also terrible. Usually it is a trade off. JS is awesome in ways java is not, but at the cost of being terrible in ways java is not. Namely, with finding errors in your code. It doesn't have to be a logical error, it could just be a misspelled word in javascript, and it can take a lot of time finding why the object.lenght is never changing. Conversely, in java it can take a lot of verbage and complex casting to do something rather simple. I do like optional typing. Dart to me seems like a much better language then javascript for this reason.
This is an interesting and useful talk, but very pretentious in my opinion. Many times, the speakers try to sound funny, but mostly at the expense of someone or something else. They claim a lot of things, but without bringing any substantial evidence. I'm sorry to be harsh but, despite some interesting content, this talk looks like a political meeting more than an engineering conference.
The Haskell community is super nice and respectful. People will definitely listen to you even if you do not have a PHD. Come to IRC and hang! irc.freenode.net #haskell
There was absolutely nothing of value in this talk. It's all subjective opinions being asserted as facts, and ridiculing other languages and the people who use them. Yes, having expressive type systems can be useful; but it's just one aspect of a metaprogramming facility, and there is truth in the statement that a majority of the errors that occur in code are not related in any way to the use of weak or dynamic typing. Strong type systems have a tendency to introduce a lot of friction, which reduces productivity. However, they can be very useful in statically compiled languages by annotating objects with information that allows the compiler to generate optimal machine code. It's a double edged sword, and it's best to explore all approaches to find a balance.
Wow, I couldn't finish this video. Stopped after talking about parametric polymorphism. I hate it when people share their emotional feelings and then label it as pure logic. Why must people be so condescending?
Whether you are crappy programmers or great programmers purely depends on if you accomplish crappy software project or great software project. It has NOTHING to do with your understanding level of "Type System". That is FACT.
+Kun Li If you don't understand how types work, you are doomed to fall into a world of errors. Just take a look at C, a language with no real type system and a million security holes caused by this lack of proper type. Lots of projects are "accomplished" and yet nearly unusable garbage, rack with buffer overflow attack surfaces. Most people would call Adobe Flash a "great project" and yet it is clearly written by awful programmers. If they had chosen a language with a proper type system, there would be no such problems.
My point is "Whether you are crappy programmers or great programmers". You do want to use a language with good type system if you have choice and it makes sense for your system.