avva: (Default)
[personal profile] avva
(эта запись будет интересна разве что программистам)

Новости из мира Перла! Отличное интервью с Дамианом Конвеем и не менее интересная презентация Тима Банса Perl Myths 2009.

Если бы я хотел поиздеваться, я бы сказал, что и интервью и презентация сделаны в стиле "No, no, it's not dead, it's pining, you see. It's pining for the fjords". Но это шутки ради; на самом деле мне близка позиция этих двух авторов, хоть и раздражает немного поза все-идет-по-плану, когда речь заходит о Perl6. Все-таки нет, все далеко не шло по плану.

И тем не менее, в основном они правы. Во-первых, "haters gonna hate". С фанбоями Руби, или Питона, или Clojure, или еще чего, стремящимся обязательно доказать всем, насколько Перл мертв, спорить нет смысла, а лучше просто игнорировать. Факты против них, а мода изменчива. Во-вторых, новости на фронте Perl6 действительно в кои-то веки звучат заманчиво. Надо будет попробовать Rakudo при случае.

Я не пишу на Перле уже больше трех лет, с тех пор, как начал работать в Гугле. Кроме того, в последний год я особенно притерся к Питону, которым пользуюсь ежедневно. Многое в этом языке действительно прекрасно, и устроено лучше Перла. Кое-что намного хуже, и до сих пор мне мешает. Любопытно, как Питон отличается от Перла в этом смысле: я бы сказал, что свои важные недостатки он гораздо лучше прячет внутрь, чем Перл. Их не видно на поверхности, а только после того, как уже немного притерпелся к языку; и может быть оттого легче получается с ними смириться.

Если шестой перл станет реальностью в этом году, это будет весьма и весьма интересно. В своих замыслах и планах это был действительно многообещающий язык. Посмотрим, посмотрим...
Page 1 of 3 << [1] [2] [3] >>

Date: 2010-05-26 05:36 pm (UTC)
From: [identity profile] sha90w.livejournal.com
А как вы относитесь к языку Go, поговаривают, что в Гугле много проектов пишут на нем ?

Date: 2010-05-26 05:51 pm (UTC)
From: [identity profile] dimrub.livejournal.com
Хе, я к фанбоям питона-руби-ватевер себя не причисляю, но слышать о ренессансе перла мне как-то странно. Того и глядишь алгол оживят. Но почитаю, спасибо.

Date: 2010-05-26 05:57 pm (UTC)
From: [identity profile] deadkittten.livejournal.com
А чего б не оживить? Благо, вычислительные мощности сейчас позволяют...

Date: 2010-05-26 05:59 pm (UTC)
From: [identity profile] helvegr.livejournal.com
А что именно в Питоне устроено намного хуже?

Date: 2010-05-26 06:07 pm (UTC)
From: (Anonymous)
И про "Многое в этом языке действительно прекрасно" тоже интересно. Вообще, очень [ритмико-синтаксический барьер] хотелось бы увидеть более развернутый пост про сравнение Перла и Питона.

Date: 2010-05-26 06:12 pm (UTC)
From: [identity profile] itman.livejournal.com
Дык никто на нем и не прекращал писать. В определенной нише он отлично работает.

Date: 2010-05-26 06:12 pm (UTC)
From: [identity profile] dimrub.livejournal.com
Хорошая презентация. Она только не отвечает на вопрос о том, зачем именно тем, кто за последние, скажем, 7 лет перешел на питон, переходить обратно на перл. Наличием тестов, coverage tools, большого числа библиотек как-то увлечь в наше время уже трудно.

Date: 2010-05-26 06:13 pm (UTC)
From: [identity profile] dimrub.livejournal.com
"Никто" - это громко сказано. Последний проект, который я начал с нуля на перле, был 4.5 года назад. С тех пор чинить баги на перле приходилось, все новое начинал на питоне. Вижу вокруг много людей, с которыми все то же самое происходит.
From: [identity profile] sin-avatar.livejournal.com
Image
Image


Взял с TIOBE Programming Community Index (http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

Date: 2010-05-26 06:34 pm (UTC)
From: [identity profile] lazyreader.livejournal.com
Да хотя бы отсутствие use strict. Лично мне крайне не нравится невозможность запретить введение в действие переменных ad hoc без их предварительного объявление через my.

Неплохо было бы, конечно, и настоящие анонимные функции иметь.

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

Date: 2010-05-26 06:46 pm (UTC)
From: [identity profile] gaus.livejournal.com
Я вот не знаю ни перла, ни питона. Но встречая код на питоне, я примерно понимаю, что там написано, а встречая кол на перле - не понимаю.

Я, честно говоря, не знаю, говорит это больше о языке или о программистах, которые пользуются этим языком.
Edited Date: 2010-05-26 06:47 pm (UTC)

Date: 2010-05-26 07:05 pm (UTC)
From: [identity profile] meshko.livejournal.com
О языке, о языке. Питон -- это Перл с человеческим лицом.

Date: 2010-05-26 07:09 pm (UTC)
nine_k: A stream of colors expanding from brain (Default)
From: [personal profile] nine_k
Хрен с ним с перлом — какую они пишут vm! :) Кстати, на ней не только перл работает вроде.

