Re: [Erlang Forums] [Erlang/OTP Proposals/Proposals: RFC] Re-visiting EEP-0055

Michael Malter <[email protected]> Mon, 25 Apr 2022 17:53:10 +0200
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CADE9FeFvYg-+LHummkWePrX=rEWXjMMFB7rd_Ww_LZX0H=Mp8A@mail.gmail.com>
--00000000000074197a05dd7c93ec
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

That's right. I meant small.

And yes believe it or not, the first (second maybe) marketing campaign for
Java was titled "Java is simple". :)

Le lun. 25 avr. 2022 =C3=A0 17:45, Austin Ziegler <[email protected]> a
=C3=A9crit :

> On Mon, Apr 25, 2022 at 11:27 AM Michael Malter <[email protected]>
> wrote:
>
>> Well I would rather let Joe rest in peace but the reference is probably
>> helpful there.
>>
>> Erlang is simple. I mean, that's how Joe saw it. He expressed it multipl=
e
>> times.
>>
>
> Simple is in the eye of the beholder. I would disagree with the assessmen=
t
> that Erlang is simple, but From a Certain Point of View, it is, sure. Is =
it
> simpler than Elixir? In some ways, yes. In other ways, no. If you=E2=80=
=99re trying
> to say that Erlang is a *small* language, then I=E2=80=99d mostly agree. =
So is
> Elixir, though. From certain points of view, Elixir is much easier to
> apprehend than Erlang, because Erlang is more sparse than Elixir. As a
> language.
>
> That said, it took me a *long* time to understand `=3D:=3D` because it=E2=
=80=99s a
> complex, compound sigil (not used _that_ frequently) that I=E2=80=99ve ne=
ver seen
> in any other language (and I know quite a few). To _me_, `^Value -> =E2=
=80=A6` is
> clearer than `NewValue when Value =3D:=3D NewValue`. But that=E2=80=99s m=
e.
>
>
>> Do you remember the time when that was the Java motto ? Look at Java now=
.
>>
>
> I never remember such a day. Granted, it got much worse after the
> introduction of J2EE and all that crap, but I never remember Java being
> "simple".
>
>
>> Is it so hard to understand what we are saying ? For once it's pretty
>> clear and without many diverging opinions.
>>
>
> Except that there *are* numerous diverging opinions. They just tend to be
> drowned out by louder people who can=E2=80=99t seem to express their oppo=
sition in
> the simple, clear terms that you and Lo=C3=AFc have, and instead are maki=
ng
> purely emotional expressions.
>
> - it's not sufficiently useful to warrant another language features (you
>> know, less is more)
>> - it's yet another sigil and we hate them.
>>
>
> The former is arguable, and I=E2=80=99ve seen little in any of the thread=
s about
> this EEP to suggest that this is the case. The latter is a matter of tast=
e,
> but it=E2=80=99s also a legitimate concern. New sigils shouldn=E2=80=99t =
be added without
> good reason. I=E2=80=99ve seen such discussions in Elixir and Ruby langua=
ge
> discussions, and sometimes a new sigil gets added (`&.` and `->()` in Rub=
y;
> I like the former, hate the latter, although I use it).
>
> Not addressed in the original EEP (probably because it wasn=E2=80=99t ori=
ginally
> considered) is whether expressing pinning might improve the compiler=E2=
=80=99s
> ability to generate better code. It=E2=80=99s been raised on the forum th=
ough, and
> it should be considered. If nothing else, it starts to indicate that ther=
e
> may be more use than simply avoiding guard clauses (which IMO is worthy i=
n
> and of itself).
>
> -a
>
> Le lun. 25 avr. 2022 =C3=A0 17:14, Austin Ziegler <[email protected]> =
a
>> =C3=A9crit :
>>
>>> On Mon, Apr 25, 2022 at 10:58 AM Stanislav Ledenev <[email protected]=
>
>>> wrote:
>>>
>>>> One question - why? Just because we can?
>>>> Erlang is doomed, Sorry Joe, we f**d things up.
>>>>
>>>
>>> I really can=E2=80=99t help but laugh at over the top reactions like th=
is and
>>> those who can=E2=80=99t help but bash Elixir because they don=E2=80=99t=
 like the syntax.
