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'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 "Java is simple". :)=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 <<a href=3D"mailto= :[email protected]">[email protected]</a>> 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 <<a href=3D"mailto:airlangue= @gmail.com" target=3D"_blank" rel=3D"noreferrer">[email protected]</a>>= ; 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'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 -> =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 "simple".</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'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's not = sufficiently useful to warrant another language features (you know, less is= more)</div><div dir=3D"auto">- it'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 (`&.` and `->()` 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 <<a href=3D"mailto:[email protected]" target=3D"_blank" rel=3D"n= oreferrer">[email protected]</a>> 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 <<a href=3D"mailto:[email protected]" rel=3D"nore= ferrer noreferrer" target=3D"_blank">[email protected]</a>> 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--