do languages matter?

Post on 22-Nov-2014

793 Views

Category:

Internet

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentation given at Geecon Prague, Oct 24 2014

TRANSCRIPT

Do Languages Matter?Bruce Eckel

www.MindviewInc.comwww.AtomicScala.com

Oct 24, 2014, Geecon PragueSlides available onwww.slideshare.net

Eight Years on the C++ Standards Committee

• We learned that open-source languages are always a better choice!

www.AtomicScala.com

• Free First 25% Kindle, ePub, PDF, HTML

Magazines

• These things before there was blogging

• Published over 150 articles

Slowly Stopped Feeling

Effective

Started Searching

Is It Just Me?

Or Are We All Stuck In a Loop?

We keep trying to compel

productivity. Maybe that's not the best

way. (It doesn't

work well for me).

Reinventing-Business.com

"Start With Why"- Simon Sinek

Book, but TED talk might be enough.

Break the Chains Around Our Brains

Find the Unstuck Alternatives

We Can Fix It.We Can Make It a Lot

Better.

?

In the Spirit of "Start With Why,"

I ask:

Do Languages

Matter ?

Do Languages (still)

Matter ?

Do Languages (still)

Matter (as much)?

Does Arguing About Languages Still Matter?

• Assembly -> C• C -> C++• C++ -> Java

– Virtual Machines– Garbage Collection

• Statically typed vs. Dynamic• Checked Exceptions• Concurrency and Parallelism• OO vs Functional• Java Posse Roundup stopped talking

about Java

• Stroustrup's Goal for C++: Make Library Use Easier

• Java Validated Virtual Machines & Garbage Collection– Lots of libraries

– Also mainstreamed the big framework

– Invalidated checked exceptions

• Ruby On Rails Validated Dynamic Languages for serious projects– Mitigated some of the damage

from Perl & PHP (read "PHP: A fractal of bad design")

– Helped legitimize Python, Groovy, etc.

Functional language features are the new-old thing

• Primarily motivated by multiple cores and parallel programming

• Python started adding functional features a few years ago (but no parallelism)

• Functional purists are trying to steer the conversation ("objects are bad/failures")

• Object-functional hybrids are moving to center stage IMO– How will parallelism look in

such languages?– Pure functional vs CSP (as

in Go). STM has failed.

No Longer a Big Deal To ...

• Change Languages– Client: Java -> Python -

> Go

• Combine Languages– e.g. Erlang controlling

other languages– REST/JSON APIs– HTML5/CSS/Javascript

UIs

Thus• Arguing to consider

new languages no longer fits my "why" -- we're not stuck there anymore.

• Why bother arguing when you can just experiment?

• So...• They kind of don't

matter (eek)

All This For Context

• I'm not attacking your favorite language

• I'm asking whether we can make development (a lot) better

• It's just what I do• Not sure exactly why I

do that yet, but it's definitely consistent with my pattern of jiggling things

• Bill Venners says I hang out with early adopters and that affects my perspective

People seem to become much more productive in Scala vs. Java. But could a different paradigm give

us a lot more productivity?

Scala is a big improvement over Java• A language needs to

multiply productivity over the alternatives to justify changing, and Scala does

• Significant advancements in programming power, while maintaining two-way transparency with Java

• Scala is not gridlocked by backward compatibility like Java

• But: without the Java constraint, is Scala the best choice?

Importance of Community

• Python– Community culture might

be the most friendly and welcoming

– Python conference: about 20% women, actively involved

• Scala is the "League of Legends"– I just changed newsgroups

until I found a useful one– Apparently there was some

internet rage over the title of Atomic Scala

How Many Ways

• “Scala is the most un-opinionated language I’ve seen” -- Dan North

• No signs yet of "idiomatic Scala"

• Each team/company must invent its own idioms which can be very different

• Language is communication; subcultures add cognitive load

• Consider Go: even code formatting is standardized

The Complexity Jump• C++ was "C with classes"• Scala is not really "Java with"

anything– It's almost completely different

– Might help Java programmers go functional

• With C++, knowing C was an advantage

• Do we even care about Java programmers?– Or just existing Java

libraries/frameworks?– Scala reinvents a lot

• What is the "why" of Scala?

Libraries vs. Frameworks

• “I prefer Clojure libraries rather than frameworks” -- Young Scala programmer at Craft

• Libraries introduce one dimension of complexity

• Frameworks introduce two or three dimensions– What is complexity cost vs.

productivity benefit? – Once you get comfortable

with a framework, how much harder is it to change?

Some Paths for Exploration• Erlang trivially

interfaces to other languages– Example I want to try:

Erlang controller and concurrency/parallelism, using Python-coded operations

• Rust adopts proven features from other languages but with native compilation– Pattern matching, for

example

ScalaSummit.com

• "The Curse of the Monad" vs. "You don’t need to understand monads"

• "Scala collides functional and OO"– Fascinating experiment,

exposes some sharp corners

People seem to become much more productive in Scala vs. Java. But could a different paradigm give

us a lot more productivity?

My Dirty Little Secret

• Rust: new CEO at Mozilla is (appropriately) focusing on FirefoxOS. Rust development will probably suffer

• I can't seem to get away from writing about languages, but Reinventing Business is too big

• Languages must become a hobby -- what's easy and fun (NOT Java 8!!!)

Kotlin looks like the easiest translation from Atomic Scala

• Could be "Scala for everyone else"

• Much more powerful than Java 8, without the jagged edges in Scala

• Really fancy things can be done with Scala

• Kotlin is a language replacement for Java, so Java programmers don't have to learn a whole new world.

top related