Автор Тема: Lua  (Прочитано 115116 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #120 : Ноябрь 12, 2012, 07:42:08 pm »
  ... как сказать... я вот например, не смог понять почему  большой модуль в исходниках ББ (5-10 т. строк... точно не помню) СТАТИЧЕСКИ раскрашивался (не подсвечивался!!!) у Сергея пару секунд...

Там проблема в ББ, а не в коде Сергея. Я тоже писал в ББ разукрашку и знаю в чем там проблема.  :)

И кстати раскрасить сложнее (по ресурсам) чем подсветить

DIzer

  • Гость
Re: Lua
« Ответ #121 : Ноябрь 12, 2012, 07:48:22 pm »

И кстати раскрасить сложнее (по ресурсам) чем подсветить
  ;) Не знаю на счет ресурсов (как пользователя , меня они не трахают).. но если с раскрашивалками  там худо бедно есть варианты, то с динамикой я видел только у Сергея (и тот корявый с точки зрения конечного пользователя).

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #122 : Ноябрь 12, 2012, 07:51:33 pm »
У Сергея там только видимость динамики на сколько я помню  :)
Впрочем он сам наверно прокомментирует.

DIzer

  • Гость
Re: Lua
« Ответ #123 : Ноябрь 12, 2012, 07:56:36 pm »
вся наша жизнь - реалистичная видимость, по большому счету.. я не против нее (видимости) в данном случая... если не вижу различий. Но мне охота послать на х. мудаков которые утверждают.. дескать "подсветка  не нужна ибо многие ее делали но отказались от использования"-  потому, что то что они делали , действительно нафиг здалось - обосралось...

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Lua
« Ответ #124 : Ноябрь 12, 2012, 07:59:02 pm »
Я разочаровался в скриптовых языках до предела. Написал на PHP сканер текста, буферный построитель строк, лексический анализатор для 1С и модуль подсветки. Сделал первый шаблон раскраски по примеру Sublime Text2: Monokai. И что вы думаете? Код на 1С, объёмом 5667 байт красится...0.7 секунд. Занавес.

Не знаю PHP, но могу предположить что:
1. Используются сугубо низкоуровневые (а-ля обероновские) приемы при работе с массивами (последовательностями). Например, используется WHILE там, где на самом деле самое место для "встроенной" find/indexOf. И т.п.
2. Что касается конкретно строк, то во всех приличных ЯП они немодифицируемые (потому как их трудно реализовать эффективно в протвном случае). Поэтому даже если ЯП (PHP) позволяет их модифицировать, то скорее всего эффективнее будет использовать что-то другое (например, сначала перегнать строку в массив, совершить все манипуляции, затем обратно перегнать массив в строку).

DIzer

  • Гость
Re: Lua
« Ответ #125 : Ноябрь 12, 2012, 08:03:12 pm »
Vlad - ваша оценка... возможно ли на екма скрипте сделать нормально -работающую динамическую подсветку (ЯП уровня оберона) -  на текстах обьемом в 3 -5 тыс. строк?

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #126 : Ноябрь 12, 2012, 08:09:12 pm »
Berserker, я вот не совсем понял какая задача решалась.
Сгенерить html с разукрашеным кодом 1С?

Типа этого?:
http://infostart.ru/public/19856/
« Последнее редактирование: Ноябрь 12, 2012, 08:14:49 pm от ilovb »

vlad

  • Hero Member
  • *****
  • Сообщений: 1391
    • Просмотр профиля
Re: Lua
« Ответ #127 : Ноябрь 12, 2012, 08:11:47 pm »
Vlad - ваша оценка... возможно ли на екма скрипте сделать нормально -работающую динамическую подсветку (ЯП уровня оберона) -  на текстах обьемом в 3 -5 тыс. строк?

Очень расплывчатая постановка задачи :) Полноценно распарсить (согласно синатксису оберона) - можно за < 100 мс на современном десктопе.

Berserker

  • Sr. Member
  • ****
  • Сообщений: 254
    • Просмотр профиля
Re: Lua
« Ответ #128 : Ноябрь 12, 2012, 08:15:23 pm »
ilovb, windows-1251 кодировка отображается как utf-8 почему-то. И можно пример кода, на котором пробовали?

Цитировать
Не знаю PHP, но могу предположить что:
1. Используются сугубо низкоуровневые (а-ля обероновские) приемы при работе с массивами (последовательностями). Например, используется WHILE там, где на самом деле самое место для "встроенной" find/indexOf. И т.п.
2. Что касается конкретно строк, то во всех приличных ЯП они немодифицируемые (потому как их трудно реализовать эффективно в протвном случае). Поэтому даже если ЯП (PHP) позволяет их модифицировать, то скорее всего эффективнее будет использовать что-то другое (например, сначала перегнать строку в массив, совершить все манипуляции, затем обратно перегнать массив в строку).
Я выложу исходники после того, как соптимизирую, что смогу. Сканер текста перенесён с Паскаля, так же как и ряд функций (set для множеств, in - для проверки вхождения в множество). Собственно, была попытка классической ступенчатой разработки. И всё хорошо, за исключение скорости. В остальном Вы, конечно, правы, хотя в PHP строки ANSI-однобайтовые и можно было ряд оптимизаций сделать, в том числе и для односимвольных констант.

