Во-первых, грубое деление на «скомпилировано/интерпретируемо» несколько устарело. например, байт-код — это интерпретируемое или компилируемое? А JIT-компиляция? А байткод питона?
Во-вторых (и это важно) я не собираюсь вводить «самопальную классификацию», я говорю про реальное состояние дел в хозяйстве системного администратора. Называть скриптом, например, deluge у меня язык не повернётся (хоть он на питоне и написан). Так же у меня не повернётся язык называть приложением (программой) цикл на Си, который выводит список файлов с заданным атрибутом в файловой системе.
Не обижайтесь, но вы почему-то решили, что я собираюсь рассказывать людям что есть интерпретируемые языки программирования, а потом высказываете претензию, что этот рассказ неправильный.
Ну… Я могу сказать только одно: если требования являются необоснованными (например, как в одной компании, в которой, я, к счастью, не работал, где админу запрещали в шариться в интернете (!)), то сотрудник должен либо обосновать свои требования, либо принять политику компании. Ситуация, когда «скрипты можно, а программы нельзя» есть фарс и бред, потому что разницу между ними я изложил чуть выше: программа более документирована чем скрипт.
Писать «свою программу» дорого. Очень. Потому я и говорю, что не нужно поддаваться приятному соблазну сделать самому, и надо презнемочь себя и изучить чужое. Потому что чужое, с большой вероятностью, решило множество проблем и имеет наработанную базу. А своё имеет только голый энтузиазм и веру, что получится лучше, чем у всего белого света.
Вы пропустили мимо всё, что я написал. «Чем различается скрипт и программа? Вовсе не используемым языком» — в самом начале.
Разумеется, программа может быть написана на PHP, а скрипт — на C (более того, у меня на старой работе одна из специфичных задач решалась скриптом на си, потому что из си это было удобнее сделать, чем из шелла).
Программа от скрипта отличается:
* Сложным алгоритмом (обширной логикой)
* Сопроводительной документаций
* Широкой областью применимости (относительной универсальностью)
* Подчинению полиси для дистрибьютива/ОС
* Тщательной проверки параметров и предсказуемым поведением в нестандартных ситуациях
Если же код имеет сложный алгоритм, но не имеет сопроводительной документации (и далее по списку) — то это либо плохая программа, либо плохой скрипт.
Скрипт — «код», настолько компактный и логичный, что является самодокументированным.
Насчёт скриптовых языков… С учётом, что процентов 50% минимального дистрибьютива дебиана это программы для интерпретаторов, говорить о том, что «интерпретируемые программы не программы» было бы глупо.
Нет, не приходилось. Более того, я ушёл из компании, где я был рутом в компанию, где от меня до рута человека три по иерархии. И там, и там все технические специалисты сами отвечали за работоспособность машины. Точнее, был один… м… не очень квалифицированный — «веб дизайнер», его машину обслуживали мы (ит-отдел) и у него прав администратора не было. В остальных — хочешь свободы — держи, если можешь удержать.
И я с трудом себе представляю компанию, в которой системный администратор не имеет права использовать то, что является удобным/нужным.
Кроме того, речь идёт не о том, «на чём писать», а о том, что скрипт и программа различаются не кодом, а административным подходом.
Насчёт «да с куя ли» — я, вроде, простыню уже написал.
Правильно будет говорить не «проще», а «правильнее». Потому что проще всё-таки написать самому. Но цена сопровождения и развития этого решения окажется много больше, чем сопровождения существующего решения.
Я про это и говорю. Вместо того, чтобы с увлечением писать скрипт, с которым вашему последователю придётся разбираться, нужно напрячься и поставить нагиос (или другую систему мониторинга), для которой чужие дяди УЖЕ написали документацию.
Если вы пишите скрипт, будьте добры написать к нему документацию, хотя бы в 1/10 от документации нагиоса.
Мысль статьи простая: пишите код — он должен быть либо очевиден с первого взгляда, либо иметь документацию. Первое называется скрипт, второе — программа. Статья посвящена объяснению того, что не нужно писать программы с уровнем документированности скрипта.
nagios прекрасно мониторит виндовые сервера; у майкрософта, насколько я знаю, есть system manager, который делает что-то подобное.
Если прийдёт новый админ и увидит, что «тут стоит нагиос» и «тут какая-то куча скриптов», то какова вероятность а) что он прочитает про нагиос б) что он изучит скрипты без документации?
Именно с прицелом на «оповещалку» я и писал это. Если у вас скрипт реализует нетривиальную логику (проверить, что SMTP работает, если не работает, то оповестить админа альтернативным методом), то это ПЛОХОЙ скрипт. Даже если он работает. Потому что следующий админ будет вынужден либо изучать персонально ваши скрипты, либо писать свои. И то и то, плохо.
Правильный выход — поднять nagios и настроить отсылку оповещений оттуда. Да, это займёт времени больше, чем скрипт для мониторинга конкретного сервиса, однако, это будет общее решение для проблемы «мониторить всё».
Разумеется. Именно потому половина России пользуется программой PERSW (можете уточнить у ближайшего бухгалтера, что это за программа). Кто-нибудь может сказать, что эта программа ненужная? Нет. Кто может сказать, что она плохая? Каждый, кто с ней сталкивался.
… скрипты работают годами где? В том месте, где их написали и оставили? А если сеть перевести на DHCP? А если поменять платформу с *x на *y?
Ситуаций, когда нужный софт был бы платным, его функционал можно было в разумное время реализовать скриптом, и у него бы не было бесплатных аналогов — я в своей жизни не видел.
Поиск нужного приложения для реализации задачи может занимать куда больше, чем пара часов. Возможно, на это потребуется месяц, а то и больше. Я говорю про продакт системы, в пределах «мне нужно читать RSS и писать это в мой mp3-плеер» можно делать что хочешь. Если же система вам не принадлежит (aka продакт-система организации), то следует учитывать наличие тех, кто придёт вам на смену.
Задача «не может принять в нужной форме» как раз решается скриптом в одну строчку (с использованием awk). И это вполне достойная задача скрипта — подготовить инфраструктуру для запуска приложения или связать два приложения между друг другом.
Я не знаю, как вы можете использовать программы. Я обычно примерно себе представляю ТЗ для неё и сроки (область) применения.
Нет, я же про это написал — я это назову «плохой программой». Скрипт допускает отсутствие документации в силу своей самоочевидности (и самодокументируемости исходным текстом). Если текст вашей программы не может быть тривиально понятен при открытии файла на просмотр, это уже программа. И если она не имеет должного оформления, то это плохая программа.
Хм. Странно. И понятие последовательности, предела не изучали?
… А у нас в институте физик ругался, мол, из школы выходят, нифига не понимают, интеграл посчитать толком не могут (они были чуток в школьном курсе). А сопроматовец бухтел о тензорах.
Я последний раз в школе был примерно 15 лет назад. И я точно помню, что логарифмы изучались в 9ом классе. Не помню, когда тригонометрия начиналась… То ли в 9ом, то ли в 10-11. А заканчивалось всё пределами слева-справа и производными. И нет, это была провинциальная школа без уклонов.
Я слишком хорошо помню школьную программу, чтобы говорить про «неправильно». Наверное, я один из всего класса, кто школьный учебник по литературе прочитал с осознанием, а не «чтобы отвязались».
… Про ЕГЭ ничего не могу сказать, оно появилось после того, как я закончил школу.
Вопрос даже не в том, «что думает подросток», а в том, «о чём книга». Вся политическая жизнь России 19ого века — это же сборник психов. Оно интересно во взрослой жизни (и то, не всегда), но не в подростковом возрасте.
От того, что я имел отлично по литературе, не меняется то, что я её пламенно ненавижу (да, мне почти 30 лет, и я всё ещё не отошёл от психологической травмы). Вместо того, чтобы дать нам свободу читать то, что нужно читать в нашем возрасте, нас пичкали горьковским «на дне», Островским, Гончаровым, прозой Пушкина и (О УЖАС) Войной и Миром.
А Крапивину было посвещено полторы странички за все годы. А про джека лондона — и того меньше. А про Купера ничего не написали. так же как ничего не написали про Азимова, но (упомянули) про Бредбери (два абзаца). Ни слова про Лема, про Стругацких, про Кларка, про Хайнлайна… Зато огромная глава про жизнь в деревне.
Во-вторых (и это важно) я не собираюсь вводить «самопальную классификацию», я говорю про реальное состояние дел в хозяйстве системного администратора. Называть скриптом, например, deluge у меня язык не повернётся (хоть он на питоне и написан). Так же у меня не повернётся язык называть приложением (программой) цикл на Си, который выводит список файлов с заданным атрибутом в файловой системе.
Не обижайтесь, но вы почему-то решили, что я собираюсь рассказывать людям что есть интерпретируемые языки программирования, а потом высказываете претензию, что этот рассказ неправильный.
Писать «свою программу» дорого. Очень. Потому я и говорю, что не нужно поддаваться приятному соблазну сделать самому, и надо презнемочь себя и изучить чужое. Потому что чужое, с большой вероятностью, решило множество проблем и имеет наработанную базу. А своё имеет только голый энтузиазм и веру, что получится лучше, чем у всего белого света.
Разумеется, программа может быть написана на PHP, а скрипт — на C (более того, у меня на старой работе одна из специфичных задач решалась скриптом на си, потому что из си это было удобнее сделать, чем из шелла).
Программа от скрипта отличается:
* Сложным алгоритмом (обширной логикой)
* Сопроводительной документаций
* Широкой областью применимости (относительной универсальностью)
* Подчинению полиси для дистрибьютива/ОС
* Тщательной проверки параметров и предсказуемым поведением в нестандартных ситуациях
Если же код имеет сложный алгоритм, но не имеет сопроводительной документации (и далее по списку) — то это либо плохая программа, либо плохой скрипт.
Скрипт — «код», настолько компактный и логичный, что является самодокументированным.
Насчёт скриптовых языков… С учётом, что процентов 50% минимального дистрибьютива дебиана это программы для интерпретаторов, говорить о том, что «интерпретируемые программы не программы» было бы глупо.
И я с трудом себе представляю компанию, в которой системный администратор не имеет права использовать то, что является удобным/нужным.
Кроме того, речь идёт не о том, «на чём писать», а о том, что скрипт и программа различаются не кодом, а административным подходом.
Насчёт «да с куя ли» — я, вроде, простыню уже написал.
Остальное не видел, не знаю.
Повторю: разница между скриптом и программой не в том, как они написаны, а в том, как они сопровождаются.
Если вы пишите скрипт, будьте добры написать к нему документацию, хотя бы в 1/10 от документации нагиоса.
Мысль статьи простая: пишите код — он должен быть либо очевиден с первого взгляда, либо иметь документацию. Первое называется скрипт, второе — программа. Статья посвящена объяснению того, что не нужно писать программы с уровнем документированности скрипта.
nagios прекрасно мониторит виндовые сервера; у майкрософта, насколько я знаю, есть system manager, который делает что-то подобное.
Если прийдёт новый админ и увидит, что «тут стоит нагиос» и «тут какая-то куча скриптов», то какова вероятность а) что он прочитает про нагиос б) что он изучит скрипты без документации?
Правильный выход — поднять nagios и настроить отсылку оповещений оттуда. Да, это займёт времени больше, чем скрипт для мониторинга конкретного сервиса, однако, это будет общее решение для проблемы «мониторить всё».
Ситуаций, когда нужный софт был бы платным, его функционал можно было в разумное время реализовать скриптом, и у него бы не было бесплатных аналогов — я в своей жизни не видел.
Задача «не может принять в нужной форме» как раз решается скриптом в одну строчку (с использованием awk). И это вполне достойная задача скрипта — подготовить инфраструктуру для запуска приложения или связать два приложения между друг другом.
Я не знаю, как вы можете использовать программы. Я обычно примерно себе представляю ТЗ для неё и сроки (область) применения.
… А у нас в институте физик ругался, мол, из школы выходят, нифига не понимают, интеграл посчитать толком не могут (они были чуток в школьном курсе). А сопроматовец бухтел о тензорах.
… Про ЕГЭ ничего не могу сказать, оно появилось после того, как я закончил школу.
Вопрос даже не в том, «что думает подросток», а в том, «о чём книга». Вся политическая жизнь России 19ого века — это же сборник психов. Оно интересно во взрослой жизни (и то, не всегда), но не в подростковом возрасте.
От того, что я имел отлично по литературе, не меняется то, что я её пламенно ненавижу (да, мне почти 30 лет, и я всё ещё не отошёл от психологической травмы). Вместо того, чтобы дать нам свободу читать то, что нужно читать в нашем возрасте, нас пичкали горьковским «на дне», Островским, Гончаровым, прозой Пушкина и (О УЖАС) Войной и Миром.
А Крапивину было посвещено полторы странички за все годы. А про джека лондона — и того меньше. А про Купера ничего не написали. так же как ничего не написали про Азимова, но (упомянули) про Бредбери (два абзаца). Ни слова про Лема, про Стругацких, про Кларка, про Хайнлайна… Зато огромная глава про жизнь в деревне.
ттьфу,