
Oleg
22.06.2016
07:36:01
https://www.packtpub.com/web-development/d-web-development
книжку эту читал?

Dmitry
22.06.2016
07:37:04
пока что не успел...

Oleg
22.06.2016
07:37:23
блин, тогда как ты что-то пытаешься написать?

Google

Oleg
22.06.2016
07:37:55
там хоть как-то объясняется что куда

Dmitry
22.06.2016
07:38:35
да я сейчас вообще доки пытаюсь научиться понимать т.к. уже понял что развернутые примеры будут не скоро. Ну и докучи разные шаблоны пытаюсь понять и тд
Кстати по поводу шаблонов. Получается что методы должны понимать любые типы данных, иначе тип T который мы передаем они не смогут обработать

Oleg
22.06.2016
07:39:53
не понял вопрос

Dmitry
22.06.2016
07:40:52
Ну вот мы создали шаблон foo(T)(param1, param2) или как он там создается

Oleg
22.06.2016
07:40:53
во первых у шаблонов есть ограничение сигнатуры (если ты хочешь инстанцировать свой метод только с определёнными типами), а вот вторую часть не понял
ну
не шаблон, а шаблонную функцию, но не важно

Dmitry
22.06.2016
07:42:24
и дальше мы над типом T поводим манипуляции. Склеиваем допустим строки, еще что-то делаем и тд. Т.е. тип должен поддерживать операции эти. К примеру мы же не можем T с типом строка перемножить

Oleg
22.06.2016
07:42:57
ну для этого и есть ограничения сигнатуры

Dmitry
22.06.2016
07:43:39
ограничения сигнатуры это список типов который метод может принимать?

Oleg
22.06.2016
07:44:02
нет, это условие, которое должно выполниться, чтобы метод с этим типом инстанцировался

Dmitry
22.06.2016
07:45:00
это условие внутри шаблона описывается?

Google

Oleg
22.06.2016
07:45:22
сейчас пример скину
развёрнутый пример +/-

Dmitry
22.06.2016
08:22:14
о пасибо смотрю

Oleg
22.06.2016
08:28:15
задавай вопросы, если не понятно что в этом коде

Dmitry
22.06.2016
08:29:05
а как я понял в самом коде идет проверка типа принимаемого и на основании него принимается решение о вызываемой функции

Oleg
22.06.2016
08:30:04
проверка типа происходит во время компиляции: если не проходит, то функция не инстанцируется
"решение о вызываемой функции" это инстанцировать её или нет

Dmitry
22.06.2016
08:32:21
"нет, это условие, которое должно выполниться, чтобы метод с этим типом инстанцировался" на какую строку в твоем коде смотреть?

Oleg
22.06.2016
08:32:38
10-21
этот if это и есть ограничение на тип данных
если ты не заметил, то он вне тела функции и по сути относится к сигнатуре

Dmitry
22.06.2016
08:33:52
так, а если тип будет не range то что произойдет?

Oleg
22.06.2016
08:34:53
ошибка времени компиляции
что печально, достаточно неявные ошибки...
просто пишет, что такая функция не может быть вызывана с такими аргументами
а почему (какое условие не выполнено) он не пишет

Dmitry
22.06.2016
08:36:16
А примерно понял

Oleg
22.06.2016
08:36:38
ты, кстати, под виндой пишешь?

Dmitry
22.06.2016
08:36:43
да
Скажи, у Питона есть проблема c GIL у Ди какая ситуация? Ты не в курсе?

Google

Oleg
22.06.2016
08:36:51
а собираешь как?

Dmitry
22.06.2016
08:36:56
dub

Oleg
22.06.2016
08:37:07
ну всмысле как вызываешь его

Dmitry
22.06.2016
08:37:25
ну у меня эмулятор консоли ConEmu или CMD

Oleg
22.06.2016
08:37:31
короче: сколько действий нужно тебе сделать, чтобы создать новый файл и запустить его на выполнение?
консоль это вообще отлично

Dmitry
22.06.2016
08:38:17
новый файл? В плане? Ну я стрелку вверх нажимаю и консоль последнюю команду дополняет
или я вопроса не понял?

Oleg
22.06.2016
08:38:43
у меня уже достаточно большая папка собралась с разгого рода экспериментами: что-то не ясно — перехожу в неё, создаю файлик, пишу маленький кусочек и сразу собираю
советую такую же завести

