do languages matter?

Post on 21-Apr-2017

1.774 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

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