Перейти к содержанию
    

Python для разработчика

Справедливости ради надо сказать, что юниксовый принцип гласит: "Программа делает что-то одно, но делает это хорошо". Это совсем не то, что вы написали.

Там же не один принцип. Про программу - да. А мы не про программу говорили. Не отношу себя к знатокам традиций UNIX, но мне попадалась мантра "There is more than one way to do it" как один из философских принципов этой темы. Например:

 

touch slon.txt
:> slon.txt

 

 

Однако, при разработке Py3, согласно этому принципу были удалены многие дублирующиеся модули и конструкции.

А, ну в этом смысле согласен, конечно - ни к чему иметь в стандартных библиотеках код, который делает одно и то же, но через различающийся интерфейс - это только запутывает пользователя. То же самое и по элементам языка. Я говорил только о способах применения языковых конструкций, тут каждый сам может выбрать себе на вкус и цвет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, питон с луной сравнивать как бы не совсем правильно.

А вот как объемлющий-расширяемый язык питон имеет преимущества - более гибок (у луны по сути один тип на все случаи),

тут не соглашусь, с метатаблицами у луа ещё посмотреть надо что там более гибкое.

несравнимо большее количество библиотек, прекрасно расширяется через С++ (так, что плюсовые объекты напрямую доступны из питона с очень хорошей производительностью - проводил замеры, т.к. нам было критично) сообщество намного шире.

тут пожалуй да, но есть ffi, swig, так что не самая большая проблема.

Т.ч. луна - встраиваемый язык, а питон - язык-манагер (фронтэнд).

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

церн вон в части задач с питона перелез:

https://mediastream.cern.ch/MediaArchive/Vi...ftime=00:13:25#

Ну, это ж специализированный тул, это скорее тот же computational notebook, а питон - язык общего назначения.

ну это не я в качестве примера Jupyter привел :)

Для широкого класса задач специализированный проиграет.

математика по сравнению с питоном класс задач может решать думаю не менее широкий.

Одно из важнейших достоинств питона состоит в том, что его код понимает большинство людей, знакомых с программированием, даже без особой подготовки.

это только пока код выглядит как

for i = 1, 10

a = b + c

а как только что-нибудь посерьёзнее, особенно если какие-нибудь учОные пишут что-нибудь для расчётов - тут всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а как только что-нибудь посерьёзнее, особенно если какие-нибудь учОные пишут что-нибудь для расчётов - тут всё.

Смотря как писать. SageMath - достаточно понятен (если понимаешь тему, в которой производятся вычисления/моделирование)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и как там, всё работает с открытыми nouveau драйверами?

или же принципиальный непримиримый линуксоид понаставил себе закрытых проприетарных блобов от нвидии для игровых приставок :)))

Естественно, блоб. Потому что нафиг покупать карту от nvidia, если нуво собираешься использовать?

 

А он (матлаб) уже научился быть многопоточным?

Уже давно. Я, правда, octave использую, но друг сидит на матлабе. Там сейчас и CUDA вовсю работает на особо числодробильных алгоритмах, которые можно хорошо распараллелить!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Конечно. Запустите расчет коэффициентов какого-нибудь фильтра или просто обмен по COM (не путать с Component object model) в отдельном потоке.

Может у вас опыт от XP, но в API WinRT все коммуникации работают под COM т.е. в своих потоках.

C# да, достойный язык, тем более странно зачем тут нужен питон. За уши притягиваете?

Пока достойных примеров, кроме как желания вывалить в опенсорс я для питона не видел.

Это чем то напоминает хайп ардуинщиков.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Имхо, самостоятельный выбор языка должен с этой (и тп) странички начинаться:

http://rosettacode.org/wiki/Keyboard_input/Keypress_check

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тут не соглашусь, с метатаблицами у луа ещё посмотреть надо что там более гибкое.

Да, всего один тип - ассоциативный массив. В питоне - это словарь. Помимо него есть ещё списки, кортежи, строки, простые типы и классы. Согласитесь, арсенал средств куда богаче.

 

