LINUX.ORG.RU
Ответ на: комментарий от X512

Я представляю индексы массива как позиции границ между элементами, а не сами элементы. Как то так. Тогда все операции и индексами, интервалами и адресами становятся очевидны. Пример использования: стек вызовов.

Вы продолжаете путать индексы с сдвигами.

Я всегда говорю «отрезок от а, до b», подразумевая полуинтервал.

Проверяете терпение людей ?))

Если надо, в начале документации написать «везде используются полуинтервалы».

Ну чтобы добить людей пишите сразу «отрезок - это иногда полуинтервал, иногда вектор, а иногда слонёнок»

AKonia ★★★
()
Ответ на: комментарий от crutch_master

Речь про встройку

Тут в тредике свидетели Иеговы JS пишут standalone-приложения на, потому и пытаются рассматривать Lua как самостоятельный язык. Я выше писал про сову на глобус и троллейбус из хлеба.

там скриптуха не рулит какими-то терабайтными структурами

Что не мешает ей сожрать лишний гигабайт в некоторых юзкейсах. В Lua это сделать немного сложнее (если не отключать GC принудительно), но всё равно несложно.

mord0d ★★★★★
()

Почему lua?

В СУБД Cronos он встроен, насколько я понимаю, потому что замечательно подходит под идеологию многомерных данных. Чертовски удобно, когда и БД, и её встроенный язык в любой момент времени могут трактовать любое значение, как массив значений. В lua, опять - как я понимаю, «всё есть таблица». Другими терминами в постреляционных СУБД это тоже самое. Как json, в каком-то смысле, видимо.

Правда с «настоящим» lua никогда не работал. Как он встроен в Cronos мне нравилось.

Toxo2 ★★★★
()
Ответ на: комментарий от AKonia

Вы продолжаете путать индексы с сдвигами.

Не интересны мне ваши сдвиги. Ни в одной книге я их не видел. Максимум смещение (offset) в смысле число байт от начала структуры.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

можно использовать *.so

Даже в Windows и Embedded? xD

поддерживать любой язык

И компилять под каждую архитектуру, а *.lua будут работать везде одинаково. Причём не только на разных архитектурах, но и на разных платформах.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Даже в Windows и Embedded? xD

Да. В Windows есть DLL. Сделать с нуля динамическую загрузку и линковку не сложно, много ресурсов она не занимает.

И компилять под каждую архитектуру, а *.lua будут работать везде одинаково.

Лучше компилять, чем недоязык.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

сдвиг это чуть более старое понятие, но в целом по смыслу оно как раз синоним смещению, поэтому предирка не в тему.

AKonia ★★★
()
Ответ на: комментарий от AKonia

сдвиг это чуть более старое понятие, но в целом по смыслу оно как раз синоним смещению

Смещение измеряется в байтах, а индекс в размерах элемента массива.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Да. В Windows есть DLL.

Ты даже не в курсе что so и dll — разные вещи?

Сделать с нуля динамическую загрузку и линковку не сложно, много ресурсов она не занимает.

Какая линковка в embedded?! xD

Лучше компилять, чем недоязык.

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

Хоть раз соверши в этом треде мудрый поступок, не отвечай на этот комментарий. ☺

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Хоть раз соверши в этом треде мудрый поступок, не отвечай на этот комментарий. ☺

Может бред скажу, но с недавнего времени я заметил, что этого пациента @X512 стало ОЧЕНЬ много на лоре, и в каждой, абсолютно каждой теме он спешит продемонстрировать свое экспертное мнение, и отстаивает его с упорностью упрямого подростка. Такой себе Фрактал, зачем то лезущий еще и в технические темы, тот хоть знал свой уровень. Вообщем, в полку Специалистов По Всему прибыло.

Дружелюбный Анон

anonymous
()
Ответ на: комментарий от mord0d

Ты даже не в курсе что so и dll — разные вещи?

Какая разница? Всё равно компилировать надо. Функционально so и dll — это одно и тоже.

Какая линковка в embedded?! xD

В чём проблема? Нет доступа на исполнение в памяти?

Лучше молчать, чем в очередной раз облажаться.

Ad hominem.

