Robert Martin (Object Mentor, Inc.) "What Killed Smalltalk Could Kill Ruby, Too"
Пікірлер: 83
@llothar687 жыл бұрын
And 6 years later, it looks like Ruby and Rails is dying.
@rrr00bb17 жыл бұрын
computers stopped getting faster, while devices get smaller and take on more demands. battery life and power consumption now matter. if you scale up, you need to pass on your AWS bill to your customers. pouring a bunch of micro-services into a cluster needs to be efficient. so static-oriented languages are making a comeback (C/C++/ObjectiveC++ not really going away, D, Go, Rust, etc). We are getting diminishing returns from yet another language that makes big performance tradeoffs for higher-level code. Now it looks like we are headed to better tools to just find bugs at compile-time. A factor of 10 in memory consumption and speed matters greatly if you end up running on a mobile device.
@llothar687 жыл бұрын
+rrr00bb And don't forget that more and more code is done on the client side and the server side is just a bit business logic and json database. Even templating is done on the web browser.
@rrr00bb17 жыл бұрын
Lothar Scholz i was going to mention pseudo-javascript compilers/minifiers, NaCl, etc. it's more urgent in the server-side where the product-seller pays the bills and has to concentrate the compute power. but it's definitely an issue, just sending out the compiled javascript/resources and having it run nicely on a tiny phone - without a horrible battery-sucking experience or terrible queueing and latency.
@KeldonA6 жыл бұрын
Play this at 1.5 speed you'll swear blind you're listening to Steve Martin! Thoroughly enjoyed the talk.
@nickbarton31915 жыл бұрын
I love uncle bob's talks, they are so real and speak to me of my every day experiences as a software developer. I've been struggling with some UI code of which the logic should be in other objects making it difficult to test. Tomorrow (Monday) I'm going to refactor it and develop those objects TDD style.
@mmille1011 жыл бұрын
Liked his definition of professionalism: Someone who, in the face of pressure, falls back on their rules and discipline, and operates without fear.
@kevingrieger10 жыл бұрын
This is my favorite programming video on youtube
@philippebackprotips12 жыл бұрын
Well, Pharo is quite on its way to the spotlight! Anyway, having been programming with a lot of languages, Smalltalk still feels the best of the bunch. Like in "Pleasure to program".
What killed Smalltalk? (and could kill Ruby) - Too Easy . . . to make a mess (lacking TDD). - Arrogance: - - Walled community . . . isolated from the outside world. - - - Dealing with poor industry standards / frameworks / schema / protocols. - - Parochial . . . failure to address needs of Enterprise. What could save Rails? - Professionalism - - Sticking to professional practices (e.g. TDD, Clean Code) (don't hack) - - Solving the problem of nasty architectures / schemas.
@bhabanism6 жыл бұрын
And Ruby is dead.
@RomyIlano11 жыл бұрын
what a great, passionate speaker!
@CurtisOvard11 жыл бұрын
"Tests eliminate fear" - great statement
@zetaconvex198711 жыл бұрын
Every minute was entertaining, especially the last one.
@AreHusby11 жыл бұрын
I feel his points apply to Scala too, perhaps even more so than to Ruby.
@billsix6 жыл бұрын
I was confused by the introduction, as it appeared to have nothing to do with rails, or programming at all; but oh man I was wrong.watxhing how he weaves various themes together towards his end purpose is inspiring.
@randito12 жыл бұрын
What a fantastic speaker...
@horridohobbies9 жыл бұрын
It's easy to make a mess in any language; Smalltalk is not particularly predisposed in this regard. In my decades-long career, I've seen many large, messy projects...and none of them was written in Smalltalk! (Full disclosure: I've professionally used FORTRAN, Tandem TAL, C, C++, C#, Objective-C, Java, Smalltalk, and Python.) The key to avoiding a mess is strict project discipline and good quality management.
@Urthor12 жыл бұрын
Pretty sure, as everyone knows, the truth is it all revolved around "you can't charge money for a programming language." They teach kids Java in high school because it's free. Who can compete with that (equally free Python!).
@horridohobbies2 жыл бұрын
@@Urthor1 Smalltalk is free, too. Pharo is free. Squeak is free. Dolphin Smalltalk (for Windows) is free. GNU Smalltalk (for command line lovers) is free. Amber (for front-end web) is free. Cuis Smalltalk is free. Take your pick. Many businesses prefer robust industrial support for their programming tools. For them, there are Instantiations, Cincom, and GemTalk Systems. So there is something for everyone.
@Urthor12 жыл бұрын
@@horridohobbies Oh well yes it is now, in the 2010s. I was thinking historically, certainly there was a helluva lot less "free (and yes, absolutely free as in beer)" Smalltalk stuff around the late 90s, when the Java/C# inflection point really got going. And free (as in beer) is very important, given what you said: "Many businesses prefer robust industrial support for their programming tools." This is the most important thing. These days this robust industrial support now comes via Github Issues. The FOSS community has *directly out competed* all sorts of paid platforms. This was before I learnt to read, but FOSS absolutely tore Digitalk et al, and many others to bits. The FOSS community plus the Red Hat/MongoDB "open source with platinum grade enterprise hoo-ha" model took apart small talk like a tin can. Because ultimately the Github Issues -> "readable source code" -> feedback loop between hobbyists/academics and industry worked out. It's really important episode to think about a lot of ways, because building those feedback loops, community building, is now the most important thing in open source software. I truly believe that in this era, writing a good README is almost as important as writing good software. Being a community builder who gets a community behind you is more important to getting your software to go further than writing the code almost. From a community building aspect, I wonder how Pharo et al can fit in. The syntax itself is lovely.
@Urthor12 жыл бұрын
Unrelated issue I really think about re the failure of Smalltalk, I'm seeing in Pharo. I think, the degree to which Pharo is divorced from the file system is pretty extraordinary. I've truly never seen any similar *anything* on a desktop computer that completely ignores the wonderfully integrated paradigm of file system, text files, tree graphs. The syntax and the *latency* of the Pharo is extraordinary. Getting my head around a completely different dependency graph of classes is such a challenge. The marriage between mathematical linear evaluation, text parsers, the file system, and functional programming is a very *intuitive paradigm.* That functional/procedural paradigm is very much the zeitgeist right now (lovingly talking about Haskell days in college whilst spitting out Javascript/Python/C# one liner routines in multi-paradigm languages is corporate software in a nutshell. Purity is impossible, instantiating struct blueprints is pretty important for some things). There's a lot of strength there, a lot of intuitiveness. Such a very strong connection to the underlying operating system and how we pass equations to our evaluators via registers. Figuring out how to fit what I have there and love into my model of how Pharo works, while I plough through Pharo by example, is going to be a big challenge. With Pharo especially, you have the graph of how all the subroutines are laid out being very orthogonal to the linearly parsed subroutines themselves. That's very... my head is working at 100% to understand that. And I haven't even touched merge conflicts yet.
@Urthor12 жыл бұрын
Maybe the answer is Elixir haha.
@_mxgel5 жыл бұрын
That opening is sick....wow!
@horridohobbies2 жыл бұрын
And irrelevant to a discussion about Smalltalk.
@kurrator111 жыл бұрын
I agree. When it comes to simplicity and ease of use Smalltalk language and its browsers are IMHO better than everything I've seen so far for Java or C#, Ruby, Python, etc.
@CBaggers10 жыл бұрын
Wow, this guy is a phenomenal speaker. Best case for test driven development I've seen. Also seems very relevant for lisp
@curiosull6 жыл бұрын
Almost all the reasons stated I say they apply now with cpp. Instead of enterprise needs we may refer to the web needs.
@ads8 жыл бұрын
TLDR: it's just too easy to make a mess (21:40)
@HMijailAntonQuiles7 жыл бұрын
Still, the whole Ward Cunningham intro is worth the 15 mins. (I wonder what were the very first 5 mins about...?)
@Khaltazar5 жыл бұрын
@@HMijailAntonQuiles - Robert Martin always does that. He says he likes to do it to be unique and to get the audience's attention and get them thinking.
@HMijailAntonQuiles5 жыл бұрын
Sounds like another way of saying that his talk isn't unique and interesting enough per se, so he decided to waste 5 mins of everyone's lives. :/
@ads8 жыл бұрын
41:59 professionalism is discipline to wielding of power
@ibraheemmoosa3 жыл бұрын
What did eventually kill Ruby?
@ruffianeo34189 жыл бұрын
What no one ever mentions is that a large base of test code also can prevent fixing stuff which would change the functions interface of the code under test, because it would require tedious maintaining of the test code. Having unit tests is important but not the solution to all problems and they also create new fears while removing others.
@Dacusx6 жыл бұрын
Referring to the last statement, I would prefer that surgeon who operates on my heart finishes before "deadline", instead of calmly allow me to die. Also it seems to me CO's and managers of enterprises would want developers to behave similarly.
@fdeutschs13 жыл бұрын
@stingerster No way ! I personally think it totally kills the elegance of the Smalltalk language. Is not that bad but I find it very confusing syntax, particulary dealing with the different ways to handle memory, and not that dynamic as ST or Java. My point of view, of course.
@horridohobbies9 жыл бұрын
IBM thought highly enough about Smalltalk in the enterprise to launch the VisualAge family of software tools in which Smalltalk was deeply entwined. Smalltalk could very well have served enterprise needs, but it was derailed by competitive forces. Smalltalk needed better PR and marketing. Smalltalk is taking a run at web development via Amber and Seaside; it could use some PR and marketing NOW...
@reiknir9 жыл бұрын
"IBM thought highly enough about Smalltalk in the enterprise to launch the VisualAge family" and then get rid of and cancel it wholesale ........
@horridohobbies9 жыл бұрын
reiknir Exactly. "Derailed by competitive forces." IBM saw Java as a threat and reacted badly to it (as they often do).
@llothar687 жыл бұрын
The problem was that when someone complained about the license fees they arrogantly replied that a software developer seat will cost a total of $50000 in licenses (or was it Rational?). Java was free. It was Open Source that killed Smalltalk.
@horridohobbies7 жыл бұрын
Well, Smalltalk is hardly dead: hackernoon.com/what-makes-a-programming-language-cool-f40401f0f929. But you're right, Smalltalk couldn't beat "free." Today, it's a much different story. There are many free Smalltalks. Pharo is most actively being developed. And Smalltalk continues to be commercially used, as it has been for over three decades.
@reiknir7 жыл бұрын
"Java was free. " It was not free, it was only open sourced a decade after its introduction and even then only partially. Even though IBM implemented their own Java stack, they paid licence fees to Sun.
@Archie3D8 жыл бұрын
I don't use TDD. And I don't do debugging that much. Why? I use design by contracts.
@rrr00bb17 жыл бұрын
tests are far more popular in environments where you don't have rich types or contracts, as a lot of the tests are effectively doing contract checks (where types are a subset of what you can do with contracts). if you had a dependent type system (even if it were only simple things like null checks) and dbc, you actually do have the simplest tests. dbc would also allow languages to get rid of a lot of unsafe code that is tolerated for performane's sake. i really wish that the long OOP detour of the 1990s had been spent taking DBC into the mainstream.
@ads8 жыл бұрын
45:59 Green band and TDD
@coop4476 Жыл бұрын
Ryan Ponte he's talking about you : )
@samsmith15807 жыл бұрын
Smaltalk never died because it was never a thing. It never had it's day in the sun because it was just too diferent. We have spent the last 40 years coming to terms with what Smalltalk is. C++ and Java were created because people couldn't wrap their head around OO so they created Class orientated Languages. Only now are true OO languages coming back into fashion as the failures of Class based design and design patterns become evident. True OO programing does away with the need for both. Ironically it is java-script with Its incredible flexibility that has opened the worlds eyes to true OO. But JavaScript has too many flaws and Ruby is a far better and consistent language. The main problem Ruby has is that its interpreter is slow. Millions has been pored into the optimizing of the PHP interpreter and Ruby has a very long way to go to catch up.
@piecepaper2831 Жыл бұрын
13y later ruby died 😢
@berkut200612 жыл бұрын
@kefsound lol
@Tygryss8413 жыл бұрын
not that I don't like bob, but I get the feeling that if you seen one his talk, you've seen them all :) - He's a great speeker, and enjoy his listening to him, it's just that I don't feel I learned anything :) - but still it's an hour well spent :)
@zeroxcub8 жыл бұрын
TLDR: too easy to make a mess + developers arrogance
@saf27182811 жыл бұрын
Every minute to run tests? My ass! Try every five seconds! :-) Unit tests should run fast so you can get immediate feedback. A minute is just too long.
@kefsound13 жыл бұрын
4 viewers use PHP.
@rh928010 жыл бұрын
I can't say I like this guy's attitude. Sound's like he knows everything. It's enough to put me off Rails!!
@3amsleep9 жыл бұрын
well... google him and then tell me if he's entitled or not...
@3amsleep9 жыл бұрын
im sorry, maybe you googled "lame butthurt comebacks"
@MCNOISE66610 ай бұрын
🤡
@JosephAnnino7610 жыл бұрын
Great insights. I had felt a real sense of arrogance from the Ruby world. It for a long time was the hipster programming language. But that changed. Node.js has provided some competition for cool. Lots of other frameworks in many other languages now compete very well with Rails. There is also a PHP renaissance going on. A lot of ideas the Ruby world was pioneering in putting into practice have made it to other languages, benefiting them greatly, and vice versa. All of this I think has given a little more humility to the Ruby world, which it badly needed, and is important for its survival. Otherwise, this guy is a bit of a sexist blowhard. He has to check some of his own arrogance. For those watching something like this from the outside, his attitude doesn't always jibe well with his otherwise knowledgeably articulated notions of professionalism.
@crabsynth34805 жыл бұрын
Sexist blowhard? Was that because of the harmonal thingy? Because that is ridiculous... it was simply a ying yang metaphore... and you have no idea how much he speaks up about the gender gap in programming... ive seen him strongly defend the case for women in programming during many of his interviews and talks.
@MCNOISE66610 ай бұрын
🤡
@YoLninYo11 жыл бұрын
does linux kernel team use TDD? case closed.
@saadazzz11 жыл бұрын
7 viewers use PHP
@holz_name9 жыл бұрын
You don't need TDD for clean code. Just write your code and in parallel write the unit test that tests for every inputs that are documented. You do have a vision&scope document where the use cases are described? So, for every use case write the code and in parallel write a unit test that tests your code. No dogmatic TDD "laws" are needed, you can write production code and your tests in parallel, no excessive unit tests are needed either. What your use cases don't cover, just ignore it.
@macgyver32396 жыл бұрын
"Just write clean code". From your lips to God's ears. I know only two programmers who even tried to write clean code.
@ppalacz10 жыл бұрын
Mostly entertaining fluff; questionable content. "Too easy to mess up" as the reason? you must be joking.
@sarmala9 жыл бұрын
"Too easy to mess up" sounds like one of the best reasons something like a programming language can loose popularity.
@raneksi14 жыл бұрын
Annoys me how he's walking around so anxiously.
@holz_name9 жыл бұрын
Nice talk about TDD and tests. But in practice even if you cover 100% with tests and use your TDD on the punishment of whipping, nobody will just improve code on a production system. First and foremost, because in software development those maxims are king "what works, works" or "don't change a working system". Second, because of perceived "code ownership", i.e. don't change my code because reasons. Third, because nobody code if they are not compensated, i.e. paid for.
@j-pg96698 жыл бұрын
Holz Name. Yes "what works, works" until your boss ask you to change something in there. Having to make a change in a clean module take way less time because it take you way less time to understand what the code does. " i.e. don't change my code because reasons" If you have 100% test coverage, then your tests should show the behavior that you expect from a module and the programmers will know they broke something. If you can't trust someone touching your code... Why did you hire that guy?? "nobody code if they are not compensated". Thats an administration issue. If your boss does not understand the benefits of refactoring and clean code, that's sad for you... There is plenty of programmers who are paid for doing some refactoring here and there. sorry for my english...
@holz_name8 жыл бұрын
J-P G I was comparing the theoretical TDD approach to the real world. In the real world we have those issues, which are economical and social issues. But I agree with you mostly. I myself, I don't think the TDD approach is practical. I just programmed a prototype for an application that will get FOREX data via the OANDA REST API, and if I would have used TDD, I would have spend 1 week and with no design at all. Instead, I do a first a draft of the design, test my classes for my use cases, and if my use cases changed, I change the design and the tests. I more like the Use-Case-Driven-Development model. Is there such a thing? Maybe I invent it and go giving talks and seminars about it.
@j-pg96698 жыл бұрын
Holz Name I agree that TDD is not the answer for that kind of project! I had long terms apps in mind.