Over the last years,
we have become used to the
use of the word modern.
And now, we even talk about
the word postmodern C++.
But these words, we borrow from historians
that used them to describe the
eras of Western Civilization.
Is there anything we can learn from them?
So we start recording
history in the ancient era,
of which I find especially
interesting the classical period.
At that time, the Greeks developed
elitist proto democracies in which...
Okay, sorry.
In which,
philosophy and the love and passion
and sharing of knowledge flourished.
This allowed them to
learn so much at the time.
They knew already that
the Earth was round,
and it's radius and that
it rotated around the Sun
and they even speculated
of the existence of atoms.
However with the decadence
and fall of the Roman empire,
we enter the Medieval era.
Europe divide, becomes too
busy fighting each other
in feudal wars.
A lot of knowledge is forgotten
being replaced by the homematic truth.
The Earth is now flat
and the Sun rotates around the Earth.
But eventually a huge cultural shift
comes with the Renaissance.
We embrace antropocentrism and humanism
and this idea that truths ultimately
emerge from human experience.
We rediscover the classics
and use their knowledge
to pursue science to be
more prosperous societies.
However, many people
believing that there were,
in the end, singular absolute
truths leads to problems.
This leads to two world wars
that leave the Western
society traumatized.
This finally symbolizes
the death of the universal
and we come to embrace contradiction
and plurality in our societies.
We get to acknowledge that Western,
the Western perspective is
just a part, not the whole.
Multicultural societies
that face the challenge
of surviving the
conflicts of globalization
and late capitalism.
Okay, well the fact was this.
Let's talk about programming.
(laughing)
The recorded history of programming starts
in the classical era.
In this time initial explorers
embedded in elitist proto democracies,
this is Universities,
gathered so much knowledge.
And they shared it with each other
in a time in which only
free software existed.
We had languages like LISP, ML,
Ada, Smalltalk, that
explore all the different
philosophies and paradigms of programming
that we know today.
We already type inference, continuations,
higher order programming,
actor csp, so much more.
But in the mid-late 80's...
(laughing)
In the mid-late 80's,
we entered the personal
computer revolution.
Proprietary software is devised
as a means to mass-produce
consumer software.
And with it, we stop sharing
knowledge with each other.
Companies get involved in feudal wars
but they're using a myriad
of languages and change
and change in proprietary tool change
an enigmatic and narrow
perspective of object orientation.
In this time, we have
Java, Visual Basic, Delphi,
and yes, Medieval C++.
I am aware that some conservative
forces in our community
take pride in something
they call C++ classic.
This reminds me, that
such thing does not exist.
This is just medieval C++.
(laughing)
In the middle ages torture
was also prevalent,
so in the 90's we also get PHP.
(laughing)
(clapping)
But in the 2,000's
another revolution happened.
The internet boomed, and
it's subsequent bubble.
Code is not shipped directly to consumers
in proprietary boxes anymore,
but it runs directly in our servers.
Developers share with each other again
and free software becomes popular
under the new brand open source.
Furthermore, the Agile
Manifesto is published in 2001.
Which it starts like this:
We value individuals and interactions
over processes and tools.
What a beautiful transposition
of the humanistic
values of the Renaissance.
(laughing)
New multi-paradigm languages
like Python and Ruby
capture our imagination.
Alexandrescu publishes modern C++
and we work on new C++ standards
that embrace ideas from the classics.
They turn now mainstream again.
We get Lambas, we get Type Inference,
and the hope for a better language
driven by open implementations.
But in the last decade,
a new disruption occurs.
The mobile revolution.
Systems are not built for desktop
nor servers neither embedded devices,
but for all of them at the same time.
This means the death of the universal.
C++ developers now talk about
Rust, Haskell, Closure,
a perfect example of polyglot programming.
We embrace contradiction, and built
heterogeneous systems
composed of major services.
Not only is our technology more diverse
we are also facing the challenge
of building communities where people from
all backgrounds can
feel welcome and thrive.
This is..
Sorry, I said:
Not only is our technology more diverse,
we are also facing the challenge
of building communities
where people from all backgrounds
can feel welcome and thrive.
This is to assert the
value of human dignity
as a form of resistance against
the alienating forces
that sometimes permeate
our industry.
Still, I don't want to be too prescriptive
and just leave here, a big question mark.
Because in the end, we are
leading this era right now
so it will be whatever we make it be.
Thank you very much.
(clapping)