Хоть раз соверши в этом треде мудрый поступок, не отвечай на этот комментарий. ☺

Размечтались :)

X512 ★★★★★
()
Ответ на: комментарий от anonymous

Прямо зависит от того, чем наполнить игру. Причем, если нагрузить до предела в 2008 году компьютеры тех времен было несложно, то сегодня придеться постараться, установив сотни аддонов, подгрузив невероятных размеров карту и расставив десятки тысяч объектов.

Leupold_cat ★★★★★
()
Последнее исправление: Leupold_cat (всего исправлений: 1)
Ответ на: комментарий от X512

Функционально so и dll — это одно и тоже.

0\

Какая линковка в embedded?! xD

В чём проблема?

0\\

Размечтались :)

IYtVFNhDdVo

mord0d ★★★★★
()
Ответ на: комментарий от anonymous

Может бред скажу

Правда бредом быть не может. Его действительно стало слишком много, а его икспердного мнения — избыточно много.

Такой себе Фрактал, зачем то лезущий еще и в технические темы, тот хоть знал свой уровень.

У Фрактала беда с недостатком внимания. У этого какие-то проблемы с ЧСВ.

в полку Специалистов По Всему прибыло

Многие местные СПВ хотя бы пытаются вникнуть в суть вопроса, в который лезут. Этот несёт чушь и не краснеет. Регулярно.

Не стрёмно совершать ошибки, стрёмно их не признавать.

mord0d ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Ссылка — это конкретный объект, безотносительно его физического расположения, а указатель — адрес в памяти, безотносительно того, что там лежит.

Указатели тысячу лет не указывают на физические реальные адреса в памяти.

anonymous
()
Ответ на: комментарий от mord0d

На JS из вот прям популярного расширяется разве что PolicyKit (ибо альтернатив ему тупо нет) и GNOME Shell

Фотошоп это не популярное?

А nginx?

anonymous
()
Ответ на: комментарий от anonymous

Указатели тысячу лет не указывают на физические реальные адреса в памяти

Ты бы еще вспомнил виртуальную машину, где даже ОС не имеет доступа к физической памяти.

byko3y ★★★★
()
Ответ на: комментарий от Leupold_cat

я именно про скрипты, а не объекты/текстуры, есть сервера пустышки(с малым количеством объектов/текстурок), так вот на таких серверах даже в связке с i7 + 1060, не будет выше 100 фпс, можно попробовать поиграться с gmod_mcore_test/mat_queue_mode и прочим, но это почти никак не влияет, а ещё я раньше поражался от количества от говно скриптов, которые сыпались варнингами, и да, нужно бы заного потыкать гмод, посмотреть что там наделали, мб сейчас уже оптимизацию завезли

anonymous
()
Ответ на: комментарий от byko3y

Сильный AI неинтересно играть. У игрока же попа сгорит, когда его лоулевельные мобцы толпой отпинают или ныкаться по углам будут.

peregrine ★★★★★
()
Ответ на: комментарий от anonymous

Фотошоп это не популярное?

Никогда не писал плагинов (или как они там называются, суть одна) под Photoshop. Честно говоря для меня это новость.

А nginx?

Про возможность расширять nginx с помощью Lua знаю, про возможность расширять его с помощью JavaScript слышу впервые. Загуглил — действительно; я просплоупочил три года с мелочью… да и фиг с ним! ☺

mord0d ★★★★★
()

потому что на ней запилили TeX: SILE, emacs Minimum Profit mle/eon и lite былинное, wren и DOME c пиу-пиу или fennel и min-love2d-fennel ну и есть Terra на худой конец

ещё бы какой-нибудь LuaWEB/LuaTANGLE LitLua.lua в луаемакс встроить бы и луатехом писать, писать себе вдругорядь литературно-грамотное – невозбранно достигнув желаемого

anonymous
()
Ответ на: комментарий от anonymous

CaSILE тоже ничё так.

Windows support will almost certainly require considerable monkey business.

Not my circus, not my monkeys.

anonymous
()
Ответ на: комментарий от anonymous

ещё бы какой-нибудь LuaWEB/LuaTANGLE LitLua.lua в луаемакс встроить бы