>>>
>>> What if this syntax (or some other syntax) helps the compiler generate
>>> better (safer, faster, *whatever*) code? How would anyone know unless
>>> it gets tried? Why would anyone want to try it when they know that a
>>> certain vocal subset of the community are going to be pitching embarras=
sing
>>> fits over it?
>>>
>>> If this is introduced in OTP 26, then stop upgrading. Seriously. Stay o=
n
>>> OTP 25 or before. But seriously, stop acting like children about this a=
nd
>>> saying that things are fucked up (because they=E2=80=99re not; you just=
 don=E2=80=99t like
>>> this because you don=E2=80=99t like it). The only *real* objection that=
 I=E2=80=99ve
>>> seen that makes sense to me is from Lo=C3=AFc, which is that it might b=
e better
>>> to enable *annotations*, even if the only annotation initially
>>> available is for pinning. (My personal feeling on the annotation concep=
t is
>>> that `^pin Variable` doesn=E2=80=99t feel right to me, but maybe `^pin:=
Variable` or
>>> `^pin{Variable}` or `^{pin}Variable` or something else, although more
>>> sigil-y, would be clearer.
>>>
>>> I mostly use Elixir, but often read Erlang codebases. On the Elixir cor=
e
>>> mailing list, there are frequent redirects to approach something as a
>>> possible PR to Erlang/OTP because it=E2=80=99s something that should be=
nefit all
>>> BEAM languages.
>>>
>>> Telemetry started as an Elixir library, but was quickly changed to a
>>> pure Erlang approach because it makes more sense to be something that a=
ll
>>> BEAM languages can use.
>>>
>>> Elixir has =E2=80=94 and I suspect both LFE and Gleam both have =E2=80=
=94 *enhanced *the
>>> BEAM through wider exposure, code contributions, and other contribution=
s.
>>> If you can=E2=80=99t argue a feature request like in this EEP on its me=
rits (or
>>> lack thereof) without trying to bash Elixir, then maybe you don=E2=80=
=99t actually
>>> have an argument, but an emotional outburst, and should just *discard* =
your
>>> rant after writing it.
>>>
>>> -a
>>> --
>>> Austin Ziegler =E2=80=A2 [email protected] =E2=80=A2 austin@halostat=
ue.ca
>>> http://www.halostatue.ca/ =E2=80=A2 http://twitter.com/halostatue
>>>
>>
>
> --
> Austin Ziegler =E2=80=A2 [email protected] =E2=80=A2 austin@halostatue=
.ca
> http://www.halostatue.ca/ =E2=80=A2 http://twitter.com/halostatue
>

--00000000000074197a05dd7c93ec
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto">That&#39;s right. I meant small.<div dir=3D"auto"><br></d=
iv><div dir=3D"auto">And yes believe it or not, the first (second maybe) ma=
rketing campaign for Java was titled &quot;Java is simple&quot;. :)=C2=A0</=
div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_at=
tr">Le lun. 25 avr. 2022 =C3=A0 17:45, Austin Ziegler &lt;<a href=3D"mailto=
:[email protected]">[email protected]</a>&gt; a =C3=A9crit=C2=A0:<br>=
</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-l=
eft:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr">On M=
on, Apr 25, 2022 at 11:27 AM Michael Malter &lt;<a href=3D"mailto:airlangue=
@gmail.com" target=3D"_blank" rel=3D"noreferrer">[email protected]</a>&gt=
; wrote:<br></div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-sty=
le:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir=3D"a=
uto">Well I would rather let Joe rest in peace but the reference is probabl=
y helpful there.<div dir=3D"auto"><br></div><div dir=3D"auto">Erlang is sim=
ple. I mean, that&#39;s how Joe saw it. He expressed it multiple times.</di=
v></div></blockquote><div><br></div><div>Simple is in the eye of the behold=
er. I would disagree with the assessment that Erlang is simple, but From a =
Certain Point of View, it is, sure. Is it simpler than Elixir? In some ways=
, yes. In other ways, no. If you=E2=80=99re trying to say that Erlang is a =
<b>small</b>=C2=A0language, then I=E2=80=99d mostly agree. So is Elixir, th=
ough. From certain points of view, Elixir is much easier to apprehend than =
Erlang, because Erlang is more sparse than Elixir. As a language.</div><div=
><br></div><div>That said, it took me a <b>long</b>=C2=A0time to understand=
 `=3D:=3D` because it=E2=80=99s a complex, compound sigil (not used _that_ =
frequently) that I=E2=80=99ve never seen in any other language (and I know =
quite a few). To _me_, `^Value -&gt; =E2=80=A6` is clearer than `NewValue w=
hen Value =3D:=3D NewValue`. But that=E2=80=99s me.</div><div>=C2=A0</div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);pa=
dding-left:1ex"><div dir=3D"auto"><div dir=3D"auto"></div><div dir=3D"auto"=
>Do you remember the time when that was the Java motto ? Look at Java now.<=
/div></div></blockquote><div><br></div><div>I never remember such a day. Gr=
anted, it got much worse after the introduction of J2EE and all that crap, =
but I never remember Java being &quot;simple&quot;.</div><div>=C2=A0</div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);pa=
dding-left:1ex"><div dir=3D"auto"><div dir=3D"auto">Is it so hard to unders=
tand what we are saying ? For once it&#39;s pretty clear and without many d=
iverging opinions.</div></div></blockquote><div>=C2=A0</div><div>Except tha=
t there <b>are</b>=C2=A0numerous diverging opinions. They just tend to be d=
rowned out by louder people who can=E2=80=99t seem to express their opposit=
ion in the simple, clear terms that you and Lo=C3=AFc have, and instead are=
 making purely emotional expressions.</div><div><br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;bo=