тут пожалуй да, но есть ffi, swig, так что не самая большая проблема.

Cюда загляните. :) И это только один из наборов библиотек для научно-инженерных задач. Помимо этого ещё есть биндинг OpenCV (cv2), PyQt/PySide для разработки полноценных приложений. Кроме того, и стандартная библиотека питона исключительно богата и разнообразна - вплоть до таких "мелочей", как модуль парсинга аргументов (argparse).

 

ну не знаю чем тут луа хуже дергать сторонние библиотеки

Тем, что их набор гораздо беднее. Например, можете написать на Lua полноценное GUI приложение, приём без извратов, а прямым путём, как на тех же плюсах? Сомневаюсь. И дело тут не в языке как таковом, с ним всё в порядке, а существовании для этого соответствующих графических фреймворков, приспособленных под этот язык. Всё-таки Lua проектировался как встраиваемый язык, в этом его сила. Его конкурент - JavaScript. Да, на обоих языках можно писать stand-alone приложения. Но до возможностей питона этом поприще им обоим далеко - повторюсь, не по причине, что языки ущербные (нормальные языки), а по причине отсутствия соответствующего контекста для этого, который не возник из-за иной целевой направленности обоих этих языков.

 

, а вот с jit по скорости можно даже требовательные по скорости вычисления задачи решать прямо.

Ну, jit - отдельная тема. Для питона тоже есть способы увеличения производительности вычислений - от прямого расширения на С/C++ и до применения CUDA (scikit-cuda, есть по ссылке выше), включая компиляцию модулей Cython, jit и прочее.

 

Кстати, если упирать на вычисления, то тут альтернативу питону составляет скорее Julia (убийца матлаба :) ), а не Lua. Вот там нативный jit с возможностью доступа до ассемблера и встроенная в язык фича по распределению вычислений на удалённые хосты/фабрики.

 

ну это не я в качестве примера Jupyter привел :)

Ясно. В качестве вычислительного блокнота математика сильна, спору нет, это её ниша. Но в качестве языка общего назначения ей тягаться с языком общего назначения тяжело.

 

математика по сравнению с питоном класс задач может решать думаю не менее широкий.

И что, на ней можно и удобно писать утилиты командной строки работы с текстами и файлами? На ней можно и удобно писать законченные приложения? Что на ней можно делать так же легко, как и на питоне, кроме вычислений?

 

это только пока код выглядит как

for i = 1, 10

a = b + c

а как только что-нибудь посерьёзнее, особенно если какие-нибудь учОные пишут что-нибудь для расчётов - тут всё.

Код не валиден для питона. :)

 

Ну, покажите учОный код? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, почему никто не упоминает GIL (еще см. тут) в контексте этого обсуждения?

Множество людей больно наступили на эту проблему при использовании Python в многопоточных приложениях.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, покажите учОный код? :)

Можете поискать, на гитхабе есть такое. Я здесь не помощник, т.к. уже говорил — меня от одного вида пхытона тянет извергнуть съеденное накануне…

Но даже у нас в обсерватории можно 2-3 человека найти, применяющих пхытон с тем или иным успехом. Но все-таки, на первом месте по использованию у нас стоят С и С++, далее уже всякие матлабы/октавы/IDL'и/MIDAS'ы/IRAF'ы. Делаем с коллегой сейчас юниксвейную управлялку одним прибором: я написал сишные низкоуровневые утилиты, он на С++ сделал над всем этим GUI (я принципиально не лезу в GUI, т.к. это — та еще клоака: либо С++ с культяпками, либо С с говнотыками, либо мучения с OpenGL напрямую; нормального человеческого GUI-фреймворка до сих пор не существует, увы).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, почему никто не упоминает GIL (еще см. тут) в контексте этого обсуждения?

https://electronix.ru/forum/index.php?s=&am...t&p=1551144

 

Множество людей больно наступили на эту проблему при использовании Python в многопоточных приложениях.

