Предложение к разработчикам

Страницы: Пред. 1 2 3 След.
RSS
Предложение к разработчикам
 
Цитата
Nikolay написал:
А зачем "рекомендованное", если есть книга от автора языка.
Купите или "купите" уже книгу Роберту Иерузалимски "Программирование на языке lua", если уж на сайте языка никак не получается.

Объем знаний по собственно языку Lua - это лишь десятая часть того, что необходимо знать для написания сколь-нибудь качественных роботов в QUIK.
Так что книжка по Lua - это прикольно, но я подразумеваю, что она (или аналогичное по собственно языку) автором уже усвоено, и дальше наконец-то начинается самое интересное. Ну я надеюсь, что усвоено, хотя как показывает эта ветка...
 
Anton, Потому, что ПИЖОНЫ! Ещё 20 лет назад говорил им: "Уберите  jmp из ассемблера и попробуйте написать хоть что-нибудь"!

Да хрен с ними, с Дейкстрами! Пусть думают, что хотят, а мы своими мозгами шевелить будем.  :smile:

Вот ветка 20-летней давности, начавшаяся именно с дискуссии про goto, где собралось целое созвездие программистов высочайшей квалификации - одних только разработчиков компиляторов там было штуки три: https://forum.ixbt.com/topic.cgi?id=40:160

Несколько фрагментов оттуда:

- Простите, а этот код (который был в примере) - человек писал? То есть руками? Без комментариев? Таких программистов надо выгонять с работы. Без разговоров.
- Согласен, токо это писал я сам, и я же сам директор и есть.

- Это в математике можно доказать, что набором флагов и прочей нечистью можно полностью обойтись без goto - в той-же математике машина тьюринга творит чудеса. А в жисти все несколько иначе выглядит.

- Мои высказывания были только насчёт понятности программы человеком. Так сказать, human-readability
- Так я-ж не поленился, скопировал код, и отформатировал его. Клянусь - readability не на грамм не повысилась. Как не понимал ни бельмеса в том, что там творится, так и не понял.

- Сам я goto очень не люблю, но регулярно использую... К сожалению выиграть прямо сейчас пару минут иногда привлекательнее всех разговоров о чистоте кода.
 
Цитата
Владимир написал:
Уберите  jmp из ассемблера и попробуйте написать хоть что-нибудь
Строго говоря, jmp это такая же несуществующая вещь, как if, while, for и прочая. Для процессора (интела в данном случае) существуют EB, E9, EF и т.д., а на асме это все пишется как jmp. То есть ровно та же ситуация, что и с перечисленными аналогами, языковая конструкция - для человека, для процессора - опкод. В опкодах тоже писать можно, ежли без извращениев никак. Забавно, кстати, что в армах пытались сделать железный if, но чота выпилили в последней версии.

Конкретно в чистых сях, где все объявления вверху, goto вообще не страшен. В плюсах уже хуже, бо можно заскочить в блок, обойдя инициализацию локальных переменных, либо выскочить из блока, обойдя деструкторы (хотя вроде компиляторы теперь это ловят).
 
Anton, Да, ассемблер и машинный код - это одно и то же, только записанное на разных языках. И jmp, он же goto, там имеется, ибо без него полная труба.

Я всегда пишу именно "в чистых сях", и goto не только "не страшен" - он полезен! А Страуструп, как и Вирт, нифига не понимали в программировании. :smile:  
 

  В защиту удачного выбора ARQU пользовательского языка программирования Lua можно сказать следующее.

1.    Фактически Lua является двухуровневым языком благодаря архитектурной (изначально) тесной его интеграции с C/C++. Это обеспечивает два уровня его использования:

   1)    начальный, достаточный для многих пользователей (базовый синтаксис Lua может быть описан на нескольких страницах);

   2)    расширенный с выходом в системный язык программирования C/C++ (и для этого в Lua есть C-API), на котором можно написать все что угодно.

  Все проблемы, не решаемые в собственно Lua, могут решаться в C/C++. Нужна высокая производительность, переходим в C/C++. Нужен типизированный язык переходим туда же. Не хватает каких-то функций, переходим туда же.

