
Nikolay
19.07.2018
14:36:28
и чем больше ты говна накидаешь, рассчитывая на то, что тебя за ручку компилятор проведет - тем больше неявной магии ты получишь

Геннадий
19.07.2018
14:36:38
Короче, бросайте вы эти умные словечки. Ассемблер и всё забыли!

Алексей
19.07.2018
14:36:50

Google

Nikolay
19.07.2018
14:36:51
а не компилятору

Алексей
19.07.2018
14:37:11
ни сишка, ни кресты - это не те языки, на которых можно безболезненно накидывать говно

Nikolay
19.07.2018
14:37:26
там нет соблазна польститься на какую-то магию и подтирание соплей
в контексте числодробилок низкоуровневых - не надо

Алексей
19.07.2018
14:40:21

Nikolay
19.07.2018
14:40:27
вот пишешь ты код под видюху, чтобы биткойны майнить или нейросетки считать, у тебя несколько уровней кэшей, содержимым которых надо жонглировать очень тонко. И что ты будешь использовать для аллокации, new?)) или таки malloc побайтовый с маппингом в конкретную память
чем меньше магии там - тем лучше

Алексей
19.07.2018
14:41:18

Vitalii
19.07.2018
14:41:25

Google

Nikolay
19.07.2018
14:41:36

Алексей
19.07.2018
14:42:00
ну хрен знает короче

Nikolay
19.07.2018
14:42:28
я сам до сих пор иногда передергиваюсь, когда смотрю на исходники cpython и вижу там везде оператор register

Алексей
19.07.2018
14:42:42

Nikolay
19.07.2018
14:42:49
и там тоже никаких плюсов, упаси боже

Алексей
19.07.2018
14:43:25
я вот сталкивался с такой штукой как OpenFOAM - это хрень для расчётов в области механники сплошных сред
и там как раз кресты
и на сишке скорее всего будет просто адский ужас, потому что там на крестах сделан более менее удобный DSL

Nikolay
19.07.2018
14:44:04

Алексей
19.07.2018
14:44:16
и математика там неслабая

Nikolay
19.07.2018
14:44:21

Алексей
19.07.2018
14:44:28

Nikolay
19.07.2018
14:44:38
хотя, в принципе, он, видимо, решает задачу, для которой писался

Алексей
19.07.2018
14:45:32
ну, жалко проект, чо
жалко у пчёлки, а без такого DSL (который кстати быстро работает из-за шаблонной магии, инлайнов и прочих крестовых штук) код математики превратится в нечитаемое говно

Nikolay
19.07.2018
14:45:58

Google

Алексей
19.07.2018
14:46:11
сейчас конечно обычно не городят такие штуки и тупо юзают Python как обёртку

Nikolay
19.07.2018
14:46:18
в этом случае выбрали удобство, и норм

Алексей
19.07.2018
14:46:19

Nikolay
19.07.2018
14:46:30

Алексей
19.07.2018
14:46:41
шаблонная магия на то и шаблонная магия, что магичить на этапе компиляции

Nikolay
19.07.2018
14:47:08
какой-то супер хитрожопый компилятор мог бы в каждом конкретном случае проводить хитрые оптимизации, но генерик-код не будет быстрее оптимизированного типизированного

Алексей
19.07.2018
14:47:25

Nikolay
19.07.2018
14:47:26
нет, не прав
ну, я не ставил целью тебя переубедить. Это просто так
единственная альтернатива, которая могла бы тягаться хоть как-то - это весьма узкоспециализированный JIT

Алексей
19.07.2018
14:48:05
ты примерно представляешь себе как шаблоны работают?

Nikolay
19.07.2018
14:48:08
но с этим не к плюсам

Алексей
19.07.2018
14:48:35
потому что в плюсах нет никакого "генерик кода"

Nikolay
19.07.2018
14:48:47

Алексей
19.07.2018
14:49:11
вот их специализации - да

Nikolay
19.07.2018
14:49:23
и работают генерики подобные во всех компиляторах примерно одинаково - исследуются типы в программе, и дальше под каждый генерится копипастой бойлерплейт

Aragaer
19.07.2018
14:49:57
шаблоны это кодогенерация
а не генерик код

Google

Nikolay
19.07.2018
14:50:09

Алексей
19.07.2018
14:50:09
и код специализации шаблонов почти ничем для компилятора не отличается от обычного кода без использования шаблонов

Aragaer
19.07.2018
14:50:11
генерик код это void *

Nikolay
19.07.2018
14:50:17

Aragaer
19.07.2018
14:50:32
ну .. да

Алексей
19.07.2018
14:50:41

Nikolay
19.07.2018
14:50:47

Aragaer
19.07.2018
14:50:58
только я пока не видел, чтобы кто-то пытался именно на шаблонах написать генерик код, который бы не превращался в полную копию реализации для каждой специализации

Алексей
19.07.2018
14:51:00

Admin
ERROR: S client not available

Nikolay
19.07.2018
14:51:07
если брать компиляторы, а не виртуальные машины
Java
Java не в кассу, там JIT и вообще другое устройство

Aragaer
19.07.2018
14:51:20
в жаве не шаблоны, там генерики это компайл-тайм проверка типов

Алексей
19.07.2018
14:51:29

Aragaer
19.07.2018
14:51:32
в рантайме специализации отсутствуют

Nikolay
19.07.2018
14:51:48

Алексей
19.07.2018
14:51:49
и бойлерплейта собственно там нет, и кодогенерации аля плюсы тоже

Nikolay
19.07.2018
14:52:29

Алексей
19.07.2018
14:52:52

Google

Nikolay
19.07.2018
14:53:29
а я и не с этим спорил
а с чем? мне не нравится концепция “похер, компилятор порешает”. Во многих случаях реально порешает, но есть много задач, где это только мешает

Aragaer
19.07.2018
14:53:33
я когда-то читал, что llvm умеет сгенерить код, содержащий и бинарник и исходный ast, чтобы уметь в рантайме сделать специализацию.

Алексей
19.07.2018
14:54:00

Aragaer
19.07.2018
14:54:02
но может быть это было на уровне фантастики

Nikolay
19.07.2018
14:54:13

Алексей
19.07.2018
14:54:29
и я уже приводил пример

Aragaer
19.07.2018
14:54:38
потому что за плюсы больше зарплату дают

Алексей
19.07.2018
14:55:23
где матрицы и вектора фактически лежат лишь на самом нижнем уровне вычислений, а там по верх них наворочено ещё всякого
и вот за счёт того что это всякое наворочено на крестах достигается выжимка парочки процентов производительности
наверное

Nikolay
19.07.2018
14:56:27

Aragaer
19.07.2018
14:56:46
ну это отдельный паззл

Nikolay
19.07.2018
14:56:51
что не меняет того, что можно на это забить и писать хоть на джаваскрипте, но и работать оно будет как говно, не обессудьте

Aragaer
19.07.2018
14:57:14
понимать, как оно будет выполняться на железе, а потом пытаться от языка добиться того, чтобы на выходе получилось то, что тебе требуется

Nikolay
19.07.2018
14:57:25

Aragaer
19.07.2018
14:57:35
это правда меньше для числодробилок, а больше для всяких загрузчиков

Nikolay
19.07.2018
14:58:17
загрузчики тут немного ни при чем. Загрузчик - это простейшая штука

Алексей
19.07.2018
14:58:19

Aragaer
19.07.2018
14:58:34
это смотря что от загрузчика требуется

Алексей
19.07.2018
14:58:37
это разные вещи, совершенно

Nikolay
19.07.2018
14:58:43