на худой конец и FunnelWEB какой-нибудь зайдёт. с несколькими typesetters для доки в WEAVE и нейтральный от языка кодинга для TANGLE (в отличие от CWEB/CTANGLE классического, который к сишке и теху гвоздями приколочен)

anonymous
()
Ответ на: комментарий от anonymous

FunnelWEB какой-нибудь

актуальный форк fw-utf8 с поддержкой utf-8

anonymous
()
Ответ на: комментарий от anonymous

На JS из вот прям популярного расширяется разве что PolicyKit (ибо альтернатив ему тупо нет) и GNOME Shell

Фотошоп это не популярное?

А nginx?

Cloudflare Workers eще

drsm ★★
()
Ответ на: комментарий от qulinxao3

ещё вот занятное: генератор парсеров/конпеляторов/whatever по спецификациям Eli и примеры литературно-грамотные на FunnelWeb (см. ссылки выше).

алголушка паскаль ISO анси Цэ жаба

по ходу Eli это парсер атрибутивных грамматик, на которых затем пишутся DSLи для обработки деревьев (LIDO, GORTO, прочие)

книжка «Generating software from specifications» интересная.

anonymous
()
Ответ на: комментарий от qulinxao3

ещё одна находка месяца: по ходу, у PL/I-KT компилятора с pl1.su начала появляться нормальная документация и статьи по реализации компилятора.

вообще интересный этот тулчейн:

  • Digital PL/I-86 от Гари Килдала, изначально под CP/M, портированный под 8086 (линкер ещё в OMF генерит)

  • PL/M реализация в CP/M

  • RASM ассемблер (по ходу как бы не на PL/M или этом вот subset G комплиляторе).

далее, внезапно – мета уровень и расширяемость:

  1. ключевые слова не зарезервированы в PL/I, и следовательно можно расширять собственной реализацией. например, автор PL/I-КТ кириллические аналоги ввёл.

  2. в самом PL/I есть встроенный ассемблер. в тулчейне изначально был отдельный линкер, либрариан, ассемблер и компилятор. в PL/I-КТ объединили всё это + файл ресурсов с библиотеками в один самодостаточный бинарь в 1.8 Мб. и это – почти всё чтобы вступать и компилировать (часть хедеров к винлибам встроена в ресурсный файл, но вообще не помешает взять какой-нибудь asmc или uasm и оттуда добавить).

  3. примеры вдохновляющие: работа с directX из PL/I, проверка размерности физических величин

  4. вообще судя по статьям компилятор и язык довольно сильно доработаны. такой вполне себе приятный алгол/паскаль/оберон/пл\М/ pl/I subset G.

  5. RASM расширяемый ассемблер, по сути похож на FASMG с настраиваемыми макросами поддержкой ISA. есть статья про реализацию макросов – очень круто: в RASM 8086 который изначально 16-битный были макросами добавлена поддержка i386, MMX, SSE, x86-64, 3Dnow, AVX и прочая прочая. что доставляет == что почти все доработано макросами.

  6. PL/I расширяемый язык: например CALL FOOBAR TASK/ CALL FOOBAR TASK STOP с многопоточностью, те же алиасы с кириллическими ключевыми словами, прочее.

здесь вдохновляющий пример относится к примеру кода под VisualAge PL/I IBM-овскому компилятор, где препроцессором сделали реализацию PARSE dsl из REXX в PL/I, через ручное конструирование строк.

  1. статьи вообще на сайте pl1.su неплохие, про реализацию компилятора и языка, так или иначе. из них что запомнилось: про RASM-64, про реализованную проверку физических размерностей, про патченье ведра ntoskrnl.exe из XP для шедулера посредством монитора с отладчиком, встроенным в генерируемый бинарник на PL/I (загрузили EXE, mmap-нули, поменяли пару байт и сохранили новое ведро).

  2. вообще автор PL/I-КТ зело крут: пилит себе невозбранно идеальный транслятор, и полностью импортозамещён: один-единственный бинарник в 1.8 Мб с конпелятором/ассемблером/линкером/библиотекатем/хедерами стандартных библиотек в ресурсах – это всё, полный full stack (lol_ъ_) который нужен для разработки на таком вот идеальном самодостаточном компиляторе.

хотя в форках wlink/wasm из OpenWatcom : jwasm, asmc, uasm немного дальше продвинулись (нормальный ELF, MachO, COFF .exe из коробки), да и тот же fasmg емнип есть тоже подо всё сразу.

но ты зацени идею: а) расширяемый ассемблер, с макросами адаптируемыми микрокодом под любую архитектуру, в том числе ещё и не написанную б) расширяемый язык со свободными ключевыми словами, которые новые свои можно добавлять невозбранно, ….

… в) расширяемый скриптовый язык – REXX (по сути, очень похож на PL/I, опять же см. реализацию PARSE из REXX – на препроцессоре PL/I – то есть, внезапно, скриптуха становится конпелируемой)

здесь добавить метаязыков по вкусу расширяющих

…. z) и завернуть в итоге в какое-то литературно-грамотное типа примеров из FunnelWeb и ELI.

здесь конечно для полноты ощущений надобно бы переписать FunnelWeb на PL/I, а сам PL/I – на ELI.

эдакий метапрог сам на себе получается.

и забабахать на нём майнфрейм какой-нибудь в духе мультикса православного – попсовым юниксом ещё не испорченного, ога :)

anonymous
()
Ответ на: комментарий от anonymous

а указатель — адрес в памяти

Указатели тысячу лет не указывают на физические реальные адреса в памяти.

Сам придумал, сам поправил.

Siborgium ★★★★★
()
Ответ на: комментарий от mord0d

Что не мешает ей сожрать лишний гигабайт в некоторых юзкейсах.

В каких? Я на жс обрабатываю тонны всякой финансовой хероты и он жрёт больше гб только если тащить что-нибудь по всему городу за пол года.

потому и пытаются рассматривать Lua как самостоятельный язык. Я выше писал про сову на глобус и троллейбус из хлеба.

Ну и зачем он тогда нужен, если на нём нельзя нормально написать какой-нибудь высокоуровневой логики?

crutch_master ★★★★★
()
Ответ на: комментарий от anonymous

Сейчас бы воспринимать реальность через призму лор-овец.

А у кого еще спрашивать, как не у луа-фанбоев на лоре. Самому ковырять его лень, да и стоит ли?

crutch_master ★★★★★
()
Ответ на: комментарий от mord0d

Интерпретатор jscript (майкрософтовская имплементация es) был встроен в винду из коробки со времен win9x. Куча постинсталлов, шел скриптов, и прочей сервисной лабуды особенно в то время писалось скриптовалось на жс не в вебе.

За последние 10 лет жс встроили в качестве скриптового языка во множество популярных СУБД, в том числе на нем можно писать хранимые процедуры. В том числе в те СУБД, где раньше была встроена lua (как произошло и нгниксом. казалось бы, зачем жс, если уже есть луа?). А во многих субд жс был основным языком изначально (в основном nosql движки).

Вообще огромное заблуждение большинства о том, что жс разрабаывался только чтобы скриптовать веб, или, как любят говорить - анимировать снежинки. С самого начала js, еще за 14 лет до появления ноды был встроен в Netscape Enterprise Server, самими создателями js - нетскейпом, чтобы использовать его на серверной-стороне. А сам жс рассматривался как один из основных языков для платформы Netscape ONE. Если почитать нетскейповские роадмапы, у них вообще были наполеоновские планы, они в целом хотели сделать веб именно таким, какой он есть теперь - вебом приложений, а не гипертекста, только через призму тех технологий что были у них на руках в то время. И это все происходило, еще даже до ES3, когда в жс не было ничего буквально (даже прототипов не было, и оператора ===). https://sun9-61.userapi.com/YKJX28fOAbl9Ms3DtTVMHwOrGV-2Pi3Jgkj1Yg/zglCOgRGeyQ.jpg

Еще любители хейтить жс часто приводят как аргумент срок проектирования жс в 10 дней и никто никогда не уточняет, почему этот срок был именно таковым. А все дело в простой конкруенции за основной язык в браузерах, о чем прямо пишет Айк в своем твиттере. Если бы они не успели релизнуть жс до июня, майкрософт популяризовали бы vbscript. И вместо жса, был бы бейсик. Не факт, что навсегда, но учитывая то, что нетскпей в итоге проиграл войну браузеров именно ие, то на следующие 12 лет точно.

