LINUX.ORG.RU

Актуален ли PERL?


0

0

Хочу изучить PERL в качестве первого ЯП. Пока что привлекает только консоль. Собственно вопрос: актуален ли PERL в качестве первого изучаемого языка? А для Linux - разработчика? Спасибо. P.S. Хочется принести хоть небольшую пользу OpenSource :)

Ответ на: комментарий от stave

> Учитывая ее многословность, только на IDE уповать и остается. Представляю написание геттеров/сеттеров руками...

да -- сгенерить геттеры/сеттеры, сгенерить классы по БД -- все это я писал на перле, т.к. сплошняком рег. выражения

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

>стоит ли он в питоне по умолчанию

sqlalchemy тоже не стоит. И python-ldap не стоит. И ещё куча всего. Это означает только то, что это свойство нужно относительно редко. If ever:)

>Поймет ли другой питонист тебя сразу, когда ты напишешь python -m nliner

Обязательно. Посмотрит в доку по модулю и поймёт. perl -n я именно так научился понимать. На худой конец можно модуль назвать понятнее (скажем, map.stdin для функционеров или for_stdin для зацикленных ) -- будет сильно понятнее, чем -[np]

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

> adduser - это одноразовый многострочник ?

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

> Cистема генерации пакетов и управление базой настроек в debconf Debian - куда запишем по вашей классификации

Если она большая -- я бы не стал писать ее на перле.

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

> sqlalchemy тоже не стоит.

И не надо. Я не собираюсь на перле писать нормальные программы. Только работа со строками через регулярку и с ОС/bash/в-таком-же-духе

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

Сгенерить - это пол беды.

А вот рефакторинги, как это правильно сказать, работающие на уровне кода, а не на уровне текста? AST там, всё такое.

Если у меня есть класс или метод и я хочу их переименовать, я просто переименовываю в одном месте, и в остальных, причём, только в тех, что нужно, оно переименовывается само. Без текстового поиска с ручным аппрувом.

Аналогично с inline constant/method, extract variable/method, move, change method signature и.д.

Так-же, быстрый просмотр иерархий классов и вызовов.

Конечно, для программы из одного файла в 100 строчек это не актуально.

Скажите, для каких ещё языков есть столь развитые IDE, берущие на себя практически ВСЮ унылую рутину?

Score-49
()
Ответ на: комментарий от DonkeyHot

> На худой конец можно модуль назвать понятнее (скажем, map.stdin для функционеров или for_stdin для зацикленных ) -- будет сильно понятнее, чем -[np]

Будет ровно так же понятно, если не хуже -- хуже из-за необщепринятости.

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

>Потом ты сделаешь модуль для понимания open("| my_command")

Потом я перестану пытаться изображать из себя игрока в гольф, и напишу так, чтобы было понятно. "Однострочники" не должны пониматься другими, они одноразовые. А popen("my_command") не сильно длиннее. В этой сдаче истина попала ко мне:)

DonkeyHot ★★★★★
()
Ответ на: комментарий от Score-49

>Скажите, для каких ещё языков есть столь развитые IDE, берущие на себя практически ВСЮ унылую рутину?

До-диез. Сам догадайся, как называется.

tzukko
()
Ответ на: комментарий от Score-49

> Сгенерить - это пол беды. А вот рефакторинги, как это правильно сказать, работающие на уровне кода, а не на уровне текста? AST там, всё такое. геттеры-сеттеры-классыБД можно спокойно перегенерить

настоящий же рефакторинг перлом не делается

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

> До-диез.

Ну это и не удивительно. Там ещё есть обфускатор, со словом "community" в названии.

Score-49
()
Ответ на: комментарий от www_linux_org_ru

>настоящий же рефакторинг перлом не делается

И тут все задумались ...
А ведь какой умный таки этот www_linux_org_ru !! :))

А работающим программам на perl - все по фигу ,что там про них думают :))

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

>> А я лично ненавижу Питон.

> А почему ты его ненавидишь?

За динамическую типизацию.

> И какие языки ты не ненавидишь?

Статически типизированные :)

tailgunner ★★★★★
()
Ответ на: комментарий от Score-49

>Конечно, для программы из одного файла в 100 строчек это не актуально.

для монстропрограмм нужны монстроинструменты

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

> "Однострочники" не должны пониматься другими, они одноразовые.

а если двухразовые? например копипаст/вызов-из-истории-ком-строки однострочника, редактируем, используем

> А popen("my_command") не сильно длиннее. В этой сдаче истина попала ко мне:)

и что, в питоне можно popen(STDIN, "my_command") ? open(STDOUT, '/dev/null') ?

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

>> настоящий же рефакторинг перлом не делается > А работающим программам на perl - все по фигу ,что там про них думают :))

если я ошибаюсь -- приведи пример проги на перле для настоящего рефакторинга хотя бы явы с генериками

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от Score-49

>для каких ещё языков есть столь развитые IDE, берущие на себя практически ВСЮ унылую рутину

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

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

>если я ошибаюсь -- приведи пример проги на перле для настоящего рефакторинга хотя бы явы с генериками

Если этого никто не сделал - это не значит, что это не возможно.
А пример будет стоить килоденег =)

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

>например копипаст/вызов-из-истории-ком-строки однострочника, редактируем, используем

Убей в себе тролля. "вызов-из-истории" делается тобой же, а ты знаешь, что там написано. Или ты с коллегами обмениваешся файликами .bash_history?

>в питоне можно popen(STDIN, "my_command")

sys.stdin = popen(...) и т.д.

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

Ты о чём? В каких языках может понабиться что-то переименовать/вынести/заинлайнить/добавить-удалить аргумент/етц? В каких языках был бы полезен просмотр иерархий вызовов и наследования? В каких языках не помешала бы подсветка опечаток на лету?

Ну не знаю, Перл - write-only, там не нужна. А в Питоне?

Score-49
()

perl, какбы, является неотемлемой частью системы GNU/Linux. и вообще, вопрос не корректен, потомучто - возьми да почитай книжку по нему, и сам поймёшь, нужен он или нет.
книжка тут: man perl

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

> "вызов-из-истории" делается тобой же, а ты знаешь, что там написано. Или ты с коллегами обмениваешся файликами .bash_history?

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

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

> Если этого никто не сделал - это не значит, что это не возможно. А пример будет стоить килоденег =)

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

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от Score-49

> Скажите, для каких ещё языков есть столь развитые IDE, берущие на себя практически ВСЮ унылую рутину?

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

a3
()
Ответ на: комментарий от Score-49

>Перл - write-only, там не нужна. А в Питоне?

А мне кажется все динамически типизированные языки write-only, если программы написанные на них не обвешивать тесами.

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

> Спросим по другому: какие ещё языки требуют столько унылой рутины, тупой настолько, что с ней программа справляется за почти реальное время?

Тут ява вне конкуренции, однозначно.

В качестве альтернативы явисты юзают жутко сложные системы с класслоадерами, после которых начинают задавать вопросы "а как сделать синглтон? обычный способ не прокатывает, т.к. один класс, загруженный разными класслоадерами, становится разными классами". (wfrr тут на лоре спрашивал)

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

> перл нетривиален для начинающих, питон гораздо проще, и учиться по нему проще.

Проще-не проще, не это главное. Перл прививает новичкам дурной стиль программирования: провоцирует писать вычурно, неряшливо, совершенно не заботясь о читателях. Простой ясный код на Перле днём с огнём не сыщешь. Я за 7 лет знакомства с ним видел очень мало приятного кода. Вот не от хорошей жизни Damian Conway написал "Best Practices". Больше 500 страниц между прочим - нехилый такой style guide. Правда там полкниги - это описание подводных камней и архаических нелепостей, которых следует избегать. Что само по себе тоже весомый аргумент против Перла как первого языка.

При всём при этом к перлу отношусь положительно, хотя давно уже ничего больше 100 строк на нём не пиcал. Язык достаточно мощный и по своему интересный. Тому свидетельство вот эта книга: http://hop.perl.plover.com/

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

> Перл прививает новичкам дурной стиль программирования

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

> Что то само по себе тоже весомый аргумент против Перла как первого языка.

Спорно. Перл достаточно уже стабилен - его можно изучать под лупой и преподавать и коллекционировать грабельки.
Настрочить такой труд по Python - это совсем почти потратить время зря.
Да идеального ничего нет.

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

>плохие и не читаемые программы можно ухитрится написать на любом языке - не вопрос.

вспоминаем перловский TMTOWTDI

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

> Перл достаточно уже стабилен - его можно изучать под лупой и преподавать и коллекционировать грабельки. Настрочить такой труд по Python - это совсем почти потратить время зря.

Ну уж по количеству заботливо разложенных грабелек Питон точно Перлу не конкурент :) Спрашивается, зачём всё это добро человеку, только начинающему изучать программирование? Ему нужен язык построже, может быть даже весьма ограниченный язык, такой так Паскаль. Ну на крайний случай сойдёт Питон. Хоть отступы научит правильно расставлять :)

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

> А мне кажется все динамически типизированные языки write-only, если программы написанные на них не обвешивать тесами.

Так и есть. Недаром unit-тесты изобрели смолтокеры.

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

>Ему нужен язык построже, может быть даже весьма ограниченный язык, >такой так Паскаль. Ну на крайний случай сойдёт Питон. Хоть отступы >научит правильно расставлять :)

Я тут не советчик.
У меня первый язык был fortran :))), потом си ,c++
а все остальное уже по мере надобности ...
А последняя и непонятная привязанность к tcl :))

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

> А последняя и непонятная привязанность к tcl :))

У меня кстати тоже :)

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

>Ты помнишь все что делал в точности в течение последних 2 лет? А я нет

И я нет. Потому уже много лет не перле почти ничего не делаю. После одной из попыток развития старой програмки, всё перловое, что длиннее 20 строк, переписано с нуля на не-перле. Пока жаловаться не приходилось (ну, пару раз на tab/spaces напоролся, минут 20 потратил в сумме).

DonkeyHot ★★★★★
()
Ответ на: комментарий от Score-49