Какого рода грабли? Пытались выжать производительность, чтобы на i7 все 12 аппаратных потоков были задействованы? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Пардон, не заметил и поиск не показал.

 

Какого рода грабли? Пытались выжать производительность, чтобы на i7 все 12 аппаратных потоков были задействованы? :)

 

На тему производительности довольно много написано и это не самая страшная проблема.

Беда была при встраивании интерпретатора в многопоточное приложение, в котором ряд функций по обработке данных дописывалось на питоне для обеспечения большей гибкости. В итоге были очень странные и непонятные падения, которые решились синхронизацией многопоточного доступа к функциям интерпретатора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На тему производительности довольно много написано и это не самая страшная проблема.

Да, хорошая переводная статья. А вот ещё одна от гуру питона. Букв немало, если неинтересно, можно сразу перематывать на заключение, где выводы. В общем, никаких чудес или фатальных трабл нет, если есть понимание темы, проблем не возникает.

 

Беда была при встраивании интерпретатора в многопоточное приложение, в котором ряд функций по обработке данных дописывалось на питоне для обеспечения большей гибкости. В итоге были очень странные и непонятные падения, которые решились синхронизацией многопоточного доступа к функциям интерпретатора.

Ну, встраивание питона - отдельная головная боль. Не очень он для встраивания годен. Язык-фронтэнд, Тут лучше "жабий скрип", луна или белка.:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может у вас опыт от XP, но в API WinRT все коммуникации работают под COM т.е. в своих потоках.

причем тут XP? :) COM-технология существует со стародавних времен.

Сделайте на лучезарном матлабе програмку с GUI, чтобы она в фоновом режиме читала данные с COM-порта и выкладывала их на график в GUI. Только без использования Parallel Computing Toolbox :)

 

C# да, достойный язык, тем более странно зачем тут нужен питон. За уши притягиваете?

Вы, кажется, так и не поняли. В моем примере на C# делаются "формы", которые потом "отливаются" в DLL. Последняя прицепляется к фремворку на Питоне, который состоит из всевозможных скриптов для измерения и обработки данных. Этот фреймворк используется на разных машинах, разными пользователями, которые могут добавлять или модифицировать скрипты. Реализовавыть это все с C# потребует гораздо больше времени и будет менее гибким решением.

 

Пока достойных примеров, кроме как желания вывалить в опенсорс я для питона не видел.

Возможно, у Вас еще не было подходящих задач. Примеров выше было приведено достаточно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, всего один тип - ассоциативный массив. В питоне - это словарь. Помимо него есть ещё списки, кортежи, строки, простые типы и классы. Согласитесь, арсенал средств куда богаче.

Тут дальше спор будет становиться всё более бессмысленным, потому что похоже что питон я знаю так же хорошо, как вы луа :)

Есть там строки, а благодаря метатаблицам в луа есть и классы, списки, кортежи, и выносить их в отдельные сущности нет особого смысла, но они там есть.

 

Cюда загляните. :) И это только один из наборов библиотек для научно-инженерных задач. Помимо этого ещё есть биндинг OpenCV (cv2), PyQt/PySide для разработки полноценных приложений. Кроме того, и стандартная библиотека питона исключительно богата и разнообразна - вплоть до таких "мелочей", как модуль парсинга аргументов (argparse).

Биндинги для openCV и Qt есть и для луа, для того чтобы звать сторонние библиотеки, питон ничем особо не лучше.

Да, стандартная библиотека у луа, мягко говоря довольно скромная, и для питона библиотек заметно больше, но у луа не настолько всё плохо. И раз в ванильные аж целых 200кБ не напихали всего-всего не значит что совсем ничего нет.

 