anonymous
()
Ответ на: комментарий от anonymous

Интерпретатор jscript (майкрософтовская имплементация es) был встроен в винду из коробки со времен win9x. Куча постинсталлов, шел скриптов, и прочей сервисной лабуды особенно в то время писалось скриптовалось на жс не в вебе

+1, из-за ActiveScripting API JScript иногда находится в странных местах. вот, к примеру из плагинов AkelPad EvalCmd.js

// http://akelpad.sourceforge.net/en/plugins.php#Scripts
// Version: 1.2
// Author: Shengalts Aleksander aka Instructor
//
//
// Description(1033): Evaluates an expression passed through command line.
//
// Flags - first number in expression (sum of the following):
// 0x1  replace \ with \\.
// 0x2  expand AkelPad variables:
//        %f active file.
//        %d directory of active file.
//        %a AkelPad's directory.
// 0x4  expand escaped symbols:
//        %xx escape symbol xx is equivalent to the hexadecimal number representing the character.
//        For example, "%5Cn" equal to new line character "\n".
//
// Usage without flags:
// Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.ReplaceSel("Line 1\nLine 2");`)
//
// Usage with flags:
// Call("Scripts::Main", 1, "EvalCmd.js", `0x1; AkelPad.OpenFile("C:\File.txt");`)
//
//
// Description(1049): Обработать выражение, переданное через командную строку.
//
// Флаги - первое число в выражении (сумма следующих):
// 0x1  заменить \ на \\.
// 0x2  развернуть переменные AkelPad:
//        %f активный файл.
//        %d директория активного файла.
//        %a директория AkelPad'а.
// 0x4  развернуть экранированные символы:
//        %xx символ экранирования xx эквивалентно шестнадцатеричному коду символа.
//        Например, "%5Cn" эквивалентно символу новой строки "\n".
//
// Применение без флагов:
// Call("Scripts::Main", 1, "EvalCmd.js", `AkelPad.ReplaceSel("Line 1\nLine 2");`)
//
// Применение с флагами:
// Call("Scripts::Main", 1, "EvalCmd.js", `0x1; AkelPad.OpenFile("C:\File.txt");`)

var pArgLine;
var dwFlags;

if (pArgLine=AkelPad.GetArgLine())
{
  AkelPad.ScriptNoMutex();

  //Get flags
  dwFlags=parseInt(pArgLine);
  if (!isNaN(dwFlags))
  {
    var bHex=pArgLine.substr(0, 2) == "0x";
    var nSemicolonOffset=dwFlags.toString(bHex?16:10).length + (bHex?2:0);

    if (pArgLine.substr(nSemicolonOffset, 1) == ";")
    {
      pArgLine=pArgLine.substr(nSemicolonOffset + 1);

      if (dwFlags & 0x1)
      {
        pArgLine=pArgLine.replace(/\\/g, "\\\\");
      }
      if (dwFlags & 0x2)
      {
        if (/%f|%d|%a/.test(pArgLine))
        {
          var pFile=AkelPad.GetEditFile(0).replace(/\\/g, "\\\\");
          var pFileDir=pFile.substr(0, pFile.lastIndexOf("\\\\"));
          var pAkelDir=AkelPad.GetAkelDir().replace(/\\/g, "\\\\");

          pArgLine=pArgLine.replace(/%f/g, pFile);
          pArgLine=pArgLine.replace(/%d/g, pFileDir);
          pArgLine=pArgLine.replace(/%a/g, pAkelDir);
        }
      }
      if (dwFlags & 0x4)
      {
        pArgLine=unescape(pArgLine);
      }
    }
  }
  eval(pArgLine);
}

я так понимаю, блокнот емаксовый жопоскриптом скриптуется. интерфейс плагинов реализован через DLL которые благодаря IActiveScriptSite вызываются жопоскриптом.

тулбар, меню, диалоги, редактирование буфера и синтаксическая раскраска не говоря уже о банальном eval и калькуляторе – заворачиваются в жопоскрипт.

