Zapowiada się na to, że znowu będę musiał przysiąść nad programowaniem w Pythonie. Z tej okazji, jak zawsze, robię rundę zwiadowczą w poszukiwaniu darmowych (z mojego punktu widzenia) usprawnień. Dzisiaj postanowiłem przyjrzeć się Pythonowi w wersji trzeciej. No i znalazłem kilka powodów, dla których jest on niemal niczym Perl 6 ;)

Lista wyrywkowo-przypadkowa. Tylko te rzeczy, które mnie ugryzły przy tym jednym projekcie w momencie, gdy chciało mi się pisać.

Ogólna niekompatybilność: główny powód, dla którego zmieniono numerek na 3. Niby nie boli, bo dali od razu narzędzie do automatycznej konwersji. Oczywiście nie działa ono zawsze, ale cóż, nie ma nic za darmo. No i niektórych potworków z języka fajnie było się pozbyć. Poniżej jednak wymienię kilka zmian moim zdaniem na gorzsze.

Usunięcie cmp: kiedyś, by uczynić obiekty jakiejś klasy porównywalnymi według własnej semantyki, wystarczyło nabazgrać jedną metodę o tejże nazwie. Dziś, dzięki genialnej decyzji o jej usunięciu, potrzebne są trzy metody: lt, le, eq. Ot tak, żeby uprościć życie. Ponadto ja osobiście zawsze najpierw piszę lte, dopiero jak interpreter zapłacze zmieniam na le. Ale to pewnie moja wina, że nie dostrzegam konsekwencji w nazewnictwie ;)

Zmiana znaczenia operatora /: wcześniej był on jak w C, teraz jest jak w Perlu… Oczywiście chodzi o to, że przy dzieleniu dwóch liczb całkowitych większość popularnych języków zwraca liczbę całkowitą, zaokrągloną w stronę zera. Jest to o tyle naturalne, że dokładnie takie działanie jest zaimplementowane sprzętowo w procesorach x86. Python od teraz zwraca jednak liczbę zmiennoprzecinkową, by uniknąć zaokrąglenia. Zupełnie jak Perl… Tylko o Perlu nikt nigdy nie mówił, że nadaje się do obliczeń.

Wydajność: dodatkowe 10% czasu działania za darmo. Jest to liczba obwieszczona w dokumentacji do Pythona 3.0, otrzymana z syntetycznych benchmarków. Potwierdzona przeze mnie na Pythonie 3.1.3. Python 3.2, po odtrąbieniu kolejnej rundy optymalizacji, działa 20% wolniej od Pythona 2.7.1. W obu przypadkach testuję na swoim projekcie w pracy. Oczywiście wszystko to smutny żart w porównaniu z wydajnością 2.6 + Psyco (które sprawuje mi się lepiej niż PyPy).

Wywalenie niekoszernych builtinów: w większości do osobnych modułów, jak choćby reduce. W tym konkretnym przypadku dlatego, że pętla for czytelniejsza. A map czy filter zostanie, bo tak… Niektóre rzeczy zniknęły całkowicie, jak choćby czasem użyteczne callable. Sugerowane obejście, isinstance(f, collections.Callable), trudno uznać za krok naprzód.

Brak “niektórych” 3rd party modułów: najlepiej pokazał to już kto inny - Python 3 wall of shame.

