Slashdot Mirror


Can Learning Smalltalk Make You A Better Programmer?

Slashdot reader horrido shares an article that "has done more for Smalltalk advocacy than any other article in memory." It was the second-most popular article of the year on the Hewlett Packard Enterprise site TechBeacon (recently passing 20,000 views), with Richard Eng, the founder of the nonprofit Smalltalk Renaissance, arguing that the 44-year-old language is much more than a tool for teachers -- and not just because Amber Smalltalk transpiles to JavaScript for front-end web programming. It's a superlative prototyping language for startups. It's an industrial-strength enterprise language used by businesses both big and small all around the globe... Smalltalk's implementation of the object-oriented paradigm is so excellent that it has influenced an entire generation of OO languages, such as Objective-C, Python, Ruby, CLOS, PHP 5, Perl 6, Erlang, Groovy, Scala, Dart, Swift, and so on. By learning Smalltalk, you'll understand how all of those useful features in today's OO languages came to be.
The article also argues that Smalltalk pioneered just-in-time compilation and virtual machines, the model-view-controller design paradigm, and to a large extent, even test-driven development. But most importantly, Smalltalk's reliance on domain-specific languages makes it "the 'purest' OO, and one of the earliest... It is often said that programming in Smalltalk or Python is rather like Zen; your mind just flows effortlessly with the task. This is the beauty and value of language simplicity, and Smalltalk has this in spades... Smalltalk, by virtue of its object purity and consistency, will give you a profoundly better understanding of object-oriented programming and how to use it to its best effect."

