@dlangru

Страница 27 из 719
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
так, а если тип будет не range то что произойдет?
почему тогда сам не посмотрел?))

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!())); } для однофайловых скриптов. Очень удобно.
Ого, я джва года этого ждал! Кстати, я не слышал, есть ли такое у других языков? Имею в виду, из тех, у кого вообще имеется де-факто незаменимый стандартный репозиторий. Есть, скажем, у питона с пипом такая штука?

Страница 27 из 719