2.    Зачем вносить какие-то изменения в Lua с тем, чтобы из него сделать плохой C, когда и так можно писать на C?

3.    Интересно то, что Владимир и сам не хочет писать ни на каком языке, кроме Lua. :smile:

 
TGB, Ну... я бы тоже не отказался от С-подобного синтаксиса (например, JS), но искать что-то лучшее стал бы только при нехватке функциональности, а она тут вполне терпимая.
 
Цитата
Владимир написал:
Ну... я бы тоже не отказался от С-подобного синтаксиса (например, JS)
   Эта достаточно легко решаемая задача.
Пишется простенький собственный препроцессор (на том же Lua), который в нужных местах заменяет "}" на "end" и убирает открывающие скобки "{"  блоков ( при этом, конечно, надо учесть синтаксис задания таблиц, а может быть и еще что-то, например, "do") и после этого можно писать Lua-программы на синтаксисе в чем-то похожем на синтаксис C, обрабатывая их таким препроцессором.
 
TGB, Да ну нафиг!  :smile: Скрипты вообще штука довольно статичная, и я отлаженные функции прото схлопываю в одну строчку, чтобы глаза не мозолили и убираю комментарии - отныне это просто чёрный ящик, имеющий вход и выход. Ну, если вдруг глюки какие обнаружатся - можно снова поотлаживать "в развёрнутом виде".
 
Цитата
TGB написал:
Все проблемы, не решаемые в собственно Lua, могут решаться в C/C++. Нужна высокая производительность, переходим в C/C++. Нужен типизированный язык переходим туда же. Не хватает каких-то функций, переходим туда же.
В Lua и так все что можно оптимизировали. Попробовал сохранение в файл таблицы всех сделок сделать через Lua Api на Delphi. Не получилось сделать быстрее, чем на Lua.
 
Александр, Во-первых, файловые операции - это минус порядок по сравнению с ОЗУшными, так что тормозит тут не язык, а файл. Во-вторых, у Lua есть хронический недостаток: вместо индексов используются ключи, а это ещё порядок.
 
Цитата
Владимир написал:
тормозит тут не язык, а файл
Предлагаю Александру закомментировать запись в файл, но оставить форматирование строки для записи, и поделиться (удивительными) результатами. Ежли ему лень, поделюсь своими: 3 млн записей из ТВС пишутся в файл 30 секунд, в никуда - 29 секунд. Там под ковром io:write практически напрямую вызывает сишную fwrite, а она и сама кэширует, и потом еще винда кэширует, так что с файлами тормозов нет, покуда они не столь велики, чтобы начать кэш выдавливать. А ежли на SSD, то и потом еще полетает, пока и ему кэш не забьет.
 
Anton, То есть файловые операции не держат? А что же формат не вызывает напрямую сишную sprintf?  :smile:  
 
Цитата
Владимир написал:
А что же формат не вызывает напрямую сишную sprintf?
Вызывает, только формат-то у них не совсем сишный, поэтому сканируют сами и вызывают для каждого % отдельно.
 
Ах, паскуды! Мой любимый goto оказался с изъяном: внутрь блока if-then не пускает (метки не видит). Ну ручонки бы повыдёргивать этим долбаным "умникам"!  :evil:  
 
Владимир, Сначала разберитесь в отличиях скриптового языка от нативного.
А потом уже изливайте желчь.
Код
function main()
  local num;
  num = 1;
  --goto test
  if (num == 1) then
    goto test
::test::
    message("goto yes", 1)
    return;
  end;
::test::
    message("goto yes1", 1)
end;
 
 
Александр, А что тут "разбираться"? Этот придурок не пускает внутрь блока if - что у меня, что в вашем примере.
 
Цитата
Владимир написал:
Александр, А что тут "разбираться"? Этот придурок не пускает внутрь блока if - что у меня, что в вашем примере.
Луа - стековый скрипт. Поэтому стек должен быть всегда определенным.
Внутри блока if может поменяться стек, поэтому может произойти сбой,
если программа сделает goto внутрь блока if.
Вот пример попроще.
do
 goto ok
 local i = 1;