rder-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">=
<div dir=3D"auto"><div dir=3D"auto"></div><div dir=3D"auto">- it&#39;s not =
sufficiently useful to warrant another language features (you know, less is=
 more)</div><div dir=3D"auto">- it&#39;s yet another sigil and we hate them=
.=C2=A0</div></div></blockquote><div><br></div><div>The former is arguable,=
 and I=E2=80=99ve seen little in any of the threads about this EEP to sugge=
st that this is the case. The latter is a matter of taste, but it=E2=80=99s=
 also a legitimate concern. New sigils shouldn=E2=80=99t be added without g=
ood reason. I=E2=80=99ve seen such discussions in Elixir and Ruby language =
discussions, and sometimes a new sigil gets added (`&amp;.` and `-&gt;()` i=
n Ruby; I like the former, hate the latter, although I use it).</div><div><=
br></div><div>Not addressed in the original EEP (probably because it wasn=
=E2=80=99t originally considered) is whether expressing pinning might impro=
ve the compiler=E2=80=99s ability to generate better code. It=E2=80=99s bee=
n raised on the forum though, and it should be considered. If nothing else,=
 it starts to indicate that there may be more use than simply avoiding guar=
d clauses (which IMO is worthy in and of itself).</div><div><br></div><div>=
-a</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0p=
x 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-c=
olor:rgb(204,204,204);padding-left:1ex"><div class=3D"gmail_quote"><div dir=
=3D"ltr" class=3D"gmail_attr">Le lun. 25 avr. 2022 =C3=A0 17:14, Austin Zie=
gler &lt;<a href=3D"mailto:[email protected]" target=3D"_blank" rel=3D"n=
oreferrer">[email protected]</a>&gt; a =C3=A9crit=C2=A0:<br></div><block=
quote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-w=
idth:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding=
-left:1ex"><div dir=3D"ltr"><div dir=3D"ltr">On Mon, Apr 25, 2022 at 10:58 =
AM Stanislav Ledenev &lt;<a href=3D"mailto:[email protected]" rel=3D"nore=
ferrer noreferrer" target=3D"_blank">[email protected]</a>&gt; wrote:<br>=
</div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;bor=
der-left-color:rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div>One=
 question - why? Just because we can?</div><div>Erlang is doomed, Sorry Joe=
