CPPLASTIC Telegram 414
Сьогодні короткий дайджест новин щодо мов програмування, які трапилися мені на очі за останній місяць.

У Python 💻 десь в районі версії 3.6 додали так звані f-рядки з інлайн-інтерполяцією:
f"a + b = {a + b}"
# замість
"a + b = {}".format(a + b)

Дуже зручно. Хоча знаходяться унікуми, що використовують їх тупо для усього, зокрема для формування запитів до БД з включенням шматків, що прийшли від користувачів — привіт, SQL-інʼєкції.
Fear no more: до 3.14 вирішили додати t-рядки! Літерали на вигляд такі самі, але насправді це не str, а string.templatelib.Template:
template = t"a + b = {a + b}"
assert isinstance(template, Template)

Нащо це все? Власне, саме для того, щоб не отримувати на вихід готовий рядок. Натомість ви отримуєте купу статичних шматків рядка + низку інтерполяцій і можете з ними щось зробити до формування фінального str (наприклад, екранувати потенційно небезпечне). Фактично, це ті ж шаблонні рядки, які вже є в 💻.

Для останнього, до речі, багацько років (на доволі високому Stage 2) висіла пропозиція від типців з Блумберга додати в мову «глибоко незмінні структури даних» — Record і Tuple. Нагадую, що зараз в 💻 є тільки вельми мінливі Object і Array. Якщо ви мріяли про value types у джаваскрипті, то годі — декілька тижнів тому пропозицію скасували, бо домовитися не змогли, зацікавлених виявилося не так і багато тощо.

У спільноті 💻 тим часом ТРАГЕДІЯ! Компанія AdaCore провела презентацію нових фічей в їхньому компіляторі GNAT Pro, де зокрема розповіла, що додала до мови ООП-класи (а ще підтримку Rust, але то інша історія). Взагалі-то в Ada і до того ООП давно було (з 1995), але реалізувалося через так звані теґовані типи:
package Example is
type Base_Class is tagged null record;

procedure Print (Self : Base_Class);

type Derived_Class is new Base_Class with record
A : Integer; -- додаємо нове поле
end record;

overriding procedure Print (Self : Derived_Class);
end Example;

Тут процедури, що обʼявлені в тому ж скоупі й приймають першим параметром відповідний тип, стають фактично «методами». Однак для тих, хто прийшов з, боже збав, C++ та інших схожих мов, такий підхід був невтямки. Тому віднині можна буде створювати класи отак:
package Example is
type Base_Class is class
procedure Print (Self : Base_Class);
end;
end Example;

Зʼявилося ключове слово class, методи оголошуються прямо всередині відповідного блока, також можна private зробити прям там же. Багатьом це прийшлося не до вподоби, мені включно. Особисто я просто не бачу в цьому сенсу, бо й до того було збс.

Прикол же тут глибше на ділі. Ada — це ISO-стандарт, тож мова нікому не належить. Але єдиний живий компілятор GNAT підтримується компанією AdaCore, тому 99% штук, які зʼявляються там, врешті потрапляють до стандарту. Такі справи.

Ну й трохи про ліспи. Нещодавно я вже розповідав про Janet 👩‍🦰 — мову, дуже схожу на Clojure 💻, яка компілиться в сішку. Взагалі кложа наче друге дихання ліспам відкрила, бо вона проста, елегантна й прикольна. Якби ж ще не JVM поперек горла… Якось так подумали й автори Janet у свій час. А з ними автори ще мінімум штук пʼяти інших варіацій, і це тільки ті, що мені траплялися.

Однією з таких варіацій є Jank, яка вже на C++ базується, а не на сішці. Так-от вони днями анонсували «безшовний інтероп» з плюсами, тобто можливість прямо з джанка створювати й працювати з плюсовими обʼєктами. Скажу чесно, я зацікавився 🤤 Прямий плюсовий інтероп (не через C) — це одна з фічей, яка раніше мене зацікавила у Swift 🕊. Якщо у цього ліспа щось таке вийде, то я навіть готовий почати називати їх не джанк, а дженк.

Може ще щось цікаве було, та зараз вже не згадаю. Тож наразі все.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥4😍2🤣1



tgoop.com/cpplastic/414
Create:
Last Update:

Сьогодні короткий дайджест новин щодо мов програмування, які трапилися мені на очі за останній місяць.

У Python 💻 десь в районі версії 3.6 додали так звані f-рядки з інлайн-інтерполяцією:

f"a + b = {a + b}"
# замість
"a + b = {}".format(a + b)

Дуже зручно. Хоча знаходяться унікуми, що використовують їх тупо для усього, зокрема для формування запитів до БД з включенням шматків, що прийшли від користувачів — привіт, SQL-інʼєкції.
Fear no more: до 3.14 вирішили додати t-рядки! Літерали на вигляд такі самі, але насправді це не str, а string.templatelib.Template:
template = t"a + b = {a + b}"
assert isinstance(template, Template)

Нащо це все? Власне, саме для того, щоб не отримувати на вихід готовий рядок. Натомість ви отримуєте купу статичних шматків рядка + низку інтерполяцій і можете з ними щось зробити до формування фінального str (наприклад, екранувати потенційно небезпечне). Фактично, це ті ж шаблонні рядки, які вже є в 💻.

Для останнього, до речі, багацько років (на доволі високому Stage 2) висіла пропозиція від типців з Блумберга додати в мову «глибоко незмінні структури даних» — Record і Tuple. Нагадую, що зараз в 💻 є тільки вельми мінливі Object і Array. Якщо ви мріяли про value types у джаваскрипті, то годі — декілька тижнів тому пропозицію скасували, бо домовитися не змогли, зацікавлених виявилося не так і багато тощо.

У спільноті 💻 тим часом ТРАГЕДІЯ! Компанія AdaCore провела презентацію нових фічей в їхньому компіляторі GNAT Pro, де зокрема розповіла, що додала до мови ООП-класи (а ще підтримку Rust, але то інша історія). Взагалі-то в Ada і до того ООП давно було (з 1995), але реалізувалося через так звані теґовані типи:
package Example is
type Base_Class is tagged null record;

procedure Print (Self : Base_Class);

type Derived_Class is new Base_Class with record
A : Integer; -- додаємо нове поле
end record;

overriding procedure Print (Self : Derived_Class);
end Example;

Тут процедури, що обʼявлені в тому ж скоупі й приймають першим параметром відповідний тип, стають фактично «методами». Однак для тих, хто прийшов з, боже збав, C++ та інших схожих мов, такий підхід був невтямки. Тому віднині можна буде створювати класи отак:
package Example is
type Base_Class is class
procedure Print (Self : Base_Class);
end;
end Example;

Зʼявилося ключове слово class, методи оголошуються прямо всередині відповідного блока, також можна private зробити прям там же. Багатьом це прийшлося не до вподоби, мені включно. Особисто я просто не бачу в цьому сенсу, бо й до того було збс.

Прикол же тут глибше на ділі. Ada — це ISO-стандарт, тож мова нікому не належить. Але єдиний живий компілятор GNAT підтримується компанією AdaCore, тому 99% штук, які зʼявляються там, врешті потрапляють до стандарту. Такі справи.

Ну й трохи про ліспи. Нещодавно я вже розповідав про Janet 👩‍🦰 — мову, дуже схожу на Clojure 💻, яка компілиться в сішку. Взагалі кложа наче друге дихання ліспам відкрила, бо вона проста, елегантна й прикольна. Якби ж ще не JVM поперек горла… Якось так подумали й автори Janet у свій час. А з ними автори ще мінімум штук пʼяти інших варіацій, і це тільки ті, що мені траплялися.

Однією з таких варіацій є Jank, яка вже на C++ базується, а не на сішці. Так-от вони днями анонсували «безшовний інтероп» з плюсами, тобто можливість прямо з джанка створювати й працювати з плюсовими обʼєктами. Скажу чесно, я зацікавився 🤤 Прямий плюсовий інтероп (не через C) — це одна з фічей, яка раніше мене зацікавила у Swift 🕊. Якщо у цього ліспа щось таке вийде, то я навіть готовий почати називати їх не джанк, а дженк.

Може ще щось цікаве було, та зараз вже не згадаю. Тож наразі все.

BY Cіпласпластик


Share with your friend now:
tgoop.com/cpplastic/414

View MORE
Open in Telegram


Telegram News

Date: |

Ng was convicted in April for conspiracy to incite a riot, public nuisance, arson, criminal damage, manufacturing of explosives, administering poison and wounding with intent to do grievous bodily harm between October 2019 and June 2020. A new window will come up. Enter your channel name and bio. (See the character limits above.) Click “Create.” On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." Step-by-step tutorial on desktop:
from us


Telegram Cіпласпластик
FROM American