::ok::
 print(i);
end
Перестаньте говнокодить. Займитесь наконец изучением языка, на котором программируете.
Такое ощущение, что вам все что-то должны.
Не нравится, есть луа апи + ваш любимый си, или есть метатрейдер, multichart, tradingview и вероятно еще большая масса платформ.
 
Александр, Ваша эрудиция приводит меня в трепет.  :smile:  Только вот нюансик: goto и нужен именно для того, чтобы входить внутрь блоков if! Или выходить из колоды вложенных циклов. Или, наоборот, входить туда. А этот кастрат кому и на кой сдался?

И при чём тут вообще стек? Lua - это ИНТЕРПРЕТАТОР! Это только кривые ручонки, а не "стековый скрипт".

Я уже говорил тыщу раз: я СПРАВЛЮСЬ даже на этом языке, ибо требования к торговому софту просто НУЛЕВЫЕ. Ну, оказался полным говном goto - выбросить придётся к чертям собачьим - только и всего.  :smile:  
 
Цитата
Владимир написал:
Только вот нюансик: goto и нужен именно для того, чтобы входить внутрь блоков if!

Руки оторвать по самые ноги таким программистам, кому пришла в голову  столь дурацкая затея.
 
swerg, Вот он я "такой программист". 40 лет вхожу внутрь блоков if, и горя не знаю  :smile: Программы бывают чуть посложнее, чем a=b+c;  :wink:  
 
Вот именно за использование в программах "чуть посложнее" и отрывать.
 
swerg, Так программы ПО ФУНКЦИОНАЛУ СВОЕМУ бывают посложнее!  :wink: Не только торговые погремушки. Скажу больше: без входа внутрь блоков if или внутрь циклов goto И В САМОМ ДЕЛЕ нафиг не нужен. В частности, вот это убожество: кто его использует - поднимите руки!
 
Вы, как обычно, не изучив язык, начинаете осуждать. Про goto во всех руководствах по языку сказано, что он не работает в блоках (намек - есть область видимости переменных).
ФУНКЦИОНАЛЬНОСТЬ программы не влияет на сложность. Кода больше, да. А вот сложность алгоритма - это вопрос методики, либо сам алгоритм, как таковой сложный.

Не умеете без goto, пишите с ним. Но я уже забыл когда последний раз его использовал, лет 25 назад возможно.

внутрь блока if, while - серьезно?
 
Nikolay, Почему "не изучив"? Я сначала обрадовался наличию goto в языке, а потом как посмотрел...

Ну, если "он не работает в блоках", то поганой метлой! Я так и сказал.

Функциональность программы (особенно системных утилит) обеспечивается, как правило, довольно сложными механизмами. А вот алгоритмически они, как правило, довольно просты. А сложные алгоритмы, в свою очередь, могут реализовываться вполне простыми средствами языка.

Нет уж, С ТАКИМ goto я писать не буду!  :smile:

Да, "внутрь блока if, while" - серьезно. Представьте, что у Вас многочасовая, многодневная задача. Вы должны иметь возможность в любой момент отложить её, и потом возобновить работу с отложенного места. А если там штук пять вложенных циклов? Или, прости Господи, вообще рекурсия? Я совершенно точно знаю, что goto с такими проблемами прекрасно справляется. А вот как обойтись БЕЗ него - лично я без понятия! А здесь у меня даже в мыслях не было, что этот оператор здесь кастрированный. У меня файл входных данных парсится, там в разных местах возможны разные ошибки в данных, некоторые из них критичные - я в таких случаях ругаюсь на юзера и закрываю скрипт. Проверок много, проверки разные, а реакция - одна, и она именно "блочная". И тут БАЦ - и полный облом! А если на группу разных проверок есть группа разных реакций? Короче, в морг!  :smile:  
 
Цитата
Владимир написал:
Вы должны иметь возможность в любой момент отложить её, и потом возобновить работу с отложенного места.
Это coroutine называется. В луа есть, полюбопытствуйте, всяко лучше, чем лисапеды.

