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

Aidar
13.06.2017
19:39:42

Vladislav
13.06.2017
19:40:42

Evgeniy
13.06.2017
19:42:07

Google

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

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

Evgeniy
13.06.2017
19:43:27

Stanislav
13.06.2017
19:44:12

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

Vladislav
13.06.2017
19:44:35

Matway
13.06.2017
19:57:26

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

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

Artem
13.06.2017
19:58:44

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
интересно же! название конторы, компилятора, хоть чего-то
Если честно, я вот не знаю, что в такой ситуации делать. Наш язык начинался как домашняя разработка, наружу отдавать мы его не планировали. Сейчас он дорос состояния, когда по совокопности факторов делает питон с плюсами вместе взятые. И вроде и хочется его нести в массы, но мы не готовы. Что рекомендуется делать в такой ситуации?

Berkus
13.06.2017
20:03:50
интернированые строчки гут да

Matway
13.06.2017
20:04:40

Evgeniy
13.06.2017
20:05:42

Stanislav
13.06.2017
20:06:20

Matway
13.06.2017
20:06:31

Vladislav
13.06.2017
20:06:33

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

Evgeniy
13.06.2017
20:06:58

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

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

Berkus
13.06.2017
20:07:03

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

Andrei
13.06.2017
20:07:11

Stanislav
13.06.2017
20:07:21

Andrei
13.06.2017
20:07:41

Evgeniy
13.06.2017
20:07:41

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

Google

Berkus
13.06.2017
20:08:11

Andrei
13.06.2017
20:09:06

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

Vladislav
13.06.2017
20:09:28

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

Vladislav
13.06.2017
20:10:01

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

Andrei
13.06.2017
20:10:06

Matway
13.06.2017
20:10:26

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

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

Andrei
13.06.2017
20:13:20

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<*>">
<DisplayString>{*value}</DisplayString>
<Expand>
<ExpandedItem>value</ExpandedItem>
</Expand>
</Type>
</AutoVisualizer>

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

Matway
13.06.2017
20:17:56

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

Admin
ERROR: S client not available

Vladislav
13.06.2017
20:19:47

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

Google

Vladislav
13.06.2017
20:22:53

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

Vladislav
13.06.2017
20:23:08

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

Matway
13.06.2017
20:27:01

Vladislav
13.06.2017
20:28:01

Matway
13.06.2017
20:28:13

Evgeniy
13.06.2017
20:28:32

Matway
13.06.2017
20:29:00

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

Matway
13.06.2017
20:52:57

Evgeniy
13.06.2017
20:53:52

Vladislav
13.06.2017
21:03:10

reagentoo
13.06.2017
21:04:19