The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Открыт код Luau, варианта языка Lua с проверкой типов

04.11.2021 12:41

Объявлено об открытии исходных текстов и публикации первого отдельного выпуска языка программирования Luau, продолжающего развитие языка Lua и обратно совместимого с Lua 5.1. Язык Luau предназначен в основном для встраивания обработчиков сценариев в приложения и нацелен на достижение высокой производительности и низкого потребления ресурсов. Код проекта написан на языке C++ и открыт под лицензией MIT.

Luau расширяет Lua возможностями для проверки типов и некоторыми новыми синтаксическими конструкциями, такими как строковые литералы. Язык обратно совместим с Lua 5.1 и частично с более новыми версиями. Поддерживается API Lua Runtime, что позволяет использовать Luau с уже существующим кодом и привязками (binding). Языковой runtime основан на сильно переработанном коде Lua runtime 5.1, но интерпретатор полностью переписан. При разработке задействованы некоторые новые техники оптимизации, позволившие добиться более высокой производительности по сравнению с Lua.

Проект разработан компанией Roblox и используется в коде игровой платформы, игр, и пользовательских приложений данной компании, включая редактор Roblox Studio. Изначально Luau развивался за закрытыми дверями, но в итоге решено перевести его в разряд открытых проектов для дальнейшего совместного развития при участии сообщества.