Komentarze

  • pecet (2011-02-21 18:18:22): Dzięki za kolejny powód, dla którego wystarczy mi PHP do pisania skryptów :)
  • Stanisław ‘dozzie’ Klekot (2011-02-21 18:21:00): To jeszcze przeczytaj artykuł “Python 3: The Good, the Bad, and the Ugly”. Tak jak autor, David Beazley, mam wrażenie, że Python 3 nie nadaje się właściwie do używania.
  • Remigiusz ‘lRem’ Modrzejewski (2011-02-21 18:26:53): Jakoś wątpię, by istniał odpowiednik pylab dla php…
  • Krystian (2011-02-21 18:51:53): Jestem inżynierem, korzystam ze Pythona+NumPy+SciPy+matplotlib+Mayavi2 i bardzo sobie cenię to rozwiązanie. Nie mam potrzeby inwestowania w Matlaba, a Octave, Scilab wypadają średnio przy pylabie. Mógłbyś rozwinąć kwestię "Python od teraz zwraca jednak liczbę zmiennoprzecinkową, by uniknąć zaokrąglenia. Zupełnie jak Perl… Tylko o Perlu nikt nigdy nie mówił, że nadaje się do obliczeń.” ?
  • pecet (2011-02-21 18:57:43): lRem – Do obliczeń numerycznych i naukowych lepiej użyć C i GSL IMHO ;)
  • Krystian (2011-02-21 19:08:31): @pecet Najlepiej użyć Fortrana;) Gdyby nie brak porządnego darmowego kompilatora pod Windows + Intel MKL to pewnie bym wybrał to rozwiązanie. Podobnie wygląda sprawa z C/C++. Próbowałem C++ i Armadillo - wyglądało zachęcająco, ale znowu problemy z LAPACK-iem mnie przerosły, a sama wydajność tego rozwiązania (bez MKL) wypadła gorzej przy prostych obliczeniach na macierzach niż Python+NumPy.
  • Remigiusz ‘lRem’ Modrzejewski (2011-02-21 19:09:55): Auuu, I/O prawie jak w Javie… Do tego według tego artykułu (dzięki Dozzie!) 40x wolniejsze. No i te nowe problemy z UTF… @Krystian: Do czego w tym kombo służy Mayavi2? Co do liczb zmiennoprzecinkowych, chodzi mi o to:
  • Remigiusz ‘lRem’ Modrzejewski (2011-02-21 19:19:10): Wspomnę jeszcze jeden ciekawy dla naukowca pakiet (jedno wielkie kombo): http://www.sagemath.org/
  • Krystian (2011-02-21 19:37:17): @Remigiusz ‘lRem’ Modrzejewski Na czym polegają różnice to wiem, ale czy wynikają z tego jakieś konsekwencje? Pomijając ten round, który może zwyczajnie wprowadzić w błąd. BTW: Sam Python nie służy do obliczeń, do tego celu lepiej skorzystać z Numpy.
  • Remigiusz ‘lRem’ Modrzejewski (2011-02-21 21:36:33): Niby racja, da się to ładnie uzasadnić. Nie wiedziałem nawet, że zaokrąglanie w stronę parzystej również jest w IEE 754. Ale od zawsze popularniejszym sposobem jest zaokrąglanie z dala od zera, które poza IEE 754 jest też w ISO 9899. Tak więc ta zmiana jest co najmniej zadziwiająca.
  • PiotrLegnica (2011-02-21 21:58:29): To zachowanie / jest od dawna (w 2.x jako future, bo kompatybilność) w PEP 238, do floor division jest //.
  • Remigiusz ‘lRem’ Modrzejewski (2011-02-21 22:59:56):
  • Remigiusz ‘lRem’ Modrzejewski (2011-02-21 23:50:13): Ale za to nie jest tak źle już z tym I/O. Z chałupniczych testów wychodzi mi, że różnica nie jest nawet trzykrotna.
  • PiotrLegnica (2011-02-22 06:24:57): Also, 3.2 przywrócił callable, http://bugs.python.org/issue10518 Czyżby bajtkod nie był już przenośny między różnymi kompilacjami interpretera?
  • Remigiusz ‘lRem’ Modrzejewski (2011-02-22 09:18:43): A, niegłupie. Tylko trochę przy tej wersji mylące. Perełka z podlinkowanej dyskusji:
  • Game Compass (2014-09-26 06:18:37): Grandioser Artikel. Genau so schön, wie zocken an sich. So verschrieen spielen auch sei, so ist experimentell erwiesen worden, dass daddeln, ein dem Alter des Spielers angemessenes Spiel vorausgesetzt, förderlich für die Stressbewältigungskapazität des Spielers ist. Beim Spielen lernt der Spielende in höherer Frequenz zu Entscheiden und seine Handlungen zu priorisieren. Einige Videospiele vermitteln überdies auch noch Basics über Wirtschaftlichkeit und fördern die Logik des Spielers. Selbst die verschrieen Multiplayer können doch manchmal den falsch vermittelten Effekt der Abwendung von der Realität} umkehren. Der Spielende wird zwar schon vielen verkommenen Subjekten begegnen, jedoch findet der Spielende häufig just in seinem Favoriten Gleichgesinnte. Alles in allem: zocken ist genial! Ungeachtet des Games und ob PC,Konsole,Handy,etc. , Spielen ist Kultur.
  • jak najlepiej inwestowac pieniądze (2015-01-17 21:07:33): When sweating don’t be suprised if it doesn’t work every time, usually when sweating only one out of ten attempts on average will begin the sweating process.
  • jak najlepiej inwestowac pieniądze (2015-01-17 21:22:59): When sweating don’t be suprised if it doesn’t work every time, usually when sweating only one out of ten attempts on average will begin the sweating process. Some of the investors might also go into gold and silver funds because they are better diversified and better managed. The leasee must pay monthly installments until the end of the lease.
  • singing lessons london (2015-01-19 09:47:16): Terl’s boys were inspired to work even harder to honor the small part of the story they were telling and to send their own message of gratitude and a ‘break a leg’ back across the pond. ‘So-and-so is such a disappointment to her parents,’ or ‘So-and-so is such a disappointment to his fans. otherwise you may use Alum and rub it over the armpits with or while not the lemon.
  • singing lessons london (2015-01-19 09:55:46): Terl’s boys were inspired to work even harder to honor the small part of the story they were telling and to send their own message of gratitude and a ‘break a leg’ back across the pond. ‘So-and-so is such a disappointment to her parents, ' or ‘So-and-so is such a disappointment to his fans. otherwise you may use Alum and rub it over the armpits with or while not the lemon.
  • windows 8 activation key (2015-02-25 18:10:44): It’s remarkable to visit this web page and reading the views of all colleagues concerning this piece of writing, while I am also eager of getting experience.
  • best web host (2015-04-29 23:24:40): Hello there! This post could not be written much better! Looking at this article reminds me of my previous roommate! He always kept preaching about this. I am going to forward this post to him. Fairly certain he’s going to have a great read. I appreciate you for sharing!
  • therx per head (2015-05-25 09:56:50): For over 15 years Real Bookies has pph therx effectively assisted bookmakers from all over the world to take wagers from a large number of players on the pay per head time frame. Our cutting edge bookie software program and the commitment from all of our clerks, outlines people, supervisors and partners have made our price per head sportsbook solution among the fastest developing and most dependable bookmaking service agency names in the industry. Word of mouth may be the number cause new here for the rx agencies sign up at RealBookies, which usually speaks towards the high quality associated with service offered to both agents and their players. Upon signing up for the Realbookies family, you are going to receive your own personal assistant who will be there to answer any queries you may have about the company and how to grow your business using our pay per head sportsbook. Joining Realbookies will make your own operation become par plus level the playing therx per head field with the greatest online video gaming companies in the world. The gambling software you and your players will be getting may be the same from the biggest on the web sportsbooks today.
  • как сделать протеиновый коктейль (2015-05-26 02:35:21): Протеин является самой пользующейся популярностью протеиновые коктейли для роста спорт добавкой посреди культуристов, бодибилдеров. Протеиновые комплексы представляют с лица провиантскую присадку с высоким содержанием белка, сосредоточение что достигает 70–95%. Эффект протеина состоит в том, что перевариваясь в организме, протеин распадается возьми аминоксилоты, изо каких именно синтезируются белковые молекулы организма, в том числе и мышечная ткань. Аминокислоты изо протеина предупреждают поражение мускул в период интенсивных занятий и способствуют активному мышечному росту. на данный момент сывороточный протеин является самой популярной протеиновой добавкой для набора массы. Сывороточный протеин снабжает индивидуум такими неподменными аминокислотами, будто аминокислота, изолейцин и аминокислота, которые участвуют в синтезе мускульного белка опосля тяжелых физических нагрузок. Протеин снежной сыворотки, главная сочиняющая данного вида протеинов, является одним из самых значимых белков и владеет воплощенными иммунными качествами. Сообразно технологии производства и концентрации белка сывороточный созин можно разделить на два вида: концентрат сывороточного протеина и изолят протеина. Данные виды алейроновых добавок различаются друг от друга концентрацией белка и, соответственно, своей ценою. В экстракте оглавление белка доходит 80%, а в изоляте до 90-95%.
  • healthy weight loss tips after pregnancy (2015-06-16 22:23:17): Many people while attempting to lose weight should remember fondly the significance of having a healthy diet since it accelerates the process of slimming down while supplying one’s body with all the current necessary nutrient elements and vitamins any particular one should keep on together with his daily life. Losing weight and not regaining it is incredibly difficult for most people. With so many programs how we discover the engineered to be befitting for us.