tgoop.com/cpplastic/414
Create:
Last Update:
Last Update:
Сьогодні короткий дайджест новин щодо мов програмування, які трапилися мені на очі за останній місяць.
У Python
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 у джаваскрипті, то годі — декілька тижнів тому пропозицію скасували, бо домовитися не змогли, зацікавлених виявилося не так і багато тощо.У спільноті
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
Однією з таких варіацій є Jank, яка вже на C++ базується, а не на сішці. Так-от вони днями анонсували «безшовний інтероп» з плюсами, тобто можливість прямо з джанка створювати й працювати з плюсовими обʼєктами. Скажу чесно, я зацікавився
Може ще щось цікаве було, та зараз вже не згадаю. Тож наразі все.