Serge Bobrovsky (sbobrovsky) wrote,
Serge Bobrovsky
sbobrovsky

про зигохистоморфные препроморфизмы...

Очень уж мне нравится python, а 3.3 чёт вообще крут.





Вот например, сравните, как бесконечный список чисел Фибоначчи запишется на этом вашем haskell-e:

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)


А вот как на нынешнем питоне:

def fibs(): yield 0; yield 1; yield from map(add, fibs(), tail(fibs()))


Конечно, никакой иммутабельностью в случае питона и не пахнет -- но, всё в наших руках. Именованные таплы namedtuple, например.

На плюсах))) одно конкретное число:

int fib(int x) { 
  if (x == 0) return 0;
  if (x == 1) return 1;
  return fib(x-1)+fib(x-2);
}


Главное, что хаскель/клож на практике почти никто не знает/не юзает, а если и находится просветлённый чувак, то проекту такому в итоге суждена известная судьба:

Из моей компании уволился тим-лид, который последние годы отвечал единолично за архитектуру проекта. Проект, как вы догадались, в жопе и руинах...
Итак, первый холиварный, но от этого не менее справедливый, признак нашего героя -- это лютая упоротость по Haskell Clojure С++. Вот этот весь лютый дроч на boost, темплейты и чувство неебического превосходства над остальными...

Упоротый питонист, к примеру, менее опасен -- на освоение нужного сабсета Питона уходит на порядок меньше времени, поэтому эта упоротость несравнима. В итоге, питонисты более прагматичны, и, почуяв халяву, быстро перескочат на что-то более эффективное при надобности, оставив Zen of Python в сердцах, но писать будут на том, на чем удобней и легче. С хаскелистами С++-никами такое не проходит, и они будут все глубже и глубже изолироваться от внешнего мира, превознося свои 10-тилетние знания магии темплейтов превыше всего остального.


На 2.7 кстати немного посложнее; надо в частности вручную задекорировать рекурсивный генератор (бесконечные списочки), и получится как-то так примерно:

@recursively_defined_generator
def fibs():
    for i in chain([0, 1], imap(add, fibs(), tail(fibs()))): yield i


Но тоже неплохо.

Tags: haskell, python, функциональное программирование
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 15 comments