Dmitry
22.06.2016
08:39:15
ну я обычно примерно так же делаю

Oleg
22.06.2016
08:39:40

Dmitry
22.06.2016
08:39:58
а... поленился)

Oleg
22.06.2016
08:40:23
https://ru.wikipedia.org/wiki/Global_Interpreter_Lock
D компилируемый

Dmitry
22.06.2016
08:40:56
А в компилируемых какая тема?

Oleg
22.06.2016
08:41:09
ну...
это большая дискуссия)

Dmitry
22.06.2016
08:41:19
Разве скриптовые языки могут на системный планировщик потоков оказываеть влияние и пробуждать их на свое усмотрение?

Oleg
22.06.2016
08:41:46
читал не так давно таненбаума...

Google

Oleg
22.06.2016
08:42:08
и так и не понял как точно организуются потоки в window и linux
есть потоки на уровне ядра
там своя тема
а потоки на уровне пользователя созданные для ядра являются 1им потоком
ими разруливает runtime
а на системный планировщик вроде только через системные вызовы можно повлиять
но он вроде не относится к проблеме GIL

Admin
ERROR: S client not available

Dmitry
22.06.2016
08:44:35
как я понял GIL просто потоки пробуждает когда у них нет данных других потоков или как?

Oleg
22.06.2016
08:44:41
в D, как в любом нормальном языке есть потоки

Dmitry
22.06.2016
08:44:58
дык в Питоне же потоки тоже есть

Oleg
22.06.2016
08:45:05
они не нормальные)
это как Fibers

Dmitry
22.06.2016
08:45:23
почему? Они виртуальные? Не потоки ОС?

Oleg
22.06.2016
08:45:27
они передают управление друг другу постоянно
как я понимаю, конечно

Dmitry
22.06.2016
08:45:43
а у Ди системные?

Oleg
22.06.2016
08:45:50
ну как...
говорю, там сложный момент
pthreads там

Google

Oleg
22.06.2016
08:46:15
ну типа да, системные
но ты не можешь управлять процессом создания потока
на уровне ядра он будет создан или библиотека будет им рулить или вообще как это происходит я не понял
одно знаю точно: работают они правильно
если бы они были полностью на уровне ядра, то это было бы накладно
если бы они были на уровне runtime то блокировка одного (ввод/вывод) блокировала бы все
там какой-то симбиоз

Dmitry
22.06.2016
08:48:26
так, я тут на обед отбегу чуток и потом продолжим ок?

Oleg
22.06.2016
08:48:37
возможно создаётся ещё один поток (на уровне ядра) для блокировки
оке

Олег
22.06.2016
08:54:23
В последней версии DUB можно делать так
#!/usr/bin/env dub
/+ dub.sdl:
name "colortest"
dependency "color" version="~>0.0.3"
+/
void main()
{
import std.stdio : writefln;
import std.experimental.color.conv;
import std.experimental.color.hsx;
import std.experimental.color.rgb;
auto yellow = RGB!("rgb", float)(1.0, 1.0, 0.0);
writefln("Yellow in HSV: %s", yellow.convertColor!(HSV!()));
}
для однофайловых скриптов. Очень удобно.
https://forum.dlang.org/post/nk93ge$1jhe$1@digitalmars.com

Oleg
22.06.2016
08:56:39
кстати да
но, мне кажется, это сделанно было ради включения однофайловых либ в реестр dub
просто чем лучше писать
dub build --build=release mini.d
чем
rdmd -release mini.d
?
не подумал) dub же может ещё и зависимости разрулить)
да, круто на самом деле

Олег
22.06.2016
09:05:10
скрипты стало удобнее писать-)

Макс
22.06.2016
09:22:16
В последней версии DUB можно делать так
#!/usr/bin/env dub
/+ dub.sdl:
name "colortest"
dependency "color" version="~>0.0.3"
+/
void main()
{
import std.stdio : writefln;
import std.experimental.color.conv;
import std.experimental.color.hsx;
import std.experimental.color.rgb;
auto yellow = RGB!("rgb", float)(1.0, 1.0, 0.0);
writefln("Yellow in HSV: %s", yellow.convertColor!(HSV!()));
}
для однофайловых скриптов. Очень удобно.
Ого, я джва года этого ждал! Кстати, я не слышал, есть ли такое у других языков? Имею в виду, из тех, у кого вообще имеется де-факто незаменимый стандартный репозиторий. Есть, скажем, у питона с пипом такая штука?