Так как мозгов у меня не хватит даже чтобы написать транслятор в го, я просто поделюсь с вами идеального синтаксиса. Можете пиздить вдохновляться идеями, я не против.
1) Синтаксис лямбд как отдельный аргумент. Лямбды пишутся через { ... } Функции декларируются через "fun" как в котлине, чтобы выровнять на 3 буквы (можно заменить на def если нравится или xyz)
2) Декларация переменных. let - иммутабельные mut - мутабельные
3) Структура. Основная идея что нет никаких свойств, все поля раскрываются в одноименные функции и можно только переписать как тебе нужно геттер или сеттер.
Вызов без скобок - равносилен get вызову присвоение - равносилен всегда вызову с одним аргументом Никакие поля (переменные) типа, не доступны из вне, всегда дергается функция (это сделано чтобы реализовать интерфейсы даже для полей, потому что все метод).
Наследования нет, только агрегация структур. Экстеншен функции имеют доступ только к публичным полям
>>1578580 Нет, без скобок - это будет ссылкой на функцию, а не вызов. И соответственно передается все в параметрах, последний из которых можно раскрыть как на твоем пике.
>>1579179 >1. Фигурные скобки — ненужная соль. При чтении мы ориентируемся по отступам, а не ищем маркеры начала/конца блока. Питонячий стайл прикольный, если редактор с линкиром есть, иначе превращается в боль. Ну и си-стайл людям ближе (хотя за много лет я тоже к питонячим отступам пригрелся)
VM исключает производительность, отсутствие активной VM исключает нормальность - байтоабстракции без VM будут протекать. Отсюда или мы забиваем на производительность продукта и получаем качество разработки и качество кода, или мы ударяемся в байтолюбство и ловим выстрелы по ногам, а попытка поднять качество при сохранении производительности оборачивается затягиванием сроков.
И если бы на горизонте не маячил бы предел single core performance, то и проблем бы не было, байтолюбство бы осталось в загоне, где есть ограничения по финансам на железо но нужно быстро (игры) и не влияло бы на основной рынок разработки, а разработка за счет оверхеда по железу велась бы хорошо.
>>1579467 >Не кроссплатформенная Android не поддерживается? >засахаренная Тебе удовольствие или заебаться? >магия Сорцы открыты, читай. >end Пиши }, если нравится, в чём проблема?
>>1579597 >Пиши }, если нравится, в чём проблема? Пацаны не поймут. еще бы табы в питоне посоветовал > Сорцы открыты, читай. Я вот понимаю почему в js такой говнокаст и почему работает это именно так, но мне от этого не легче. >Тебе удовольствие или заебаться? Когда сахар становится магией, это уже диагноз. >Android не поддерживается? Понятно. Вы бы хоть для начала на венде без костылей работать стали, а уже потом в ведро лезете.
>>1579602 >еще бы табы в питоне посоветовал Питон в принципе не советую, только конченые долбоебы могли сделать отступы частью синтаксиса. >сахар становится магией Нет никакой магии, всё just works, в одну строчку из пяти слов пишется такоэ, на что в других скриптопарашах подключают зависимость. >венде Депрекейтед системы нинужны.
>>1579616 Я еще вчера в другом треде сдержался, чтобы не спросить тебя. Ты совсем дебил? Как можно судить о популярности чего-либо по количеству вопросов. Они же блять не бесконечные, отвеченный сегодня вопрос - это незаданный завтра.
>>1579627 Вайтишники не умеют гуглить и задают вопросы заново. Соответственно, чем более популярна какая-то технология у вайтишников, тем более растущим будет такой график. Что не мешает компаниям типа Гитхаба и Гитлаба продолжать пилить свой основной дичайше популярный продукт на Ruby.
>>1578525 (OP) Мне очень нравится принцип composition over inheritance, но когда тебе по сути нужно сделать полезную работу в одной функции, а в остальных 10 просто передать параметры композируемому объекту, как-то рука сама тянется пронаследоваться. В этом языке, раз тут везде композиция, нужно чтобы такое делалось просто, без лишних keystrokes, как говорится.
>>1579624 Ты же программист ты же должен понимать. Чем больше новых людей интересуются тем больше вопросов создается. Не интересуется новых людей, язык уходи в забвение (дрочат его только динозавры на легаси)
>>1580184 Мне нравится идея mixin, когда ты в один класс можешь добавлять различные поведения. Например у тебя есть класс Орг и к нему можешь добавить (примешивать) подклассы "ходить" (со своими методами и полями), атаковать (тоже со своими методами и полями, скажем, урон).
Подобное очень хорошо можно реализовать в языке питона. Но в действительностью это ужасно ложиться на ООП модель.
Для статических языков, можно разрешить примешивание только полей к структурам, у которых нет никогда методов. И дать возможность везде и всегда привязывать функции. Звучит радикально, но это позволит насыщать (миксовать) объект (нужным поведением - всегда. Примерно как на картинке.
Понятно что данные миксин нужно прятать как-то от дочерних классов, но при этом дочерние классы должны как-то иметь доступ к родительским данным (в итоге начинаешь придумывать снова ООП и потом снова получаешь недостатки ООП).
Питон очень гибок, дает поиграться с разными подходами, вот сейчас играюсь и тупо смотрю как лучше.
В общем, ООП модель ложится нормально, когда у тебя есть конечный объект типа точка, или строка, то есть реальный тип. Но только доходит к тому чтобы добавить еще поведения, даже через наследование начинается жопа (а агрегация смотрится ужасно. Делегирование очень затратна, даже если брать какой-то котлин, там либо можно все делегировать либо если частично то только ручками)
>>1578525 (OP) Мутабельные-хуйтабельные, какой же ты тупорылый долбоеб, блять. Вместо того, чтобы придумать годных фич, они опять месят говно в ступе, меняя function на fun и велосипедя синтаксис еще шизанутее, чем в существующих говноязычках.
Пример нужной, полезной и существенной фичи - возможность задавать для классов кастомные лэйауты в памяти. Ну т.е. группировать одноименные поля разных объектов этого класса по массивам, например, для оптимизации времени работы некоторых часто выполняемых над этими данными алгоритмов, которые не затрагивают остальные поля.
>>1582119 Иммутабельность дает некоторые плюшки компилятору для оптимизации. Структуры по-умолчанию предполагают упорядоченность в памяти. Отсутствие наследование и прочей виртуальной и мета херни - тоже способствуют экономию ресурсов (агрегация делается компиляцией, в том числе и утиная типизация).
Новые фичи? Отсутствие возможности публичных полей и генерация все в методы (в том числе и для lvalue выражений).
Можно сделать лямбды инлайн-функциями.
>Вместо того, чтобы придумать годных фич Твоя очередь, раунд.
>>1582497 >Структуры по-умолчанию предполагают упорядоченность в памяти. Упорядоченность - понятие растяжимое.
Фича, про которую я говорил, могла бы дать значительный выигрыш в производительности в огромном количестве случаев за счет оптимизации промахов по кэшу, но без отказа от ООП, как это происходит сейчас.
>Отсутствие возможности публичных полей и генерация все в методы (в том числе и для lvalue выражений) Это поставит крест на оптимальности, лол. Или на ООП в условиях борьбы за производительность.
>Можно сделать лямбды инлайн-функциями. Они уже inline в крестах, вообще-то. Тащи уж тогда локальные классы, как в Java и JS.
>>1582609 В том, что функции и процедуры -- это не какие-то волшебные объекты, которые имеют особый статус по сравнению с "обычными" типами данных, а точно такой же тип, как и какие-нибудь инты с даблами. Мы из коробки получаем функции высшего порядка и частичное применение функций как минимум.
>>1578580 Без скобок это либо обсервер переменная либо кложуре (частично)
По сути, кокотлин и свифт это нормальные продолжители языков, хотя я не знаю есть ли в котлине екстеншены и прочее, но раскрытие опционалов там тоже свое и оно хотя бы есть.
Остальные языки очень вялые и старые. Да и ты дерьмом занимаешься если честно.
>>1582608 >>Структуры по-умолчанию предполагают упорядоченность в памяти. >Упорядоченность - понятие растяжимое. Что ты сейчас высрал? Сладость сахара - понятие растяжимое.
>>1582608 >Это поставит крест на оптимальности, лол. Или на ООП в условиях борьбы за производительность. Компилятор пустые геттеры и сеттеры обрежет.
>Они уже inline в крестах, вообще-то. Ой ну раз в крестах лямбды инлайн, тогда все, прекращаем разработку, такое уже есть в крестах. Тебя не смутило что и структуры есть в крестах, а еще функции есть в крестах. И!!! ДАЖЕ ПЕРЕМЕННЫЕ ТАМ ЕСТЬ!
>>1583621 >все, прекращаем разработку Ну прекращай, хули. А ты ее начинал, кстати, зумерок? Создал чат в телеге, канал на ютубе и этот тред, лол? >сеттеры обрежет А линковать ты как собрался, иксперд малолетний?
>>1585748 >Так как мозгов у меня не хватит даже чтобы написать транслятор в го, я просто поделюсь с вами идеального синтаксиса. Можете пиздить вдохновляться идеями, я не против. Жопой читаешь?
>>1578525 (OP) Пишем всем двачем @ Пишет только ОП @ Кококо, все говно, оп хуй! @ Кококо, я увидел let, значит язык похож на свифт! @ Кококо, как ты в своем языке будешь линковать методы, ведь другие линкуют и ты линкуй, часики то тикают. @ Кококо, ты что не написал мне еще язык, слился? @ ээээ, я руби обмудок, путаю лямбды с блоками @ Я поел борща, на те вам хаскель, а то все уже забыли про хаскель.
>>1585788 >1С Ограниченное говно. Я даже как-то хотел (и хочу, т.к. пишу на этом говне по работе) транслятор сделать из языка похожего на схему (схема потому что парсить легко) в котором был бы вывод типов. Была бы безопасная хуйня со скобочками, паттерн матчингом и лямбдами.
1) Синтаксис лямбд как отдельный аргумент.
Лямбды пишутся через { ... }
Функции декларируются через "fun" как в котлине, чтобы выровнять на 3 буквы (можно заменить на def если нравится или xyz)
2) Декларация переменных.
let - иммутабельные
mut - мутабельные
3) Структура.
Основная идея что нет никаких свойств, все поля раскрываются в одноименные функции и можно только переписать как тебе нужно геттер или сеттер.
Вызов без скобок - равносилен get вызову
присвоение - равносилен всегда вызову с одним аргументом
Никакие поля (переменные) типа, не доступны из вне, всегда дергается функция (это сделано чтобы реализовать интерфейсы даже для полей, потому что все метод).
Наследования нет, только агрегация структур.
Экстеншен функции имеют доступ только к публичным полям