, we f**d things up.</div></div></blockquote><div>=C2=A0</div></div>I reall=
y can=E2=80=99t help but laugh at over the top reactions like this and thos=
e who can=E2=80=99t help but bash Elixir because=C2=A0they don=E2=80=99t li=
ke the syntax.<div><br></div><div>What if this syntax (or some other syntax=
) helps the compiler generate better (safer, faster, <i>whatever</i>) code?=
 How would anyone know unless it gets tried? Why would anyone want to try i=
t when they know that a certain vocal subset of the community are going to =
be pitching embarrassing fits over it?</div><div><br></div><div>If this is =
introduced in OTP 26, then stop upgrading. Seriously. Stay on OTP 25 or bef=
ore. But seriously, stop acting like children about this and saying that th=
ings are fucked up (because they=E2=80=99re not; you just don=E2=80=99t lik=
e this because you don=E2=80=99t like it). The only <i>real</i>=C2=A0object=
ion that I=E2=80=99ve seen that makes sense to me is from Lo=C3=AFc, which =
is that it might be better to enable <i>annotations</i>, even if the only a=
nnotation initially available is for pinning. (My personal feeling on the a=
nnotation concept is that `^pin Variable` doesn=E2=80=99t feel right to me,=
 but maybe `^pin:Variable` or `^pin{Variable}` or `^{pin}Variable` or somet=
hing else, although more sigil-y, would be clearer.</div><div><br></div><di=
v>I mostly use Elixir, but often read Erlang codebases. On the Elixir core =
mailing list, there are frequent redirects to approach something as a possi=
ble PR to Erlang/OTP because it=E2=80=99s something that should benefit all=
 BEAM languages.</div><div><br></div><div>Telemetry started as an Elixir li=
brary, but was quickly changed to a pure Erlang approach because it makes m=
ore sense to be something that all BEAM languages can use.</div><div><br></=
div><div>Elixir has =E2=80=94 and I suspect both LFE and Gleam both have =
=E2=80=94 <i>enhanced </i>the BEAM through wider exposure, code contributio=
ns, and other contributions. If you can=E2=80=99t argue a feature request l=
ike in this EEP on its merits (or lack thereof) without trying to bash Elix=
ir, then maybe you don=E2=80=99t actually have an argument, but an emotiona=
l outburst, and should just <i>discard</i>=C2=A0your rant after writing it.=
<br><div><div><div><br></div><div>-a<br>-- <br><div dir=3D"ltr">Austin Zieg=
ler =E2=80=A2 <a href=3D"mailto:[email protected]" rel=3D"noreferrer nor=
eferrer" target=3D"_blank">[email protected]</a> =E2=80=A2 <a href=3D"ma=
ilto:[email protected]" rel=3D"noreferrer noreferrer" target=3D"_blank">=
[email protected]</a><br><a href=3D"http://www.halostatue.ca/" rel=3D"no=
referrer noreferrer" target=3D"_blank">http://www.halostatue.ca/</a> =E2=80=
=A2 <a href=3D"http://twitter.com/halostatue" rel=3D"noreferrer noreferrer"=
 target=3D"_blank">http://twitter.com/halostatue</a></div></div></div></div=
></div></div>
</blockquote></div>
</blockquote></div><br clear=3D"all"><div><br></div>-- <br><div dir=3D"ltr"=
>Austin Ziegler =E2=80=A2 <a href=3D"mailto:[email protected]" target=3D=
"_blank" rel=3D"noreferrer">[email protected]</a> =E2=80=A2 <a href=3D"m=
ailto:[email protected]" target=3D"_blank" rel=3D"noreferrer">austin@hal=
ostatue.ca</a><br><a href=3D"http://www.halostatue.ca/" target=3D"_blank" r=
el=3D"noreferrer">http://www.halostatue.ca/</a> =E2=80=A2 <a href=3D"http:/=
/twitter.com/halostatue" target=3D"_blank" rel=3D"noreferrer">http://twitte=
r.com/halostatue</a></div></div>
</blockquote></div>

--00000000000074197a05dd7c93ec--