Цитировать
Berserker, я вот не совсем понял какая задача решалась.
Сгенерить html с разукрашеным кодом 1С?
Да. Практикум по 1С для студентов генерируется из продвинутого markdown-синтаксиса в html, готовый для загрузки на сервер. Соответственно и подсветка тоже на PHP. Ранее была на highlighter.js.

P.S. Без регистрации скачать разукрашку не удаётся.

DIzer

  • Гость
Re: Lua
« Ответ #129 : Ноябрь 12, 2012, 08:16:52 pm »
Vlad - ваша оценка... возможно ли на екма скрипте сделать нормально -работающую динамическую подсветку (ЯП уровня оберона) -  на текстах обьемом в 3 -5 тыс. строк?

Очень расплывчатая постановка задачи :) Полноценно распарсить (согласно синатксису оберона) - можно за < 100 мс на современном десктопе.
что  же тогда мы будем иметь  верхнюю границу реагирования в эти же 0.1 секунды... на  3 -5 тыс. строках... - а что?  работать можно вполне комфортно..

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #130 : Ноябрь 12, 2012, 08:27:09 pm »
А у меня вот ST2 разукрашивает 0,5м вообще без тормозов  ;D ;D ;D

Но опять же повторюсь. Чтобы подсветить ресурсы не нужны. Если структура данных в памяти выбрана правильно, то редактор знает контекст который вы правите и просто выставляет цвет слова реалтайм. Т.е. когда исходник уже в памяти, то парсинг происходит только на очень маленьких участках в месте правки. Ресурсы нужны только при загрузке исходника.

DIzer

  • Гость
Re: Lua
« Ответ #131 : Ноябрь 12, 2012, 08:30:10 pm »
А у меня вот ST2 разукрашивает 0,5м вообще без тормозов  ;D ;D ;D

Но опять же повторюсь. Чтобы подсветить ресурсы не нужны. Если структура данных в памяти выбрана правильно, то редактор знает контекст который вы правите и просто выставляет цвет слова реалтайм. Т.е. когда исходник уже в памяти, то парсинг происходит только на очень маленьких участках в месте правки. Ресурсы нужны только при загрузке исходника.
;D а я повторюсь,   ИМХО  никого эти ресурсы особо не волнуют в современной реальности.... на подобных задачах.

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #132 : Ноябрь 12, 2012, 08:55:06 pm »
ilovb, windows-1251 кодировка отображается как utf-8 почему-то. И можно пример кода, на котором пробовали?
...
Это у меня хром гонит.
Проверил в IE9 - все работает  :)

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #133 : Ноябрь 13, 2012, 07:45:34 am »
Как и полагается скриптовому языку няшная сортировка в комплекте:  8)

print("Сортируем массив чисел")

a = {9,5,1,3,2,6,7,4,8}
table.sort(a)
for i = 1, #a do
    print(a[i])
end

print("Сортируем массив чисел используя свою функцию сравнения")

function comp(a, b)
    return a > b
end

a = {9,5,1,3,2,6,7,4,8}
table.sort(a, comp)
for i = 1, #a do
    print(a[i])
end

print("Сортируем массив строк используя свою функцию сравнения")

function comp(a, b)
    return a < b
end

a = {"З","Д","А","В","Б","Е","Ё","Г","Ж"}
table.sort(a, comp)
for i = 1, #a do
    print(a[i])
end
Я таки дико извиняюсь, но при чем тут скриптовость? Вообще у скриптовых языков, как раз, функции высшего порядка встречаются не так уж и часто, ибо не нужны (скриптовые задачки мелкие - построение собственных абстракций нафик не нужно).

А то что тут написано, и на плюсах делается элементарно и, тащемто, не менее, а возможно и более, компактно:
#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

int main() {
    cout << "Сортируем массив чисел\n";
    vector<int> a = {9,5,1,3,2,6,7,4,8};
    sort(a.begin(), a.end());
    for (auto i : a)
        cout << i << endl;

    cout << "Сортируем массив чисел используя свою функцию сравнения\n";
    a = {9,5,1,3,2,6,7,4,8};
    sort(a.begin(), a.end(), [](int a, int b){return a>b;});
    for (auto i : a)
        cout << i << endl;

    cout << "Сортируем массив строк используя свою функцию сравнения\n";
    vector<string> s = {"З","Д","А","В","Б","Е","Ё","Г","Ж"};
    sort(s.begin(), s.end(), [](string a, string b){return a<b;});
    for (auto i : s)
        cout << i << endl;
    return 0;
}
Y = λf.(λx.f (x x)) (λx.f (x x))

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #134 : Ноябрь 13, 2012, 08:10:25 am »
Сравнение с плюсами не интересно  :)
И так понятно что на cpp  можно все  ;)
Давай на Oberon  ;D

Скриптовый язык ценится не наличием фич, а простотой и легкостью их использования.

Мне на изучение Lua хватило 3 дней. А сколько ты изучал cpp?  ;)