@ProCxx

Страница 956 из 2477
Sergey
13.06.2017
19:38:51
нет - это нельзя так делать, или что?

Aidar
13.06.2017
19:39:42
Vladislav
13.06.2017
19:40:42
нет - это нельзя так делать, или что?
Нет - не меняет положение в памяти

Google
Berkus
13.06.2017
19:42:17
оно аллокейтится как нода дерева и потом там и лежит

Sergey
13.06.2017
19:42:36
ну есть некая хранилка моделей, по их именам. не хотелось бы дублировать это имя. раз оно уже есть как ключ в мапе - его бы и использовал

Sergey
13.06.2017
19:44:24
ненене, никаких "мульти". имя - уникально

Vladislav
13.06.2017
19:44:35
Matway
13.06.2017
19:57:26
ну есть некая хранилка моделей, по их именам. не хотелось бы дублировать это имя. раз оно уже есть как ключ в мапе - его бы и использовал
Мы в компиляторе (он вертит миллионами строк) используем штуку, которая ведёт себя как строка, но на самом деле просто указатель. https://en.m.wikipedia.org/wiki/String_interning

Sergey
13.06.2017
19:58:36
это что-то вроде string_view, да?

Matway
13.06.2017
19:58:38
В нашем случае это не просто оптимизация, а разница между жизнью и смертью.

Нет.

Matway
13.06.2017
19:59:14
это где?
Ну, мы делаем свой компилятор. Это оффтопик.

Artem
13.06.2017
19:59:39
интересно же! название конторы, компилятора, хоть чего-то

Google
Ned Ogl
13.06.2017
20:03:08
Matway
13.06.2017
20:03:48
интересно же! название конторы, компилятора, хоть чего-то
Если честно, я вот не знаю, что в такой ситуации делать. Наш язык начинался как домашняя разработка, наружу отдавать мы его не планировали. Сейчас он дорос состояния, когда по совокопности факторов делает питон с плюсами вместе взятые. И вроде и хочется его нести в массы, но мы не готовы. Что рекомендуется делать в такой ситуации?

Matway
13.06.2017
20:04:40
интернированые строчки гут да
У нас интернируется всё, даже AST списки в результате парсинга.

Matway
13.06.2017
20:06:31
вряд ли вы захотите его опенсорсить, так что забейте, пусть так умрет в неизвестности
Мы уже хотим. Нужно просто понимать, что это большая ответственность. Одно дело, когда ты пишешь код для трёх человек, которые у тебя в офисе. Не нужна нормальная дока, комментарии, поддержка. Можно сосредоточиться на качестве (которое качество работы продукта). Опенсорс - это сразу куча дополнительной работы.

Berkus
13.06.2017
20:06:38
да можно просто заопенсорсить, если годное то документаторы найдутся

Sergey
13.06.2017
20:07:01
прямо вот рвет плюсы, да?

Matway
13.06.2017
20:07:02
А это не медленно?
От задачи зависит. У нас с интернингом примерно в 120 раз быстрее, когда я последний раз измерял ;)

Vladislav
13.06.2017
20:07:04
Это ж надо глобальную хеш-таблицу держать

Andrei
13.06.2017
20:07:11
А это не медленно?
Нет, это как раз-таки наоборот.

Andrei
13.06.2017
20:07:41
прямо вот рвет плюсы, да?
Некоторые алгоритмы из стандартной библиотеки с -O3

Matway
13.06.2017
20:07:59
Это ж надо глобальную хеш-таблицу держать
Да. Это было бы бессмысленно, если у тебя динамически генерились бы строки, у которых высокий коэффиент уникальности. В компиляторе это не так. В твоей задаче - я не знаю.

Google
Berkus
13.06.2017
20:08:11
Мы уже хотим. Нужно просто понимать, что это большая ответственность. Одно дело, когда ты пишешь код для трёх человек, которые у тебя в офисе. Не нужна нормальная дока, комментарии, поддержка. Можно сосредоточиться на качестве (которое качество работы продукта). Опенсорс - это сразу куча дополнительной работы.
ну то есть вам надо придумать инфраструктуру контрибутинга в ваш проект - вы же хотите контроль над тем как он развивается, то есть steering committee, но при этом надо чтобы пул реквесты быстро обрабатывались, доки писались и принимались быстрее чем вы пишете новый код, такое

Matway
13.06.2017
20:09:08
прямо вот рвет плюсы, да?
По тем метрикам, которые важны нашей компании (простота меты и производительность результирующего кода) - да, рвёт.

Alik
13.06.2017
20:09:47
llvm хотя бы?

Vladislav
13.06.2017
20:10:01
В компиляторе почти все строчки - подстроки нескольких больших, по идее
И string_view должно быть ещё быстрее интернирования

Matway
13.06.2017
20:10:05
предположу что их нет
Совершенно верно. Язык делался для нас. Мы внутри компании полностью перешли на него с плюсов.

Andrei
13.06.2017
20:10:06
В компиляторе почти все строчки - подстроки нескольких больших, по идее
У нас несколько нестандартный язык. В общем не всё так просто :)

Matway
13.06.2017
20:10:26
llvm хотя бы?
Конечно. 21 век не дворе.

Vladislav
13.06.2017
20:11:17
Matway
13.06.2017
20:11:51
Вы ведь его заопенсорсите?)
Когда поймём, что сможем это потянуть. Мы работаем над этим.

Andrei
13.06.2017
20:12:22
Вы ведь его заопенсорсите?)
Не знаю. Я если честно не верю в идеалы открытого ПО. Но, видимо в каком-то виде -- да.

Vladislav
13.06.2017
20:12:28
Некоторые алгоритмы из стандартной библиотеки с -O3
Стандартная библиотека в плюсах -говно, самописные алгоритмы их тоже часто рвут

Matway
13.06.2017
20:12:54
Собственно штука, с которой начался разговор: —- Interner.h —- #pragma once #include "Ptr.h" #include "muteWarnings.h" #include <unordered_set> #include "unmuteWarnings.h" template<class T> class Interner { public: Ptr<const T> operator()(T&& value) { return {&*values.insert(std::move(value)).first}; } private: std::unordered_set<T> values; }; —— Не смотрите, что мала. Эта штука спасает жизни.

Andrei
13.06.2017
20:12:56
Окей. Но это как минимум показатель.

Vladislav
13.06.2017
20:12:59
Не знаю. Я если честно не верю в идеалы открытого ПО. Но, видимо в каком-то виде -- да.
Для языка - отсутствие коммьюнити это смерть, давно проверено

Matway
13.06.2017
20:13:32
muteWarnings/unmuteWarnings - наш способ писать с /wall и при этом не плеваться от вонингов в STL.

Berkus
13.06.2017
20:14:13
#include "muteWarnings.h" ауч, а стл у вас какой- libc++?

Google
Matway
13.06.2017
20:14:17
--- Ptr.h —- #pragma once #include "muteWarnings.h" #include <functional> #include "unmuteWarnings.h" template<class T> class Ptr { public: constexpr Ptr() noexcept : value() {} constexpr Ptr(T* value0) noexcept : value(value0) {} constexpr operator T*() const noexcept { return value; } constexpr T* operator->() const noexcept { return value; } private: T* value; }; namespace std { template<class T> struct hash<Ptr<T>> { size_t operator()(Ptr<T> pointer) const noexcept { return std::hash<T*>()(pointer); } }; }; —-

Это вообще просто эмулятор указателя. Нужна только для того, чтобы в Visual Studio писать хитрый natvis для указателей разных типов.

Berkus
13.06.2017
20:14:46
но идея заопенсорсить проект прямо в чятике интересная!

Matway
13.06.2017
20:14:59
--- Ptr.natvis —- <?xml version="1.0" encoding="utf-8"?> <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> <Type Name="Ptr&lt;*&gt;"> <DisplayString>{*value}</DisplayString> <Expand> <ExpandedItem>value</ExpandedItem> </Expand> </Type> </AutoVisualizer>

#include "muteWarnings.h" ауч, а стл у вас какой- libc++?
Кросс-платформенный :) LLVM-ная библиотека тоже ругается будь здоров :)

Berkus
13.06.2017
20:16:05
да я тут пытаюсь буст и кутэ собирать в -wall -wextra знаю да - говнокода там порядочно

Alik
13.06.2017
20:19:19
Название у языка хоть есть? 2С?

Admin
ERROR: S client not available

Berkus
13.06.2017
20:20:07
C_

Matway
13.06.2017
20:20:27
*внимательно слушает и записывает*

Berkus
13.06.2017
20:20:29
но я надеюсь что он с хаскелевым синтаксисом вообще

Alik
13.06.2017
20:20:45
2С -- будущее уже в вашей кассе

Andrei
13.06.2017
20:20:55
Написал ради интереса часть Parsec-а

В общем можно писать как императивно, так и декларативно.

Vladislav
13.06.2017
20:22:07
Matway
13.06.2017
20:22:16
Andrei
13.06.2017
20:22:40
И с зависимыми типами!
Ты вот сейчас думаешь, наверное, что пошутил :D

Google
Vladislav
13.06.2017
20:22:53
И с зависимыми типами!
Ну правда, пора уже их в мейнстрим тянуть

Andrei
13.06.2017
20:23:06
А на самом деле они в роадмапе есть.

Vladislav
13.06.2017
20:23:08
Ты вот сейчас думаешь, наверное, что пошутил :D
Пошутил, но с надеждой на долю правды)

Andrei
13.06.2017
20:23:29
Пошутил, но с надеждой на долю правды)
Оказался прав. Мы на них облизываемся с самого начала.

Berkus
13.06.2017
20:23:53
это неплохо да

Vladislav
13.06.2017
20:25:47
Блин, мне теперь очень хочется на это посмотреть. Может возьмете меня в команду удалённо кем-нибудь?)

Andrei
13.06.2017
20:26:13
Тебе фейсбука мало? :D

Berkus
13.06.2017
20:26:43
в фейсбуке ж пехапе

скучна)

Vladislav
13.06.2017
20:26:48
Тебе фейсбука мало? :D
У нас только унылые языки пилят, хак да jsx с flow всякие(

Matway
13.06.2017
20:27:01
Блин, мне теперь очень хочется на это посмотреть. Может возьмете меня в команду удалённо кем-нибудь?)
Мы планируем этим летом набирать фокус-группу, на которой можно испытывать язык. Терпимость к... Радикальным переменам приветствуется. Ко мне в приват, пожалуйста.

Vladislav
13.06.2017
20:28:01
Matway
13.06.2017
20:29:00
это единственное требование?
Сложно требовать чего-либо от людей, которым ты суёшь продукт без документации.

reagentoo
13.06.2017
20:48:56
передавать шаблонным параметром тип со спецификатором практикуется где-нибудь? MyTemplat<const MyType&>::

Vladislav
13.06.2017
21:03:10
можно, но зачем?)
в туплы, например

reagentoo
13.06.2017
21:04:19
можно, но зачем?)
и мне интересно - зачем

Страница 956 из 2477