Цитата
Владимир написал:
А вот как обойтись БЕЗ него - лично я без понятия!
А вообще это вот все, что хотите отложить, это контекст, и (говорим о нативном коде) сохраняется он элементарнейше на стеке, после чего стек заменяется на другой, из того стека восстанавливается ранее отложенный контекст и поехали дальше. То есть ровно так, как ось переключает потоки, только в юзермоде. В сях лонгджамп так и устроен, в винде для этого тоже штука есть, fiber называется. Как раз гоуту для таких целей не представляю как применить.

Цитата
Владимир написал:
У меня файл входных данных парсится, там в разных местах возможны разные ошибки в данных, некоторые из них критичные - я в таких случаях ругаюсь на юзера и закрываю скрипт. Проверок много, проверки разные, а реакция - одна, и она именно "блочная". И тут БАЦ - и полный облом! А если на группу разных проверок есть группа разных реакций?
Все логично, да. Сначала обозвали нехорошо исключения, потом начали их же изобретать на гоуту. В луа есть error('text'), вызываете и все.
 
Anton, Нет, coroutine - это совсем другое. О, Господи! В ЛУА???!!! Нет уж, в луа я как-нить файлами обойдусь: логом (для юзера) и выходным (для компа). А моим "лисапедам" уже десятки лет, отлажены, вылизаны почти до блеска - здесь-то уж точно в гробу я видел творения сторонних разработчиков! Вон, разобранная Вами проблема потери управления между потоками чего стоит! Не говоря уже о 19-значных кодах.

Ха! НА КАКОМ, простите, стеке? А если у нас НЕСКОЛЬКО стеков (в частности, некоторые объекты могут иметь персональные стеки) - тогда как?

Какие ещё "исключения"?! Нет у меня никаких исключений! Нет, не было и не будет! Нигде и никогда!  :smile:  
 
Цитата
Владимир написал:
Ха! НА КАКОМ, простите, стеке? А если у нас НЕСКОЛЬКО стеков (в частности, некоторые объекты могут иметь персональные стеки) - тогда как?
Конечно несколько, иначе что переключать-то. И как это на каком, на текущем. Вот который щас. Бабах на него все регистры, заменили указатель стека, дерг все регистры обратно и поехали.
 
Anton, При чём тут ТЕКУЩИЙ стек, если мне надо отложить ВСЮ задачу, ВСЕ его стеки, ВСЕ рекурсивные штучки-дрючки? И запустить я её могу, может быть, через год, и на другой платформе - всё авно всё должно работать как часы! И при чём тут вообще регистры? Вы НА ПРОГРАММНОМ стеке собираетесь всё это проделывать? Который по SP? Спасибо, кушайте сами!  :smile:  
 
Цитата
Владимир написал:
Который по SP?
Ну SP это когда было, уже и ESP не торт, теперь RSP. Таки да, на нем. Все состояние ПОТОКА определяется а) текущим содержимым регистров; б) текущим состоянием стека (до дна). Забрасываем регистры на стек и все, сняли стек - сняли все состояние ПОТОКА.

А ежли задача стоит снять ПРОЦЕСС, то его надо снимать так: посылаем ему сообщение "пора на выход" и ждем, пока он сам свое состояние в файлик сериализует. А при старте он этот файлик прочитает и восстановит состояние. Вот, не побоюсь этого сравнения, как квик окошки вспоминает, где какие были. Снять дамп извне и потом героически оживить франкенштейна - это занятно, может быть, особенно если хорошо оплачивается, только абсолютно бессмысленно.
 
Anton, Да какая разница? Я ещё 20 лет назад писал (про исключения): ""Секундочку! У меня раньше сомнений не возникало, а сейчас что-то появились: объекты - они что, на стеке ПРОГРАММЫ генерятся???"