Date: 2010-05-26 07:30 pm (UTC)
From: [identity profile] lazyreader.livejournal.com
Ну, недаром ещё когда кто-то умный (я забыл, кто) сказал, что "типичная программа на Перле выглядит так, как будто программист бился головой об клавиатуру; и чаще всего оно так и есть."

Date: 2010-05-26 07:58 pm (UTC)
From: [identity profile] avva.livejournal.com
Две серьезные вещи назвал [livejournal.com profile] lazyreader.

Еще несколько примеров:
- невероятно ограниченная поддержка multithreading
- хэк с bound methods
- все еще очень заметная тормознутость (в сравнении с перлом)
- принцип "каждый объект создается только один раз" приводит к неинтуитивным багам, которые трудно отладить

Но вообще очень хороший язык, я не ругаю.

Date: 2010-05-26 08:09 pm (UTC)
From: [identity profile] meshko.livejournal.com
принцип "каждый объект создается только один раз"

это как?
From: [identity profile] ospf-ripe.livejournal.com
На перле писать не читаемый код немного проще чем в других языках потому "There's more than one way to do it"
На питоне писать не читаемый код немного сложнее потому что есть требования к форматированию кода.
Плюс у перла немного выше порог вхождения из за того, что много всего нужно просто запомнить.

Date: 2010-05-26 08:26 pm (UTC)
From: [identity profile] alera-il.livejournal.com
очень люблю и Перл и Питон.

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

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

Вообще не понимаю из-за чего эти сообшества постоянно ссорятся и меряются у кого что длиннее. по сути ведь то же самое - dynamic languages. Спросите у C++ или java программиста что лучше: перл или питон. он вам честно скажет - что те же яйца только в профиль. это как вражда суннитов с шиитами кто больше Аллаха любит.

Date: 2010-05-26 08:34 pm (UTC)
From: [identity profile] avva.livejournal.com
def foo(bar=[]):
  bar.append(3)
  return bar

foo()
foo()
foo()
Edited Date: 2010-05-26 08:35 pm (UTC)

Date: 2010-05-26 08:38 pm (UTC)
From: [identity profile] meshko.livejournal.com
Я из принципа не вникал никогда во все эти трюки, и поскольку у нас в компании на Питоне кроме меня никто не пишет, это работает на 100%.
Объясните, чем отличается то, что у Вас от


def foo():
bar=[]
bar.append(3)
return bar


которое делает то, чего от него ждешь?

Date: 2010-05-26 08:39 pm (UTC)
From: [identity profile] meshko.livejournal.com
А, это просто default value у аргумента?? и оно себя так ведет?? wtf&

Date: 2010-05-26 08:47 pm (UTC)
From: [identity profile] itman.livejournal.com
Это была фигура речи. Но, действительно, много чего еще делается пока еще на Перле. И там много библиотек. И я вот, например, ни за что не буду писать на Питоне и увеличивать зоопарк, если Перла вполне хватает.

Date: 2010-05-26 09:01 pm (UTC)
From: [identity profile] avva.livejournal.com
Объект создается в тот момент, когда интерпретатор "парсирует" строку, в которой написано его создание. Когда вы вызываете функцию снова и снова, текст ее тела "парсируется" интерпретатором снова и снова, и каждый раз создается новый пустой список. Если же пустой список используется в виде дефолтного значения аргумента, то он является частью определения функции, которое "парсируется" в момент выполнения кода всего модуля, что обычно происходит один раз.

Вот пример, который это поясняет:
def foo():
      def bar(d=[]):
        d.append(1)
        return d
      print len(bar())
      print len(bar())
      print len(bar())

foo()
foo()
foo()


Каждый раз, когда вызывается функция foo(), внутренняя функция bar() в ней заново "переопределяется", и дефолтное значение аргумента указывает на новый пустой объект. Во время вызовов bar() этот объект остается неизменным.

Все это не то чтобы big deal, и можно избежать большинства этих проблем. Но это на мой вкус глубоко неинтуитивно, и показывает, что в дизайне языка тут небольшая промашка. Когда все же попадается баг, основанный на таких вот заморочках, его очень трудно найти.

Date: 2010-05-26 09:07 pm (UTC)
From: [identity profile] meshko.livejournal.com
Интересно, но до конца непонятно. Это промашка в смысле баг (который вроде как можно легко починить) или у этого есть какая-то серьезная причина, по которой в языке должна быть такая дыра? ("на мой вкус глубого неинтуитивно" это мягко сказано)

Date: 2010-05-26 09:27 pm (UTC)
From: [identity profile] avva.livejournal.com
Пока что трудно относиться к нему иначе, чем как к интересному эксперименту.
Page 1 of 3 << [1] [2] [3] >>

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 07:51 am
Powered by Dreamwidth Studios