defer panic
Канал про айти в целом и про Go в частности. YouTube → youtube.com/@deferpanic Поддержать канал: Boosty — https://dfrp.cc/boosty Patreon — https://dfrp.cc/patreon ETH — tomakado.eth TON — tomakado.ton BTC — 19xwFstmVQsVYqZP64iMVg1StLNSah6Smo
Больше- Подписчики
- Просмотры постов
- ER - коэффициент вовлеченности
Загрузка данных...
Загрузка данных...
Airtable is a low-code platform for building collaborative apps. Customize your workflow, collaborate, and achieve ambitious outcomes. Get started for free.
def greet(name):
print("Hello,", name)
Решение сделать синтаксис именно таким понятно — такой код кажется менее шумным по сравнению с классическим си-лайк синтаксисом:
#include <iostream>
void main(string name) {
std::cout << "Hello, " << name << std::endl;
}
Я же хочу пойти в сторону ещё большей лаконичности:
fun greet name print "Hello, " nameТут сразу две идеи. Первая — использовать значимые отступы вместо фигурных скобок или иных способов обозначения границ блока кода. Вторая — там, где можно однозначно распарсить выражение без скобок и прочих символов, позволять не использовать эти символы. Естественно, тут сразу всплывает множество эдж-кейсов. Например, что если я захочу передать в вызов функции вызов другой функции? Тогда такое выражение заключается в скобки для избежания неоднозначности прочтения:
print "Hello, " (getNameByUserID 42)В идеале хочется получить синтаксис, где небуквенные символы не используются вообще. Ну либо оставить их в тех местах, где с ними реально проще и удобнее. Всякие операторы логических выражений тоже пишутся словами:
&& → and || → or ! → notЕдинственное исключение — знаки равенства и неравенства:
!= == < > <= >=А, да, ещё оператора
else
не будет. Вообще. Я тут посмотрел, и понял, что я не использовал этот оператор прям очень давно. Обычно когда руки почему-то на автомате набирают else
, я сразу выношу блок с условиями в отдельную функцию, а там уже всё решается ретёрнами. Для кейса, когда нужно рассмотреть много разных вариантов скорее всего сделаем что-то типа switch-case
.
Фич в языке тоже по-минимуму:
- Типы
-- Простые типы данных: числа, целые числа, строки и логический тип
-- Составные типы данных: список, мапа
-- Сущности (entities) — как структуры, только поля могут быть уложены в памяти разреженно
-- Енамы (такого даже в Go нет!)
- Функции
- Конструкции для управления логикой
-- Условия (только if)
-- switch-case
-- Циклы
--- со счётчиком
--- с условием
--- по коллекции
Типы динамические, указывать их явно не нужно (и не факт, что можно будет). Для полей сущностей типы определяются через значения по умолчанию:
entity Player name = "" x = 0.0 y = 0.0 hp = 100Импортов и вообще системы управления модулями не будет — всё-таки язык встраиваемый. По этой же причине стандартная библиотека предельно аскетичная — немного математики и хэлперы для работы со встроенными типами. Рабочее название — Lisi. Изначально я хотел сделать что-то похожее на Лисп, поэтому нашел созвучный топоним, соответствующий одному из озёр в Тбилиси. Как вы понимаете, название потеряло былой смысл, но я решил ничего не менять.
go_crew_3_deferpanic
#партнерскийпостGoLand comes with support for data flow analysis (DFA). In this post, we’ll introduce the feature, explain how it works, and show some real-world examples of how DFA can detect bugs on the fly!
deferpanic10
.
Смотреть программу →
#партнерскийпостВаш текущий тарифный план позволяет посмотреть аналитику только 5 каналов. Чтобы получить больше, выберите другой план.