LINUX.ORG.RU

Скриптовый язык для повседневной автоматизации


0

0

Вроде бы всё не так уж и плохо. В конце концов, есть ведь perl, python, ruby, которые хорошо подходят для автоматизации всякой мелкой рутины.

Печаль же моя в том, что никаких стандартов этих языков не существует, и вряд ли кто возьмётся за это. Т.е. как господам Мацумото, Пейджу и прочим Ван Россумам в голову взбредёт, так их языки и будут меняться. А значит никакой гарантии, что написанный пять лет назад скрипт будет работать в новой версии интерпретатора. Я что-то упускаю?

Привет.

anonymous

Ты прав. Хочется стабильности --- выбирай или стандартизированный язык и пиши в рамках стандарта(posix shell, например), либо бери язык, который давно устаканился(tcl, например). Хотя второй пункт тоже не гарантирует, что через 10 лет всё будет работать без допилки, но лет на 5 точно хватит.

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

Пока приходится на POSIX шелле, да. Получается не слишком переносимо, да и постоянно приходится проверять наличие нужных утилит. Хотелось какое-нибудь более стройное решение.

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

> приходится проверять наличие нужных утилит
Ничего не поделаешь, это unix :)

Про стройность: ты хочешь чего-то, к чему есть куча библиотек, стандарт реализации, и при этом со временем ничего не ломается. Это утопия.

gaa ★★
()

а чем тебя перл не устраивает? пятая ветка вроде уже сто лет как устаканилась.

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

> а чем тебя перл не устраивает? пятая ветка вроде уже сто лет как устаканилась.

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

gaa ★★
()

Tcl используется для этих целей последние ~20 лет. достаточно чтобы считать его стабильным?

тем более что есть Expect

// jtootf

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

>а чем тебя перл не устраивает?

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

// jtootf

anonymous
()

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

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

shimon ★★★★★
()

>А значит никакой гарантии, что написанный пять лет назад скрипт будет работать в новой версии интерпретатора.

Через несколько лет - вполне.

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

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

Можно. А кто-нибудь его реально для этого использует?

anonymous
()

> так их языки и будут меняться

на python есть спеки и есть цель делать новые версии обратно совместимыми со старыми(что, правда, не всегда соблюдается:)). А так тебе никто не гарантирует отсутсвие новых багов в новых версиях, поэтому расчитывать что со временем ничего не поломают не приходится в любом случае какой бы язык ни был. Но если юзать rhel итп lts-дистры то 5-7 лет существования без обновления версии гарантируется :)))

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

> Tcl используется для этих целей последние ~20 лет. достаточно чтобы считать его стабильным?

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

По теме -- только POSIX shell, желательно ограничиваясь Born shell.

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

>Имею некоторый опыт геммороя с этим шедевром -- оно, бывало, в каждом следующем релизе само с собой обратно не совместимо

примеры несовместимого кода и версий в студию

// jtootf

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

> примеры несовместимого кода и версий в студию

Да легко:
8.5: отсох itcl, blt. за год их так и не поправили.
Изменилось поведение incr: теперь если переменная не существует, она зануляется, вместо кидания еррора.

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

Но, конечно, это смотрится достаточно смехотворно. Что интересно, в 8.3 и 8.4 я вообще никаких критичных изменений поведения не заметил, а это уже десятилетний срок.

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

>8.5: отсох itcl, blt. за год их так и не поправили

тему треда читаем, да?

>Изменилось поведение incr: теперь если переменная не существует, она зануляется, вместо кидания еррора

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

// jtootf

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

>> 8.5: отсох itcl, blt. за год их так и не поправили
> тему треда читаем, да?


У меня повседневный скрипт для звонилки написан с использованием blt::bgexec. Всё никак не доходят руки переписать его на open/fileevent.

>> Изменилось поведение incr: теперь если переменная не существует, она зануляется, вместо кидания еррора

> зачтено, но при грамотном скриптовании - несущественно.


Я ж уже написал, что это смехотворно :)

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

>У меня повседневный скрипт для звонилки написан с использованием blt::bgexec

это обвязка вокруг open, там кода всего-то на экран (или даже меньше). толку ради этого весь BLT подключать?

>Я ж уже написал, что это смехотворно :)

сорри, не заметил

// jtootf

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

>> У меня повседневный скрипт для звонилки написан с использованием blt::bgexec
> это обвязка вокруг open, там кода всего-то на экран (или даже меньше). толку ради этого весь BLT подключать?


Начнём с того, что когда я её писал, я знал только про bgexec. А сейчас лень :)

gaa ★★
()

Заморозь себя в криокамере и больше не пиши подобный бред.

anonymous
()

cat /usr/sbin/xconv.pl
#!/usr/bin/perl
#/*
# * (c) Copyright 1998-2001 by Rob Braun
# * All rights reserved. The file named COPYRIGHT specifies the terms
# * and conditions for redistribution.
# */

И гляди ка, работает!

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

Die-Hard, амнезия , как написал всё это (? :)) ..но всё правда
me - 3х месячный-дед
Но, уже с утра на посту :)
Топикстартер определил "нормальную проблему",
в то время, как мы "боремся" за совместимость,
соответствие "ANSI C++" -  "все остальные"  переизобретают велосипед,
особенно это заметно по-нашим-шлом-алейхом друзьям из ПХП ...
php, php2, php3, php4, php5 ...


 

Valeriy_Onuchin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.