343 comments

  1. Wow, another paid-for article by Anonymous Coward · · Score: 1, Insightful

    This site is becoming complete garbage. Thanks a bunch EditorDavid.

    1. Re:Wow, another paid-for article by QuietLagoon · · Score: 1

      ... You think companies bother paying a small-time shit site like Slashdot? ...

      Yes, companies take this site seriously. You may not, but the companies who want to target a certain audience do.

      .
      That aside...

      This site used to be a respite, A place for techies to go to get away from those evil advertisers.

      Now, it appears this site has sold its soul to those evil advertisers.

    2. Re:Wow, another paid-for article by drinkypoo · · Score: 1

      This site used to be a respite, A place for techies to go to get away from those evil advertisers.

      That time was before I started using Slashdot, and I lurked for a long time before registering an account. Unless this is your Nth account or you lurked for a spectacularly long time, you never saw it either.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    3. Re:Wow, another paid-for article by horrido · · Score: 1

      Um, who paid for this article???

    4. Re:Wow, another paid-for article by Anonymous Coward · · Score: 0

      People who want Smalltalk to be popular again, duh.

    5. Re:Wow, another paid-for article by Anonymous Coward · · Score: 0

      At one time they did, but no longer. It's been a few years since this site mattered.

      I'd say prior to 2010 or so..

    6. Re:Wow, another paid-for article by gravewax · · Score: 1

      So mentally handicapped people!

    7. Re: Wow, another paid-for article by Anonymous Coward · · Score: 0

      It is spelled Star Track you asshole

    8. Re: Wow, another paid-for article by Anonymous Coward · · Score: 0

      You'd be surprised, but they are 90% of population. Includes all of the millennials, facebookies, ifags.

    9. Re:Wow, another paid-for article by doom · · Score: 2

      This site used to be a respite, A place for techies to go to get away from those evil advertisers.

      Look, what makes you guys think this lukewarm whining is even going to register on the slashdot editors? They've been listening to programmer's bitcing and moaning for decades, you're going to have to amp it up if you even want to begin competing.

      (You think you've got it bad now? You have no idea what kind of stupid shit Commander Taco could come up with.)

    10. Re:Wow, another paid-for article by Anonymous Coward · · Score: 0

      What did they pay? How did they pay it? What exactly do you mean by pay? Your statement is completely obtuse.

    11. Re:Wow, another paid-for article by Tough+Love · · Score: 0

      it appears this site has sold its soul to those evil advertisers

      What advertisers? Since when does examining the merits of a public domain programming language amount to selling out to advertisers? Seems to me some completely ignorant person got triggered.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    12. Re: Wow, another paid-for article by Anonymous Coward · · Score: 0

      20-TEN is considered early ?!??!

      Hahahahah. I'm not sure I've even found a new Web site I visit since 2010.

      Long time lurker. Many time ACer.

    13. Re:Wow, another paid-for article by arkarumba · · Score: 1

      I doubt this article was paid for because... While its hip to be cynical and usually I might naively agree, in this case I know of the author from some Smalltalk community mail lists - and he is just an individual that is quite zealous about promoting Smalltalk. Sometimes a bit over zealous (like a reformed smoker evangelising others to quit their habit) but this article I think is reasonably well rounded. To my knowledge he's associated with open source Smalltalk flavours rather than commercial, so where would the money come from anyway?

    14. Re: Wow, another paid-for article by Anonymous Coward · · Score: 0

      You go to the current owners of slashdot (they change a lot as slashdot gets passed around like a hot turd) and you ask them how much a paid for article for smalltalk is and if they will work the comment section for you or if you have to do it. It's not hard and probably around $5000 likely less if it's without them monitoring comments but can get really expensive if they help manage comments.

    15. Re:Wow, another paid-for article by ScrappyLaptop · · Score: 1

      I only stopped in to see what the user numbers are up to, haven't been here more than a handful of times since the AOL takeover.

    16. Re: Wow, another paid-for article by Anonymous Coward · · Score: 0

      Slashdot users..

    17. Re: Wow, another paid-for article by rochrist · · Score: 1

      ifags. Wow. You think that up all by yourself? Your mom must be so proud of you Coward.

  2. Is every other article an advertisement? by Anonymous Coward · · Score: 1

    - Yes, Slashdot needs money!
    - No, the editors are just awful!
    - Insert CowboyNeal reference

  3. Well rounded. by Anonymous Coward · · Score: 3, Insightful

    Smalltalk, Forth, LISP, and FORTRAN.

    1. Re: Well rounded. by UrbanMonk · · Score: 1

      And Cobol.

    2. Re: Well rounded. by Anonymous Coward · · Score: 1

      and BASIC.

    3. Re: Well rounded. by Anonymous Coward · · Score: 0

      And ALGOL

    4. Re: Well rounded. by Anonymous Coward · · Score: 0

      And JCL

    5. Re: Well rounded. by Anonymous Coward · · Score: 0

      And FOCAL

    6. Re: Well rounded. by Anonymous Coward · · Score: 0

      And RATFOR

    7. Re: Well rounded. by the_mushroom_king · · Score: 2, Funny

      Cretin, I do my interfaces in PCL 5! Wastes a lot of paper though ...

    8. Re: Well rounded. by Z00L00K · · Score: 1

      Z80 Assembly.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    9. Re:Well rounded. by admin7087 · · Score: 2

      These are quite nice and powerful languages, although I'd personally like Forth more if it was a bit less low-level. For startups, I recommend CommonLisp (SBCL).

    10. Re:Well rounded. by jellomizer · · Score: 1

      Well learning any language makes you a better programmer. Each prorgramming language approaches solving problems differently. After learning that language you now have a new approach to solving a problem under your belt. Then even if you are coding in a different language and you come across a problem that the other language was strong at solving. You know to structure your fictions and procedures in a way to mimic that other language behavior.
      So I may be doing OOP but I come across a problem that is easy to do functionally so I may make a few methods that work like lisp functions.
      Most language are advanced enough to get them to mimic such behavior enough to solve that one problem that the obscure language specializes in

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    11. Re: Well rounded. by ls671 · · Score: 2

      java

      --
      Everything I write is lies, read between the lines.
    12. Re:Well rounded. by Anonymous Coward · · Score: 0

      maybe you should look into yerk, an object-oriented forth for classic mac os.

    13. Re: Well rounded. by Anonymous Coward · · Score: 0
    14. Re:Well rounded. by Anonymous Coward · · Score: 0

      I used to play around with Mops for a while, which has evolved into PowerMOPS and iMOPS for OS X and is still being maintained regularly.

    15. Re: Well rounded. by Anonymous Coward · · Score: 0

      PHP.

      **ducks**

    16. Re:Well rounded. by arkarumba · · Score: 1

      Like the saying "The only languages worth learning are those that change the way you *think* about programming." After programming much the same way in Basic, Logo, Pascal, C, Prolog, Perl, PHP, Javascript, Java & Python -- Smalltalk is the language that changed the *way* I program. Its the most fun I've had programming, and now where I call home.

    17. Re:Well rounded. by lgw · · Score: 2

      Well learning any language makes you a better programmer.

      Only if you're totally new to programming. Once you have your head around the basics: pointers, recursion, and lambda, you're not going to learn much from just toying around with a language.

      The only breadth that's useful to a professional is depth multiple times. Spend 3-5 years getting to know the ins and outs of a technical stack, everything the common libraries have to offer, how maintainable code really is, vs what looked cool at the time.

      Then do it all again with another tech stack. And another. This is how you become a senior engineer.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    18. Re: Well rounded. by TechyImmigrant · · Score: 1
      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    19. Re: Well rounded. by abmw · · Score: 1

      FORTH is awesome and productive. APL is too.

    20. Re:Well rounded. by michael_wojcik · · Score: 1

      Well learning any language makes you a better programmer.

      Indeed. There's nothing like learning Unlambda to teach you how to use the s and k combinators.

    21. Re: Well rounded. by Wargames · · Score: 1

      And ReXX.

      --
      -- Each tock of the Planck clock is a new world and here we are still life. --
    22. Re: Well rounded. by zeiche · · Score: 1

      INTERCAL

  4. depends by Osgeld · · Score: 2

    on how far down the rope you want to go

    if you want to learn the core original idea's of modern programming as some academic / archaeological adventure, yes small talk has a lot to offer as its a very influential language

    if you think you are going to magically going to get 100x better at C# or java just by reading some generic summaries of how it works, then no you will not benifit in any such way ... cause the best of such an old language has already been extracted and implemented decades before hand and you already us it

    1. Re:depends by thinkwaitfast · · Score: 1

      zen

    2. Re:depends by Santana · · Score: 0

      Oh you have no idea.

      Smalltalk is not in the past; it is the future, and is happening right now.

      Anything you know today is just a bad implementation of Smalltalk (or Lisp.)

      --
      The best way to predict the future is to invent it
    3. Re:depends by Anonymous Coward · · Score: 0

      And yet no one cares.

    4. Re:depends by Darinbob · · Score: 2, Interesting

      You probably will learn why newer languages are trying to emulate Smalltalk but also failing and how they could have done better. Smalltalk is a high bar that very few other languages can reach. Smalltalk works because it never started life with the implicit goal of being compatible with older languages or paradigms. C++/C#/Java all screw up because they attempted too hard to be C-like, to be familiar to existing programmers, and to not rock the boat too much. Other scripting languages seem better at this but still have some major flaws in places (code blocks not being first class objects, not underlying object structure, trying to be just a language instead of a complete system, etc).

    5. Re:depends by Darinbob · · Score: 1

      And yet they do. Everything keeps trying to recreate Smalltalk, badly. I don't think programmers need to learn from Smalltalk as much as I think programming language designers should be required to know Smalltalk well.

    6. Re:depends by MouseTheLuckyDog · · Score: 1

      That's what they were saying about COBOL in the 80's.
      That's what they were saying about LISP in the 90's.
      That's what they were saying about Eiffel in the 2000's.

      It's what diehards say about every dying language.

    7. Re: depends by Anonymous Coward · · Score: 0

      If you know Smalltak you probably need Depends.

      Don't flag yourself as obsolete by putting Smalltalk on your resume...

    8. Re:depends by Anonymous Coward · · Score: 0

      Nope, no one does. I've never once heard anyone in 30 years of programming care that their langauge only had a "bad implementation" of a Smalltalk feature.

    9. Re:depends by angel'o'sphere · · Score: 1

      Neither COBOL nor LISP are dying or dead.

      And Eiffel is a language that has variations like Sather/Sather-K that are very popular in the academic community.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    10. Re:depends by johannesg · · Score: 1

      Since you seem to know it, explain me this: I have studied lisp for a while, and I never actually found that magic that suddenly made me much better than I was before. "You can redefine the language!", the ads said. I still don't get it: yes, I can add new functions. I can do the same thing in pretty much _every single other language out there_. Yes, I can pass code blocks to other code blocks. I can do that in other languages too, and only occasionally use it for some small code improvement - it's not a silver bullet that redefines how I write software. So, where is it, that magic you people keep talking about?

    11. Re: depends by tigersha · · Score: 1

      That is so over. Nowadays everyone is trying to i plement LISP badly

      That is what makes Ruby so compelling, it took many ideas from Smalltalk, instead of Algol/C/Pascal/Java like all the other wannabe languages like Python.

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    12. Re: depends by tigersha · · Score: 0

      Bingo.

      If yiu want to work with all the good parts of Smalltalk, try Ruby

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    13. Re:depends by serviscope_minor · · Score: 2

      Anything you know today is just a bad implementation of Smalltalk (or Lisp.)

      That's just utter garbage. If you can't replace $LANGUAGE with Smalltalk/Lisp for technical reasons then $LANGUAGE is actually superior to Smalltalk or Lisp in its niche, not a bad implementation thereof.

      So, let's start with the basics. I'd like to see you try to get a smalltalk or Lisp implementation on two of the microcontrollers I use. They're both 8 bitters. One runs at a swift 32MHz (2-5 cycles per instruction) has a generous 2k of RAM and 128k of flash. The other runs at a more sedate 16MHz, but with mostly single cycle instructions (no hardware divide though) but has only 32k flash.

      The former I program in C, the latter in C++.

      On the larger end I've yet to see anything even hinting of replacing C, C++ or FORTRAN for numerics and scientific code, especially back-end performance intensive libraries, because nothing can touch them for speed. Actually, Rust is about the only thing that could because it's got the same kind of memory/machine model as C and C++, but it ain't there yet.

      Even if you move on from strictly technical reasons, there have been lisps available FOSS for donkey's years (dunno about smalltalk), and it's frequently been taught in universities. Yet despite education and availability it's yet to set the world on fire. I think it has something serious missing compared to those "bad" implementations.

      --
      SJW n. One who posts facts.
    14. Re:depends by serviscope_minor · · Score: 1

      C++/C#/Java all screw

      What do you think C++ screws up? I like C++, so I already have a very long list of my own, but nonetheless, 99.9% of "C++ killers" prove to be an appallingly bad replacement.

      --
      SJW n. One who posts facts.
    15. Re:depends by goose-incarnated · · Score: 1

      Since you seem to know it, explain me this: I have studied lisp for a while, and I never actually found that magic that suddenly made me much better than I was before. "You can redefine the language!", the ads said. I still don't get it: yes, I can add new functions. I can do the same thing in pretty much _every single other language out there_. Yes, I can pass code blocks to other code blocks. I can do that in other languages too, and only occasionally use it for some small code improvement - it's not a silver bullet that redefines how I write software. So, where is it, that magic you people keep talking about?

      In Lisp you can do more than add new functions or pass blocks of code around. Maybe you didn't learn it well.

      --
      I'm a minority race. Save your vitriol for white people.
    16. Re:depends by Cederic · · Score: 1

      Hmm. I have. Multiple languages, even.

      Of course, the Smalltalk afficionados were complaining because they'd switched to use the other language. Smalltalk set a lot of precedents and had a positive influence on subsequent OO languages but many of them surpass it.

    17. Re:depends by Cederic · · Score: 1

      I learned Eiffel at university. It was interesting, and actually helped me massively in understanding and effectively using less formal languages.

      I'd go seriously fucking despair if I had to use it for commercial code though.

    18. Re:depends by Anonymous Coward · · Score: 0, Insightful

      Academic community... LOL!!! Academics are a bunch of blowhard good-at-nothings who would be unemployed in the real world. They can only hope those funds are not going to dry up or they will have to face the cold, hard reality that they belong in the gutter.

    19. Re:depends by Rockoon · · Score: 1

      And yet they do. Everything keeps trying to recreate Smalltalk, badly. I don't think programmers need to learn from Smalltalk as much as I think programming language designers should be required to know Smalltalk well.

      What I think is that smalltalk needs better compilers. Sure, you are thinking performance isnt that big of a deal for 95% of the code... but it is for that 5%, and if you have to use a different language for that 5% then there needs to be a good reason not to also use it for the other 95%.

      --
      "His name was James Damore."
    20. Re: depends by Anonymous Coward · · Score: 0

      Ruby is missing the two key ideas about Smalltalk: 1) absolute simplicity and minimalism of syntax; and 2) live coding/debugging IDE, as well as the "image" (which allows you to save the execution state of the program).

    21. Re:depends by Anonymous Coward · · Score: 0

      Interesting, but OO-only is very limiting, especially when implemented with hierarchies like inheritance and multiple inheritance, which don't represent maps of the real-world (like bidirectional properly graphs can). The future will belong to a language that manage to express that truth, make it fast, easy and powerful (ie. think social media-type apps and AI almost as "first-class-citizens"), and maybe even persistent. Yes, that'll make the "language" much more than just instructions fed to a computer, but with OO you have already started to try to map the real-world, just in ever-failing ways.

    22. Re:depends by angel'o'sphere · · Score: 1

      Well,
      IMHO the mein problem with Eiffel (and ADA) was that "they" wanted to make money from it ASAP. It was super expensive, getting a license to make a competing environment was expensive and that killed the language quicker than it got traction.
      I would always prefer Eiffel over C++ ... not sure about Java/Groovy and other modern languages though.
      However as the topic is SmallTalk I hope for a revival ;D

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    23. Re:depends by jbolden · · Score: 1, Insightful

      The magic is how you approach solving problems. One of the problems with Common LISP is that it lets you write imperative like code. The old joke about a FORTRAN programmer being able to write FORTRAN in any language comes to mind. That's why I prefer to teach with Haskell because it takes away so much of how you commonly write code that it forces the mental paradigm shift.

      Passing blocks of code by itself is not a paradigm shift. Genuinely understanding that all code is data, that you can think of data as a function that acts on functions through duality is the paradigm shift. As the abstractions build the complexity falls away. And from there you really do see the silver bullet.

    24. Re:depends by phantomfive · · Score: 1
      Well said.

      And from there you really do see the silver bullet.

      Another way to put it: if some programmers are better than others by an order of magnitude (and this result has been found by multiple studies), then the 'silver bullet' is to train the 'lesser' programmers to be better. It's a matter of changing the way they think, rather than giving them a new tool or process.

      --
      "First they came for the slanderers and i said nothing."
    25. Re:depends by jbolden · · Score: 0

      LISP evolved on mainframes of the late 1950s. Many of the ideas underlying LISP predate digital computers and were used in mechanical tabulators and analog computers. Those system requirements are fine. The more interesting question is what would a LISP or Smalltalk make better in a microcontroller? If you had to model new behavior and the cost of programming relative to the cost of the device was high then it would make sense.

      On the larger end I've yet to see anything even hinting of replacing C, C++ or FORTRAN for numerics and scientific code, especially back-end performance intensive libraries, because nothing can touch them for speed.

      I have. Mathematica, Matlab are commonly used. I certainly use PIG all the time for numerics. C and C++ have serious problems with the complexity of implementing parallelism that quite often make them unusable.

      Your arguments cut both ways.

    26. Re:depends by Anonymous Coward · · Score: 0

      I say you should have a look at all of them.
      Understanding the idea behind how you solve basic problems in each language makes you a better programmer.
      You can't consider yourself to be a good OO programmer unless you can write object oriented assembly.

    27. Re:depends by Anonymous Coward · · Score: 0

      I'm impressed that you can tell everyone loudly and clearly that your head is buried in the sand while your head is, you know, buried in the sand.

      Or, to put it more succinctly:

      WHOOSH

    28. Re:depends by admin7087 · · Score: 2

      This kind of hatred is of no use. You need to learn to face your fears and deal with them, rather then projecting them onto others.

    29. Re:depends by Darinbob · · Score: 1

      And yet, the popular languages today are interpreted languages. Maybe some with optional compilers from alternative implementations, but generally things like python, javascript, ruby, all got popular without compilers.

    30. Re:depends by Anonymous Coward · · Score: 0

      I used to write C and compile to assembly, then look through the assembly to see how I could optimize it. I gained a pretty good understanding of how procedural code compiles down to asm.

      Then I tried the same thing with object-oriented C++. I couldn't make head or tail of the assembly; the language adds SO MUCH cruft.

    31. Re:depends by Darinbob · · Score: 2

      C++ is basically not very object oriented, especially with later incarnations which focus on generics instead of real objects. And because it explicitly wants to be compatible with C, you're stuck with a machine oriented model, memory management (too hard to bolt this into a language that has pointers), and so forth. Trying to be a C++ killer is the fault of those languages, C++ generally gets used in area that Smalltalk is not used for. Smalltalk is great for rapid prototyping, C++ gets used by people who want somewhat efficient (though it fights against itself here). The C++ killers aren't trying to be great for rapid prototyping, they instead want to be the C++ replacements and grab the same market share. Smalltalk also has a model where it is a full system, not a language, its objects stick around after a reboot. This adds complexity but not much different than C++ and a DB plus UI.

    32. Re: depends by Darinbob · · Score: 1

      Ruby misses inherent first class code blocks. It's a quirk but one that gets frustrating.

    33. Re:depends by Anonymous Coward · · Score: 0

      No, you're not going to get 100x better by "reading some generic summaries of how it works." You're going to get better by using Smalltalk.

      "...the best of such an old language has already been extracted and implemented..."

      Not very well. Smalltalk has two key qualities: 1) its absolute simplicity and minimalism of syntax; and 2) its live coding/debugging environment (as well as the "image"). Languages like Python and Ruby and Go don't come close to Smalltalk's simplicity. Smalltalk has virtually no syntax! This is hard to beat (though there is Scheme, Forth, and Logo, all of them old languages).

      There have been attempts to implement live coding/debugging in modern IDEs like Visual Studio, Eclipse, and IntelliJ, but none do it well. None can match Smalltalk's simplicity and elegance (yes, these qualities carry over from the language design!).

    34. Re:depends by arkarumba · · Score: 1

      > maps of the real-world (like bidirectional properly graphs can).
      > The future will belong to a language that manage to express that truth, make it fast, easy and powerful

      Something like Flexible Object Layouts being implemented in Pharo Smalltalk?
      http://rmod.inria.fr/archives/...

    35. Re: depends by arkarumba · · Score: 1

      Bingo.

      If yiu want to work with all the good parts of Smalltalk, try Ruby

      Ruby is close, but Avdi Grimm shows a few of the features Smalltalk still has over Ruby. http://www.virtuouscode.com/20... (ignore the inflammatory title, its tongue in cheek - check the books Avdi's written on Ruby)

    36. Re: depends by horrido · · Score: 2

      Ruby is missing two of the most important "good parts" of Smalltalk: 1) its absolute simplicity and minimalism of syntax; and 2) its live coding/debugging environment. Ruby syntax can be a bit gnarly, esp. its "Perlisms."

    37. Re: depends by Anonymous Coward · · Score: 0

      Academics are reliably wrong faggots and should all be killed.

    38. Re: depends by Santana · · Score: 1

      Go is a joke of a language. It lacks important features but instead of acknowledge them the authors say that is a feature! (much like Perl's mess is praised by Larry Wall.)

      What you are talking about is the never ending arguments for static vs. dynamic typing. You favor static typing, fine. If you are happy working around its limitations, investing time making a compiler happy, that's up to you. Just say it so instead of misinforming.

      --
      The best way to predict the future is to invent it
    39. Re:depends by Santana · · Score: 1

      You think...

      What about asking JP Morgan, a huge user of Smalltalk, all over the world, have to say about it:

      https://m.youtube.com/watch?v=...

      --
      The best way to predict the future is to invent it
    40. Re:depends by geoskd · · Score: 2

      C++ is basically not very object oriented

      That is *not* a bad thing. OO is not a good solution for every problem. Neither is procedural programming, nor functional programming. A good language is whichever one allows you to solve the problem at hand in the most optimal way. The kinds of problems that Lisp is good a solving, C is not. The kinds of problems that C is good at solving, Smalltalk is not, etc. C++ is an extremely capable language because, while it is not optimal for solving most types of problems, it is workable, and not badly suboptimal. This means that as a programmer, if you are choosing a language for a new project, and you don't fully understand the project, you are almost certainly not shooting yourself in the foot by choosing C++. The same cannot be said for the majority of languages out there. If you are not working close to the metal, then choosing C is going to make your life miserable down the road with no real ebenfit, especially if you have to do any higher level work or UI work. If you need performance at all costs, and you have chosen Python, Lisp, Smalltalk, or the vast majority of other languages, you have made a very serious error. With C++, you can achieve excellent performance, rivaling, and in some cases even exceeding C, but you still have the *option* of using an object oriented model, if that turns out to be useful.

      --
      I wish I had a good sig, but all the good ones are copyrighted
    41. Re:depends by lgw · · Score: 1

      What problem are you solving that you're CPU bound? Something running on a phone, or a thing? Everything is I/O bound in my (server-side) experience, unless someone did something N^2 by mistake, and then the fix is algorithmic.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    42. Re:depends by serviscope_minor · · Score: 1

      LISP evolved on mainframes of the late 1950s.

      It was first implemented on the IBM 704, which actually has about 9x the amount of memory of those microcontrollers. Until you've programmed them you don't realise how resource starved they are. If you want me to go more extreme, Microchip will even let you program an Pic 10/12F in C, with a generous 64 bytes of RAM.

      Those system requirements are fine.

      Not really.

      The more interesting question is what would a LISP or Smalltalk make better in a microcontroller?

      You're missing what else they lose. They also are garbage collected, which means bad things for hard real time performance: something microcontrollers are often used for.

      If you had to model new behavior and the cost of programming relative to the cost of the device was high then it would make sense.

      You forgot power draw in there too. That's crucial if you're running off a coin cell, for example.

      I have. Mathematica, Matlab are commonly used.

      And pray tell, what is Matlab written in? It's slow as sin unless what you do winds up as one of the C or FORTRAN primitives.

      I certainly use PIG all the time for numerics.

      Don't know it, but I'll bet the same applies.

      C and C++ have serious problems with the complexity of implementing parallelism that quite often make them unusable.

      Depends what for. For stuff like numerics it's almost always simple with some care and OpenMP works a charm. For less regular things, yes, but neither of the two languages under discussion really help either.

      --
      SJW n. One who posts facts.
    43. Re:depends by Santana · · Score: 1

      Objective-C is more OO than C++ by virtue of the messages, which is what C++ got wrong. Messages are powerful, because you let the receiver decide what to do with it, as opposed to calling a "member function." Many C++ downsides come from that sin.

      --
      The best way to predict the future is to invent it
    44. Re:depends by TechyImmigrant · · Score: 2

      on how far down the rope you want to go

      I used to program in BASIC, then assembly on an Apple ][

      30 years later I've regressed to making new CPU instructions.

      In another 30 years I've be making new types of logic gate I guess.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    45. Re:depends by Anonymous Coward · · Score: 0

      You need to learn the difference between then and than.

    46. Re:depends by Tough+Love · · Score: 1

      And yet, the popular languages today are interpreted languages.

      Popularity trumps wisdom?

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    47. Re:depends by arkarumba · · Score: 1

      You should check the work being done on Sista "speculative in-lining smalltalk architecture" http://www.slideshare.net/esug... One interesting part of this is that it in-lines at the Smalltalk bytecode level that is stored in-Image. So you essentially get a "hot start" - no warm-up time.

    48. Re:depends by skids · · Score: 1

      1) its absolute simplicity and minimalism of syntax

      Count me out. I don't feel like building mounds of advanced syntax out of primitives over and over, I'd rather have my complex syntax pre-baked and only re-implement syntax when I really meed a DSL.

      2) its live coding/debugging environment (as well as the "image")

      Implementation feature, not a language feature, though granted much easier to implement on some languages than others.

    49. Re:depends by Santana · · Score: 1

      1) its absolute simplicity and minimalism of syntax

      Count me out. I don't feel like building mounds of advanced syntax out of primitives over and over, I'd rather have my complex syntax pre-baked and only re-implement syntax when I really meed a DSL.

      2) its live coding/debugging environment (as well as the "image")

      Implementation feature, not a language feature, though granted much easier to implement on some languages than others.

      Do you even know what you are talking about?

      minimalism of syntax means it is easy to learn and so there's less room for someone to make a mistake, because there are less rules to learn and less keywords to watch out for.

      Smalltalk for instance has no keywords at all. It does have six pseudo-variables: true, false, nil, self, super, and thisContext. These are bindings that the programmer cannot change. Other than those you can use any identifier for yourself.

      You don't "re-implement syntax"... get serious. If you don't care about Smalltalk that's fine. Just stop spreading misinformation.

      --
      The best way to predict the future is to invent it
    50. Re:depends by johannesg · · Score: 1

      Thank you for this answer. While it doesn't immediately cause enlightenment at least it gives me something to look for now ;-)

    51. Re:depends by colinwb · · Score: 1

      An email from Alan Kay on 23 July 2003 replying to a question from Stefan Ram about the term "object oriented programming": note that Kay's reply does not include inheritance or polymorphism as essential parts of OOP. (He does include encapsulation. I leave it to readers to decide if he's also including data abstraction.)
      ...
      I wanted to get rid of data.
      ...
      I didn't like the way Simula I or Simula 67 did inheritance (though I thought Nygaard and Dahl were just tremendous thinkers and designers). So I decided to leave out inheritance as a built-in feature until I understood it better.
      ...
      (I'm not against types, but I don't know of any type systems that aren't a complete pain, so I still like dynamic typing.)
      OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.

      --Here is a more detailed history of Smalltalk by Alan Kay.

    52. Re:depends by skids · · Score: 1

      Do you even know what you are talking about?

      Yes.

      minimalism of syntax means it is easy to learn and so there's less room for someone to make a mistake

      Minimalism of syntax is an ideological puritanism that misses the point that we have complex syntax for a goddamn reason.

    53. Re:depends by Anonymous Coward · · Score: 0

      That's not the same thing, you can make object oriented methods out of any function by accepting a pointer to a struct representing your object as the first argument. Without using C++.

    54. Re:depends by Anonymous Coward · · Score: 0

      So... Rust, then?

    55. Re:depends by david_thornley · · Score: 1

      C++ is basically not very object oriented,

      C++ is not a Smalltalk descendant. C++ started as a version of C with classes from Simula-67, and evolved from there (primarily in areas that aren't OO, although the OO stuff is still very important).

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    56. Re:depends by david_thornley · · Score: 1

      Some Lisp implementations produce very efficient object code. At one time, CMU Common Lisp beat Fortran in solving a numeric problem. (Turned out that CMUCL was using a function-call optimization the Fortran compiler didn't have, so it wasn't long before the Fortran system was as fast.) The big problem with Lisp (aside from the fact that some people are syntax junkies) is that it doesn't interface well with most other software.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    57. Re:depends by david_thornley · · Score: 1

      First, C++ was designed as C with Simula-67 classes, and did a good job of being that. Second, aside from syntax, what's the difference between sending a message and calling a member function? In both cases, the object in question has to know how to deal with it.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    58. Re:depends by Santana · · Score: 1

      First, C++ was designed as C with Simula-67 classes, and did a good job of being that. Second, aside from syntax, what's the difference between sending a message and calling a member function? In both cases, the object in question has to know how to deal with it.

      Calling a member function requires that the type of the object is known and includes such member function. Sending a message instead doesn't need to know anything about the object, only that it responds to the message; and even if the message is not understood then a method is called that manages that situation (doesNotUndertand in Smalltalk, method_missing in Ruby) which can be very useful when metaprogramming. For instance implementations of the proxy pattern or the active record pattern are simplified a lot by it.

      --
      The best way to predict the future is to invent it
    59. Re:depends by david_thornley · · Score: 1

      Thank you for the explanation.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  5. More languages, more employability. by Anonymous Coward · · Score: 1

    I don't know of anyone that has been turned down from a customer facing job for being too multilingual.

    You want me to program in PHP? Fine. Python3? Fine. Python2? Fine. C, C++, Perl, MATLAB, R, COBOL, FORTRAN, etc. Fine.

    There are working tools written in all of the above languages. Most managers that value their budget aren't going to say "Eh, lets rewrite that COBOL program in Python 3".

    1. Re:More languages, more employability. by Anonymous Coward · · Score: 1

      I have found no one gives a F about the languages. They want blah blah blah in library xyz. Preferably 'rockstar status'. Then bitch they can not find anyone.

    2. Re:More languages, more employability. by Anonymous Coward · · Score: 0

      Anybody can gain proficiency in a platform or language by watching YouTube videos.

      Well, proficient enough to put it on one's resume and assure the interviewers.

    3. Re:More languages, more employability. by Cederic · · Score: 1

      Not if they're decent interviewers.

      Shit, I've put code into production in at least eleven languages running on half a dozen different operating systems (let alone OS versions) and at times running in sophisticated application servers. Right now I couldn't get through a good programming job interview on any of them.

      Even now I can look at code and tell you the bugs, tell you how to optimise it, tell you how to make it more maintainable and tell you what it'll do. I'd still need days of practice to be able to write anything meaningful in any language.

    4. Re:More languages, more employability. by Tony+Isaac · · Score: 1

      A list of languages on your resume is a good thing, to a point, but it matters which languages.

      For example, if you're interviewing with a company that builds Microsoft-stack software, they won't even look at you with your list of languages. Listing COBOL and FORTRAN says that you were a good programmer "back in the day" but your skill might be stale.

      I've never heard of a real company that uses smalltalk, so I don't know how listing it helps anyone, other than to show that you know more than one language. If smalltalk + 1 is all you've got, you have a bigger problem.

    5. Re: More languages, more employability. by Anonymous Coward · · Score: 0

      Lol. Similar boat here in presales. We acquired new product X. They told me I had no experience in X and couldn't support it. Global lead within a year. Don't they fucking know we've been doing this shit our whole lives?

      Hilarious post new year morning rants.

    6. Re:More languages, more employability. by Anonymous Coward · · Score: 0

      Do "decent" interviewers screen me with FizzBuzz?

      I like to write them a version that goes:

      1
      2
      Fuck
      4
      You
      . . .
      13
      14
      FuckYou

    7. Re:More languages, more employability. by Anonymous Coward · · Score: 0

      Your point is tenuous. Yes, a good interviewer can detect youtube-crammed BS and distinguish it from actual working knowledge. However, if you have used over 11 languages in production that is clearly a working knowledge beyond what you get from youtube videos, and arguably more valuable than an extensive knowledge of one single language (specialists are nice but you can add them onto a project, not create a project with them).

      Thus you seem to be implying that good interviewers are anal retentive and would pick Johnny C over Multilingual Mike every time, but that would seem to be a "very mediocre interviewer".

    8. Re:More languages, more employability. by Anonymous Coward · · Score: 0

      If I'm hiring somebody to write C on Linux, I don't just want C in their laundry list. I don't want them coming to me wondering why their Makefile is busted because of the whitespace issue in make. I want them to have wrestled with all the weird little compiler and platform issues, and hit the ground running. In other words, a big laundry list isn't necessarily bad; but one or two of those languages should be in **BOLD** to indicate it's their real area of expertise.

  6. "prototyping language for startups" by drinkypoo · · Score: 0

    Is this as bad an idea as it sounds to me? You write something in smalltalk and then you start over and start writing it in some language you actually plan to ship a product in? I realize there's a thing called prototype-based programming, but from the language I assumed that this wasn't what they were talking about.

    I'm not actually much of a programmer, which is why I'm asking :p

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    1. Re:"prototyping language for startups" by drinkypoo · · Score: 1

      You're actually not much of anything, if your posting history is anything to go by.

      You're just jealous that I have a posting history.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    2. Re:"prototyping language for startups" by horrido · · Score: 2

      Smalltalk has been commercially used for over three decades. It’s not some esoteric, academic language but a truly practical, industrial tool. Cincom’s and GemTalk’s websites list some of the companies they’ve served from all kinds of industries, including JPMorgan, Desjardins, UBS, Florida Power & Light, Texas Instruments, Telecom Argentina, Orient Overseas Container Lines, etc.

    3. Re:"prototyping language for startups" by david_bonn · · Score: 1

      If "prototyping" means making a rigged demo for suits, Smalltalk won't buy you much, But if you are trying to make an engineering sanity check to make sure you have identified all of the key parts to your proposed system Smalltalk can be awesome.

    4. Re: "prototyping language for startups" by Anonymous Coward · · Score: 0

      I can find lots of comments from Anonymous Coward here, including many from before you even registered.

    5. Re:"prototyping language for startups" by Anonymous Coward · · Score: 0

      Python is often used for prototyping. Is that a terrible idea? You make a proof-of-concept of the algorithm, identify the bottlenecks, then code those in a lower-level language if necessary. But you need to get a product up and working before you burn through startup/venture capitalist cash. Productivity is important.

    6. Re:"prototyping language for startups" by AuMatar · · Score: 1

      Its a pretty bad idea, but its not uncommon for a startup to write something, realize it isn't quite what they need to do, and throw most/all of it away and rewrite it. You don't plan to do that, but you accept that it may happen.

      You wouldn't normally plan to do it in another language, but you may switch frameworks or even languages if the original choices end up being a bottleneck as you scale (or a hiring bottleneck if you can't find enough programmers).

      --
      I still have more fans than freaks. WTF is wrong with you people?
    7. Re: "prototyping language for startups" by EmeraldBot · · Score: 1

      I can find lots of comments from Anonymous Coward here, including many from before you even registered.

      Now whether Mr. Anonymous Coward makes those comments worth reading is an entirely different matter.

      --
      "Set a man a fire, he'll be warm for the rest of the night. Set a man afire, he'll be warm for the rest of his life."
    8. Re: "prototyping language for startups" by Anonymous Coward · · Score: 0

      The word is envious, not jealous.

    9. Re:"prototyping language for startups" by Anonymous Coward · · Score: 0

      "You write something in smalltalk and then you start over and start writing it in some language you actually plan to ship a product in?"

      This isn't necessarily true. Very often, you prototype your application and once you've worked out all the kinks, you then refactor the code into a production system. Smalltalk's IDE makes refactoring a joy.

    10. Re:"prototyping language for startups" by Tough+Love · · Score: 0

      Before Eclipse became Eclipse it was called Visual Age for Java, implemented in Smalltalk, and it was a joy to use. Capable of some amazing things, like recompiling pieces of a program while running it, and have that all make sense and be natural. When rewritten in Java it became the dreary, plodding thing it is today. Not useless, but soul-sucking. Implementation language had something to do with it? Funny how everything written in Java ends up awkward.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    11. Re:"prototyping language for startups" by arkarumba · · Score: 1
      Its an old post circa 2008, but Ramon Leon's article "Simple Image Based Persistence"
      http://onsmalltalk.com/simple-...
      describes that "One of the nicest things about prototyping in Smalltalk is that you can delay the need to hook up a database during much of your development, and if you're lucky, possibly even forever."

      and slightly updated... http://forum.world.st/ANN-Simp...

    12. Re:"prototyping language for startups" by Tough+Love · · Score: 1

      Before Eclipse became Eclipse it was called Visual Age for Java, implemented in Smalltalk, and it was a joy to use. Capable of some amazing things, like recompiling pieces of a program while running it, and have that all make sense and be natural. When rewritten in Java it became the dreary, plodding thing it is today. Not useless, but soul-sucking. Implementation language had something to do with it? Funny how everything written in Java ends up awkward.

      Wow, looks like some Java programmer with mod points got triggered. Why should I be surprised? Java programmers tend to have a limited perspective of the world.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    13. Re:"prototyping language for startups" by arkarumba · · Score: 1

      Where Smalltalk went wrong is charging $5000 per seat at a time that Java was being released free of charge. That may have been sustainable for those big company clients that could afford to get their foot in the door to the Smalltalk advantages, but it missed getting mind share in the mass market.

    14. Re:"prototyping language for startups" by david_thornley · · Score: 1

      It's been a long time since a language became widely used without a good generally available free implementation. Was Pascal the last widely used language that relied on people buying it?

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  7. Yeah yeah by Anonymous Coward · · Score: 0

    And remember to learn German (or French, etc for those who are native German speakers) because that would be extremely worthwhile to know.

  8. no, not really by ooloorie · · Score: 1

    Smalltalk was an amazing language for the 1970's and 1980's. But pretty much all of its features have been incorporated into other languages, so learning Smalltalk won't give you amazing new insights if you know or learn languages like Python or JavaScript.

    Having said that, Smalltalk is fun to play around with. Fortunately, there are several excellent, faithful, and free Smalltalk implementations, including Squeak and Pharo. Just download them and play with them. Smalltalk is simple enough and similar enough to other languages that it shouldn't take you long to pick up.

    1. Re:no, not really by drinkypoo · · Score: 0

      Fortunately, there are several excellent, faithful, and free Smalltalk implementations, including Squeak and Pharo.

      I tried playing with Squeak once, and the performance was poor enough to chase me off. This wasn't so very many years ago. Has it improved dramatically in recent years?

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    2. Re:no, not really by horrido · · Score: 1

      Smalltalk has a unique “live coding and debugging” IDE that is largely responsible for its incredible productivity. This feature is unmatched by anything in mainstream programming. While IDEs such as Visual Studio and Eclipse have tried to incorporate live coding, they fail to be as easy and elegant as Smalltalk.

      Smalltalk is beautifully simple and elegant making it extremely easy to learn. It virtually has no syntax! What other language has this quality? Maybe Scheme. Maybe Logo. Certainly not Python, Ruby, JavaScript, PHP.

      I didn't realize that programming languages were supposed to give you "insights." I always thought they were just tools for expressing algorithms. Silly me...

    3. Re: no, not really by Anonymous Coward · · Score: 0

      Which IDE? Squeak?

    4. Re: no, not really by tigersha · · Score: 1

      Uhm, Ruby is pretty much based on Smalltalk so I would have to disagree

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
    5. Re: no, not really by Anonymous Coward · · Score: 0

      Ruby does not have Smalltalk's live coding/debugging environment, which is arguably Smalltalk's best feature. Ruby syntax is not nearly as simple and elegant as Smalltalk's. Its "Perlisms" drive a lot of people nuts.

    6. Re:no, not really by JaredOfEuropa · · Score: 1

      I've done some Smalltalk stuff in the past, but I never really got any special insights from it, nor did I achieve an "incredible productivity" compared to other languages / IDEs. It's good but I didn't experience it as a step change.

      What makes or breaks a language is its libraries. Microsoft's libraries used to be notoriously sucky, often lacking symmetry and orthogonality, and with some oddly specific functions that looked as if they were written for a particular product (like Office). They've improved a lot though. How does Smalltalk fare in that respect?

      Another thing: software with modern UIs have to be incredibly reactive in the sense that they need to respond aynchronously to a large variety of events from many different sources. I have found asynchronous event handling to be an impediment to clean code design and understanding that code, and it's a significant source of bugs as well. Does Smalltalk have anything to cleanly handle this? I recently started coding in C# / Xamarin, and found the async / await construct to be a rather nice improvement on asynchronous code.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    7. Re:no, not really by arkarumba · · Score: 1

      It depends on which VM you were using. Slide 51 shows the Sista VM provides a magnitude improvement over the original Interpreter VM. http://www.slideshare.net/esug...

    8. Re:no, not really by arkarumba · · Score: 1

      A thread that touches on async events. http://lists.pharo.org/piperma...

    9. Re:no, not really by ooloorie · · Score: 1

      Smalltalk has a unique “live coding and debugging” IDE

      Many scripting languages have that.

      that is largely responsible for its incredible productivity.

      Do you have any solid evidence of high Smalltalk productivity compared to modern scripting languages, or even functional programming languages?

      Personally, I don't find Smalltalk productivity all that high, for the simple reason that its libraries are far more limited than those of other languages, and that it integrates poorly with the operating system and other tools.

      I didn't realize that programming languages were supposed to give you "insights." I always thought they were just tools for expressing algorithms. Silly me...

      Yes, that is quite silly of you, not to mention quite ignorant. There are indeed quite a few different approaches to programming beyond "Python, Ruby, JavaScript, PHP", Smalltalk, C++, or Java. You should try them sometime.

    10. Re:no, not really by Santana · · Score: 1

      I don't think you know what live coding means. Try harder, find out what that means, before you keep embarrassing yourself.

      --
      The best way to predict the future is to invent it
    11. Re:no, not really by EidanYoson · · Score: 1

      No. scripting languages doesn't have live coding by definition. Please research papers about Liveness before commenting here.

    12. Re:no, not really by EidanYoson · · Score: 1

      It is because using Smalltalk does not makes you productive per se. You need to learn to think in objects, beacuse you can use Smalltalk as any scripting language or hybrids like Python. Then you make no difference at all. It will be the same crap with different syntactic sugar. "What makes or breaks a language is its libraries" No. Think about Delphi. Tons of libs, nobody using it now. Or even C. Is not in the libraries, it's in the mind of the programmer!! You all want to blame the libs, but the fault for not success is in us, not in the libraries. (from a Smalltalk developer since 20 years)

    13. Re:no, not really by ooloorie · · Score: 1

      Ah, you poor poor Ruby hackers... so full of anger, envy, and disappointment.

    14. Re:no, not really by ooloorie · · Score: 1

      Please research papers about Liveness before commenting here.

      You're welcome to share references to papers you consider important and that make the distinction between interactive development in Smalltalk vs other languages you are trying to make.

  9. Like Latin... by __aaclcg7560 · · Score: 1

    C is probably the programming language that will make you a better programmer. Pretty much every other programming derived from C in one form or another. If you want to get under the hood of language, it's probably C anyway.

    1. Re:Like Latin... by Santana · · Score: 1

      You are terrible wrong.

      C has its place as a low level language but it is definitely, without any doubt, not the best language to become a good programmer. If you really believe what you are saying then you are missing a lot about programming.

      --
      The best way to predict the future is to invent it
    2. Re:Like Latin... by Santana · · Score: 1

      I meant *terribly*

      --
      The best way to predict the future is to invent it
    3. Re:Like Latin... by horrido · · Score: 1

      How did functional programming, represented by languages like Clojure, Erlang, Haskell, derive from C??? How did object-oriented programming derive from C?

    4. Re:Like Latin... by anchovy_chekov · · Score: 1

      This seemed to be a popular myth back in the 90s. When C++ was building up steam and lot of old coders would claim that all it was did was what they'd been doing in practice, they just called it by different names.

      It was complete bullshit of course. They were trying to claim prior knowledge for something fundamentally novel. I'd see them writing C++ code like a C coder and having to keep my mouth shut, because I was just a young whippersnapper with smartarse ideas. I'll admit I could never code in C like those guys did, but the world had changed... we were solving different problems than they grew up with.

    5. Re:Like Latin... by __aaclcg7560 · · Score: 1

      If you really believe what you are saying then you are missing a lot about programming.

      That's probably true. I've learned computer programming at the community college and went into IT support upon graduation. I'm currently working my way through an old book to create a Pascal compiler from C (circa 1986). A double challenge to translate old C into modern C and learn Pascal at the same time. The reason I'm learning C is to write Python C extensions and embedded code.

    6. Re:Like Latin... by __aaclcg7560 · · Score: 1

      How did functional programming, represented by languages like Clojure, Erlang, Haskell, derive from C???

      I didn't write EVERY programming language derived from C. Every language I ever tried derived from C. As for Clojure, Erlang and Haskell, I've heard of Haskell but never tried it.

      How did object-oriented programming derive from C?

      Umm... C++?

    7. Re:Like Latin... by Santana · · Score: 1

      I see where you are. I'm sure I don't need to tell you this but: keep being curious. It will be a long and very exciting trip.

      --
      The best way to predict the future is to invent it
    8. Re:Like Latin... by Anonymous Coward · · Score: 0

      C++ got class-based OOP from Smalltalk, not C.

    9. Re:Like Latin... by Anonymous Coward · · Score: 0

      Well, actually Simula...but still, not C... LOL

    10. Re:Like Latin... by Anonymous Coward · · Score: 0

      Horseshit, C is an awesome hugely powerful language that can do almost anything, EXCEPT make you a better programmer. The lack of rules and enforcement makes basic mistakes easy to make and hard to notice, bad practises are very easy to pick up in C that can stay with a programmer for life.

    11. Re:Like Latin... by Z00L00K · · Score: 1

      C is a good learning language - you will make all your mistakes there and then you know what you shouldn't do to avoid stack overwrites etc. Shoot yourself in the foot 25 times and you will learn how you shouldn't do, then you can continue with a better language.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    12. Re:Like Latin... by Z00L00K · · Score: 1

      Just realize that C++ comes with the disadvantages of both C and Object orienting without many of the advantages and then you know that you should have never done C++ at all.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    13. Re:Like Latin... by angel'o'sphere · · Score: 1

      I thought you were a professional software developer.
      Did you not say so in older posts?

      Sorry, but this idea that any language has borrowed from C (except C++) is idiotic. Considering that most languages predate C anyway ...

      I guess you are the prime example for a developer who can learn great deals about programming if you would learn SmallTalk, Lisp and/or Prolog.

      C does not make you a better programmer. It is useful. And that was it.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    14. Re:Like Latin... by angel'o'sphere · · Score: 1

      C++ is not derived from C.
      It is derived from Simula and was given a C compatible syntax.

      Going so far, that at the time C++ was created, the compiler could compile most C programs. And probably you know it compiled "to C" as it was "only" a cross compiler.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    15. Re:Like Latin... by Anonymous Coward · · Score: 0

      I didn't write EVERY programming language derived from C. Every language I ever tried derived from C. As for Clojure, Erlang and Haskell, I've heard of Haskell but never tried it.

      Ahhh Yes you did
      " . Pretty much every other programming derived from C in one form or another"

    16. Re:Like Latin... by serviscope_minor · · Score: 1

      If it has more disadvantages than C and no upsides, then why aren't there any major, high performance C compilers written in C any more? They've all moved over to C++.

      --
      SJW n. One who posts facts.
    17. Re:Like Latin... by serviscope_minor · · Score: 1

      It was complete bullshit of course.

      Actually, not entirely, at least not for the good ones.

      For example lots of people did/do OO in C, which can be kind of mushed together using structs, function pointers factory functions and macros. Sure, you don't need C++ to do that. However, every single program and library had it's own pet OO system.

      C++ gave syntactic support for it, so a huge amount of the burden of using those systems vanished. It made in that case existing practice, clearer, simpler and safer.

      Likewise for macros. You could and can make perfectly functional container/generics libraries using macros with hefty use of the ## operator, including getting some degree of type safety too. However, C++ templates essentially formalised that making it clearer, simpler, and safer.

      So in a number of ways, it DID formalise existing practice. And being built into the language rather than implemented as dreadfully ad-hoc library solutions, they also interacted much better and gave whole new ways of programming too.

      And much of the rest was to automate things that you had to do in C for correctness (constructors and destructors).

      Which reminds me: I always found the anti-C++ crowd a bit odd. C++ basically provides more automation and more programmability to the compiler. As a programmer, I can't understand the attitude where you don't want more automation.

      --
      SJW n. One who posts facts.
    18. Re:Like Latin... by MouseTheLuckyDog · · Score: 1

      That is simply not true. A lot of OO was there for the picking.
      Object based programming, for example, was visible in Xt and Xaw. There is not much difference between object method and QtCall(widget, ...).
      Polymorphism was present even in early Unix in filesystem object being used for everything possible to quicksort in C.

      Good programmers were using those techniques. Average programmers were unfamiliar with those techniques. Like RAII in the 90s.

      The OO revolution was in large part taking those techniques and replacing the clunky software tools, like structs and function pointers in C with more developed tools like classes in C++. That's why there was great deal of interest in things like Flavors.

    19. Re:Like Latin... by Rockoon · · Score: 1

      C++ began as a C preprocessor.

      The first C++ "compiler" was Cfront, which was a C preprocessor, which itself was derived from Cpre, which was also a C preprocessor.

      --
      "His name was James Damore."
    20. Re:Like Latin... by angel'o'sphere · · Score: 1

      The word "preprocessor" does not mean what you think it means.

      I already pointed out that C++ was translated to C at those times, so what do you want to point out?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    21. Re:Like Latin... by horrido · · Score: 1

      How did object-oriented programming derive from C? Umm... C++?

      WTF???

      Do you even know what the word "derives" mean? C did not provide any contribution to OOP at all. C++ was the result of cobbling OOP features on top of C – that's not "derivation" in any sense of the word. And C++'s OOP features came from Simula. C had nothing to do with it.

    22. Re:Like Latin... by Anonymous Coward · · Score: 0

      When it comes to learning programming the popularity of C has probably caused a lot of problem.
      If you want someone to understand pointers/object references the two languages that makes it easy to understand is assembly and basic.
      Since it is tedious to do anything complicated in either of those languages a programmer that is used to higher level languages won't feel comfortable with them.
      Because of this I think it would be best if people who are going to start programming started out with those languages.
      Get the fundamentals right. Then jump over to the languages that makes programming easy.

    23. Re:Like Latin... by Anonymous Coward · · Score: 0

      C is terrible for that.

      If you want to learn how to manage your stack and how pointers work then the syntax of C and other higher level languages hides that in a non-intuitive manner.
      Start with assembly and work your way up through languages that makes programming easier as you go.
      Eventually you run into programming languages where you have to jump through hoops to do things that were simple in assembly and fairly easy in C.

    24. Re:Like Latin... by Rockoon · · Score: 1

      Preprocessors pass through stuff they dont handle. Compiling to C will never do that.

      The fact that you think preprocessing = compiling tells us a lot about the state of your "expertise" on this matter. There isnt any expertise to be found. You are just a guy with little information but a lot of imagination trying to fool everything into thinking that you are an expert on a subject that you are actually only so casually familiar with that you spout bullshit like its gold.

      --
      "His name was James Damore."
    25. Re:Like Latin... by angel'o'sphere · · Score: 1

      You started with the "preprocessor" meme, not me.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    26. Re:Like Latin... by __aaclcg7560 · · Score: 1

      I thought you were a professional software developer.
      Did you not say so in older posts?

      Nope. I recently added "community" to "college" when describing my programming background because some people assumed that I'm Computer Science graduate. Community colleges graduate programmers, not software developers. Six years as a video game tester and a solid programming background has made me quite successful in IT support by being able to solve difficult problems.

      Considering that most languages predate C anyway ...

      I'm quite sure that C++, Java, Javascript, PHP, Python and PowerShell came after C.

    27. Re:Like Latin... by anchovy_chekov · · Score: 1

      Yeah, you're quite correct.

      I regretted that the minute I posted it. When I look back, my mentors at the time were the guys who had been using OO techniques for some time. There were an awful lot of other coders who wouldn't / couldn't follow the paradigm, and pushed back whenever you tried to talk to them about it.

      Regardless, I was being just as guilty of claiming something that was patently false. I appreciate being called on it.

    28. Re:Like Latin... by __aaclcg7560 · · Score: 1

      Do you even know what the word "derives" mean? C did not provide any contribution to OOP at all.

      Sorry, my bad. It should have been evolved, not derived.

      According to "How to Program C++" by Deitel and Dietel (fourth edition), page 8: "C++ evolved from C, which evolved from two previous programming languages, BCPL and B."

      Incidentally, that book never credits Simula and mentions SmallTalk @ PARC in passing while discussing OOP. This is an undergraduate college textbook that I used when I learned computer programming at the community college.

    29. Re:Like Latin... by __aaclcg7560 · · Score: 1

      Ahhh Yes you did
      " . Pretty much every other programming derived from C in one form or another"

      Every OTHER != Every ONE

      Or to quote Ripley from Aliens: "Did IQs just drop sharply while i was away?"

    30. Re:Like Latin... by Santana · · Score: 1

      I mean no offense, but that's an example of how people get OO wrong. OO is not about bundling data and code together but about sending messages. Once you wrap your head around this you will start the path to enlightenment and won't look back.

      --
      The best way to predict the future is to invent it
    31. Re:Like Latin... by Anonymous Coward · · Score: 0

      According to "How to Program C++" by Deitel and Dietel (fourth edition)
      . . .
      This is an undergraduate college textbook that I used when I learned computer programming at the community college.

      If your instructor uses ANYTHING by Deitel & Deitel, run away!!

    32. Re:Like Latin... by serviscope_minor · · Score: 1

      I mean no offense, but that's an example of how people get OO wrong.

      Well, not really. There are essentially two styles. My point that in many cases, C++ formalised a lot of rather ad-hoc practice in C and gave people a common syntax with additional safety.

      Once you wrap your head around this you will start the path to enlightenment and won't look back.

      eh. I'm yet to be convinced: and I don't really see the difference between message passing and dynamic dispatch via a method call. I like my very static typing: getting concepts formalised in C++ is something I'm really looking forward to. It allows you to encode mathematical like precision.

      --
      SJW n. One who posts facts.
    33. Re:Like Latin... by __aaclcg7560 · · Score: 1

      If your instructor uses ANYTHING by Deitel & Deitel, run away!!

      Too late! I took multiple classes in Java and C++ with Deitel & Deitel. At $90 per book (circa 2005), I kept both books instead of selling back at the end of the semester. Ironically, since I went into IT support, I haven't done much in either Java or C++.

    34. Re:Like Latin... by angel'o'sphere · · Score: 1

      Again then: Considering that most languages predate C anyway ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    35. Re:Like Latin... by Anonymous Coward · · Score: 0

      > Again then: Considering that most languages predate C anyway ...

      Is that so?

    36. Re: Like Latin... by Anonymous Coward · · Score: 0

      One huge problem with C++ is the ridiculously bad code it generates. In C, you'd use calloc to get a nicely initialized array of struct at almost no cost.
      In C++ you write a constructor and suddenly because the compiler is crap initializing your 16k array takes 20k or more CPU cycles. And not even C++11 and its constexpr is sufficient to fix major compiler issues like these that at best cause major CPU and cache issues, worst case means you have to re-write your code in C style.

    37. Re:Like Latin... by Anonymous Coward · · Score: 0

      From Wikipedia [a lame source, I know]:

      The creator of C++, Bjarne Stroustrup, has acknowledged that Simula 67 was the greatest influence on him to develop C++, to bring the kind of productivity enhancements offered by Simula to the raw computational speed offered by lower level languages like BCPL.

      So, you might just as well claim Java was based on LISP. You'd be wrong, but apparently you might claim such a thing.

    38. Re:Like Latin... by __aaclcg7560 · · Score: 1

      Is that so? [loyola.edu]

      Nice colorful lines. I don't thing the O'Reilly publication history is a good representation of programming languages becoming available. If Perl came out before C and C++, the Perl priesthood wouldn't allow any other programming languages to exist. O_o

    39. Re:Like Latin... by rochrist · · Score: 1

      Wait....wut?

    40. Re:Like Latin... by Anonymous Coward · · Score: 0

      Well, you could provide some evidence of your own. Or just admit you're full of shit.

      There were maybe a couple-three dozen languages before C came along; now there are hundreds.

    41. Re:Like Latin... by __aaclcg7560 · · Score: 1

      Well, you could provide some evidence of your own.

      If you look at the link that was provided, there are tons of colorful lines and a row of O'Reilly book covers underneath. O'Reilly published a Perl book before they published C/C++ books. There's your evidence: Perl came before C/C++. ;)

      Or just admit you're full of shit.

      Someone is having a bad New Year's Day (Observed).

    42. Re:Like Latin... by Anonymous Coward · · Score: 0

      > I don't thing the O'Reilly publication history is a good representation of programming languages becoming available.

      It's not a publication history.

      > O'Reilly published a Perl book before they published C/C++ books. There's your evidence: Perl came before C/C++. ;)

      Cute. In other words, ya got nothin'.

      Happy New Year to you too!

    43. Re:Like Latin... by Anonymous Coward · · Score: 0

      I call that OOP with Message Passing, and the other style OOP with Encapsulation. Always be specific and nobody will ever come off like a douchebag.

    44. Re:Like Latin... by __aaclcg7560 · · Score: 1

      Cute. In other words, ya got nothin'

      I have a sense of humor.

  10. Mind blowing by Santana · · Score: 5, Insightful

    I was surprised, maybe shocked, by how much Smalltalk has contributed to the world[1], how far we have deviated from it[2], and how slowly we are converging to it again[3].

    [1] object oriented programming, virtual machine, just-in-time compilation, test-driven development, Model-View-Controller design pattern, object databases
    [2] inventing problems by trying to coerce static typed programming languages to behave like dynamic ones (Java, Go, et cetera, I'm looking at you)
    [3] by slowly incorporating Smalltalk features into current popular programming languages. Ruby for instance is heavily based on Smalltalk.

    --
    The best way to predict the future is to invent it
    1. Re:Mind blowing by Anonymous Coward · · Score: 0

      Rub for instance...

      You're not helping your case here... hehe

    2. Re:Mind blowing by Anonymous Coward · · Score: 0

      Doesn't anyone remember Windows? What about COM, ActiveX and MFC? Object-like is the future and we didn't kill off Borland and all the other cross platform OO( I can't even say the words ) frameworks because being Object-like is being God-like.

      note to self, ask Steve, how come we didn't kill off Smalltalk.

    3. Re:Mind blowing by Santana · · Score: 1

      Here's something to keep you wondering: https://en.wikipedia.org/wiki/... (Portable Distributed Objects)

      --
      The best way to predict the future is to invent it
    4. Re:Mind blowing by Darinbob · · Score: 3, Interesting

      Ruby is pretty good, just ignore the Rails crap. It has a big flaw in that it did not make code blocks into first class objects, and then another flaw that it tried to patch this in after the fact with very heavy weight code block objects. So it superficially feels like Smalltalk until you use it enough that you start wanted to just have Smalltalk instead.

    5. Re:Mind blowing by Darinbob · · Score: 1

      All those Windows things are just plain awful implementations of OO. It's like the blind men trying to describe an elephant, Microsoft had almost no idea what OO was and yet they went ahead full speed despite their ignorance.

    6. Re:Mind blowing by Dog-Cow · · Score: 2

      I watched a presentation given by Kevlin Henney (videos on YT), in which he quotes someone (don't remember who) who claims that COM is one of the purest implementations of OOP ever. COM objects can't interact except through published interfaces, and one cannot even find out what kind of object one is communicating with.

      MS has all sorts of faults, but they do actually understand computer science. They also have a very pragmatic side.

    7. Re:Mind blowing by Tablizer · · Score: 1

      MVC overly complicates software in many cases. The "reuse" or "separation" angle doesn't pay off often enough in practice for most project. It's an extra layer that doesn't buy you enough to justify its complexity rent.

    8. Re: Mind blowing by Malc · · Score: 2

      COM came with cross language ABI compatibility; separation of interface and implementation. From this perspective it was a very practical and useful technology. It got pretty damn complicated with ATL and I worked somewhere that created lots of custom objects defined in C++ rather than IDL derived from Microsoft ActiveX controls, but that's a different story. It remains a useful technology on Windows that sometimes makes integration of components from different places easy, especially if you've only got a legacy 32-bit library and want to use it in a 64-bit app.

    9. Re: Mind blowing by Anonymous Coward · · Score: 0

      If you are sure that you'll never need to change the V or C parts to cope with new technologies, or reimplement the M part to cope with new technologies, parallelise, or whatever, then MVC makes a lot of sense unless the initial timescales are particularly tight.

    10. Re:Mind blowing by MouseTheLuckyDog · · Score: 1

      All of which happened not because Microsoft wanted to extend their monopoly position to megamonooly positions.
      Not any technical quality.

      Borland was only slightly cross platform and that was only a half hearted attempt.

    11. Re:Mind blowing by Anonymous Coward · · Score: 0

      Posting anon so I don't burn mod points. I can't speak to most of those claims, but virtual machines were in commercial production uses and core to other programming languages LONG before smalltalk came around. In the '80s I made a living writing in Pick, which was based on GIRLS, written by the army in 1965. The whole thing was based on a tiny kernel that emulated a much more powerful machine than could be built at the time; the OS and language were then written for that virtual machine. It was so ahead of its time that when IBM started the whole RISC fad, Pick was the first language to run on the new processor, even before anything written by the guys building it, because the CPU was really close to the virtual CPU pick implemented.

    12. Re:Mind blowing by Cederic · · Score: 1

      Did he also mention that COM was fucking horrific?

      It was actually easier to use DLLs than COM objects, and that's a indictment if you've ever done 90s Windows programming.

    13. Re:Mind blowing by Anonymous Coward · · Score: 0

      Did he also mention that COM was fucking horrific?

      That doesn't rule out "that COM is one of the purest implementations of OOP ever".
      There is nothing that says that pure OOP is actually a good thing, it just has a strong following right now.

    14. Re:Mind blowing by Anonymous Coward · · Score: 0

      In the '80s I made a living writing in Pick, which was based on GIRLS

      Officer: Sir, we got a report of strange noises from this residence. Mind if I come in?

      Programmer: What kind of noise?

      Officer: Have you been doing anything unusual?

      Programmer: No, same stuff. I've been hacking on GIRLS this entire evening.

      Officer (to walkie talkie): I need backup.

    15. Re: Mind blowing by MightyMartian · · Score: 1

      COM is just an implementation of CORBA. Let's give credit where credit is due.

      --
      The world's burning. Moped Jesus spotted on I50. Details at 11.
    16. Re:Mind blowing by Santana · · Score: 1

      Portable Distributed Objects, based on Objective-C (C inspired on Smalltalk), beat CORBA and DCOM on distributed objects by using an elemental design pattern, the proxy pattern, that nobody else could because they got OO wrong.

      "PDO enabled NeXT to demonstrate Excel talking to other Microsoft applications across a network before Microsoft themselves were able to implement this functionality (DCOM)."

      https://en.wikipedia.org/wiki/...

      --
      The best way to predict the future is to invent it
    17. Re:Mind blowing by lgw · · Score: 2

      Ruby is terrible for server-side code. It's a toy language with crappy support for exception handling and multi-threading.

      Real production code requires structure for maintainability. And you're generally better off when that structure comes from the language itself, rather than coding conventions. Static typing is always going to be more maintainable than noting parameter types in comments. Finding problems at compile time is always going to be better than finding the same problem at runtime. Duck typing makes it easier to write that first line of code, but is the bane of code maintenance.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    18. Re: Mind blowing by lgw · · Score: 1

      "Being an implementation of CORBA" mans you should give blame where blame is due. COM and CORBA were fucking horrific travesties, based on a fundamentally incorrect notion of how to do OOP across a boundary.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    19. Re:Mind blowing by Santana · · Score: 1

      You are obviously biased towards static typing, which is fine. But then, why are you commenting on a Smalltalk story, I wonder. Do you care? Smalltalk is obviously not in your list of interests.

      Now, calling out Ruby for being terrible for server-side code though is plain ignorant.

      Why do you think Ruby is a toy language? what are you comparing it with?
      Crappy support for exceptions? What are you talking about here? Please specify. Again, what are you comparing it with?
      What's wrong with multi-threading in Ruby?

      --
      The best way to predict the future is to invent it
    20. Re:Mind blowing by lgw · · Score: 1

      When we converted all our remaining production Ruby code to Java, we through a party to celebrate (and it's not like Java is anything great). No joke. Ruby just sucks for maintainability. It's a step up from PHP, that is all.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    21. Re: Mind blowing by Tablizer · · Score: 1

      New technologies often require reworking the entire UI flow anyhow. One-to-one translation doesn't cut it. API's are dumb and not AI.

  11. IBM/Rational use it in shipping products by Anonymous Coward · · Score: 0

    Rational's RequisitePro is written in Smalltalk.

    1. Re:IBM/Rational use it in shipping products by drinkypoo · · Score: 1

      Rational's RequisitePro is written in Smalltalk.

      I'm aware that it's possible to ship software written in Smalltalk, but also that it's not exactly a popular language.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    2. Re:IBM/Rational use it in shipping products by Santana · · Score: 1

      Of course it is. Smalltalk is a live language. JP Morgan for instance is one of the largest users of Smalltalk.

      There are companies today making a living out of writing software in Smalltalk. Even successful companies selling implementations of Smalltalk like Cincom.

      Smalltalk is not a language from the past. It is the language of the future. Java held us back for years.

      --
      The best way to predict the future is to invent it
    3. Re:IBM/Rational use it in shipping products by horrido · · Score: 1

      Neither is Clojure, F#, Erlang, Elixir, Elm, Dart, Julia, Rust, Kotlin. Does that mean we shouldn't use these languages?

    4. Re:IBM/Rational use it in shipping products by drinkypoo · · Score: 1

      Smalltalk is not a language from the past. It is the language of the future.

      So is adoption actually increasing? Or is that just wishful thinking?

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    5. Re:IBM/Rational use it in shipping products by Anonymous Coward · · Score: 0

      Cobol is still actively used and developed as are a myriad of other niche languages so that is hardly a proof that it is not of the past. smalltalk will never be the future, it is simply not a necessary language anymore and brings very little benefits, all the good bits were picked up by other languages years ago

    6. Re: IBM/Rational use it in shipping products by Anonymous Coward · · Score: 0

      I have seen this comment repeated in this articles comments. Are you nervous or anxious, and that is why you keep saying the same thing multiple times?

    7. Re:IBM/Rational use it in shipping products by Dutch+Gun · · Score: 1

      Neither is Clojure, F#, Erlang, Elixir, Elm, Dart, Julia, Rust, Kotlin. Does that mean we shouldn't use these languages?

      Not necessarily. But it's important to understand that popularity of your technology of choice - languages included - usually tends to be a positive thing. It means there's a larger community of developers, which in turn means better tools, more libraries and frameworks, and of course, it's also easier to find programmers who are already up to speed with that technology.

      While it's true that any decent programmer can learn any language (I've done so several times on the job), it does takes time, meaning for projects in more niche languages, any programmer you hire is going to cost more as they learn both learn the project AND a new language.

      Honestly, I've never been one for learning a programming language you don't actually use in practice. I've always felt that if you have a need to use it for a specific reason, you'll learn it, and get proficient with it. But unless you're solving significant problems with your language, I don't think you've actually "learned" it, no matter how many books you've read or toy projects you've thrown together. That's not enough to really get your claws into it, learning the good as well as the bad.

      --
      Irony: Agile development has too much intertia to be abandoned now.
    8. Re: IBM/Rational use it in shipping products by Anonymous Coward · · Score: 0

      No Santana/horrido. No one is "nervous" that you falsely claim some niche language is the future. Even Apple is abandoning their Smalltalk-like langauge because it sucked ass.

    9. Re:IBM/Rational use it in shipping products by Anonymous Coward · · Score: 0

      lol smalltalk is like visual basic. Dead and Buried.

    10. Re:IBM/Rational use it in shipping products by drinkypoo · · Score: 1

      lol smalltalk is like visual basic. Dead and Buried.

      I wouldn't go that far, I'd say it's on permanent life support. But adoption certainly isn't increasing. Train wrecks like C# have become more popular, and fringe languages only eat one another's lunches. They don't dent the leaders.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    11. Re:IBM/Rational use it in shipping products by arkarumba · · Score: 1

      The Pharo Consortium has only been going a few years and is steadily gaining members - companies putting real money on the table. http://consortium.pharo.org/

  12. It depends... by QuietLagoon · · Score: 1

    ... upon how poor of a programmer you were previously.

    1. Re:It depends... by Kjella · · Score: 1

      It depends upon how poor of a programmer you were previously.

      While perhaps not so blunt, that sort of mirrors my thinking. It has to be a really fucked up language to make you worse then before, sure you pick up bad habits but if you're willing to learn you're willing to unlearn. If you're not you're kinda fucked either way. It's another question entirely if it's an efficient way, like could you learn functional or object-oriented programming or some design pattern faster by another language. I'm sure every language has something similar to for example the singleton pattern, like what do I do if I only want one instance with a global state. Most of the time it's simply a question of the short road or the long road.

      --
      Live today, because you never know what tomorrow brings
    2. Re:It depends... by doom · · Score: 1

      I'm sure every language has something similar to for example the singleton pattern, like what do I do if I only want one instance with a global state

      I can remember back when we just called those "global variables".

      Ah, how far we've come.

    3. Re:It depends... by phantomfive · · Score: 1

      "How Brainfuck Made Me a Better Programmer."

      --
      "First they came for the slanderers and i said nothing."
    4. Re:It depends... by lgw · · Score: 1

      Some state actually is global, though - from config information, to localization, to that temperature sensor. It's good for a language to have a clear way to express that "this state is global -- if there are two copies of it, that's a problem -- but the scope isn't global and only this code here can access it". I can't think of a language that gets this right, but singletons are at least a better tool than global variables.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    5. Re:It depends... by doom · · Score: 1

      A friend of mine once released some code with a hash named "%global". Labeling it clearly didn't stop purists from complaining about it.

      But yeah, I know, global state exists because there's a real world that exists, and the code is supposed to have something to do with it.

      My point is that no programming discipline is complete until it re-invents global variables under some other name-- but it has to be called something different to get it by the censors.

    6. Re:It depends... by lgw · · Score: 1

      On the kernel side in MS-land there are a couple of macros named __try, __finally, and __leave. They're simple wrappers around goto, for no reason but slipping it past the censors.

      --
      Socialism: a lie told by totalitarians and believed by fools.
  13. Fear the OOP. by Anonymous Coward · · Score: 0

    Most people's exposure to OOP is like their exposure to math. Badly done, and causes them to break out in a sweat every time they have to face it.

  14. No more then Ruby. by MouseTheLuckyDog · · Score: 1

    The whole thing sounds and feels great, until you realize that thousands of two and three line methods and no methods larger then 20 lines is not that great.

    Plus the tools, like for example, editors, grep, etc. all have to be written from scratch thus lag behind common tools. Though other languages are ( stupidly ) going the same way.

    Something like RUby which draws a lot of ideas from Smalltalk works better.

  15. Uh... by ckatko · · Score: 5, Interesting

    While Smalltalk clearly has plenty of influences in later languages, from everything I've ever heard or read, the language to learn is LISP--not Smalltalk. I've heard countless stories of people saying it retrains your brain and opens your eyes to new ways of solving problems and that "It's the best language to learn that you'll never actually use." (Because it helps in your normal life.)

    It's like learning Latin in school, to help you appreciate English.

    1. Re:Uh... by anchovy_chekov · · Score: 1, Interesting

      While Smalltalk clearly has plenty of influences in later languages, from everything I've ever heard or read, the language to learn is LISP--not Smalltalk. I've heard countless stories of people saying it retrains your brain and opens your eyes to new ways of solving problems and that "It's the best language to learn that you'll never actually use." (Because it helps in your normal life.)

      It's like learning Latin in school, to help you appreciate English.

      I think you're right on the mark here. AI seems to be the way of the future for coding. LISP is a brilliant language for learning about core ideas in that domain - or many other domains for that matter. The analogy with Latin, and the implicit understanding of grammar and structure, is a good one.

    2. Re:Uh... by Anonymous Coward · · Score: 3, Insightful

      > LISP is a brilliant language for learning about core ideas in that domain

      Actually that has not been true for a while now.

      Lisp was innovative back in the day for its ability to easily manipulate data structures. After all, Lisp's homoiconic syntax and macros meant that you were essentially manipulating thinly disguised ASTs. AI back then was symbolic in nature (think natural language processing), so Lisp fit the bill really well.

      However, the symbolic school of AI has not been dominant for years -- the current trend for AI is statistical and data-driven. Also, other languages have caught up in terms of rich data structures. It's still worthwhile learning Lisp to understand a subset of functional programming constructs (with the qualification that Lisp is not a fully functional language -- people don't realize this). But it is no longer useful to learn it for the purposes of AI. One would be better off learning Python.

    3. Re:Uh... by Anonymous Coward · · Score: 0

      I think Smalltalk is useful to learn as a mechanism to break some of the bad habits of non-OO programmers; it also, for the observant student, offer up some observations as to where OOP techniques start to break down and aren't a panacea.

      On the other hand, I disagree about LISP, unless you're having problems understanding ASTs, since LISP is, basically, a language that skips all that syntactic sugar that other languages insert between the human and the computer to make the human's life easier. Yes, it does retrain your brain, but not, I think, in a good way.

      In LISP, code is data. So programmers happily write self-modifying code, which is clever, and powerful, and absolutely insane if you're trying to get something done or reason about what the program should do from looking at the source code. There's only so much brain power you have, and if you're using most of it to track what's happening in your moderately complicated self-modifying codebase, you're not going to have the brain power to identify the fundamental issues in your problem-space. And if you're not in a unique or difficult problem-space, then someone else has solved your problem and you shouldn't be re-inventing the wheel for the tenth time.

      When you learn to look at the world as an opportunity to have code create and modify code on the fly, itself or others, you end up writing code that requires ever-expanding codebases to analyze for performance and security issues. Clever becomes the goal, and maintainability gets tossed out the window. If you're trying to write viruses, trojans, or compilers, it's probably a good thing; but otherwise, probably not so much.

      On the other hand, if you adopt the lexically-scoped languages, you encourage yourself to write code where reading the source code is a reasonable mechanism for analysis. Keeping all of the statements in a unit (function, procedures, etc) at the same level of abstraction seems like a reasonable thing to do. Writing consistent documentation with an eye towards helping out the poor SOB who comes after you becomes practical. Devising dead data-formats so the amount of work that needs to be done over the years watching for malware becomes much easier.

      And if you learn a good assembly language, you learn about how the computer actually works

    4. Re:Uh... by serviscope_minor · · Score: 2

      It's like learning Latin in school, to help you appreciate English.

      And much like Latin, it probably encourages large numbers of people to inappropriately coerce things into an inappropriate mould. For example insisting on things like not splitting infinitives.

      --
      SJW n. One who posts facts.
    5. Re:Uh... by admin7087 · · Score: 1

      CommonLisp is a good choice for large, production-type software running on a centralized server. It's insanely powerful, has advanced debugging facilities, and some implementations such as SBCL are fairly fast. The disadvantage is that it's harder to find programmers who are already familiar with it.

    6. Re:Uh... by digitig · · Score: 1

      If learning something that has had a lot of influence makes us better at a language, presumably we should all be learning Anglo-Saxon, to make us better at English. And maybe it would make us better at English (though I doubt it), but is it the most effective way to make us better?

      --
      Quidnam Latine loqui modo coepi?
    7. Re:Uh... by Anonymous Coward · · Score: 0

      If you wan't to appreciate English, learn German. English borrows many lexical roots from Latin, but the syntax is from German.

    8. Re:Uh... by John+Allsup · · Score: 1

      Why one of the other? Personally I tend to recommend Lisp, Smalltalk and Haskell as languages to train how you think about programming. A basic grasp of these three does wonders for how you think about programming, at least for high level stuff. Understanding how a forth works, and why Moore wrote it as he did tells you much about low level stuff, as does exploring basic demo coding on emulations of old 90s machines (where clever machine level stuff was necessary, and things were significantly less complex).

      There is a big difference between languages which help train your brain, and languages which help you get stuff done. There is considerable overlap, of course, but by sticking only to languages which get stuff done you limit your capacity to think about your programming.

      --
      John_Chalisque
    9. Re:Uh... by Anonymous Coward · · Score: 0

      Lisp is *designed* to teach horrible, horrible, horrible habits. Its deliberate lack of primitives, and of API's between different "layers of abstraction" was the source of a lot of the programming errors taught to more recent programmers, *especially* the dangerous preference for resource burning recursion over simple iteration that is the bane of object oriented programming.

      If you want to actually learn how programs work, instead of drawing pretty pictures on white boards, learn C. *Maybe* C++, later.

    10. Re:Uh... by hey! · · Score: 1

      I learned Lisp over thirty years ago when I was wee sprout of a programmer... at MIT. The thing is you have learn not just the language, but the mindset. You have to learn to think about programs inductively. Which means learning to think in functions, not just use them to organize procedural details.

      In short it'd be great if you could take Gerry Sussman's "Structure and Interpretation of Computer Programs" course, which I think is available on Open Courseware; the text is available as a PDF.

      You become a better programmer by learning to think about software in new and different ways. Insofar as a language helps you do that, it's useful. Otherwise it's just an irrelevant detail. Ultimately programming is about transforming representations of problem solutions into other, equivalent (or more general/specific) problem solutions. You should be able to do object oriented or functional programming in assembly if need be; the lack of abstractions shouldn't be an insurmountable barrier, as a programmer you create abstractions.

      Note I'm not saying you should, I'm saying you should be able to.

      Break out of the mindset where you are limited to what a language provides you . You don't always have a choice of language to work in, and the language you're forced to work in might give you what you need out of the box.

      That said a language with support for a particular programming paradigm may make it convenient to learn that paradigm. However simply learning a language won't automatically teach you that paradigm. Learning Lisp won't make you a Lisp programmer, any more than learning Javascript makes you a functional programmer.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    11. Re:Uh... by arkarumba · · Score: 1

      LISP is the language to learn to *think* about functional programming.
      Smalltalk is the language to learn to *think* about object-oriented programming.

    12. Re:Uh... by anchovy_chekov · · Score: 1

      Heh. I'm showing my age. My the big takeaway tonight is just to keep my mouth shut :)

      Back when I was doing AI stuff (90s), it was funnily enough using Smalltalk and Prolog - and fundamentally around natural language processing. I take your point re Lisp vs Python for AI. I doesn't feel right, the move away from symbolic models, but again... showing my age.

    13. Re: Uh... by WarJolt · · Score: 1

      Under the hood most deep learning python libraries are calling CUDA libraries. The python code does very little computation, but it's usually a much cleaner to use python bindings. Essentially, it all has taken off because we can now efficiently compute large matrix multiples on GPUs. I don't think the symbolic approach can be easily formulated as a matrix multiply. I imagine that symbolic approaches require quite a bit of control flow, which in some case be detrimental to efficiency on GPUs.

    14. Re:Uh... by Anonymous Coward · · Score: 0

      I learned Lisp over thirty years ago when I was wee sprout of a programmer... at MIT.

      I like how you threw MIT into the mix. Nobody gives a fuck.. seriously.

      I have a graduate degree from UMass and work out west in Silly Valley. The west coast kids coming out of Berkeley, Caltech, Stanford, et al do so much more actual work than you snowflakes that it's staggering, and so do I for that matter.

      Your lame attempt at argument from authority is null and void.

    15. Re:Uh... by Santana · · Score: 1

      It's more like coming out of the Dark Ages [ https://en.wikipedia.org/wiki/... ] into the Age of Enlightenment [ https://en.wikipedia.org/wiki/... ].

      --
      The best way to predict the future is to invent it
    16. Re:Uh... by colinwb · · Score: 1

      There are good reasons for learning Latin (the \Aeneid for example), but I'm not convinced that it helps you appreciate English any better than learning any other language.

    17. Re:Uh... by Anonymous Coward · · Score: 0

      Peter Thiel was just here looking for you. And he kept saying something about how dry his balls were.

  16. Interesting, but not practical by anchovy_chekov · · Score: 1

    My career started in Smalltalk in the 90s but then, thanks to a lack of job opportunities, I spent the next decade coding in Delphi, C, C++, etc. It was a shame, because I really loved coding in Smalltalk, whereas other using languages was purely to earn a living.

    I've no regrets. Smalltalk gave me a grounding in OO concepts,TDD and patterns before they became de rigueur and gave me an edge when people coming from more traditional languages were struggling with the new ideas.

    But honestly, everything I enjoyed in Smalltalk is available in modern languages. I've spent the better part of the last ten years earning a living coding in Ruby - and enjoying it. Going back to Smalltalk would feel retrograde.

    If I were a young coder starting out today I'd be looking at languages that introduce new concepts, not stepping back in time.

  17. Wow, another computer language. by Anonymous Coward · · Score: 0

    So...what are they selling? A philosophy?

    1. Re:Wow, another computer language. by UnknownSoldier · · Score: 1

      No, just Silver Bullets (TM).

      Every language goes through this fad phase. It gets used for 20 years, then everyone forgets about for the next 20, then everyone jumps on the bandwagon when retro is hip again.

      You see this all the time.

      i.e. Hyperlink had been (re) invented two times PRIOR to Timothy Lee Burner butchering it.

      Alan Kay - Normal Considered Harmful
      https://youtu.be/FvmTSpJU-Xc?t...

    2. Re:Wow, another computer language. by Megol · · Score: 1

      No, just Silver Bullets (TM).

      Every language goes through this fad phase. It gets used for 20 years, then everyone forgets about for the next 20, then everyone jumps on the bandwagon when retro is hip again.

      You see this all the time.

      i.e. Hyperlink had been (re) invented two times PRIOR to Timothy Lee Burner butchering it.

      Butchering? Bullshit. And do you really think it is interesting that others have had the same (kind of) ideas before? Are your completely ignorant of history in general and technical history in particular?

    3. Re:Wow, another computer language. by UnknownSoldier · · Score: 1

      > Butchering? Bullshit

      Yes, butchering.

      What part about RPC (Remote Procedural Calls) do you not understand?

      Go watch Alan Kay's talk.

      > And do you really think it is interesting that others have had the same (kind of) ideas before?

      No, it isn't that interesting. If one has a great idea, chances are someone else will ALSO come up with. i.e. Leibniz and Newton simultaneously co-invented calculus.

      > Are your completely ignorant of history in general and technical history in particular?

      Hello, McFly. Why do you think I give examples of where people have repeatedly re-invented the SAME idea.

      Go read Multiple discovery

    4. Re:Wow, another computer language. by Anonymous Coward · · Score: 0

      >> Butchering? Bullshit

      > Yes, butchering. What part about RPC (Remote Procedural Calls) do you not understand?

      The part where they're not hyperlinks?

  18. No. by tietokone-olmi · · Score: 0

    Smalltalk is a horrible language that uses punctuation for syntax, and a "program image snapshot" style runtime. It should be interred and left to rot for either of those reasons.

    1. Re:No. by Anonymous Coward · · Score: 0

      Many languages use . as syntax in OOP.

    2. Re:No. by angel'o'sphere · · Score: 3, Insightful

      Is that an attmept to be funny or are you retarded?

      The fact that no other system adopted the 'image' idea of SmallTalk clearly shows how less the people writing the article and the comments in this story actually have comprehended about SmallTalk.

      And Smalltalk does not use special punctuation for its syntax, you must mix it up with something other (C++/Java?)

      Except for being OO â" more or less â" the other languages have not really adopted much from SmallTalk. There are still 'programmers' on /. that debate the usefulness of lambdas in Java 8 ...

      The good things of SmallTalk besides being OO:
      - seamless melding from runtime to language system and OO, global dictionary etc.
      - all majour language constructs are represented as objects
      - can be queried, augmented, inspected used in reflection etc.
      - 'bytecode' can be inspected, transformed etc.
      - everything is in the 'image', the IDE is included in your program, unless you strip it
      - oo database included, files only used for data exchange

      You don't need 'constructors' to set up a complicated UI, you simply create them in the REPL of the IDE, move them where you want them, save the whole running program as an image, next time you 'restart' it, the UI is 'just there'.

      SmallTalk is still light years ahead of any other programming system ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    3. Re:No. by Billly+Gates · · Score: 2

      It could be worse. Can you imagine a language that would require invisible white spaces as syntax to ever become popular? lol ... Oh shit wait

    4. Re:No. by tietokone-olmi · · Score: 1

      That's a good flame right there. Almost like it's september again.

    5. Re:No. by Anonymous Coward · · Score: 0

      Some people complain that Smalltalk syntax is too alien compared to Java, JavaScript, C#, C++, PHP, Perl, and Go, all of whose syntax was inspired by C (with its curly braces). However, is it any more alien than Python (with its indentation-sensitive syntax) or Ruby or Objective-C (which is literally a cross between C and Smalltalk)? How about Haskell or Clojure or Elixir or Delphi or Visual Basic? Then there are the really weird languages such as Forth, R, and APL-inspired J. Anyone in IT who isn't adaptable to different language syntaxes has limited career options.

    6. Re:No. by djinn6 · · Score: 1

      Oh please... The most popular language, English, uses invisible white spaces as syntax.

      ReadafewsentenceswithoutitandI'llbetyoureyeswillstartbleeding.

    7. Re:No. by Anonymous Coward · · Score: 0

      However, is it any more alien than Python (with its indentation-sensitive syntax)

      ... yes, a lot more.

    8. Re:No. by Anonymous Coward · · Score: 0

      Smalltalk not SmallTalk

    9. Re:No. by Anonymous Coward · · Score: 0

      Is that an attmept to be funny or are you retarded?

      The fact that no other system adopted the 'image' idea of SmallTalk clearly shows how less the people writing the article and the comments in this story actually have comprehended about SmallTalk.

      And Smalltalk does not use special punctuation for its syntax, you must mix it up with something other (C++/Java?)

      Except for being OO â" more or less â" the other languages have not really adopted much from SmallTalk. There are still 'programmers' on /. that debate the usefulness of lambdas in Java 8 ...

      The good things of SmallTalk besides being OO:
      - seamless melding from runtime to language system and OO, global dictionary etc.
      - all majour language constructs are represented as objects
      - can be queried, augmented, inspected used in reflection etc.
      - 'bytecode' can be inspected, transformed etc.
      - everything is in the 'image', the IDE is included in your program, unless you strip it
      - oo database included, files only used for data exchange

      You don't need 'constructors' to set up a complicated UI, you simply create them in the REPL of the IDE, move them where you want them, save the whole running program as an image, next time you 'restart' it, the UI is 'just there'.

      SmallTalk is still light years ahead of any other programming system ...

      So, how's that work in a team environment for you with multiple developers working on one system?

  19. The answer is NO by Anonymous Coward · · Score: 0

    Smalltalk is bad enough that it inspired the development of several other languages to get the taste of it out of people's mouths.

    It claimed a number of contributions, which were literally all in use in other software, often for decades. It was hard to get right, the frameworks were crappy and most of the adherents smelled bad. They still do.

  20. ow, my liver by Anonymous Coward · · Score: 0

    HaHaHaHaHaHaHaHaHaHaHa ...

    HaHaHaHaHaHaHaHa

    ow

  21. Yes, this was my experience as well by robert+bitchin' · · Score: 5, Interesting

    I started off with Turbo Pascal 3-4 back in the 80's (had OO before anything else back then) then moved to Smalltalk. It was a true mindfuck at first, wasn't able to do the simplest of tasks. Where are the files? How do I get a library for X? !@#$ But eventually the fog lifted and I got productive. It was still hard to explain its virtues to everyone else and deployments were a challenge (VM? what?) but then Java came along and I moved to that in 97. Most of my contemporaries doing the same were coming from C/C++ and their experiences adapting to that were hilarious compared to what I was experiencing. In short I was the quitessential nickel-get-yourself-a-new language neckbeard, disgusted with the compromises made to entice the C community: lame syntax, files, primitive types, overstrong types, etc. Still bringing home the bacon with Java but its been painful having to watch the industry reinvent all the same core concepts over the last 20 years. Its not surprising that the GoF came from the Smalltalk community, the language effectively voids all the useless baggage that comes with other languages, forcing you to confront and identify all the core concepts in your problem domain.

    One of the most interesting things I've been seeing is being able to identify the mental origins of developers who've drunk the Smalltalk Kool-Aid so long ago, it shows up clearly in their designs. All domain concepts as first class objects, no data-only structs, effective pattern use, quality name choices, tight and effective hierarchies but most of all semantic clarity. You can only beat junior devs on the head for so long in code reviews to have them put these things into practice before you realize that they're coming from a wholly different perspective. As we move into a post-OO world with functional programming I can imagine the Haskel et al folks gritting their teeth in the same manner.

    1. Re:Yes, this was my experience as well by Cederic · · Score: 2

      no data-only structs

      Hasn't that war already been lost? I thought RESTful APIs pretty much killed it off.

      No data-only structs is a beautifully purist vision but also pigeonholes all data into a specific object type. Separating data from the code that does the work with the data means you can easily do different work with the same data.

      Shit, look at the whole Big Data arena. Wrap all that data in behavioural constructs and you'd flounder.

      I went through this whole design debate/cycle between 1998 and 2000, and haven't looked back since. Rather surprised to see it suggested here now.

    2. Re:Yes, this was my experience as well by faragon · · Score: 2

      Turbo Pascal 3/4 had not object oriented stuff. "Object Pascal" was introduced in Turbo Pascal 5.5 (link).

    3. Re:Yes, this was my experience as well by Anonymous Coward · · Score: 0

      Data-only has a place when you're bridging a gap between platforms. Anyone who denies this has never had to bridge two (or more) platforms.

      A simple, and common, example is a web service. You don't know what (or even how many different "whats") are going to use your service endpoint. You might find it simpler to transport a complex data-only object across that service. The server and clients can have various and non-standardized implementations of that object, but the service itself only guarantees the data-only structure of it, and for good reason. The code, if bundled by the server, probably won't work on the client platform, and if it did, it probably would try to do various server-only things that the client can't do. Data-with-code structures are basically doomed to fail in that scenario.

      Anyone who spouts dogma (for example, bullshit about data-only structures being bad) deserves all of the problems they invite due to that dogma. I have no sympathy for you, your overtime crunch, or the amount of your effort and ego wasted when I throw your shit code away because it doesn't fucking work. Pragmatism is useful, and has very little to do with preprocessors.

    4. Re:Yes, this was my experience as well by terjeber · · Score: 1

      Turbo Pascal 3-4 back in the 80's (had OO before anything else back then)

      Are you saying Turbo Pascal had OO before anything else? That's a patently absurd statement.

  22. No by Nunya666 · · Score: 1

    I don't like most people, so I avoid conversation, including smalltalk.

  23. Yes it can, but that doesn't mean it will by mark-t · · Score: 4, Insightful

    Learning *ANY* programming language can make someone a better programmer... offer them a new way of looking at how to solve certain types of problems and innovate new and elegant solutions that hadn't occurred to them previously as they learn the idioms of a new programming language.

    But like any other programming language, learning it will *NOT* necessarily make you a better programmer, and there's certainly not anything unique to Smalltalk that might make becoming a better programmer after learning it especially likely.

    1. Re:Yes it can, but that doesn't mean it will by Anonymous Coward · · Score: 0

      Image based development environments still distinguish Smalltalk from "mainstream" languages.

      Instead of a set of tools operating on your code (compilers, build tools etc.) the entire Smalltalk tool chain, plus the code you're building, is all in the same memory space. You can see how the tools work using the same debugger and inspector you use for your own code. You can save the entire image to a single file which (for some Smalltalk dialects) can then be moved to another platform (e.g. Linux -> Mac -> Windows) and started with all internal state (even in flight debuggers) picking up exactly where they left off.

      Also there is an Ansi standard for Smalltalk. Few other modern languages have an actual standard behind them.

    2. Re:Yes it can, but that doesn't mean it will by Anonymous Coward · · Score: 0

      there's certainly not anything unique to Smalltalk that might make becoming a better programmer after learning it especially likely.

      Says the person who never learned to program in smalltalk...

  24. Smalltalk was ahead of its time by jonwil · · Score: 5, Interesting

    Its too bad the money men at Xerox at the time (who mostly came from places like Ford and didn't know the first thing about computers or technology) didn't realize just what they had with the Alto, Ethernet, Laser Printer, Smalltalk etc and actually allow the PARC guys to get it out of the lab and into the real world much earlier than they eventually did...

    1. Re:Smalltalk was ahead of its time by Anonymous Coward · · Score: 0

      Having been through the process of moving technology from the (research) lab into the real world (production) for several significant (multi-million $) projects, I've observed that it takes a unique combination of skill-sets and people to do this successfully. Even though I hate the company (Apple) and the man (Steve Jobs), he was the best at it.

      Research Scientists / Professors (especially ones directly involved with birthing their "baby") are rarely successful at moving it to "production". I can't blame them for wanting to keep everything "pure", but in the real world, trade-offs (compromises) must be made. It's typically better (but painful for some) if the Inventors are kept for consulting as Subject Matter Experts only to the Engineers who make the actual transition. (And keep the damn Bean Counters locked up for this period of transition).

      Linus Torvalds probably is another exception, and I suspect that the fustrations associated with this process are the source (excuse the pun) of his occassional outbursts, but at least he doesn't have to deal with the Bean Counters. What he does is amazing, how he does it is sometimes shocking, but this may be one of those rare cases where the ends do justify the means...

      (capta: "abusing" - funny)

    2. Re:Smalltalk was ahead of its time by Anonymous Coward · · Score: 0

      Oh good lord.

      What they did at PARC was absolutely brilliant, I'll acknowledge that. But at the same time, their brilliance was very much due to the fact that they basically had an unlimited budget and didn't have to worry about things like making an economical product. Are you seriously suggesting that it would have made any amount of sense for them to try to monetize e.g. a computer that was the size of half a desk? Jesus, what kind of Kool-Aid have you been drinking?

    3. Re:Smalltalk was ahead of its time by Anonymous Coward · · Score: 0

      It is amazing how much of today's computer tech came out of PARC. You have to give credit to Xerox for funding it but not surprisingly the suits did not recognize what they had even though PARC employees tried to explain the tech and why Xerox had to jump on board.

  25. Yes, but who has the time? by tgibson · · Score: 4, Insightful

    Though I came to Smalltalk after C++, there is no doubt it informs why all things OO are the way they are. However, who has the time to attain this insight? I programmed in C for three years before learning C++ in the early '90s and there is no doubt that my knowledge of C makes many design decisions behind C++ clear (e.g., how many "young" C++ programmers actually know why the designers of C++ foisted the Rule of three onto the language). But I was too busy keeping up with endlessly changing technologies to learn, say, BCPL, to better understand the design decisions behind C.

    Run forward, nascent programmers! Your knowledge of (choose your modern language) today will inform the design behind the language you learn ten years from now.

    1. Re:Yes, but who has the time? by johannesg · · Score: 1

      C mostly serves to make the stupid, annoying stuff in C++ clear, though. The rule of three doesn't come from a C background; it is part of RAII, something that C does not have.

      The C background makes clear why we have old-style casts, switch cases with implicit fallthrough, array to pointer decay, and the whole f'ing preprocessor, but we could pretty much have lived just fine without all of that. It was necessary for C++ to gain acceptance during the early days, but now it is mostly just a pain to have to deal with.

    2. Re:Yes, but who has the time? by tgibson · · Score: 1

      The rule of three doesn't come from a C background; it is part of RAII, something that C does not have.

      This statement is wrong. It is precisely because of backward compatibility with C that this is the design of the language. As C structures can be assigned and copied, so must C++ structures.

    3. Re:Yes, but who has the time? by DrXym · · Score: 2
      The Rule of Three was not a design intent of the C++ language, it was an after-the-fact bodge to fix the terrible default byte copy that C++ helpfully adds whether its safe or not. Entire books are written about writing effective C++ and most of them are working around really poor, unsafe behaviour that you get by default or bad language choices. Even if someone fastidiously follows Rule of Three, it's still easy to screw up in subtle ways, such as not checking if an instance is being assigned to itself.

      The correct design would not support any default copy / assignment operators on any class. Make it an explicit programming intent before adding support, e.g. require the class to have a pure copy constructor / assignment operator as a hint for the compiler to fill in or actual implementations supplied by the programmer .

      C++ has tried to retroactively add stuff like move semantics (causing overload resolution to become ridiculously more complex than it already is) and now has some scoped / shared pointers that can catch copy problems but the reality is its still unsafe-by-default.

      It may explain why languages like Rust that take the opposite approach are gaining such popularity.

    4. Re:Yes, but who has the time? by johannesg · · Score: 1

      Your link does not, in fact, support your assertion. The ability to copy data is a vital necessity for any programming language, and hardly something that can be tracked specifically to C.

      It was a very specific design goal of C++ to support user-defined types that are indistinguishable from built-in types (Stroustrup wanted to be able to define a complex number type that acted as if it were a built-in type). For this to be possible, objects must support operator overloading, and must be able to manage their own resources. Eventually it became clear that if a class is only partially specified (for example, without a copy constructor), people would still try to copy-construct instances of the class (which is possible since there are defaults for these functions), leading to resource leaks and crashes.

      It wasn't until C++11 that this problem was actually acknowledged on the language level, by giving programmers clear and simple tools to avoid the generation of default functions. One could argue that the choice to have defaults to begin with came from C, but the notion of an object being responsible for its own resources is exactly what separates the C mindset from the C++ mindset. It is where the languages diverge, rather than a point of common history.

    5. Re:Yes, but who has the time? by david_thornley · · Score: 1

      C++ doesn't do a bitwise copy unless you specify one (memcpy() is still there if you want it). It copies primitives and calls copy constructors etc. on class members. This is usually what you want in the first place unless the class owns some external resource, in which case you need to decide how deep you want the copy to go. The compiler-generated copy assignment operator doesn't have to check for self-assignment, because it will get the right answer in either case. Trying to be too clever can cause trouble for self-assignment (much like the XOR trick for swapping), but most of the time checking for self-assignment is just an optimization.

      The fact that C++ does things in a generally practically useful way may explain why it stays high in measures of programming language use.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    6. Re:Yes, but who has the time? by DrXym · · Score: 1
      "Usually what you want" should be something that the programmer explicitly says through code. The problem is that if a member of the class is a handle to a file (for example), or a raw pointer, or just something which is private to that class, then copying instance A to instance B can cause trouble.

      Thus a veritable cottage industry has sprouted to fix what shouldn't have been a problem in the first place, e.g. boost's noncopyable base class. And if you do follow the rule of three (which is now the rule of five thanks to move rules), the complexity and mess in the code increases the chances of other bugs happening.

      So that's what I meant by that. C++ is unsafe by default and does really unhelpful dangerous things that people only learn through experience (and many hours of bug fixing) to not do. Making the language safe by default as Rust has done eliminates entire classes of problems even before they are allowed to happen. And in doing so you get more reliable code, less bugs and happier customers.

  26. Re:Smalltalk also had major failings ... by Anonymous Coward · · Score: 3, Informative

    Having developed applications in Smalltalk I can say it had some major failings too. Serious development absolutely required Envy Developer otherwise it was impossible to deploy into a team environment (there are no files to share).

    It also was nearly impossible to deploy standalone applications. You had to strip out the development environment, and other objects not necessary for production. Take out too much and sometime later you get a "not implemented" error.

    All of its deficiencies could have been fixed eventually but very few companies outside of educational incubators really bothered. The Smalltalk industry was rife with overpaid contractors.

  27. Maybe not, but... by yodleboy · · Score: 1

    Maybe not, but some smalltalk might get you laid. Get to it geeks!

  28. Kool kids use Erlang OTP!!! by Billly+Gates · · Score: 1

    Whoa man that is soo out of date and uncool in any Silicon Valley coffee shop man.

    Put Outlaw Techno Psycho itch on your laptop baby and watch the chicks and groupies sit and watch you code. Erlang is now cool and hip like what rails did to Ruby

    1. Re: Kool kids use Erlang OTP!!! by tigersha · · Score: 1

      You are way behind the curve son. Elixir is where the cool kids are. Get with the program!

      --
      The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
  29. Better Question by Crashmarik · · Score: 1

    Will Alcohol, LSD, or Caffeine make you a better programmer ?

    1. Re:Better Question by Z00L00K · · Score: 1

      That depends on the problem encountered. A shotgun may also be a problem solver in some cases.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    2. Re:Better Question by HornWumpus · · Score: 1

      Or...no.

      And however...

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  30. On learning smalltalk by Anonymous Coward · · Score: 0

    Can Learning Smalltalk Make You A Better Programmer?

                No, but it might get you a job in management.

    badumdum... It's the new year folks, still more jokes to come.

    1. Re: On learning smalltalk by Anonymous Coward · · Score: 0

      I learned smalltalk and my penis grew 3 inches.

    2. Re: On learning smalltalk by ScrappyLaptop · · Score: 1

      Yes, but you really, really like smalltalk.

  31. Yes. by jcr · · Score: 1

    You can also become a better programmer by learning Lisp, Prolog, and various assemblers. The more you can free yourself from a particular language's mindset, the better.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
    1. Re:Yes. by Anonymous Coward · · Score: 0

      ... or OCAML and Haskel.

  32. Headlines with questions to which the answer is... by DrXym · · Score: 1

    ... no.

  33. No. by Ash-Fox · · Score: 1

    I can tell you from experience, no, no it can't.

    I could write code already reasonably well in m68k assembler, x86 assembler, c, c++, c#, java etc. and it brought me nothing to build upon my prior knowledge. No new concepts, nothing.

    --
    Change is certain; progress is not obligatory.
  34. Smalltalk today is a dinosaur by SoftwarePearls · · Score: 2

    Sure, Smalltalk is a great language to know.. if only to understand some of CS history. But it is a horrendous technology to use today, or for the past 10 years. I speak from experience. I've worked with Java and Smalltalk as a professional, and the Smalltalk experience pales into insignificance. The tools just haven't kept up with the crazy pace of technological evolution. The Smalltalk "IDE" I had to use professionally was Cincom's. I couldn't believe how primitive, clunky and programmer-hostile that system was (if you've ever spent a few years with any Java IDE). Since working professionally with Smalltalk, I've also kept an eye on the marketplace for the skill.. in Belgium (which is a small sample, I agree), the demand is very, very close to non-existent. I only know of two companies that still cling on to it, against all rational arguments.

    1. Re:Smalltalk today is a dinosaur by ChunderDownunder · · Score: 1

      My first programming job used Visual Age for Java. Whatever paradigms IBM brought over from Smalltalk, they didn't mesh well and the company eventually came up with Eclipse.

    2. Re:Smalltalk today is a dinosaur by Anonymous Coward · · Score: 0

      What I noticed over the last 30 years is, that the memory usage of a good Smalltalk IDE is more or less the same as they were 20 years ago - but the hardware radically has changed. The IDE of Eclipse or VisualStudio are amazing tools, but they need more and more resouces to just to try to attempt a feeling like Smalltalk has for now 30 years - in terms of interactivity, edit-compile-debugging timing schedule. This is amazing !!! The organizational framework of all these tools are still files and these tools do so much work to keep this file-thinking and get some kind of meta programming. This seems to be strange for me.

      Perhaps the simple answer is, that most of all programmers are not that smart. They like to stick with "their" language - something different as C#, Java, C++ or C is out of the today-thinking. Being mainstream is more important than anything else.

  35. No. by Anonymous Coward · · Score: 0

    Well, I guess that is it. Go learn assembler.

  36. A dynamic typing by Anonymous Coward · · Score: 0

    Yeah, a language with dynamic typing. Enjoy debugging also your type errors. As if we do not already have enough errors in our programs.

  37. Hmm, Apparently Squeak is still Shit by drinkypoo · · Score: 1

    If you have to bury the question, we all know the answer.

    --
    "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  38. HP by Anonymous Coward · · Score: 0

    has lost all credibility as a 'good' company.
    The printer/nk cartridge plan is a negative aspect of their reputation.... assholes.
    The restructuring a few years ago has removed the last of the great hardware people with vision and finesse.
    The management is full of mediocrity.
    Where did all the HP calculator people go? They used to be good....
    And I have a printer that self-destructed with 'Genuine HP Ink Cartridges".

  39. object oriented programming by Anonymous Coward · · Score: 0

    An incredibly over hyped technique.

    When it comes down it, everything ends up as ones and zeros with an instruction pointer. Programming languages have one goal - to make it easier to program and make programmers more productive. Why is Apple pushing Swift (Java,C# clone)? Because there's a lot more Java and C# programmers in the World and Objective C is a kluge (like C++) to make C OOP.

    Python is another example to make programming easier and faster.

    1. Re:object oriented programming by Santana · · Score: 1

      You are wrong. C++ is terrible compared to Objective-C.

      C++ got OO wrong and introduced new problems. For instance, messages is central to the OO paradigm. If you can't see how Objective-C got that right but C++ got it wrong then you are not qualified to compare them.

      Same thing for templates, virtual functions, etc. You don't need that in Objective-C because you have "duck typing", another core concept of OO that C++ got wrong.

      C++ is affected by the Fragile Binary Interface (FBI) problem https://en.wikipedia.org/wiki/... while Objective C is not.

      And so on...

      --
      The best way to predict the future is to invent it
    2. Re:object oriented programming by lgw · · Score: 2

      Messages are fundamentally the problem with OOP. Duck typing is the very thing that makes code maintenance hard. Oh, sure, it can make code easier to get started with, but easy to maintain trumps easy to shit out code any day.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    3. Re:object oriented programming by Santana · · Score: 1

      You have very well indoctrinated in static typing, that's fine.

      Let's try an exercise. Look deeply into those "generics" and "templates" and "dynamic casts" and most of those "design patterns"[1] you have to learn. If look deep enough you will be able to see through them and find out that they are solutions to problems caused by static typing, which enable you to escape for static typing and make it more dynamic!

      [1] http://www.norvig.com/design-p...

      --
      The best way to predict the future is to invent it
    4. Re:object oriented programming by lgw · · Score: 2

      I don't care about academic arguments. I just know what sucks to maintain, and code without compile-time type checking sucks to maintain.

      Sure, no argument, static typing is just the wrong choice for elegant toy programs that no one uses.

      --
      Socialism: a lie told by totalitarians and believed by fools.
  40. Cures cancer? Gives sight to the blind? Regrows by Assmasher · · Score: 1

    ...limbs?

    Easy with the hype :).

    SmallTalk is cool - and for its time it was incredible really - but it has warts that have held it back forever (including the stupidify of the major players in the market.)

    For example - algebraic precedence. When 5 + 5 * 5 = 50 - you're going to have problems with adoption.

    In any case - it's a nice shiny hammer. You should have it next to all your other hammers in the toolbox.

    --
    Loading...
  41. Object purity by hackwrench · · Score: 1

    Object purity? You don't go to the chaste to learn about great sex.

  42. Hi, how are you? by Tony+Isaac · · Score: 1

    How long have you lived in this city? Do you have any hobbies?

    Yes, small talk can help you get ahead in your career. They say networking is a good thing.

    The smalltalk language? Maybe, but who cares?

  43. Prototyping a bridge. by Anonymous Coward · · Score: 0

    Why would it be a "bad idea"? Other fields see prototypes and models as an essential part of what they do, and yet in programming it's "get it right the first time" and ship that.

  44. Being multi-lingual by Tony+Isaac · · Score: 1

    The important thing is to be multi-lingual. There's no special benefit to learning a specific pet language.

    In spoken language, learning Latin is very educational, and helps a person understand the roots of our own language. But you can get arguable more benefit by learning a Latin-derived language like Spanish, which you can actually use in conversation with people who speak it.

  45. Betteridge's Law of Headlines by allo · · Score: 1

    No.

  46. Re:Smalltalk also had major failings ... by Anonymous Coward · · Score: 0

    I wonder how much of that problem was caused by "everything is a file" which even extends to source control systems. Image based languages can have "history" as well.

  47. Fat Chance. by Hylandr · · Score: 1

    If you're trying to get us to socialize you can forget it!

    --
    ~ People that think they are better than anyone else for any reason are the cause of all the strife in the world.
  48. how much smalltalk costed when reached market $$$ by keneng · · Score: 1

    Smalltalk "Object-Oriented" versus C++ "Object-Oriented" versus golang types versus other languages?
    It's not that simple a question really.

    We all use some programming languages and related grammar mechanisms to get some sense of a solution delivered.
    Smalltalk may be valid as an OO language, but I recall why I did not adopt it as my primary tool when it was first introduced.
    Crazy expensive!!! Software price to acquire it was more exclusive than other offerings.
    GUI apis within the ide were text-based not Windows-based which wasn't impressive compared to existing X-Window/Unix offerings with C/C++ at the time. Documentation for it was a well-kept secret behind a paywall so there wasn't any motivation for anyone to learn it even if they didn't have the means to acquire it.
    GNU smalltalk only appeared much later, but no killer open-source apps surfaced that used it and smalltalk didn't attract other developers to consider using by being inspired by example source code. Not enough useful sample source code out in the wild as open-source.

    As an example of a killer open-source app with a great influence for developers to flock to it: bittorrent which uses python and gtk for the gui api.

    As another example of another killer open-source app with a great influence for developers to flock to it: docker which uses golang(Google Go) and virtual machine & virtualization apis. golang is my go-to programming language to get things done these days. I prefer it over c++ or java every day of the week. golang lacks UML round-trip tools found in c++ and java, but developers are still flocking to it for certain niche purposes at the moment, but eventually the depth and breadth of the golang offerings will match everything found in c++/java.

    Ultimately, if a proposed programming language tool isn't open-source and free and run on every piece of existing hardware by default, it will never fly and SMALLTALK did not fly. It crashed and burned.

  49. Re:Smalltalk also had major failings ... by arkarumba · · Score: 1

    The continuous evolution of the Image such that it lost the ability to be recreated from scratch is a failing that the Pharo guys are working hard to fix with a bootstrapping CI infrastructure... http://rmod.inria.fr/archives/...

  50. Weird comparison by Anonymous Coward · · Score: 0

    It is often said that programming in Smalltalk or Python is rather like Zen; your mind just flows effortlessly with the task

    What? They are entirely different from one another.

    That is also pretty much the baseline of proficiency for every language, including assembly.

  51. Xerox PARC could have become... by Anonymous Coward · · Score: 0

    Apple, Intel, Microsoft, 3com, Novell, Borland, and Xerox all in one...

    They could have been either the IBM successor, or the Google replacement for today.

  52. duh by Anonymous Coward · · Score: 0

    being an intellectual makes you a better programmer. also keyboard skills... not your ego.

  53. Smalltalk also had major failings ...Blockchain. by Anonymous Coward · · Score: 0

    Blockchains might help. Now there's one deficiency Smalltalk had compare to some other languages. A good GUI library. LISP has the same issue. Oh, and last good educational material, from tutorials, to books, and even documentation although I think all languages suffer that to various degrees.

  54. Re:Like Latin...information hiding by Anonymous Coward · · Score: 0

    Information hiding as a way of dealing with complexity is an important part of OOPs. Bundling is an organizational tool and helps with complexity as well.

  55. Re:Like Latin...information hiding by Santana · · Score: 1

    true, but OO is more than that.

    --
    The best way to predict the future is to invent it
  56. While ahead of its time, it is pointless now by Anonymous Coward · · Score: 0

    No, No, No. Smalltalk was interesting waaay back when (so was Ada), but now the concepts discovered (Design Patterns) UTTERLY corrupt the industry to be incompetent. So many companies interview based upon your "OOD" skills (been there, interviewed by Dumb-Asses-only-interested-in "Design Patterns" without any knowledge of what/why/specifics of the Gang-of-Four book). Have I used Smalltalk? No. I've NEVER met, let alone interviewed someone whom has. A truly dead language. And I've professionally had to understand and/or write code in a number of "dead" languages: PL/I, Fortran77, COBOL, Pascal, Modula2.

    That is, Smalltalk is an academic note at best, and NOTHING more.

    But it is probably more useful/interesting than Rust/R/Clojure/various-other-'modern'-interpreted-languages

  57. Lambda functions are NOT useful by Anonymous Coward · · Score: 0

    Been there, had to debug them.
    Lambda functions are an interesting concept but are utterly counter-productive in practice.
    - they significantly obfuscate the source code
    - the purpose appears to be to use-the-language-feature-because-it-is-there. (Fum-Ducks do this)

    Competent coding entails/requires that code be non-obfuscated and easily understandable by a Junior/N00b programmer. Lambdas are frequently neither. (Based upon trying to debug broken Lambdas)

  58. Re:how much smalltalk costed when reached market $ by arkarumba · · Score: 1

    You are exactly right. This is why MIT licensed Pharo Smalltalk is steadily gaining traction. Its still a small community, but vibrant. Here are a few examples... http://pharo.org/success A consortium is putting real money on the table to support paid engineering for those important tasks that sometimes don't get done with the "scratch you own itch" open source philosophy. http://consortium.pharo.org/

  59. Re:Cures cancer? Gives sight to the blind? Regrows by Santana · · Score: 1

    If operator precedence is the only "wart" you can mention that stops you from using Smalltalk then you can't really speak about Smalltalk with authority.

    FYI, there are no operators. Just messages sent to receivers. Is your mind blowing yet? No?

    There are neither conditional statements nor control structures in the *language* yet Smalltalk programmers use them all the time. How is that possible? Non-sense? Mind blowing yet?

    --
    The best way to predict the future is to invent it
  60. Re:Cures cancer? Gives sight to the blind? Regrows by Assmasher · · Score: 1

    I guess you missed the "for example." Rather than talk about the differences between 72, 80, and the various flavors along the way and their shortcomings - I pointed out something small but important that counters the silly article's "SmallTalk is the magic bullet!" voice.

    I still think SmallTalk is cool, and in 85 it was SERIOUSLY cool (image based persistence? Awesome...) Like all other languages - it has issues.

    --
    Loading...
  61. better still! by Anonymous Coward · · Score: 0

    Nope - not LISP (though you damn well should be able to write simple LISP if you understand recursion and stacks at all). Learn to write in ML and your mind opens to the truth of the problems before us.

  62. I wouldn't have been hired if I knew Smalltalk by ayesnymous · · Score: 1

    A hiring manager for a Java position once asked me in the interview if I knew Smalltalk. I said no. He said "Good, if you did, then I wouldn't hire you." He said that Smalltalk requires a strange way of thinking that would make you a bad developer.

    1. Re: I wouldn't have been hired if I knew Smalltalk by Anonymous Coward · · Score: 0

      Did he ever elaborate on that? Bad as in write shit code, or bad as in write in a form that your average developer finds foreign?

  63. Why Smalltalk Failed by Anonymous Coward · · Score: 0

    I experimented with Smalltalk for an accounting system mid 90's. It was way too slow on the Token Ring network. We wrote off ~$40,000.

  64. Amber Smalltalk by howlingmad · · Score: 1

    Thanks for the link to Amber Smalltalk! I didn't know this one. It's good to hear there's something going on with client side Smalltalk.

  65. Well, yes, but... by GuB-42 · · Score: 1

    Learning any programming language will make you a better programmer.
    Is Smalltalk the most efficient option? I am not sure.