Ничего подобного! Во-первых, задачи бывают МНОГОпоточные: простейший пример - те самые сопрограммы. Во-вторых, что там на регистрах творится - программе по барабану (даже если она на чистом ассемблере написана), у неё СВОИ указатели стека (стеков), а сами стеки могут быть неоднородными. Примерно тогда же я об этом писал так: "То есть различные объекты прячутся в стек по всему телу функции, и по выходу они должны быть восстановлены. Сколько их там будет и каких на момент выхода - одному Богу известно. Более того, эти объекты могут быть где угодно, в т.ч. локальные переменные этой функции, они же, но для более верхних уровней вложенности или даже параметры, передаваемые какому-либо уровню рекурсии. Или вообще находиться где-то вне ее тела (вне программного стека)".

И для того, чтобы "квик окошки вспоминал, где какие были", не нужно никакого стека - это чистейшее программирование, управляемое данными: сохраняется не стек, а паспорта объектов (в частности, паспорт всей задачи).

Вот это как раз и называется "снять дамп извне", ибо это МОЯ задача, и операционка В ПРИНЦИПЕ ничего о ней знать не может, кроме своего сраного "состояния регистров". ПАСПОРТА надо записывать, буферы файлов сбрасывать, очереди событий (точнее, стеки очередей) сохранять (точнее, тамошние курсоры) и т.д.
 
Цитата
_sk_ написал:
Да откуда же вы такие берётесь?  :unamused:  

Вот тоже самое хочется сказать.
Похоже, очередной выпуск на пенсию состоялся. Варились в собственном соку 40 лет да так, что протухли уже.
 
swerg, А Вы не мучайтесь - Вы скажите. Раз по делу сказать нечего.  
 
Цитата
swerg написал:
Цитата
_sk_ написал:
Да откуда же вы такие берётесь?    

Вот тоже самое хочется сказать.
Похоже, очередной выпуск на пенсию состоялся. Варились в собственном соку 40 лет да так, что протухли уже.
Я только одним утешаюсь: если начать торговать по-крупному на свои деньги, то с таким психологическим бэкграундом разорение будет весьма быстрым, после чего посты на форуме закончатся.
 
_sk_, Ох, милок - я торгую уже несколько лет, и вполне успешно. И даже пока что без скрипта.  :smile:  
 
Владимир,  у меня одна фраза только и вертится - "нафига, а главное зачем". У потока ОДИН стек. Какие свои указатели, каких стеков? Откуда они взялись? Кто-то их насоздавал вручную? Нафига? Зачем отслеживать локальные переменные функции, если компилятор это делает? "Параметры, передаваемые какому-либо уровню рекурсии" это про что вообще? Они одним способом только передаются - как аргументы функции, вызывается она рекурсивно или нет - без разницы, КАК ИМЕННО передаются и КАК ИМЕННО очищаются - это описано в ABI и все, точка, ничего не надо изобретать, надо взять документацию, прочитать и сделать, как там написано.
 
Anton, Ну... у меня не раз бывало по 5-6 стеков на задачу, и ни одного по SP/ESP/RSP. Да, у потока именно ОДИН стек (у меня обычно стек очередей), и в каждой очереди свой указатель + указатель вершины стека. Для неоднородных стеков чуть сложнее.

Я их насоздавал. Не вручную, программно. Например, все диалоговые модули у меня исключительно на стеках очередей событий. А заполняет их либо юзер (на кнопки давит), либо объекты класса "очереди событий". А компилятору-то откуда об этом знать? Он же в моей задаче ни уха ни рыла, да и вообще тупой как пробка. А если мы вызываем функцию по указателю, причём в момент компиляции ни сама функция, ни количество и тип её аргументов В ПРИНЦИПЕ неизвестны? И "параметры, передаваемые какому-либо уровню рекурсии" вовсе не обязательно "одним способом только передаются - как аргументы функции" - по той же самой причине: заранее может быть НЕИЗВЕСТНО, сколько их, какие они, и что за функция вызывается. Точнее, что за метод - это вовсе не обязательно функция. Похоже, Вы ещё просто не сталкивались с реально сложными задачами. В моих задачах, например, аргументы методов могут находиться:
а) в программном стеке (только для функций)
б) в очереди объектов (после имени объекта)
в) по адресу, указанному в очереди объектов
г) на аккумуляторе (или на вершине стека аккумуляторов)
д) по адресу, указанному на аккумуляторе.
Такшта компилятор повесится!  :smile:  
 