Еще любители хейтить жс часто приводят как аргумент срок проектирования жс в 10 дней и никто никогда не уточняет, почему этот срок был именно таковым. А все дело в

всё равно сей язык – говно и скриптуха голимая.

а разгадка проста – безблагодатность.

anonymous
()
Ответ на: комментарий от anonymous

или вот тебе – спеллчекер через ворд через COM API

// http://akelpad.sourceforge.net/en/plugins.php#Scripts
// Version: 1.3
// Author: Shengalts Aleksander aka Instructor
//
// Description(1033): Spell check using Microsoft Word.
// Description(1049): Проверка орфографии, используя Microsoft Word.

//Variables
var Word=new ActiveXObject("Word.application");
var hMainWnd=AkelPad.GetMainWnd();
var hWndEdit=AkelPad.GetEditWnd();
var oSys=AkelPad.SystemFunction();
var pSelText=AkelPad.GetSelText();

if (hWndEdit)
{
  if (Word)
  {
    if (pSelText)
    {
      var oSpellDoc;
      var pMessage;
      var pTextIn;
      var pTextOut;

      Word.Visible=false;
      Word.Options.SuggestSpellingCorrections=true;

      if (oSpellDoc=Word.Documents.Add())
      {
        oSpellDoc.Content.Text=pSelText;
        Word.ActiveWindow.WindowState=2;  //wdWindowStateMinimize
        if (parseInt(Word.Version) >= 15)
        {
          //MS Word 2013 and higher
          Word.Visible=false;
          oSys.Call("user32::SetForegroundWindow", oSpellDoc.ActiveWindow.Hwnd);
        }

        pTextIn=oSpellDoc.Content.Text;
        if (Word.Options.CheckGrammarWithSpelling == true)
          oSpellDoc.CheckGrammar();
        else
          oSpellDoc.CheckSpelling();
        pTextOut=oSpellDoc.Content.Text;

        oSpellDoc.Close(false);
      }
      Word.Quit(true);
      Word=0;

      if (pTextIn == pTextOut)
      {
        AkelPad.MessageBox(hMainWnd, GetLangString(2), WScript.ScriptName, 64 /*MB_ICONINFORMATION*/);
      }
      else
      {
        if (AkelPad.MessageBox(hMainWnd, GetLangString(3), WScript.ScriptName, 36 /*MB_ICONQUESTION|MB_YESNO*/) == 6 /*IDYES*/)
        {
          AkelPad.ReplaceSel(pTextOut.substr(0, pTextOut.length - 1), -2);
        }
      }
    }
    else AkelPad.MessageBox(hMainWnd, GetLangString(1), WScript.ScriptName, 48 /*MB_ICONEXCLAMATION*/);
  }
  else AkelPad.MessageBox(hMainWnd, GetLangString(0), WScript.ScriptName, 48 /*MB_ICONEXCLAMATION*/);
}
if (Word) Word.Quit(true);


//Functions
function GetLangString(nStringID)
{
  var nLangID=AkelPad.GetLangId(1 /*LANGID_PRIMARY*/);

  if (nLangID == 0x19) //LANG_RUSSIAN
  {
    if (nStringID == 0)
      return "\u041D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E\u0020\u0441\u043D\u0430\u0447\u0430\u043B\u0430\u0020\u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C\u0020\u004D\u0069\u0063\u0072\u006F\u0073\u006F\u0066\u0074\u0020\u0057\u006F\u0072\u0064\u0020\u0039\u0037\u0020\u0438\u043B\u0438\u0020\u0432\u044B\u0448\u0435\u002E";
    if (nStringID == 1)
      return "\u041E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u0020\u0432\u044B\u0434\u0435\u043B\u0435\u043D\u043D\u044B\u0439\u0020\u0442\u0435\u043A\u0441\u0442\u002E";
    if (nStringID == 2)
      return "\u0418\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F\u0020\u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442\u002E";
    if (nStringID == 3)
      return "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C\u0020\u0438\u0441\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u043D\u044B\u0439\u0020\u0442\u0435\u043A\u0441\u0442\u003F";
  }
  else
  {
    if (nStringID == 0)
      return "You must first install Microsoft Word 97 or higher.";
    if (nStringID == 1)
      return "No text selected.";
    if (nStringID == 2)
      return "No spelling corrections made.";
    if (nStringID == 3)
      return "Insert corrected text?";
  }
  return "";
}

