During the memorable Q&A session, someone asked James Gosling (Java's inventor): "If you could do Java over again, what would you change?" "I'd leave out classes," he replied. After the laughter died down, he explained that the real problem wasn't classes per se, but rather implementation inheritance (the extends relationship). Interface inheritance (the implements relationship) is preferable. You should avoid implementation inheritance whenever possible
Ни в go, ни в rust классов нет. Никто не смеётся.
У PyPy нет конкурентов.
Вы заблуждаетесь. И cython, и numba быстрее. Я работал с numba достаточно плотно. Погуглите. А вообще бывает даже так: running-numba-on-pypy
Доказывать дальше что-либо человеку, который всех вокруг считает макаками — дело неблагодарное.
Кроме того, у меня обнаружился шкурный интерес к тому, чтобы вам это не доказывать: если вы вдруг начнёте писать PR в разные проекты, то я бы предпочёл, чтобы вот такие вещи
я просто хочу поменять смысл конструкций «{...}» и «[...]» в моем собственном коде.
если уж им (не дай бог) суждено куда-то проникнуть, оказались лучше в pypy, чем в numba. :D
Ну нету серебрянной пули, как говорил Брукс. У каждого языка есть свои плюсы, свои минусы. numba закрывает большую часть проблем, которые вы здесь обозначили (в частности, удобство тестирования, оптимизации и параллельного выполнения кода). Если вы любого человека, пишущего на питоне, считаете макакой, зачем вы вообще за него взялись? Или вы вообще всех программистов считаете макаками, и себя в том числе? ;)
У нумбы как таковой (конструкции языка) фич вполне достаточно (ну, кроме классов). Но как вы справедливо заметили, пока что она не очень хорошо сопрягается с существующими библиотеками. Если numpy достаточно хорошо интегрирована в numba, то что касается всего остального, для каждой функции надо выбирать — или совместимость или скорость: разогнанные функции не могут вызывать неразогнанные (хотя неразогнанные могут вызывать разогнанные). Но во всяком случае это гораздо удобнее чем каждый раз изобретать интерфейс между c++ и python.
Но в любом случае в 2019 году писать про оптимизацию питона и говорить, что pypy – единственная успешная библиотека по его оптимизации это по меньшей мере странно. Посмотрите бенчмарки.
Вы же сами писали, что вам сишные классы нравятся, а питоновские — нет. Ну вот здесь и есть сишные классы, а всё остальное — питоновское. Ровно как вам надо. numba активно развивается. И классы там полноценные будут со временем. Если вам надо прямо сейчас — возьмите и допишите. Всё опенсорсное.
А, ещё по schelve не ответил. Работает поверх pickle, под виндой создаёт аж три файла (.dir, .dat и .bak), из винды не может открыть файл, созданный под linux (единственный способ сделать под linux файл формата, который можно открыть под windows, — это руками создать два пустых файла!!!) и "in rare cases key collisions may cause the database to refuse updates" (!!!). Да, умеет удалять изменять и удалять объекты из файла, это конечно, здорово, но очень уж нишевое применение у него.
Очевидно, что все форматы файлов данных осветить в рамках одной статьи невозможно. Я отбирал по популярности исходя из собственного опыта, он, конечно, может отличаться от вашего. Вот, в частности, гугл трендз по yaml (синим) vs json (красным):
Про csv из коробки есть в ipynb, но действительно, можно его добавить и в общую схему.
Спасибо, это студенты меня вдохновляют! Бывает, дашь им старую, изученную со всех сторон задачу из учебника – а они возьмут и решат её лучше, чем в учебнике )
Я как раз такое задание давал на экзамене, только мы делали сетку начальных условий и со слайдерами.
Видео: www.youtube.com/watch?v=B9-sxUs-3wo.
Тоже питон, но не в браузере: pyqt, pyqtgraph, numba.
Ни в go, ни в rust классов нет. Никто не смеётся.
Вы заблуждаетесь. И cython, и numba быстрее. Я работал с numba достаточно плотно. Погуглите. А вообще бывает даже так: running-numba-on-pypy
Доказывать дальше что-либо человеку, который всех вокруг считает макаками — дело неблагодарное.
Кроме того, у меня обнаружился шкурный интерес к тому, чтобы вам это не доказывать: если вы вдруг начнёте писать PR в разные проекты, то я бы предпочёл, чтобы вот такие вещи
если уж им (не дай бог) суждено куда-то проникнуть, оказались лучше в pypy, чем в numba. :D
Ну если вы даже генераторы не осилили, то, уж конечно, с параллелизацией вам будет разобраться сложновато.
Ну нету серебрянной пули, как говорил Брукс. У каждого языка есть свои плюсы, свои минусы. numba закрывает большую часть проблем, которые вы здесь обозначили (в частности, удобство тестирования, оптимизации и параллельного выполнения кода). Если вы любого человека, пишущего на питоне, считаете макакой, зачем вы вообще за него взялись? Или вы вообще всех программистов считаете макаками, и себя в том числе? ;)
У нумбы как таковой (конструкции языка) фич вполне достаточно (ну, кроме классов). Но как вы справедливо заметили, пока что она не очень хорошо сопрягается с существующими библиотеками. Если numpy достаточно хорошо интегрирована в numba, то что касается всего остального, для каждой функции надо выбирать — или совместимость или скорость: разогнанные функции не могут вызывать неразогнанные (хотя неразогнанные могут вызывать разогнанные). Но во всяком случае это гораздо удобнее чем каждый раз изобретать интерфейс между c++ и python.
Но в любом случае в 2019 году писать про оптимизацию питона и говорить, что pypy – единственная успешная библиотека по его оптимизации это по меньшей мере странно. Посмотрите бенчмарки.
Если вам классы CPython так не нравятся, может, это и к лучшему?
Ну разумеется я имел в виду c++.
Зачем вам тогда понадобились классы в numba?
Вы же сами писали, что вам сишные классы нравятся, а питоновские — нет. Ну вот здесь и есть сишные классы, а всё остальное — питоновское. Ровно как вам надо. numba активно развивается. И классы там полноценные будут со временем. Если вам надо прямо сейчас — возьмите и допишите. Всё опенсорсное.
В numba есть вывод типов.
Если бы вы удосужились попробовать numba, вы бы с такой уверенностью не говорили про шансы у скорости выполнения.
Классы там есть. Синтаксис не весь, правда, поддерживается. Множественного наследования, в частности, нет. Но вам оно и не надо.
«Официант, во-первых, что за дрянь вы мне принесли, во-вторых, почему так мало?»
А вы посмотрите. Не особо-то он и узкоспециализированный. Там многие вещи, на которые вы сетуете, решены.
А, ещё по schelve не ответил. Работает поверх pickle, под виндой создаёт аж три файла (.dir, .dat и .bak), из винды не может открыть файл, созданный под linux (единственный способ сделать под linux файл формата, который можно открыть под windows, — это руками создать два пустых файла!!!) и "in rare cases key collisions may cause the database to refuse updates" (!!!). Да, умеет удалять изменять и удалять объекты из файла, это конечно, здорово, но очень уж нишевое применение у него.
Про csv из коробки есть в ipynb, но действительно, можно его добавить и в общую схему.
Про json text sequences не слышал, спасибо :)
Медленно, правда, он рендерит.
Видео: www.youtube.com/watch?v=B9-sxUs-3wo.
Тоже питон, но не в браузере: pyqt, pyqtgraph, numba.