Основные особенности:

  • Последовательная система типов (Gradual typing), занимающая промежуточное положение между динамической и статической типизацией. Luau позволяет использовать статическую типизацию по необходимости, указывая информацию о типах через специальные аннотации. Предоставляются встроенные типы "any", "nil", "boolean", "number", "string" и "thread". При этом сохранена и возможность использования динамической типизации без явного определения типа переменных и функций.
    
       function foo(x: number, y: string): boolean
           local k: string = y:rep(x)
           return k == "a"
       end
    
  • Поддержка строковых литералов (как в Lua 5.3), таких как "\0x**" (шестнадцатеричное число), "\u{**}" (Unicode-символ) и "\z" (конец строки), а также возможность наглядного оформления чисел (можно писать 1_000_000 вместо 1000000), литералы для шестнадцатеричных (0x...) и двоичных чисел (0b.......).
  • Поддержка выражения "continue", дополняющее существующее ключевое слово "break", для перехода к новой итерации цикла.
  • Поддержка составных операторов присвоения (+=, -=, *=, /=, %=, ^=, ..=).
  • Поддержка использования условных блоков"if-then-else" в форме выражений, возвращающих значение, вычисленное во время выполнения блока. Допускается указание произвольного числа выражений elseif в блоке.
    
       local maxValue = if a > b then a else b
       local sign = if x < 0 then -1 elseif x > 0 then 1 else 0
    
    
  • Наличие режима изоляции (sandbox), позволяющего запускать не заслуживающий доверие код. Указанную возможность можно использовать для организации запуска бок о бок собственного кода и кода написанного другим разработчиком, например, сторонних библиотек за безопасность которых нельзя поручиться.
  • Ограничение стандартной библиотеки из которой удалены функции, которые потенциально могут создавать проблемы с безопасностью. Например, из стандартного набора исключены библиотеки "io" (доступ к файлам и запуск процессов), "package" (доступ к файлам и загрузка модулей), "os" (удалены функции доступа к файлам и изменения переменных окружения), "debug" (небезопасная работа с памятью), "dofile" и "loadfile" (доступ к ФС).
  • Предоставление инструментов для статического анализа кода, выявления ошибок (linter) и проверки корректности использования типов.
  • Собственные высокопроизводительные парсер, интерпретатор байткода и компилятор. Luau пока не поддерживает JIT-компиляцию, но утверждается, что интерпретатор Luau в некоторых ситуациях вполне сопоставим по производительности с LuaJIT.


  1. Главная ссылка к новости (https://luau-lang.org/2021/11/...)
  2. OpenNews: Релиз языка программирования Lua 5.4
  3. OpenNews: Компания Microsoft опубликовала реализацию Lua VM, написанную на языке Go
  4. OpenNews: Представлена распределённая ОС Node9, сочетающая технологии Inferno и язык Lua
  5. OpenNews: Релиз языка программирования Lua 5.2
  6. OpenNews: Интегрированная среда разработки для языка Lua доступна в виде отдельного продукта
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/56098-luau
Ключевые слова: luau, lua
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (125) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:55, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Lua топчик
     
     
  • 2.3, QwertyReg (ok), 12:56, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –58 +/
    Не припоминаю ни одного крупного, серьёзного проекта, который бы его использовал.
     
     
  • 3.4, Аноним (1), 13:00, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Встроечка же больше
     
  • 3.5, Аноним (5), 13:00, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Хорошо набрасываешь.
     
  • 3.6, Аноним (6), 13:00, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +9 +/
    В геймдеве это достаточно популярный язык
     
     
  • 4.93, InuYasha (??), 11:04, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Да. К огромному сожалению...
     
  • 3.7, Кирилл (??), 13:01, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +5 +/
    World of Warcraft?
     
     
  • 4.11, Аноним (11), 13:06, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вов наверно единственный пользователь. Раньше был torch (который pytorch), но до чего бы это больно было. И премейк забыть как страшный сон, тоже дрянь редкостная.
     
     
  • 5.14, Ананимас008 (?), 13:20, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Популярный Dont Starve и Dont starve together написан целиком на нем.
    TOME аналогично.
     
     
  • 6.26, Аноним (11), 13:40, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –6 +/
    На руби и жс написаны тысяча один миллион и одна игра, но это не значит, что они где-то используются в играх.
     
     
  • 7.32, Ананимас008 (?), 13:52, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    пример хотя бы одной, достаточно популярной?
     
     
  • 8.41, Аноним (11), 14:03, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Популярная это столько тысяч проданных копий В районе 100к наверно наскрести ... текст свёрнут, показать
     
  • 8.43, Аноним (11), 14:05, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Хотя не To the moon вроде миллионы да Лет 5 назад были миллионы, сейчас не зна... текст свёрнут, показать
     
  • 5.15, AlexYeCu_not_logged (?), 13:20, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >Вов наверно единственный пользователь.

    Шта?

    Игры: Civ V, Civ VI.

    Игровые движки вроде того же love 2d, Corona, Moai.

    WM: Awesome.

     
     
  • 6.24, Аноним (11), 13:38, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –11 +/
    Никому не интересная шляпа. Вов скриптуется, а чё там в проходных играх не важно.
     
     
  • 7.31, keydon (ok), 13:46, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    WoW самая что ни на есть проходная. Ни сюжета, ни геймплея, кроме сеттинга варкрафта (и то порядком испохабили) и убийства жанра мморпг ничем похвастаться не может.
     
     
  • 8.35, Ананимас008 (?), 13:55, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А у обычного синплеерного он был Сюжет высосан из пальца бредогенератором Да и... текст свёрнут, показать
     
     
  • 9.42, keydon (ok), 14:04, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В варкрафт3 сюжет был самой слабой частью и в основном намешан из других фентези... текст свёрнут, показать
     
  • 8.36, Аноним (11), 13:56, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Концепция подразумевает, что игроки проведут там достаточно много времени И их ... текст свёрнут, показать
     
  • 7.33, AlexYeCu_not_logged (?), 13:54, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >Никому не интересная шляпа.
    >а чё там в проходных играх не важно

    Довольно громкое (и не соответствующее реальному положению дел) заявление в адрес самой известной серии 4x-стратегий.

     
     
  • 8.40, Аноним (11), 13:59, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Всё там соответствует Казуальный шлак и трата времени -- есть столько прекрасны... текст свёрнут, показать
     
     
  • 9.45, AlexYeCu_not_logged (?), 14:16, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Обсуждалось не 171 прекрасно 187 171 не прекрасно 187 8212 это всё су... текст свёрнут, показать
     
     
  • 10.47, Аноним (11), 14:28, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Это не серьёзные проекты Вот Ева это серьёзный проект, Вов тот же это серьёзный... текст свёрнут, показать
     
     
  • 11.48, AlexYeCu_not_logged (?), 14:57, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Критерии серьёзности в студию Европа Универсалис На редкость унылая штука, гей... большой текст свёрнут, показать
     
  • 6.69, Аноним (69), 19:20, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    The Elder Scrolls, Fallout 3, 4
     
     
  • 7.87, Ананимас008 (?), 04:24, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И где там Lua? Там используется Papyrus
     
  • 5.75, MS (??), 21:39, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Cmake в разы дрянее, но народ сидит на cmake, торчит от удовольствия и мастеров переименовывает
     
  • 5.138, Аноним (138), 14:57, 08/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    - Factorio
    - Starbound
    - серия S.T.A.L.K.E.R.
    - серия UFO After{math,shock,light}
    Тысячи их.
     
  • 3.8, lockywolf (ok), 13:03, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ntopng
     
  • 3.9, fernandos (ok), 13:04, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Неовим.
     
  • 3.12, fernandos (ok), 13:10, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А, лол, вы читать не умеете.

    > Проект разработан компанией Roblox и используется в коде игровой платформы, игр, и пользовательских приложений данной компании, включая редактор Roblox Studio. Изначально Luau развивался за закрытыми дверями, но в итоге решено перевести его в разряд открытых проектов для дальнейшего совместного развития при участии сообщества.

     
  • 3.17, Аноним (17), 13:22, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Factorio
     
  • 3.19, Аноним (19), 13:25, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +7 +/
    >Не припоминаю ни одного крупного, серьёзного проекта, который бы его использовал.

    Впрочем, на Rust тоже нет ни одного крупного и серьёзного.

     
     
  • 4.59, Аноним (59), 17:04, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Нет и среднего и несерьёзного
     
  • 3.21, Аноним (21), 13:35, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Source и все игры Valve после GoldSrc?
     
     
  • 4.73, Жорш (?), 21:02, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Lua есть в Garry's Mod, Portal 2, Dota 2, Half-Life: Alyx. Но это далеко не просто "Source" и "во всем после GoldSrc". Squirrel у них еще много где был. Но игровая логика как пошла на C++ вместе с оригинальным Half-Life, так и нынче там. Движек только переехал с ANSI C на C++.
     
     
  • 5.126, Жорш (?), 13:46, 06/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Молодой человек поставили минус, но не привели аргументов. Горит, но не понятно почему. :)
     
  • 3.22, pavlinux (ok), 13:36, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Не припоминаю ни одного крупного, серьёзного проекта, который бы его использовал.

    IBM InfoSphere


    Ща пойдёт нытье, "это же аццкий энтерпрайз для мегакорпораций, мне там не быть никогда..."

     
  • 3.44, Смузи (?), 14:14, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Эпплдрочеры вообще ничего не знают кроме UI/UX
     
     
  • 4.78, морошка ягодка такая (?), 23:04, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Извиняюсь, но в UI UX apple тоже не умеют
     
  • 3.49, Аноним (49), 15:17, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    asterisk PBX
     
     
  • 4.71, Аноним (71), 20:43, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ща набегут, мол диалплан на луа - остстой
     
  • 3.50, bOOster (ok), 15:33, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    FreeSwitch
     
  • 3.52, funny.falcon (?), 15:55, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Far Cry (правда, он ещё Lua 4.0 использовал).

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

    Почему-то NVidia активно хантит разработчиков на доработку LuaJIT.

    Tarantool, Redis

     
     
  • 4.74, Жорш (?), 21:05, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Far Cry 2, Crysis туда же. Дальше не помню, но думаю что так и продолжают.
     
  • 4.139, tmplsr (?), 16:51, 13/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >Far Cry (правда, он ещё Lua 4.0 использовал).

    И регулярно лагал: то интеллект у ботов нафиг вырубится, то назначенная в скрипте функция на кейбиндинг отзываться перестанет. Пнёшь в консоли -- полетит снова, но недалёко. ;)

    (Просто для объективности картины. У самого сейчас awesome, neovim и коньки с ним же.)

     
  • 3.55, Аноним (55), 16:27, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Не припоминаю ни одного крупного, серьёзного проекта, который бы его использовал.

    На моём рабстоле висят серьёзные и очень крупные коньки, показывающие много происходящего в системе.
    Висят со времён torsmo, который висел ещё раньше, поэтому развилась мощная зависимость, от которой без коньков -- как без глаз.

    Они очень давно умеют выполнять скрипты на Луе, которая особенно полезна для покраски температуры ядер процессора, чипа ГПУ, а также всяких других чипов, в тёплые цвета радуги от жёлтого до красного в зависимости от температуры (нормировка должна задаваться как "жёлтый == f(25C)", "красный == f(SOVSEM_KOSHMAR_VYRUBAI_PROBKI_NA)").

    Поэтому, когда совсем нечего припомнить, рекомендую припоминать коньки.

     
     
  • 4.91, Аноним (11), 08:03, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Зачем нужна температура процессора? Он физически не может перегреться. Или у тебя АМД? А вот диски перегреть можно было, особенно в лаптопах с плохой СО, только сейчас ССД уже везде. Обычно диски для лаптопов на большую температуру рассчитаны конечно, но это довольно опасно всё же. Видеокарты тоже всегда грелись до 120 градусов и ничего с ними не случалось.

    Это лишний информационный шум. У меня только полезные плазмоиды: графики сети и процессоров по ядрам, общая загрузка процессора и видеокарты, Использованные память, видеопамять (бесполезно чуть более чем целиком), своп. И погода с графиком по часам, что удобно, потому что прогноз меняется постоянно. Коньки мне никогда не нравились, ещё и жручие как не в себя.

     
  • 3.56, ВыньОпух (ok), 16:33, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Если не ошибаюсь оконный фреймворк ION был написан на LUA.
     
     
  • 4.62, Аноним (55), 17:18, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Настройка и скриптинг на Lua.
    Сам ion написан на сях.

    ion3 прекрасен: в нём работают коньки с idesk'ом, а также есть всплывающий фрейм по META+Space, где META можно установить как Alt, Win или ещё что-нибудь.
    Режимы фреймовый и оконный, при этом к окнам можно привязывать другие окна как к фреймам.
    Рабочие столы легко создаются и удаляются по мере необходимости.
    Вещи, нужные всегда, привязываются к всплывающему фрейму и доступны на любом рабстоле по META+Space. Удобно.

    Только у Туомо Валконена исходники теперь не достать -- при переходе по ссылке из википедии получается 404.
    А в форке notion почему-то не взлетал idesk, который суть иконки для рабстола.
    Приходится бережно хранить старую копию 2009-го года, которую пока что ещё удаётся пересобирать под гентухой и арчем.

     
     
  • 5.63, ВыньОпух (ok), 17:22, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > как к фреймам.
    > Рабочие столы легко создаются и удаляются по мере необходимости.
    > Вещи, нужные всегда, привязываются к всплывающему фрейму и доступны на любом рабстоле
    > по META+Space. Удобно.
    > Только у Туомо Валконена исходники теперь не достать -- при переходе по
    > ссылке из википедии получается 404.
    > А в форке notion почему-то не взлетал idesk, который суть иконки для
    > рабстола.
    > Приходится бережно хранить старую копию 2009-го года, которую пока что ещё удаётся
    > пересобирать под гентухой и арчем.

    Да. Жаль.

     
  • 5.85, Михрютка (ok), 02:12, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>>по ссылке из википедии

    https://tuomov.iki.fi/software/ion/

    >>>The last version of Ion may be downloaded below, but none of this software is being developed or maintained anymore.

    https://tuomov.iki.fi/software/ion/dl/ion-3-20090110.tar.gz

    >>>Приходится бережно хранить старую копию 2009-го года

    судя по сайту автора, более поздней и не будет?

     
     
  • 6.125, Аноним (55), 12:27, 06/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > https://tuomov.iki.fi/software/ion/

    Изо всех сил благодарю за ссылку!
    Это очень хорошо, что исходники в сети всё-таки остались!

    Смотреть англоязычную википедию про ion3 я не догадался: в англоязычной версии ссылка рабочая, а в русской -- устарела.

     
  • 3.64, Александр (??), 17:25, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    СТАЛКЕР первый вроде как использовал
     
  • 3.70, Аноним (70), 19:55, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    snort
     
  • 3.72, Аноним (72), 20:44, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    nginx?
     
  • 3.79, mos87 (ok), 23:41, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    сколько еды жырно боту
     
  • 3.92, bergentroll (ok), 08:40, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    INSTEAD!
     
  • 3.97, Аноним (97), 11:08, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не волнуйтесь, это старческий маразм
     
  • 3.118, Roman (??), 16:20, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    В сталкер не играл?
     
  • 3.136, Аноним (136), 12:20, 08/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Warhammer Vermintide 1 и 2
     
  • 3.137, Аноним (137), 14:35, 08/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Prosody XMPP Server. 95% кода на Lua, и только некоторые утилиты на C (на данный момент это 13 файлов и 2637 LOC на C против 301 файлов и 52161 LOC на Lua), а также все невстроенные модули (420 файлов и 41617 LOC состоянием на апрель сего года).
     
  • 2.95, Аноним (95), 11:08, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    А я вот не пойму, зачем это распыление, когда есть Python и всякие MicroPython?
     
     
  • 3.98, Аноним (97), 11:11, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что быстрее, проще в интеграции и при этом довольно гибок?
     
  • 3.119, Roman (??), 16:22, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Есть asm. К чему другие вопросы?
     
     
  • 4.134, Аноним (95), 14:43, 07/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Придуриваешься?
     
  • 2.132, хуненим (?), 14:20, 07/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, дебажить его только никак, вывод ошибок упоротый. А так да, топчик ага.
     

  • 1.2, Аноним (2), 12:56, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот это уже интересно. А то стандартная реализация медленная, а luajit заброшен.
     
     
  • 2.29, Аноним (29), 13:44, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Luajit не совместим с последней версией Lua? Или почему он заброшен?
     
     
  • 3.38, Аноним (2), 13:57, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не совместим, застрял на старой версии и не обновляется.
     
     
  • 4.76, Аноним (76), 22:06, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Дык работает же?
    К слову, как и сабж новости - совместим с Lua 5.1.
     

  • 1.10, Аноним (1), 13:06, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Lua бы менее многобуквенный синтаксис (MoonScript конечно есть)
     
     
  • 2.133, хуненим (?), 14:21, 07/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Иди на растишишке попиши.
     

  • 1.13, анончик (?), 13:13, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Вопрос лишь времени, когда понимают что в разработке лучше использовать статическую типизацию, так что ничего удивительного здесь нет, - всё логично. Тот же Python не исключение. Там как раз Гвидо на зп у Мелкомягких сидит и высока вероятность что он занимается чем-то подобным!
     
     
  • 2.18, macfaq (?), 13:25, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В питоне аннотации уже довольно давно есть.
     
     
  • 3.39, анончик (?), 13:59, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я в курсе! Однако Гвидо собирается ускорить CPython. Как именно он это сделает? - это уже другой вопрос.
     
  • 3.101, Здрасьте (?), 11:31, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Аннотации ни на что не влияют.
     
  • 2.20, Ананимас008 (?), 13:31, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я не погромист, но для обычного луа можно было использовать FFI для создания типизированных массивов и тратить сколько нужно,вместо 8 байт на любой тип. 8 байт на boolean, Карл!
     
     
  • 3.84, Михрютка (ok), 01:17, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    реальный вопрос дивелоперу, сочинявшей базу на оракле:
    - Семенова, а что это у тебя за столбик в таблице кастомерз SEX char(1) yes/no?
     
     
  • 4.124, Гентушник (ok), 06:34, 06/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Ага, надо было назвать gender и длину побольше сделать, а то "attack helicopter" не поместится :)
     
  • 2.23, Аноним (29), 13:37, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Гвидо в Dropbox работал над mypy. У мелгомягких есть pyreight, который они используют в vocode.
     
     
  • 3.25, Аноним (29), 13:40, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    *pyright
    *vscode
     

  • 1.16, Аноним (16), 13:22, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Lua нужно выучить только за то, что он используется в Instead.
     
  • 1.27, Аноним (29), 13:41, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    То есть предлагается всю логику и рендер запихать в один поток? Будет только на казуалках работать
     
     
  • 2.34, keydon (ok), 13:55, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +4 +/
    С чего вы взяли что это предлагается? Обычно в lua или python выносят только логику и то только игровую (без физики, поиска путей, траекторий и прочего), остальное на плюсах.
     
  • 2.127, Аноним (127), 05:29, 07/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Почему в один поток? Кто мешает дергать функции из разных потоков?
    Данные да нужно будет как-то обезопасить (обернуть там в какие-то капсулы безопастные),
    а так нет проблемы многопоточно вызывать.
     

  • 1.28, Аноним (28), 13:42, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Ждём статическую типизацию в Tcl и bash.
     
     
  • 2.37, keydon (ok), 13:56, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как минимум в bash уже давно есть (но на фоне остальных болячек это как мертвому припарка).
     
     
  • 3.46, n00by (ok), 14:22, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А в bash разве есть какие-либо типы данных, помимо строк? https://www.opennet.ru/docs/RUS/bash_scripting_guide/x1705.html
     
     
  • 4.51, Аноним (51), 15:34, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://tldp.org/LDP/abs/html/declareref.html
     
     
  • 5.53, Аноним (28), 16:01, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это динамическая.
     
  • 5.54, n00by (ok), 16:06, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот ещё интересная ссылка: man 3 environ

    А вот как внутри bash, если я правильно нашёл:



    typedef struct variable {
      char *name; /* Symbol that the user types. */
      char *value; /* Value that is returned. */
      char *exportstr; /* String for the environment. */
      sh_var_value_func_t *dynamic_value; /* Function called to return a 'dynamic'
       value for a variable, like $SECONDS
       or $RANDOM. */
      sh_var_assign_func_t *assign_func; /* Function called when this 'special
       variable' is assigned a value in
       bind_variable. */
      int attributes; /* export, readonly, array, invisible... */
      int context; /* Which context this variable belongs to. */
    } SHELL_VAR;



     
  • 4.80, keydon (ok), 23:47, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Это больше философский вопрос. Технически  нет - все строки. Но наличие у переменных атрибутов позволяет ограничивать диапазон значений при определении(без встроенной возможности аннотаций и проверки типов), что при достаточной фантазии можно считать недоношенной типизацией (на что недвусмысленно намекает название функции typeset).
     
     
  • 5.82, Михрютка (ok), 00:48, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    фиг там. корншелловский typeset - чистой воды printf

    >>>наличие у переменных атрибутов позволяет ограничивать диапазон значений при определении

    isdigit() -i ограничивает.

    на что это, по вашему, похоже - на "диапазон значений"?

    typeset -i a=10000000000000000000
    typeset -i b=-999999999999999999
    echo $((a+b));
    >9000000000000000001

    typeset -i a=10000000000000000000
    typeset -i b=-9999999999999999999
    echo $((a+b));
    >1

    typeset -i a=100000000000000000000
    typeset -i b=-9999999999999999999
    echo $((a+b));
    >-2233720368547758079

    typeset -i a=100000000000000000000
    typeset -i b=-99999999999999999999
    echo $((a+b));
    >1

    typeset -i a=1000000000000000000000
    typeset -i b=-99999999999999999999
    echo $((a+b));
    >-3890459611768029183

     
     
  • 6.89, n00by (ok), 06:47, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Похоже, что проводить арифметические операции непосредственно над текстовым представлением было бы не только быстрее (исключаются умножения при конверсии), но и корректнее.
     
  • 4.94, InuYasha (??), 11:05, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    declare -i iNumBoobs=2;
     
     
  • 5.104, n00by (ok), 12:59, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > declare -i iNumBoobs=2;

      /* If this variable has had its type set to integer (via 'declare -i'),
         then do expression evaluation on it and store the result.  The
         functions in expr.c (evalexp()) and bind_int_variable() are responsible
         for turning off the integer flag if they don't want further
         evaluation done.  Callers that find it inconvenient to do this can set
         the ASS_NOEVAL flag.  For the special case of arithmetic expression
         evaluation, the caller can set ASS_NOLONGJMP to avoid jumping out to
         top_level. */

    Определение SHELL_VAR cм. в #54

    Т.е. значение хранится в виде текстовой строки, но иногда его просят покрякать как утка, и потому оно как бы немножко утка.

     
  • 3.81, Михрютка (ok), 00:40, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    господа, окститесь.

    в баше (и ksh, не знаю как у других) нет и не было типизации.

    форматирование строчной переменной - сколько угодно.

     

  • 1.57, Урри (ok), 16:57, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Очень мало писал на луа (не было оказии), но сам язык, когда изучал, очень понравился.

    Логичный, интуитивный, очень гибкий.
    Жаль, инструментария удобного под него нету - нарыл какой-то дебаггер, но такой тугой...
    Было бы что-то как под джаву, цены б не нашлось.

     
     
  • 2.135, Аноним (135), 17:04, 07/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Eclipse LDT
     
  • 2.140, Андрей (??), 23:46, 14/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    zerobrane studio
     

  • 1.61, Аноним (61), 17:13, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Хороший паскаль!
     
     
  • 2.65, Аноним (29), 17:40, 04/11/2021 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Не, Вирт выбрал очень строгие правила, тут воруй убивай. Особенно, когда захочешь сделать привычное ООП с классами через метатаблицы.
     

  • 1.68, YetAnotherOnanym (ok), 18:46, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Хммм... они не захотели добавить целые числа, мотивировав это некими "performance implications". Это что за язык должен быть, если один из базовых типов мало того, что прикручен к нему сбоку изолентой, так ещё и пользование им просаживает производительность?
     
     
  • 2.90, n00by (ok), 07:08, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Как реализовать, например, сложение? Сначала проверить тип переменной, потом исполнить соответствующую типу операцию. Либо реализовать динамический полиморфизм, использовать указатель на функцию, но лишний уровень косвенности не бесплатен. А если слагаемые разных типов? Какой-то придётся конвертировать, опять же, проверив.

    Это размышления общего плана. Как в LUA, надо смотреть реализацию виртмашины. Возможно, они исходили из того, что регистры для плавающей арифметики - дополнительны к основным.

     
     
  • 3.110, Gogi (??), 14:44, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Неважно КАК реализовать - важно понимать, что ты не можешь быть самым хитро*опым, обойдя всех по проверкам типов! Если типы - разные, ты ОБЯЗАН провести весь геморой по приведению типов к слагаемым! Чудес в ИТ не бывает.
     
     
  • 4.117, n00by (ok), 16:16, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Чудес в ИТ не бывает.

    С такой формулировкой я не согласен. Однажды я паял Спектрум при включенном питании и уронил на плату паяльник. Байты на экране сложились в случайную картинку, на которой отчётливо читалось (был свидетель) слово ГРАФИКА. У меня нет рационального объяснения (встроенный знакогенератор там латинский и размер символов иной).

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

     
     
  • 5.129, Аноним (129), 12:11, 07/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Там должно было быть написано «следуй за белым кроликом», но что-то пошло не так, вы остаётесь в матрице.
     
     
  • 6.131, n00by (ok), 12:34, 07/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Спектрум на тот момент был ещё не рабочий, а Интернета в современном понимании не было :)
     

  • 1.77, Аноним (76), 22:19, 04/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ого Можно и обойтись, конечно, однако иногда не хватает А в 5 4, например, не ... большой текст свёрнут, показать
     
  • 1.86, Аноним (-), 03:56, 05/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Кстати можно ради поддержания кононичности сделать положительный бульен равный двум, а при чтоб строки сразу грузились в регистры, причем как есть, перформанс фёст же :D
     
     
  • 2.88, Аноним (61), 04:49, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > кононичности

    проверочное слово - конь

     

  • 1.96, InuYasha (??), 11:08, 05/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Один из самых жутких костыльных языков в мире... Популярный только по прнципу "Ну а чо, сосед же осили засунуть луа себе в проЭкт - чем я хуже?" (читай: как все).
     
     
  • 2.99, Аноним (97), 11:27, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, его всегда все выбирают после ознакомления с провальными результатами производительности других претендентов на бенчмарках, откашлявшись и вытерев брызги разлитого кофе.
     
     
  • 3.103, InuYasha (??), 12:16, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Бенчи бенчами, а с таким синтаксисом я бы согласился и на JS. Хотя, вон, Папирус тоже жуткий, скорее на шелл похож.
     
  • 2.100, Аноним (100), 11:30, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    > Один из самых жутких костыльных языков в мире... Популярный только по прнципу "Ну а чо, сосед же осили засунуть луа себе в проЭкт - чем я хуже?" (читай: как все).

    Ни один другой не позволяет встроить в иерархию классов C++ специально организованный класс на Lua.

    Типа базовый - плюсовый.
    Производный от него Lua.
    Производный от Lua - снова плюсовый.

     
     
  • 3.102, InuYasha (??), 12:15, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вот это, как раз, ужас. Пломай скрипт и получи ад.
     
     
  • 4.114, Аноним (100), 15:12, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Поломай любой скрипт и получи ад.

    Чем эта ситуация отличается.

     
  • 3.105, Аноним (129), 14:02, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    зачем наследовать от класса lua в плюсах?
     
     
  • 4.115, Аноним (100), 15:13, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Что бы менять поведение всех похожих объектов одним скриптом.


     
  • 2.109, Gogi (??), 14:41, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Тысячу плюсов этому господину!
     

  • 1.120, Roman (??), 16:27, 05/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Кто-то из комментаторов хоть один интерпретатор написал? Это программа 3-го курса универа. Воткните в то, что такое синтаксический анализатор, лексический. А потом обсврацте то, что сами сделать не можете


     
     
  • 2.121, n00by (ok), 16:45, 05/11/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Не знаю, что такое "обсврацте", но интерпретация должна начинаться после семантического анализа, по-хорошему.
     
  • 2.130, Аноним (129), 12:13, 07/11/2021 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Воткните в то, что такое синтаксический анализатор, лексический.

    Обычно на этом все заканчивают.

     

  • 1.128, Аноним (127), 05:30, 07/11/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не понял, а integer у них там есть или только number?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру