Revisit the String template syntax
Brian Goetz
brian.goetz at oracle.com
Sat Apr 15 13:07:30 UTC 2023
Libraries don’t have the option to use \ because they can’t modify the language grammar. This is why they gravitate towards inline syntax like $ — because they have no choice. They’ve done what they have to. The language has different options.
I understand why you think familiarity might justify doing the objectively worse thing, but am confident we would regret it if we gave into this temptation.
This is a pretty clear no.
Sent from my iPad
> On Apr 15, 2023, at 2:50 AM, forax at univ-mlv.fr wrote:
>
> ----- Original Message -----
>> From: "Brian Goetz" <brian.goetz at oracle.com>
>> To: "Remi Forax" <forax at univ-mlv.fr>
>> Cc: "amber-spec-experts" <amber-spec-experts at openjdk.org>
>> Sent: Wednesday, April 12, 2023 6:21:38 PM
>> Subject: Re: Revisit the String template syntax
>
>> The backslash syntax is objectively better than the dollar-sign syntax, which is
>> why we selected it in the first place. Reasons included:
>>
>> - Today, “${name}” is a valid string literal, whereas “\{name}” is not.
>> - The language already has an escaping mechanism for string contexts; using the
>> one we have is preferable to inventing another one.
>> - Dollar signs will appear in string context fairly regularly, and therefore
>> would need yet more escaping.
>>
>> We knew people would say “why don’t you ‘just’ do what ${MyFavoriteLanguage}
>> does”, but this isn’t a reason to reconsider; the fact that other languages
>> have continued to use the dollar-sign convention was well in evidence when the
>> initial design choices were made, and there are no new arguments to support
>> revisiting this question.
>>
>> Whether to use braces or parens or brackets is largely an arbitrary choice, but
>> I don’t see a lot of reason to recall this already-sailing ship.
>
>
> I believe that the backslash syntax is better if we were in 1995, trying to design Java but since then, the dollar-sign syntax have been the go to syntax for string interpolation in the Java ecosystem. That's why actual most of the Java developers prefer the dollar-sign syntax to the backslash syntax (at least the one at Devoxx France i've asked), because they to not have to reconfigure their brain to recognize a new syntax.
>
> Rémi
>
>>
>>
>>
>>>> On Apr 11, 2023, at 2:32 PM, Remi Forax <forax at univ-mlv.fr> wrote:
>>>
>>> I've promoted this email to amber-spec-experts given that several people on the
>>> internet and offline have said more or less the same thing.
>>>
>>> Even if it's not for 21, now that a string template is always prefixed by a
>>> template processor, the part in between quote does not need to rely on
>>> backslash '\' anymore.
>>>
>>> Should we still keep the current syntax \{...} or should we go to the more usual
>>> ${...} syntax ?
>>>
>>> regards,
>>> Rémi
>>>
>>> ----- Original Message -----
>>>> From: "Octavia Togami" <octavia.togami at gmail.com>
>>>> To: "amber-spec-comments" <amber-spec-comments at openjdk.org>
>>>> Sent: Tuesday, April 11, 2023 1:39:20 AM
>>>> Subject: Syntax question for JEP 430: String Templates
>>>
>>>> Hi,
>>>>
>>>> I was reading this portion of the alternatives section:
>>>>
>>>>> For the syntax of embedded expressions we considered using ${...}, but that
>>>>> would require a tag on string templates (either a prefix or a delimiter other
>>>>> than ") to avoid conflicts with legacy code.
>>>>
>>>> And it seems that this is no longer a valid reason, as per [1] there
>>>> is always a required prefix anyways. Is there another reason to avoid
>>>> using this syntax now?
>>>>
>>>> Thanks,
>>>> Octavia
>>>>
>>>> [1]:
>>>> https://mail.openjdk.org/pipermail/amber-spec-experts/2022-October/003631.html
More information about the amber-spec-experts
mailing list