Size: a a a

2021 August 26

M(

MIT/Yardanico (alt) in ru.nim.talks
через  let folder = getProjectPath() / "modules" работает
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
правда там в итоге формируется импорт типа import  d :\ Projects \ nim \ tast \ modules / testCommand , но это не важно :))
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
в коде же не видно будет
источник

M(

MIT/Yardanico (alt) in ru.nim.talks
import std/[macros, os, strutils, strformat]

macro importPlugins*(): untyped =
 result = newStmtList()
 let folder = getProjectPath() / "modules"
 for kind, path in walkDir(folder):
   if kind != pcFile: continue
   let filename = path.extractFilename()
   let toImport = filename.splitFile()
   if toImport.ext != ".nim" or "skip" in toImport.name: continue
   # Добавляем импорт этого модуля
   result.add parseExpr(&"import {folder}/{toImport.name}")
источник
2021 August 27

K

Kernel in ru.nim.talks
похоже на бравл старс
источник

З/

Зелёный /4Y/ in ru.nim.talks
Вот только модульностью (возможность при компиляции выбрать чего не надо в сборке иметь) появилась где-то в 2.0, а нормально отсечь половину движка до сих пор нереально.
Так что это звучит однозначно крайне круто, но зная Годо это будет нормально работать только ближе к 5 версии
источник

З/

Зелёный /4Y/ in ru.nim.talks
Кто-то видел язык Umka?
Нет биндинглв для нима?
источник

T

Tverd in ru.nim.talks
никогда не понимал зачем скриптовому языку статическая типизация... Дело привычки? Привильнее наверно сказать - указание типов переменных, как недавно в питон воткнули
источник

h

hakon in ru.nim.talks
Читаемость повышает. Видно что возвращает/ожидает на вход функция. Ты , конечно, можешь туда засунуть что угодно, но это уже твоя проблема. Да и иде-шки могут чекать это все и подсказывать, если суешь что-то не то, что ожидается. Еще сам питон может видеть эти указания и на этом можно конструировать удобные сериализаторы/десериализаторы
источник

T

Tverd in ru.nim.talks
это разве не превращает скриптовый язык в язык общего назначения? то есть из луа и питона делаем С/С++ с другими буковками? На и насчет читаемости я бы поспорил, тут дело привычки, я лично теряюсь когда в питоне вижу большой набор символов в объявлении функции.
источник

T

Tverd in ru.nim.talks
кстати, вчера делал биндинг на Ниме к librados, там стояли коментарии что на входе в функцию и что на выходе, но вот что идет в качестве параметров, это тихий ужас ) хорошо что хоть большую часть c2nim перевел правильно
источник

T

Tverd in ru.nim.talks
Вот например такое:
CEPH_RADOS_API int rados_write_op_operate2(rados_write_op_t write_op,
                                          rados_ioctx_t io,
                                          const char *oid,
                                          struct timespec *mtime,
                                          int flags);
источник

T

Tverd in ru.nim.talks
если, допустим, я знаю что в луа около 7 типов переменных, то все просто... в языках с объявлением типов - их сколь угодно много и все равно приходится лазить в инет и искать что же за тип такой, его размерность и состав, хотя в луа я тупо пройдусь по таблице (если это набор чего-либо) и получу все что мне нужно
источник

g

gavr in ru.nim.talks
почему?
источник

T

Tverd in ru.nim.talks
ну это я еще из С помню - лишний вызов функции, лишние тайминги )
источник

g

gavr in ru.nim.talks
так темплкейты в кучу функций инстанциируются
источник

g

gavr in ru.nim.talks
на каждый вызов с аргументами нового типа по функции
источник

VB

Vladimir Berezenko in ru.nim.talks
Не видит. Там это лишь для анализаторов
источник

T

Tverd in ru.nim.talks
ну да, так одна функция и возможно заинлайнится (что вроде и произошло, смотрел в код С) а когда будет последовательные две... то хз, не проверял ) Ну и плюсом лично для меня, все в одном месте, приятно )
источник

h

hakon in ru.nim.talks
источник