Тем, что их набор гораздо беднее. Например, можете написать на Lua полноценное GUI приложение, приём без извратов, а прямым путём, как на тех же плюсах? Сомневаюсь. И дело тут не в языке как таковом, с ним всё в порядке, а существовании для этого соответствующих графических фреймворков, приспособленных под этот язык. Всё-таки Lua проектировался как встраиваемый язык, в этом его сила. Его конкурент - JavaScript. Да, на обоих языках можно писать stand-alone приложения. Но до возможностей питона этом поприще им обоим далеко - повторюсь, не по причине, что языки ущербные (нормальные языки), а по причине отсутствия соответствующего контекста для этого, который не возник из-за иной целевой направленности обоих этих языков.

Для луа так же есть как и совсем простые iuplua и fltk, так и wxWidgets и Qt.

Как пример, IDE для lua на lua же написанной, https://studio.zerobrane.com/features

Да и всякие löve, corona.

А вот как будет выглядеть полноценное GUI приложение на питоне, ну чтобы его просто взял скачал и запустил обычный пользователь, да ещё и под виндами, или вообще каким-нибудь андроидом?

Ну и про нормальность javasripta это очень спорное утверждение :)

 

Ну, jit - отдельная тема. Для питона тоже есть способы увеличения производительности вычислений - от прямого расширения на С/C++ и до применения CUDA (scikit-cuda, есть по ссылке выше), включая компиляцию модулей Cython, jit и прочее.

Продолжим фаллометрию, lua-torch, terracuda

 

И что, на ней можно и удобно писать утилиты командной строки работы с текстами и файлами? На ней можно и удобно писать законченные приложения? Что на ней можно делать так же легко, как и на питоне, кроме вычислений?

Да можно там и законченные приложения, и в веб, и гуй свой какой никакой есть. приташит только свой рантайм на многие сотни МБ, впрочем как и питон.

Не то чтобы удобно, но вот облагородить какую-нибудь считалку кнопочками/окошками чтобы хоть кто-нибудь кроме автора пользоваться мог, вполне может оказаться проще, чем перетаскивать в тот же питон всю "арфметическую" часть из математики.

Но да, как замена какому-нибудь awk/sed, конечно не самая подходящая :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть там строки, а благодаря метатаблицам в луа есть и классы, списки, кортежи, и выносить их в отдельные сущности нет особого смысла, но они там есть.

Ну, самодельные костыли всё же не так удобны, безопасны и просты для понимания и использования, как встроенные в язык средства.

 

А вот как будет выглядеть полноценное GUI приложение на питоне, ну чтобы его просто взял скачал и запустил обычный пользователь, да ещё и под виндами, или вообще каким-нибудь андроидом?

Выглядеть будет обычно. Конечно, рантайм ему потребуется. У меня есть опыт только с Qt, так вот когда я запускал программу под вендой, мне достаточно было установить питон и PyQt, дальше всё запустилось без вопросов. Для венды придётся слепить инсталлятор, который установит вышеупомянутое, но инсталляторы для венды - обычное дело.

 

Ну и про нормальность javasripta это очень спорное утверждение :)

Однако на нём успешно пишут приложения (Node.js). И жабоскрипные приложения мне попадались много чаще, чем на луа.

 

Да можно там и законченные приложения, и в веб, и гуй свой какой никакой есть.

Ну, так вон народ и на Tcl лабает приложения, и объекто-ориентированные, и с гуями... Но, полагаю, вы не будете сторонником этого подхода. :)

 

Но да, как замена какому-нибудь awk/sed, конечно не самая подходящая :)

О, а я на питон как раз внимание обратил именно из-за того, что эти оба так достали при обработке многострочных текстов. Собственно, питон именно для этих случаев и начал использовать. А потом пошло-поехало - сперва простые утилиты, потом как интерактивная среда для вычислений, исследований, а потом и полноценные GUI приложения. До момента знакомства с питоном утилиты писал на С++, с тех пор исключительно на питоне.

 

Тут дальше спор будет становиться всё более бессмысленным, потому что похоже что питон я знаю так же хорошо, как вы луа :)

Согласен. :) Поэтому не буду. (Lua изучал поверхностно - исключительно с целью ковырять плагины для mc).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...