Владимир,не надо путать стек процессора и стек Lua - это разные стеки. Вам бы документацию почитать и хорошенько разобраться в луа, глупых комментариев убавилось бы в разы.
Или вы тут тролем заделались?
 
Второй николз. Меня одного посещает такая мысль?
 
Александр, НА КОЙ мне, простите, стек Lua? Равно как и стек процессора? Ни тот, ни другой мне нафиг не нужны. Я просто сказал, что goto в Lua - это не оператор, а говно, и пользоваться им не имеет смысла. Сказал буквально в двух строчках одного коммента! А плотом пошла бурная "дискуссия", да ещё временами с гнутыми пальцами. Я-то здесь при чём? Не лучше ль на себя, кума, оборотиться?
 
Цитата
Владимир написал:
на стеках очередей событий
Эмм, события задом наперед обрабатываете? ) Стек это LIFO, очередь FIFO. Значит, это были очереди, тип данных такой, а не аппаратный стек. Ладно, тут прояснилось. На плюсах очереди имели бы деструкторы и тупой как пробка компилятор их бы тупо вызывал когда надо.

Цитата
Владимир написал:
А если мы вызываем функцию по указателю, причём в момент компиляции ни сама функция, ни количество и тип её аргументов В ПРИНЦИПЕ неизвестны?
Можете набросать, как это на практике выглядит? Ну вот есть указатель и говорят, что на функцию, больше не знают о ней ничего. И чо? Как можно вызвать ее, не зная ни calling convention, ни типов аргументов?

Цитата
Владимир написал:
Похоже, Вы ещё просто не сталкивались с реально сложными задачами.
От алгоритмиста это смешно звучит, типа слабо np-полную закодить? Не, мы лучше логарифмическое что-нибудь.
 
Anton, Стек - это LIFO, очередь - FIFO. Комбинируя их, получаем возможность программирования данными. Аналог: регистр IP выполняет команды по очереди, а прыгает - по стеку (SP, CALL). Здесь то же самое, только на данных. А на плюсах функциональнуть НИ НА МИЛЛИМЕТР не выше, чем в чистом С, только маразмов разных понасовано, вроде деструкторов с эксепшенами.

Да без проблем! Вот кусок кода (переключатель по классу методов)\
Код
case c_Func:   // методы класса "функции"
 (TDP)RV = (TDP)__AP + SIZEI16S;
 if (__FTO[*(UIMD)__AP - o_Func - 1].Tag)
  __PushPar ((TDP)RV, (UI8)(__FTO[*(UIMD)(__AP - o_Func - 1)].Tag << 1));
 RV = (*(LMF)__FTO[*(UIMD)__AP - o_Func - 1].Addr) ();
 if (__FTO[*(UIMD)__AP - o_Func - 1].Tag)
  __PopDumm ((UI8)(__FTO[*(UIMD)__AP - o_Func - 1].Tag << 1));
 break;   // уходим на обработку следующего объекта
Эта конструкция вызывает любую (зарегистрированную) функцию с любым числом и типом аргументов.

NP-полную? Ну вот как раз сейчас у меня два графа на двух компах считаются на задачу коммивояжёра - один на 10 миллионов узлов, второй на 50. Одна на выданье (дня три считала, думаю, через пару часов закончит), второй еще пару недель трудиться в поте лица.  :smile:  
 
Владимир,  а у мну вот LL(k) умирает уже на k = 7, а он всего лишь полиномиальный. КОНСТАНТЫ БОЛЬШИЕ, гыгы. Ну ладно, типа код нам показали, прекращаем дозволенные речи.
 
:smile: Угу.

Рассказали бы мне лучше, что там надо читать по OnTrade. Я вижу, что она правильно возвращает price, qty и sec_code, а больше мне, кажись, ничего и не надо. Что там нужно контролировать? Кроме того, я тут краем уха видел жалобы, что прерывание это может приходить неоднократно или вообще не приходить. И, заодно, как посылать заявки. Ну и, до кучи, чем ловить и как обрабатывать события от юзера.
 
Цитата
Владимир написал:
Александр, НА КОЙ мне, простите, стек Lua? Равно как и стек процессора? Ни тот, ни другой мне нафиг не нужны. Я просто сказал, что goto в Lua - это не оператор, а говно, и пользоваться им не имеет смысла. Сказал буквально в двух строчках одного коммента! А плотом пошла бурная "дискуссия", да ещё временами с гнутыми пальцами. Я-то здесь при чём? Не лучше ль на себя, кума, оборотиться?
Зачем вы тут свой эмоциональный понос изливаете? Вам не нравится оператор goto, я не нему вообще никак не отношусь. Язык Lua мне в целом нравится из-за поддержки lua api. Это вопрос отношения.
 
Цитата
Владимир написал:
:: Угу.

Рассказали бы мне лучше, что там надо читать по OnTrade. Я вижу, что она правильно возвращает price, qty и sec_code, а больше мне, кажись, ничего и не надо. Что там нужно контролировать? Кроме того, я тут краем уха видел жалобы, что прерывание это может приходить неоднократно или вообще не приходить. И, заодно, как посылать заявки. Ну и, до кучи, чем ловить и как обрабатывать события от юзера.
Что все должны делать, как вы?
 
Александр, Ну это ещё вопрос, у кого из нас понос.  :wink: Мне как раз НРАВИТСЯ оператор goto, о чём я здесь 100500 раз проговорил открытым текстом. Мне не нравится эта кастрированная пародия на goto, о чём я тоже говорил открытым текстом. Мне не нравится эта долбаная "динамическая типизация", мне не нравится, что скрипт мой до сих пор иногда теряет управление при останове, хотя я буквально все обращения во второй поток обвистовал анализом флага останова (и сама необходимость такого анализа мне тоже не нравится). И вообще, "интегральная" оценка здесь неуместна: мне ОЧЕНЬ нравится наличие loadstring, возможность построения дерева объектов, сервис для работы с файлами и ещё кое-что по мелочи. Но это не значит, что должно быть "либо-либо": есть конкретные недостатки языка, конкретные недостатки реализации, их можно и нужно исправлять!

Никто никому ничего не должен. Я неоднократно имел возможность убедиться, что Антон - программист очень высокой квалификации, и хотел бы услышать его рекомендации. Его, а не Ваши, если уж совсем честно.
 
Цитата
Владимир написал:
Александр, Ну это ещё вопрос, у кого из нас понос.   Мне как раз НРАВИТСЯ оператор goto, о чём я здесь 100500 раз проговорил открытым текстом. Мне не нравится эта кастрированная пародия на goto, о чём я тоже говорил открытым текстом. Мне не нравится эта долбаная "динамическая типизация", мне не нравится, что скрипт мой до сих пор иногда теряет управление при останове, хотя я буквально все обращения во второй поток обвистовал анализом флага останова (и сама необходимость такого анализа мне тоже не нравится). И вообще, "интегральная" оценка здесь неуместна: мне ОЧЕНЬ нравится наличие loadstring, возможность построения дерева объектов, сервис для работы с файлами и ещё кое-что по мелочи. Но это не значит, что должно быть "либо-либо": есть конкретные недостатки языка, конкретные недостатки реализации, их можно и нужно исправлять!

Никто никому ничего не должен. Я неоднократно имел возможность убедиться, что Антон - программист очень высокой квалификации, и хотел бы услышать его рекомендации. Его, а не Ваши, если уж совсем честно.
Свои "не нравится" пишите в на форумах, где обитают разработчики Lua. Здесь ведь никто ничего дорабатывать в луа не будет.
 
Александр, Я уже отвечал на это. А также говорил: что и как мне делать, я всегда решаю САМ!
 
Цитата
Владимир написал:
Александр, Я уже отвечал на это. А также говорил: что и как мне делать, я всегда решаю САМ!
Решайте конечно. Но вопрос не об этом, а о том, зачем вы все это пишите?
 
Александр, Я пишу не Вам. И давно.
Страницы: Пред. 1 2 3 След.
Читают тему
Наверх