The source content for blog.juliobiason.me
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

143 lines
6.6 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<!-- Enable responsiveness on mobile devices-->
<!-- viewport-fit=cover is to support iPhone X rounded corners and notch in landscape-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, viewport-fit=cover">
<title>Julio Biason .Me 4.3</title>
<!-- CSS -->
<link rel="stylesheet" href="https://blog.juliobiason.me/print.css" media="print">
<link rel="stylesheet" href="https://blog.juliobiason.me/poole.css">
<link rel="stylesheet" href="https://blog.juliobiason.me/hyde.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=PT+Sans:400,400italic,700|Abril+Fatface">
</head>
<body class=" ">
<div class="sidebar">
<div class="container sidebar-sticky">
<div class="sidebar-about">
<a href="https:&#x2F;&#x2F;blog.juliobiason.me"><h1>Julio Biason .Me 4.3</h1></a>
<p class="lead">Old school dev living in a 2.0 dev world</p>
</div>
<ul class="sidebar-nav">
<li class="sidebar-nav-item"><a href="&#x2F;">English</a></li>
<li class="sidebar-nav-item"><a href="&#x2F;pt">Português</a></li>
<li class="sidebar-nav-item"><a href="&#x2F;tags">Tags (EN)</a></li>
<li class="sidebar-nav-item"><a href="&#x2F;pt&#x2F;tags">Tags (PT)</a></li>
</ul>
</div>
</div>
<div class="content container">
<div class="post">
<h1 class="post-title">Python Losing the 2nd Place on Loved Languages: A Thought</h1>
<span class="post-date">
2020-06-09
<a href="https://blog.juliobiason.me/tags/python/">#python</a>
<a href="https://blog.juliobiason.me/tags/typescript/">#typescript</a>
<a href="https://blog.juliobiason.me/tags/stackoverflow/">#stackoverflow</a>
<a href="https://blog.juliobiason.me/tags/survey/">#survey</a>
</span>
<p>On this year StackOverflow Survey, Python lost its 2nd place in the &quot;Most
Loved Languages&quot; ranking to TypeScript. On our Python group, people started
wondering why. And I just thought it would be nice to post my thoughts on
the situation.</p>
<span id="continue-reading"></span>
<p>Before anything, I may have do make a disclaimer saying that I do love Python,
and I think it is a great language 'cause it is very concise but also very
expressive. I don't think any other language get close to Python in doing
those points so well.</p>
<p>Disclaimer done, let me explain why I think Python lost its second place in
the hearts of developers.</p>
<h2 id="types">Types</h2>
<p>One of the first thoughts one can think when we talk about &quot;losing a
position&quot; in any rank is &quot;because it got worse&quot;. But I really don't think this
is what happened here, and what actually happened is that TypeScript shown
developers something better.</p>
<p>TypeScript is aimed to JavaScript development, a zone where anything goes,
types are very flexible and magical -- to the point what most of things
actually produce a <a href="https://www.destroyallsoftware.com/talks/wat">Wat</a>. By
using types, making sure you're not adding a string to an array, a lot of
problems suddenly disappear. It is no silver bullet, but it prevents a whole
class of issues that would popup in production.</p>
<p>So, in an environment that chaotic things happen, suddenly you have something
that puts order back and you gotta love it for that. Surely, it's not just
types that make TypeScript more loved than JavaScript, but it is partially
why.</p>
<p>(Just to add to this point: Rust is still the most loved language 5 years in a
row, and it uses some pretty strong typing, close do Haskell, with added
syntax closer to what most languages use.)</p>
<p>I still believe that, in the long run, type hinting can fill the gap for
Python to reach the proper position. I'd love to use it to add hinting in all
functions and then have something that I could set the level of checking on
different environments: make the application crash if the function was called
with the wrong types on development environment; just log (logging or stderr)
on staging; and do absolutely nothing on production. That would allow me to
use the best of both worlds: Dynamic when developing, but static when testing.</p>
<h2 id="python-2-is-dead">Python 2 is dead</h2>
<p>One of the things that happened to Python in the beginning of this year, when
the survey was done, was that Python 2 became unsupported. Surely, that
doesn't mean any Python 2 installation would stop working, but it gave an
extra jump to porting things to Python 3.</p>
<p>And, even with all the backporting and improvements in Python 3, it was not a
smooth sail. That change, that forced change, may have let some Python devs
with some bitter taste about the language. No one wants to just fix changes in
the language, when the way things work must still work, quirks and all.</p>
<h2 id="hype">Hype</h2>
<p>Python is not a hyped language anymore.</p>
<p>Sure, it is still a reference for machine learning and related fields, but the
once thriving environment of web dev was taking by the hype of other
languages.</p>
<p>Python is not the hot stuff on web dev anymore. And because it is not the hot
stuff, people don't <em>want</em> the old stuff; the old stuff is not cool anymore,
so they don't like it anymore.</p>
<p>Related: Just because something has hype, it doesn't mean it is <em>better</em>; it
just makes the non-hyped stuff &quot;not better&quot;, even if there was no change at
all in the latest.</p>
<h2 id="side-point">Side-point</h2>
<p>One point not raised by anyone in the group: Although Python lost its second
place in the &quot;Most Loved&quot; ranking, it is still the most wanted language --
meaning, it is the language most developers <em>want</em> to learn. If the general
feeling was &quot;Python sucks!&quot;, I pretty much doubt the want would still be
representative -- and Python have a large lead compared to JavaScript.</p>
</div>
</div>
</body>
</html>