anonymous
()
Ответ на: комментарий от anonymous

SpellCheck.js

это просто прекрасно:

var Word=new ActiveXObject(«Word.application»);

var hMainWnd=AkelPad.GetMainWnd();

var hWndEdit=AkelPad.GetEditWnd();

var oSys=AkelPad.SystemFunction();

var pSelText=AkelPad.GetSelText();

Word.Visible=false;

oSys.Call(«user32::SetForegroundWindow», oSpellDoc.ActiveWindow.Hwnd);

else AkelPad.MessageBox(hMainWnd, GetLangString(0), WScript.ScriptName,

и т.п.

anonymous
()
Ответ на: комментарий от anonymous

InsertDate.js

//Options
var pFormat="H:mm dd.MM.yyyy";
if (WScript.Arguments.length)
  pFormat=WScript.Arguments(0);

//Variables
var hWndEdit=AkelPad.GetEditWnd();
var oSys=AkelPad.SystemFunction();
var pTime;

if (hWndEdit)
{
  pTime=TimeFormat(pFormat);
  AkelPad.ReplaceSel(pTime);
}


//Functions
function TimeFormat(pFormat)
{
  var lpFormatBuffer;
  var lpTimeBuffer;
  var pTime="";

  if (lpFormatBuffer=AkelPad.MemAlloc(256 * _TSIZE))
  {
    AkelPad.MemCopy(lpFormatBuffer, pFormat.substr(0, 255), _TSTR);

    if (lpTimeBuffer=AkelPad.MemAlloc(256 * _TSIZE))
    {
      oSys.Call("kernel32::GetTimeFormat" + _TCHAR, 1024 /*LOCALE_USER_DEFAULT*/, 0, 0, lpFormatBuffer, lpTimeBuffer);
      oSys.Call("kernel32::GetDateFormat" + _TCHAR, 1024 /*LOCALE_USER_DEFAULT*/, 0, 0, lpTimeBuffer, lpFormatBuffer, 256);
      pTime=AkelPad.MemRead(lpFormatBuffer, _TSTR);

      AkelPad.MemFree(lpTimeBuffer);
    }
    AkelPad.MemFree(lpFormatBuffer);
  }
  return pTime;
}

во, жесть. тут тебе и маллок и вызов из DLL и плугин апи и WScript/JScript WSH.

полный коленкор.

anonymous
()
Ответ на: комментарий от mertvoprog

> Почему lua?

- Очень простой и лаконичный язык, при этом достаточно мощный
- Скорость luajit — nuff said (если кто-то заикнётся, что V8 сравнялся с luajit — гоните его ссаными тряпками)
- Очень удобный API для написания сишных модулей (а ещё есть ffi)
- Встраивается в nginx (на самом деле — встраивается куда угодно)

этого хватит?
куда интереснее был бы вопрос: «почему не Lua?»

ответ один, но зато какой: типы. точнее, их отсутствие.

Ravi, вроде как, пришёл исправить сие недоразумение, но это явно не production-grade решение.

annerleen ★★★★☆
()
Ответ на: комментарий от byko3y

JS — более богатый по сравнению с Lua язык

PL/I — более богатый по сравнению с JS язык

это была сплошная боль с их «переменная пуста», «нельзя выполнить арифметическую операцию над строкой», и прочей гадостью, которую я уже не вспомню

А зачем выполнять арифметические операции над строками и делать прочую гадость?

Ceiling_QB ★★★★
()
Последнее исправление: Ceiling_QB (всего исправлений: 1)
Ответ на: > Почему lua? от annerleen

Очень простой и лаконичный язык, при этом достаточно мощный

Только в чём именно моща языка почему-то тут упорно молчат, не считая одного мнения, что ничего вменяемого на нём написать нельзя.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 2)
Ответ на: комментарий от Ceiling_QB

