Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Идея компилятора для bash  (Прочитано 1782 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 73
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #30 : 29 Август 2018, 14:43:40 »
jo80, вы хотя бы один скрипт для примера привели.
Да этот же bash как perl. Я вон сам в своих скриптах с трудом разбираюсь, а другие люди так вообще мозг сломают.

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6009
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #31 : 29 Август 2018, 15:21:37 »
Я вон сам в своих скриптах с трудом разбираюсь
Так это и есть самая основная проблема что Вы сами делаете не то и не так. Если Вы не умеете пользоваться тем же sed чтобы составить такой алгоритм чтобы не надо было использовать три последовательных вызова его же, то думаете другой язык Вам поможет? И оптимизация с переводом на С или другие языки тут как мертвому припарки. Bash просто вызывает команды которые уже основательно оптимизированы в силу концепции самого Линукса "Множество инструментов выполняющих только одну функцию, но идеально!". Если Вам нужны многофункциональные комбайны - это Вам на Винду.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 73
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #32 : 29 Август 2018, 16:53:09 »
Если Вам нужны многофункциональные комбайны - это Вам на Винду.
Так я не могу Винду. Меня когда то давно за винду посадили, а я такой думаю надо бы перезагрузиться и набираю в консоли sudo reboot а она не сработывает. Ну и пришлось вилку из разетки выдернуть и тех пор я за Винду ни ногой. Сижу теперь под ubuntu, компилятора под bash нет, мучаюсь. 

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12025
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #33 : 29 Август 2018, 17:05:02 »
Знаете если честно, то с трудом понимаю зачем тяжелую обработку больших текстов делать на баше. Баш хорош для реализации простых задач, это такой знаете набор инструментов механика - сделать можно много чего, но сильно зависит от рук.... и быстроту никто не гарантирует.

Хотите закрутить 100500 гаек - проще не напрягать бедного механика, а сделать специализированного (только на закручивание гаек заточенного) робота, который будет крутить сразу по 500 гаек параллельно...

Идея компилировать bash - это аналог сделать робота с умениями механика. Он конечно быстрее работать сможет, но до производительности специализированного робота все равно не дотянет, как его не ускоряй.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 73
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #34 : 29 Август 2018, 17:09:31 »
Знаете если честно, то с трудом понимаю зачем тяжелую обработку больших текстов делать на баше.
а на чём имеет смысл имеет смысл делать обработку больших текстов?

Оффлайн ALiEN175

  • Старожил
  • *
  • Сообщений: 3987
  • Capture the truth
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #35 : 29 Август 2018, 17:15:04 »
смотря что подразумеваете под "обработкой". Приведите конкретный пример.
ASUS P5K-C :: Intel Xeon E5450 :: 8 GB RAM :: Nvidia 8500GT :: XFCE
SAMSUNG N150 :: Intel Atom N450 :: 2 GB RAM :: Intel GMA3150 :: XFCE

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12025
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #36 : 29 Август 2018, 17:21:17 »
Вот смотрите. Есть sed и awk - это довольно мощные инструменты для работы с текстами. Ими можно сделать практически любую обработку текстов. Но это все равно "универсальные" агрегаты. И к ним нужны руки....

Специализированный - это уже программирование на нормальном языке программирования. bash - все-таки скриптовый язык.

А язык - уже любой.

Быстро стартануть можно на Python (он очень прост в синтаксисие и не очень требователен к деталям). Но питон - идеален для прототипов, тяжелую обработку данных он тянет не очень, если не пользовать специальные библиотеки (которые обычно на сях), вот с либами и получается - простота в программировании + мощь хорошо оптимизированного кода. Получаются вполне рабочие решения, но осваивать надо не только сам язык, но еще и библиотеки.

Если хотите прямо на языке и что-бы быстро - то интерпретируемый питон уже будет проигрывать компилируемым. Тут надо смотреть в сторону С/С++ или что-то более модное/современное типа GO.

Но выбор ЯП - это отдельный большой вопрос.
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 73
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #37 : 29 Август 2018, 17:35:05 »
Но выбор ЯП - это отдельный большой вопрос.
Ну вот я в java пытаюсь продвигаться. И если сравнивать по на чём мне проще писать на java или на bash , то на bash проще раз в 100.

Пользователь добавил сообщение 29 Август 2018, 17:53:31:
Правда я в java недавно и не очень хорошо её знаю, но мобильное прижение средней сложности написал. Я помню я был вообще в шоке, когда пишишь на java кучу кода, тратишь на это массу времени а выходе получаешь просто какая нибудь маленькую фичу. 
« Последнее редактирование: 29 Август 2018, 17:53:31 от jo80 »

Оффлайн Pasha-pivo

  • Участник
  • *
  • Сообщений: 211
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #38 : 29 Август 2018, 17:58:36 »
Если тебе работать с текстом, посмотри в сторону питона или php. Последний, пожалуй, самый простой.

Оффлайн bearpuh

  • Участник
  • *
  • Сообщений: 143
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #39 : 29 Август 2018, 18:20:35 »
Парсил раньше большие текстовые файлы на perl. Результат и быстродействие устраивало.

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 73
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #40 : 29 Август 2018, 18:51:59 »
В общем сравнение скорости построчного чтения файла в разных оболочках:

od@od-i:~$ time bash ./sk.sh

real   0m0,511s
user   0m0,443s
sys   0m0,037s
od@od-i:~$ time sh ./sk.sh

real   0m2,196s
user   0m0,249s
sys   0m1,936s
od@od-i:~$ time zsh ./sk.sh

real   0m2,423s
user   0m0,452s
sys   0m1,970s

Код который выполняется следующий:

while read line
do
    a=1
done < 10000.txt



Пользователь добавил сообщение 29 Август 2018, 19:30:05:
тот же самый файл для построчное чтение из perl. В файле есть всякие символы специальные по этому чтобы perl не ругался сделал перенаправление ошибок

od@od-i:~$ time perl ./sk.pl 2>/dev/null
done

real   0m5,597s
user   0m5,238s
sys   0m0,356s

Баш быстрее чем перл? Как такое может быть?
« Последнее редактирование: 29 Август 2018, 19:30:05 от jo80 »

Оффлайн TeenSpirit

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
    • Speed24
Re: Идея компилятора для bash
« Ответ #41 : 29 Август 2018, 19:33:02 »
Баш быстрее чем перл? Как такое может быть?
Хотя бы показали что в скрипте.

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 73
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #42 : 29 Август 2018, 19:35:21 »
    Баш быстрее чем перл? Как такое может быть?

Хотя бы показали что в скрипте.
Perl скрипт

    use strict;
    use warnings;
     
    my $filename = '10000.txt';
    open(my $fh, '<:encoding(UTF-8)', $filename)
      or die "Could not open file '$filename' $!";
     
    while (my $row = <$fh>) {
      chomp $row;
      #print "$row\n";
    }
    print "done\n";

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2627
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #43 : 29 Август 2018, 19:36:02 »
jo80,
time perl -ne '$a=1' 10000.txt?

Оффлайн jo80

  • Автор темы
  • Любитель
  • *
  • Сообщений: 73
    • Просмотр профиля
Re: Идея компилятора для bash
« Ответ #44 : 29 Август 2018, 19:38:27 »
time perl -ne '$a=1' 10000.txt

?
od@od-i:~$ time perl -ne '$a=1' 10000.txt

real   0m0,012s
user   0m0,012s
sys   0m0,000s


Мда
« Последнее редактирование: 29 Август 2018, 19:40:36 от jo80 »

 

Страница сгенерирована за 0.179 секунд. Запросов: 25.