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."

9 of 343 comments (clear)

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

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

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

    Smalltalk, Forth, LISP, and FORTRAN.

  3. 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
  4. 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.

  5. 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.

  6. 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.

  7. 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.
  8. 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.

  9. 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.