>Ты о чём? В каких языках может понабиться что-то переименовать/вынести/заинлайнить/добавить-удалить аргумент/етц?

В каких языках это требует столько рутинной работы? В каких языках "вызовы и наследования" приходится держать настолько запутаными/замусореными, что глазами не увидеть, мозгами не понять, калькулятор нужен?

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

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

Score-49
()
Ответ на: комментарий от Score-49

>Эээ, я боюсь спрашивать. Какая самая большая программа, которую ты писал/поддерживал? Желательно, написанная не тобой, но чтобы тебе пришлось в ней разбираться?

боюсь, что сам ты на такой вопрос не сможешь дать ответ ввиду нда и никому не интересного энтерпрайза ) там формочки можно рефакторить вечность..

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

> В каких языках это требует столько рутинной работы? В каких языках "вызовы и наследования" приходится держать настолько запутаными/замусореными, что глазами не увидеть, мозгами не понять, калькулятор нужен?

Я тут тоже предположу, что ты не прав. В любом большом проекте всегда будут функции с одинаковыми именами в иерархиях классов. И с ними обращаться только по имени тяжело.

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

> боюсь, что сам ты на такой вопрос не сможешь дать ответ ввиду нда и никому не интересного энтерпрайза ) там формочки можно рефакторить вечность..

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

Когда видишь чужой метод без комментариев, один из первых вопросов: "А нафиг он вообще нужен?". Когда видишь класс, или, особенно, интерфейс, очень хочется посмотреть на его подклассы/реализации.

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

Score-49
()
Ответ на: комментарий от guest-3484-2009

>А это вы просто нормальных динамически типизированных языков не видели

Ну давай колись, что это за языки?

Devix
()
Ответ на: комментарий от Score-49

>Какая самая большая программа ... желательно, написанная не тобой

Могу на следующей неделе посчитать. Но вряд ли тебе это интересно, к тому же ответ на такую формулировку вопроса будет относительно большим. На самом деле ты хочешь получить ответ типа "они все крошечные". Держи: абсолютное большинство из них крошечные (:мы тут даже про однострочники вспоминаем:). Это, кстати, вполне соответствует тому факту, что вообще в индустрии ПО 98% задач тривиальны.

Это не меняет сути. Java в её нынешнем состоянии требует нев^Hцензурного количества рутины.

Заметь, я не говорю, что навороченные IDE это плохо. Да, они сильно упрощают работу с "плохоструктурированными"(*) кодами, делая таковые экономически "возможными". Проблема в том, что некоторые умудряются структурировать код так, что существенных проблем с "неавтоматизированным" восприятием не возникает вообще.

(*) не в смысле "это плохо", а в смысле "за деревьями леса не видать" -- структура неочевидна, необходимо использовать "нечеловеческие" анализаторы кода.

Т.е. IMHO в абсолютном большинстве случаев (в 98% тривиальных и части оставшихся 2% нетривиальных) программы _можно_ "организовать" так, что существенных проблем с чтением не возникнет. И только в жава-нише это, почему-то, радикально не так. Причём первична именно чрезмерная рутинность жавы -- она вызвала необходимость разработки навороченных IDE, которые сделали "ненужными" заботы об читателе. Ты скажешь "ну и ладно -- пусть ставят правильное ПО"? Но смысл кода всё равно приходится понимать человеку, а у него очень ограниченное ОЗУ и очень разные CPU. Т.е. преимущества, предоставляемые "анализаторами" нивелируются отсутствием у "писателей" стимула писать "прозрачный" код. Т.ч. суммарный эффект не факт что "положителен".

DonkeyHot ★★★★★
()
Ответ на: комментарий от Score-49

> Скажите, для каких ещё языков есть столь развитые IDE, берущие на себя практически ВСЮ унылую рутину?

C# + Visual Studio + Resharper ?

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

>В любом большом проекте всегда будут функции с одинаковыми именами в иерархиях классов.

В том же питоне мне это не мешает. module1.name и module2.name вполне различимы. Необходимость в одном "модуле" иметь столько разных "классов", чтобы "birthday paradox" сработал, свойственна далеко не всем инструментам программирования. Пожалуй, жава опять тут "впереди".

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

>> Просто все "real world" задачи, для которых достаточно однострочника, уже давно решены.
> У сисадмина типичные задачи решаются именно однострочниками.

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

топикстартеру. начинай или высокоуровневого Питона, который и основам хорошо обучит, и стиль выработает, и на котором то скоро сможешь ваять весьма сложные программы, либо более близкий к железу С, который поможет сильнее разобраться с тем, как работает железо и ОС, что очень полезно, но вполне возможно и после ознакомления с основными концепциями программирования. Преимуществ Паскаля перед С невижу. Кстати, Питон и С отлично использовать в связке, оба языка пользуются большой популярностью.

val-amart ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> Почти каждая фича скриптового языка стоит установки маленького модуля.
зато питон обладает большим количеством полезных модулей, которые идут стандартной поставке.
> Но стоит ли он в питоне по умолчанию? Поймет ли другой питонист тебя сразу, когда ты напишешь python -m nliner commands ... ?

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

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