Ладно, вы ничего не хотите, наброшу я.
Пробежался по мануалу. Стандартная либа - говно даже по сравнению с js, в котором её по сути-то нет. Сравнивать со стандартной либой ноды даже не имеет смысла.
Массивов и set'ов нет как класса. Аналогов map/reduce/filter - нет. Асинхронного выполнения нет. Генераторов не увидел. Не понятно, что там с замыканиями. Есть исключения на уровне луа? Там в ключевых должен быть try..catch..throw, его нет. Что с регулярками? Что с деструктивным присваиванием?
С другой стороны. Что там такого есть? Метатаблицы? Так и в js есть такие же объекты, которые делают всё тоже самое. Чем метатаблицы лучше? Перегрузки операторов только что умеют делать (хотя в quickjs они тоже есть).

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 10)
Ответ на: комментарий от Ceiling_QB

И что в итоге? Точно такая же динамическая скриптуха построенная вокруг хешмапа/метатаблицы, потому что оная не может принципиально быть сделана по-другому. В js, естественно, больше сахара и всяких фич и либ в связи с большей распространённостью.
Зато как фанбои пыжились в этом треде, ну ничего, может еще чем-то удивят.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

Ладно, покормлю.

Массивов и set’ов нет как класса.

local array = { 1, 2, 3 }
local set = {
  vasya = true
}

Аналогов map/reduce/filter - нет.

Пишутся пяткой за 10 минут + есть либы.

Асинхронного выполнения нет.

А почему оно там должно быть? Если тебе нужны корутины, то они есть, если тебе нужен event loop, то он не на стороне Lua должен реализовываться.

Генераторов не увидел.

Делаются через корутины

Не понятно, что там с замыканиями.

local function make_adder(x)
  return function(y)
    return x + y
  end
end

local add_five = make_adder(5)
print(add_five(1))

даты

https://www.lua.org/pil/22.1.html + библиотеки

Есть исключения на уровне луа? Там в ключевых должен быть try..catch..throw, его нет. должен быть

Это ты в мануале вычитал, или тебе кто-то шепнул?

pcall

Что с регулярками?

Из коробки менее мощные, но более читабельные паттерны, которых обычно хватает. Для остального библиотеки и LPeg.

Чем метатаблицы лучше?

Чем прототипы.

Перегрузки операторов может хоть умеют делать?

Умеют.

Ceiling_QB ★★★★
()
Последнее исправление: Ceiling_QB (всего исправлений: 1)
Ответ на: > Почему lua? от annerleen

Очень удобный API для написания сишных модулей

Когда ты из скриптухи можешь легко положить главное приложение - это нихера не плюс, тем более на динамике.

ответ один, но зато какой: типы

Хочешь типы, бери какой-нибудь nim.

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 1)
Ответ на: комментарий от crutch_master

ТБХ увидел гораздо больше хейтеров уровня тебя с аргументацией вида «фу, индексы с единицы» и «хочу мильён библиотек и супер-производительность в языке для скриптухи и DSLей».

Ceiling_QB ★★★★
()
Ответ на: комментарий от crutch_master

Я на жс обрабатываю тонны всякой финансовой хероты

Хлеб→троллейбус.

Ну и зачем он тогда нужен, если на нём нельзя нормально написать какой-нибудь высокоуровневой логики?

Можно на нём писать, ну. Но у всего есть своя область применения. Можно и на лыжах в гамаке греблей заниматься, никто не запрещает. ^_~

mord0d ★★★★★
()
Ответ на: комментарий от Ceiling_QB
local array = { 1, 2, 3 }
local set = {
  vasya = true
}

Это - говнище, а не массив. Я строку так же могу сделать «1,2,3» и сказать, что это - массив. man основный структуры данных.

Пишутся пяткой за 10 минут

Без нормальных массивов/списков и оптимизации - нет смысла.

pcall

Это - говно нелепое, а не исключения.

Из коробки менее мощные, но более читабельные паттерны.

Очень смешно. Чем они мощные?

Для остального библиотеки и LPeg.

Нативные библиотеки для регулярок? Сразу уже пёрл сбоку предложил бы приделать.

Чем прототипы.

То есть практически однородная хрень. Только прототипы еще умеют скрывать методы, делать их ro и цепочка родителей там из коробки.

Что с деструктивным присваиванием?

crutch_master ★★★★★
()
Последнее исправление: crutch_master (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.