1. В версии Lua 5.1 ещё можно было использовать кириллические имена функций и переменных, потом эту возможность убрали. Qlua насколько я знаю основана на версии Lua-5.1. Можно ли вернуть эту возможность в Qlua - Вы я так понимаю её всё равно модифицируете для адаптации к QUIK. Т.к. QUIK и Qlua - рассчитана только на русскоязычных пользователей и её использование не русскоязычными пользователями как я понимаю не планируется, то отсутствие этой возможности вызывает недоумение. Все современные языки программирования это позволяют ... и проблем это не вызывает. Очень неудобно писать латинскими буквами названия облигаций и финансовых операций... это приводит к ошибкам и затемняет смысл и логику программы ... 2. Какая версия Lua используется Quik 8 ?
ЛуаСкрипт написал: 1. В версии Lua 5.1 ещё можно было использовать кириллические имена функций и переменных, потом эту возможность убрали. Qlua насколько я знаю основана на версии Lua-5.1. Можно ли вернуть эту возможность в Qlua - Вы я так понимаю её всё равно модифицируете для адаптации к QUIK. Т.к. QUIK и Qlua - рассчитана только на русскоязычных пользователей и её использование не русскоязычными пользователями как я понимаю не планируется, то отсутствие этой возможности вызывает недоумение. Все современные языки программирования это позволяют ... и проблем это не вызывает. Очень неудобно писать латинскими буквами названия облигаций и финансовых операций... это приводит к ошибкам и затемняет смысл и логику программы ... 2. Какая версия Lua используется Quik 8 ?
напишите элементарную программу. Она заменяет все кириллические лексемы во входном файле на их представление, скажем, в формате base64. Таким образом, с некоторыми ограничениями вы сможете писать названия функций и переменных кириллицей, а после прогона через эту программку получите допустимый луа текст.
всего лишь парсер луа, может быть слегка урезанный. В случае тупой замены что получится из этого
Код
function ShowQuikMessage(txt)
message("Сообщение от скрипта РусСкрипт:\n" .. txt)
-- message("Сообщение от скрипта РусСкрипт2:\n" .. txt)
end
-- В комментариях кавычки "не обязаны закрываться
function КтоНазвалМеняТак()
-- TODO: функцию "КтоНазвалМеняТак" переименовать в "NeverUseRussianTokens
end
-- и апострофы тоже никому ничего не д'олжны
function AmIStillAFunction()
end
Хех, форум подсветил мою идею, ибо тоже не парсит до упора.
Вод код на Python - расчёт стоимости актива методом ДДП, всё логично понятно, ничего запоминать не нужно, стильно модно, молодёжно . Русские имена не мешают поддерживать самодокументирование и последние PEP ...
В оригинальном Lua 5.1 ведь была поддержка не латинских символов, убрали только потому что надо много скриптов таскать между разными локалями... Зачем убрали QLua ? В продукте который рассчитан на русскоязычного пользователя, да и ещё в таком приложении где небольшая ошибка в логике скрипта может привести к сливу депозита !
Код
import datetime as Дата
""" Финансовые операции расчёт доходности облигаций и акций методом ДДП """
# Формулы (Лямбда-функции)
ДохаГод = lambda Год, СтавкаДДП, Деньги : Деньги/(1+СтавкаДДП/100)**Год
ЦенаАкции = lambda Дивиденды : Дивиденды * 10 # Грубая оценка - Цена равна суммарным дивидендам за 10 лет
в_руб = lambda цена : round(цена, 2) # Округление до 2-х знаков
Купон = lambda Номинал, Доходность, КупоновВГод : Номинал/100*Доходность/КупоновВГод # Размер Купона облигации в рублях
def фСуммарныйДоход(Лет, Ставка, Дивиденды):
""" Суммарный доход с учётом ДДП без/с учётом конечной стоимости актива """
Цена = 0
for год in range(1, Лет+1):
Денег = ДохаГод(год, Ставка, Дивиденды)
Цена = Цена + Денег
строка = "Год: %s Доход: %s руб. Итого: %s руб. <- Дивиденды с учётом ДДП"
# print(строка % (год, round(Денег,2), round(Цена,2)))
return Цена + ЦенаАкции(Дивиденды) # + стоимость акции примерно равная размеру дивидендов за 10 лет
def ОблигацияДоход(Номинал, Доходность, КупоновВгод, ДатаПокупки, ДатаПогашения):
""" Расчёт доходности облигации, Доходность в процентах """
# return Купон
""" Вычисления """
Ставка_ДДП = 5
Лет = 15
print("Ставка ДДП =", Ставка_ДДП, "Лет = ", Лет)
Цена = фСуммарныйДоход(Лет, Ставка_ДДП, 22)
print("Итого доход от МТС Сейчас = ", в_руб(Цена), "руб.")
Цена = фСуммарныйДоход(Лет, Ставка_ДДП, 28)
print("Итого доход от ГПН Сейчас = ", в_руб(Цена), "руб.")
Вот нашёл люди сделали из Lua 5.3 даже добавили русские синонимы английским операторам, т.е. можно и оригинальные скрипты на Lua использовать и писать бизнес-логику в стиле 1С. Выложено всё на гитхаб.
Я не сильно разбираюсь в компиляторах ... этот Lua 5.3 Ru как-то можно прикрутить к QUIK 8. например скомпилировав и заменив оригинальную DLL lua 5.1 ? Это я так понимаю вопрос к разработчикам ?
Если кто соображает как это сделать и сделает DDL ку , то я могу взять на себя и переписать учебник, протестировать и переписать все скрипты и индикаторы которые есть в документации на QUIK. Уж больно имена переменных на латинице выглядят стрёмно и убого ... прямо как во времена TurboC 2.0 и Win3.11forWorksgroup (это который был с 32-х разрядным доступом к диску если кто забыл ;-) )
ЛуаСкрипт написал: 1. В версии Lua 5.1 ещё можно было использовать кириллические имена функций и переменных, потом эту возможность убрали. Qlua насколько я знаю основана на версии Lua-5.1. Можно ли вернуть эту возможность в Qlua - Вы я так понимаю её всё равно модифицируете для адаптации к QUIK. Т.к. QUIK и Qlua - рассчитана только на русскоязычных пользователей и её использование не русскоязычными пользователями как я понимаю не планируется, то отсутствие этой возможности вызывает недоумение. Все современные языки программирования это позволяют ... и проблем это не вызывает. Очень неудобно писать латинскими буквами названия облигаций и финансовых операций... это приводит к ошибкам и затемняет смысл и логику программы ... 2. Какая версия Lua используется Quik 8 ?
напишите элементарную программу. Она заменяет все кириллические лексемы во входном файле на их представление, скажем, в формате base64. Таким образом, с некоторыми ограничениями вы сможете писать названия функций и переменных кириллицей, а после прогона через эту программку получите допустимый луа текст.
Так всё же из коробки работало ... даже дописали синхронные функции - sinsert и sremuv , зачем убрали ... если кому то не нужно ... использовать же никто не заставляет ... тем более в финансах 1С широко используется...
ЛуаСкрипт написал: этот Lua 5.3 Ru как-то можно прикрутить к QUIK 8. например скомпилировав и заменив оригинальную DLL lua 5.1 ? Это я так понимаю вопрос к разработчикам ?
Можно и без них ответить. Нет, без остальных сорцев квика нельзя. Можно, как выше было сказано, препроцессить скрипт перед отдачей квику. Может быть, если сильно упороться, можно будет этот препроцессинг как-то к квику присобачить, чтобы он (квик) лопал скрипты сразу в исходном виде. Но не путем замены длл, посложней.
Цитата
ЛуаСкрипт написал: Если кто соображает как это сделать и сделает DDL ку , то
Предложение после "то" сомнительно, что кого-то из могущих заинтересует. Это как с переводами документации. Кто мог бы перевести - тому "за интерес" не надо, он и так прочтет, а кому и самому надо - тот не может.
Цитата
ЛуаСкрипт написал: расчёт стоимости актива методом ДДП, всё логично понятно, ничего запоминать не нужно
Ну это кому как. Вас не запарывает постоянно раскладку переключать?
ЛуаСкрипт написал: расчёт стоимости актива методом ДДП, всё логично понятно, ничего запоминать не нужно
Ну это кому как. Вас не запарывает постоянно раскладку переключать?
Это по моему очень сильная профессиональная деформация .. из за некоторого неудобства в переключении раскладки пожертвовать проницаемостью кода :) Эдак можно дойти и до удаления комментариев с целью сокращения размера файлов... :)
Мелкие неудобства с лихвой перекрываются улучшением понимаемости алгоритма. Именно алгоритма и логики приложения, а не кода. Я бы даже сказал осознанности ... если вы занимались медитацией... поёмете что эт такое... когда у Вас весь код, понятия по русски, то как бы фокус мышления смещается с заднего на передний план. с деталей на общее видение. Это как в кино камера меняет фокус, вы перестаёте видеть далёкий лес с веточками и листочками и прочими деталями, и замечаете лес речку деревню ,едущий грузовик на общем плане.
попробуйте например отрефакторить пару своих библиотек и поменять всё что можно на русский (особенно прикольно менять имена функций, объектов и методов), только замены д.б. не вида
LogFile -> Файл1 или какой либо стёб типа "рукопись/ грамота", а соответствующие логике алгоритма, придумывание русских аналогов само по себе бывает весьма занятно LogFile -> ЖурналДействий LogFileDB1 -> ЛогФайлБазыДанныхЗаказов LogFileAcsses -> ЖурналДоступа
Когда всё поменяно, имена объектов и методов продуманны...понимание алгоритма переходит немного на иной уровень. На хабре лет 5 назад кто то рекомендовал, чтобы растормошить мозг, работать мышкой 1 день в неделю левой рукой :) Это посильней будет.
ЛуаСкрипт написал: из за некоторого неудобства в переключении раскладки пожертвовать проницаемостью кода
Некоторого ) В английской раскладке тыкается со скоростью 250-300 знаков. Если все время туда-сюда переключаться, скорость будет как у однопальцевой тетки из бухгалтерии и постоянные ошибки "начал писать - не та раскладка", а уже полстроки написал. Достаточно написать одну таблицу строк для русскоязычного приложения, постоянно переключая раскладку, чтобы это почувствовать на себе.
Цитата
ЛуаСкрипт написал: Именно алгоритма и логики приложения, а не кода.
Для этого есть всякие там умл, конечные автоматы, формальные грамматики, флоучарты, дракон простигосподи. Их даже рисовать не надо зачастую, достаточно в голове представить. Вы либо сразу думаете в терминах какого-то формализма, либо русский язык вам тоже не поможет.
Цитата
ЛуаСкрипт написал: попробуйте например отрефакторить пару своих библиотек и поменять всё что можно на русский
Нет, спасибо, я думаю-то по-английски, когда код пишу. Зачем чинить то, что не сломано. Вы вот в примерах перевода передергиваете несколько, берете abbreviated английские имена и переводите в осмысленные русские, честная трансляция была бы вида LogFileDB1->ЛогФайлБД1, ничего не поменялось, кроме букв.