На работе мне иногда надо писать простенькие скрипты, для повседневных нужд. Я в последнее время решил, что буду их писать на Питоне или Руби, если возможно, чтобы таким образом потихоньку осваивать эти два языка.
Я думаю, меня читает некоторое количество людей, которые на этих языках (одном из или сходном или комбинации) пишут регулярно и с удовольствием. Поэтому хочу спросить:
1. Почему ваш любимый язык такой крутой? Т.е. чем он разительно отличается от других динамических языков (с C просьба не сравнивать, чем динамические языки отличаются от C я кагбэ в курсе) и намного их превосходит. Ссылки на библиотеку и модуль antigravity кошерны, но с оговорками - т.е. укажите, полагаете ли вы, что подобный модуль невозможен у конкурентов, или же просто что есть, тем и пользуемся?
2. Что следует читать, чтобы писать на этом языке как правильные пацаны, а не как лох? Подчеркну, меня интересует не мануал и не список синтаксических конструкций, а идиоматика - т.е. какие конструкции считаются правильными/эффективными/одобряемыми обществом, как принято делать разные вещи. Пример для питона.
Tags:
no subject
Наличие готового модуля для короткого проекта или скрипта -- ИМХО один из главных плюсов. Разумеется, XML парсер или обработчик запросов HTTP может быть в тысячный раз написан на любом языке, но когда надо "ехать, а не шашечки", то лучше воспользоваться готовым.
Мне лично понравился в свое время Питон: он был более популярным, богаче библиотеки, наличие нормальных IDE и отладчиков. А с появлением Django отпал последний "козырь" руби - on rails. Питон реализован практически везде, включая embedded, managed язык для .NET, скриптовый язык а-ля JavaScript и т.п.
Против Питона могут выступать "отступы как часть синтаксиса" (я знаю это бесило очень большое количество людей), хотя привыкнув, я нашел незагруженный скобками код более читаемым, да в общем-то и все.
Оба языка учить действительно не имеет смысла.
2. Все эти соглашения о коде -- от лукавого. я пишу так, как удобно мне. Лучше всего, конечно, глянуть на стиль исходного кода модулей, чтобы понять принципы, но особых откровений там не будет. Возможно if list: будет более оптимальным в байткоде вместо if len(list) !=0:, но кого это волнует в простых скриптах? Для языковых приколов полезно прочитать что-то вроде language recipes (типа вот-этого для Питона), не более того.
no subject
no subject
no subject
no subject
Почему:
1) Для перла есть CPAN (search.cpan.org), в котором уже сделаны практически все библиотеки. Даже чтобы кофе варить;
2) На перле можно всё. Хочется функционального программирования? Оно есть там. Хочется объектно-ориентированного программирования? Оно есть там, причём пятью разными способами на выбор (включая шедевральный Moose и Class::MOP). Там нет «писать как правильные пацаны», потому что твой стиль, если он выдержанный и красивый, автоматически будет считаться правильным (хотя, конечно, это не освобождает от соблюдения perldoc perlstyle).
3) Я люблю лаконичные языки. :)
no subject
1. Структуры данных в Перле сделаны кошмарно. До такой степени, что те же структуры часто проще на C писать - по крайней мере, не надо помнить, где какой префикс и какой формы скобки писать. C хотя бы не стыдится своих указателей :) в Перле же они вылезают в самых неожиданых местах, как из мешка, доверху набитого шилами.
Это, кстати, включает и ОО, которое - по крайней мере в built-in виде - ПМСМ представляет собой злобную насмешку над пользователями. Возможно, с тех пор многое изменилось, но это то, что я помню.
2. Чрезмерное пристрастие к синтаксическому сахару, которое превращается в натуральный синтаксический диабет. Это прикольно, что можно писать сложные программы в 1 строчку и что пользователям рекомендуют писать именно в таком стиле, но этот код совершенно невозможно reuse - он write-only!
no subject
no subject
no subject
public class C {
public static <K,V> Map<K,V> getHM() { return new HashMap<K,V>();}
}
(или что-то в этом духе)
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
Вот еще один сборник рецептов для питона, мне нравится: http://pleac.sourceforge.net/pleac_python/index.html
no subject
Больше всего мне нравится то, что на нем можно писать как угодно - хочешь быстро на соплях, хочешь - совсем production quality.
Вот у меня недавно появилась мысль, как собирать один кусочек софта, я за 10 минут сделал грязный прототип, проверил что работает и еще минут за 20 сделал из него приличного качества скрипт, готовый для вставления в build system.
Опять же, на нем легко писать "не как лох" - он позволяет писать в настолько разных стилях, что всегда можно подобрать что-нибудь по вкусу.
no subject
На перле, как я упоминал выше, я писал, и довольно долго - несколько лет, но потом бросил, на мой вкус слишком много лишних движений для работы со структурами данных.
no subject
За 10 минут такие скрипты я не могу написать на других известных мне языках - либо там синтакс многословный и вместо каких-нибудь обычных перловых split и map надо что-то городить, либо нет ничего близкого к CPAN и как только натыкаешься на что-нибудь этакое, 10 минут превращаются в три часа и интеграцию с какими-то странными тулзами, которые еще надо разыскивать.
no subject
Заодно увидел конструкцию map +{ lc($_), 1 }, @array - и вспомнил, что именно за это - за то, что в этой конструкции почти каждый символ можно заменить и оно будет работать по-разному совершенно неочевидными способами - я и невзлюбил Перл.
Что касаемо CPAN, то CPAN это голова. Но у руби вроде есть gems, у питонцев - pip, правда, насчет количества не знаю, Перл-то постарше будет...
no subject
no subject
no subject
Потому что любой из перечисленных языков можно освоить, ну скажем щедро, недели за две. Не напрягаясь. Хаскель я бы не взялся за такой срок освоить. Хотя не исключаю, что есть женщины в русских селеньях.
no subject
Студент, раньше не программировавший вообще, начал писать production-ready через неделю изучения. См. "Ada vs. C++ vs. Awk vs. ..."
no subject
человекпрограммист - вот как я, например - будет способен продуктивно работать на хаскеле через неделю - увы, мне не верится.no subject
> Но вот в то, что простой, обычный человекпрограммист - вот как я, например - будет способен продуктивно работать на хаскеле через неделю - увы, мне не верится.
Гм. Неужели в программе
module Main where main = do putStrLn "What's your name" name <- getLine putStrLn ("Hi, " ++ name ++ "!")есть что-то настолько сложное по сравнению с другими языками.
no subject
Да и монады — детям не игрушка. Arrows и то понятнее и лучше.
no subject
no subject
no subject
no subject
no subject
no subject
no subject
У меня, правда, есть другая проблема - IDLE (кажется) принудительно заменяет табуляции на пробелы в новых строках (ну люблю я табуляции). А если часть кода написана в другом редакторе (с табуляциями), а часть в IDLE - то ой.
no subject