Встречаем новый революционный Питон 3.13. Питон встаёт на путь избавления от GIL. Подключают JIT технологии. У нас появляется надежда догнать и перегнать C++. Или хотя бы Rust/Go
Предыдущий: >>3284682 (OP)
Литература:
https://ln2.sync.com/dl/cf2c1d070#xq4s328t-xbbjys2z-9r6j7ss7-gf4e9dv6 <-- Книжки, новое собрание
Ещё книжки: https://yadi.sk/d/HQhhsBsq3TVRUq
Тоже книжки: https://yadi.sk/d/tArKKuQu3Kejuq
Анон, вместо того, чтобы без разметки постить код, лучше шарь его через специальные ресурсы:
https://online-python.com/ - листинги и онлайн-запуск
https://ideone.com/ - возможность постить листинги кода и онлайн-запуска, не требует регистрации
https://dumpz.org/ - можно постить листинги, не требует регистрации
https://pastebin.com/ - для листингов, регистрация не обязательна
https://goonlinetools.com/snapshot/share/ - для листингов, без регистрации, но с капчей
#######################################
Вопросы-ответы:
— С чего начать изучать питон?
У питона намного лучше официальная документация, чем у большинства других языков. Есть там и учебное пособие для начинающих: https://docs.python.org/3/tutorial/introduction.html , неофициальный перевод на русский язык: https://digitology.tech/docs/python_3/tutorial/introduction.html (для питона версии 3.8, но разницы почти нет)
https://github.com/yakimka/python_interview_questions - интересная подборка, масса разнообразных тем и вопросов, для продолжающих, всё на русском
— Какие книги считаются лучшими?
На слуху чаще всего Лутц, но там очень много воды. Ещё на слуху Марк Саммерфильд, Эл Свейгарт "Автоматизация рутинных задач с помощью python". Эти книги рекомендуют чаще всего, но книги довольно старые, а питон развивается.
— Есть у кого на примете годный курс лекций по алгоритмам? Формат лекций мне как-то ближе, нежели просто чтение книги.
МФТИшный курс, например, https://www.youtube.com/playlist?list=PLRDzFCPr95fK7tr47883DFUbm4GeOjjc0
— А как учить джангу? Нахожу книги по джанге 1.х, можно их использовать?
У джанги отличные доки (одни из лучших для пистоновских либ, имхо), почитай их для начала. Книгу по джанге можно читать даже для версий 1.x, т.к. принципы остаются теми же. Но лучше хотя бы с версии 2.0, слишком много мелких изменений в базе.
— Какие веб-фреймворки стоит учить в начале двадцатых?
Что бы не говорили, Джанго живее всех живых и умирать не собирается (и Django REST Framework), очень перспективный асинхронный FastAPI, асинхронный AioHTTP. Flask ещё где-то используется, но уже legacy. Прочие фреймворки или у нас экзотика, или это вымирающее легаси как Торнадо.
— В ньюфаг-треде написано, что нужно начинать с SICP, чтобы научиться программировать
Вот, пожалуйста, та же самая программа, но частично переработанная под язык Python: https://www.composingprograms.com/ (нужно знать ангельский или уметь пользоваться переводчиком)
— Что можно почитать/посмотреть по многопоточности/параллелизации в питоне, да и вообще в целом?
Ролик на американском языке про многопоточность и асинхронность, построение своего event loop с нуля, помогает понять, как устроена асинхронность внутри: https://www.youtube.com/watch?v=MCs5OvhV9S4
— Можно ли на питоне делать мобильные приложения?
Да, смотри на фреймворк Kivy https://en.wikipedia.org/wiki/Kivy_(framework) https://kivy.readthedocs.io но народ на него жалуется
— Как можно без лишней возни ускорить программу на питоне
1) проверь сначала свой код, алгоритмы и структуры данных. Чаще проблема здесь.
2) код можно иногда феерично ускорить, используя JIT (Just-in-Time) компиляцию. Почитай обязательно про модуль numba, он ставится через pip, и альтернативный интерпретатор PyPy.
— Дайте нормальные книжки на русском! Мы, блядь, не в америке живём
Брат, смотри книжки по ссылкам в шапке, там есть и русские. Но помни, без языка ангелов твоя жизнь проходит мимо и ты обречён быть на обочине знаний и технологий.
ps: анон, если ты вносишь изменения в шапку, оставляй ссылку на код с обновлённым исходником.
текущая шапка: https://goonlinetools.com/snapshot/code/#154ln61u1e2e5b4kfv6w8r
Он конпелируется.
Перечисли хотя бы пять.
Чтобы легко было писать скриптики, прототипы и так далее.
ЯП для не программистов.
За счёт этого и интеграции с C взлетел в среде науки, ДС.
Это было написано не чтобы задеть твоё эго, что, видимо, произошло.
Кокнретно означае, что не надо много думать про память, сборки, типы, ООП/ФП, многопоточность и так далее.
Сейчас, глядя, что индустрия внезапно не нуждается во всём этом и готова клепать на чём угодно, лишь бы дёшево на начальной фазе, пытаются уже прикрутить всё это, JIT, типы, убрать GIL, делая пародию на нормальный ЯП. С управлением завимиости по прежнему вроде хаос, но я, может быть, не следил.
Если ты считаешь себя программистов на Пайтоне - ладно. Речь не о том.
По каким критериям ты решил что питон не язык для программистов? Многопоточность - в нативных библиотеках если она там нужна. А то и вообще гпгпу.
> Мы подумали о слоях нашего приложения, для каждого слоя создали отдельное место, в нашем случае Python-модуль, но впоследствии можно расширить до Python-пакета, и теперь будем создавать функции, в которые ляжет бизнес-логика нашего приложения.
А вы подумали? С кем надо перепасть Как вообще научиться думать в эту сторону, учитывая, что в школе такому не учат?
тем более, что он не сказал, что питон не для программистов, было - для не программистов. не одно и то же блять.
Где?
Java была упрощением C++. C# - Java от MS
Эта грань условна, но эти языки тянут на полноценные. В одну кучу с JS они точно не попадают.
Один из этих языков, в зависимости от области ИТ.
Ну и то, если язык не основной, то необязательно экспертно. Как Bash и подобные технологии.
Еще раз спрашиваю: чем питон неполноценный?
Как мне асинхронную программу запустить из несинхронного кода? Мне нужно в одном цикле (пикрил) обрабатывать ввод в терминале а в другом там тяжелый обсчет и вот это все и да он может быть прерван по команде пользователя, как в ffmpeg короче реализовано.
Ввод то я запилил, а вот с асинхронным запуском сасай, если завернуть код в асинхронную функцию то и запустить через asyncio.run(main()) то обработка консоли естественно не будет работать. Почему так по ублюдочному реализованы асинки? как можно изъебнутся чтоб это приодолеть? Не хочется все это реализовывать на сишке.
Блять ебучее питоновое поделие, специально его взял чтоб избежать всего этого но хуй
Это точно скриптовый язык с джитом или это декларативная залупа с синтаксисом для компилятора?
Что это блять за хуйня почему асинхронный код надо запускать и дожидаться как обычный, какой тогда смысл в такой асинхронщине что за ебанутый мудак его реализовал.
Ты троллишь тупостью уже второй тред подряд?
>ой эвент луп блокирует почему так
Ну вы посмотрите на него!
>как можно изъебнутся
Можно повесить всё на один эвент луп, как подобает. Много блокирующего кода одновременно выполняться при этом всё ещё не будет.
Таски какие-то, блядь. Ты вообще понимаешь, что такое async I/O?
Буквально первый раз зашел выяснить почему асинхронные функции в пистоне запускаются фактически вовремя await с ожиданием результата, что это за асинхронщина как этим пользоваться?
Это что то уровня
В других языках (js, qt, да даже сишные асинхронные функции из состава mpv) запуск асинхронной функции означает что ты фактически ее запустил а результат будет когда нибудь потом, тебе на промис/future объект скинут потом. И только когда у нас дальнейшее исполнение зависит от результата используется await что бы его дождаться.
В пистонище надо юзать какие то конструкции для запуска асинхронного кода прям как в qt, но при этом результат не как в qt - QtConcurrent.run() ничего не останавливает а asincio.run() loop.run_forever() все нахуй останавливает пока "асинхронные" функции не отработают, причем если я их две создал они будут поочередно-последовательно выполнины, где тут асинхронщина? Чем это отличается от обычного последовательного кода?
>Ты вообще понимаешь, что такое async I/O?
По идее io это чтение/запись в какое то устройство (не в память), например в фаил, но поскольку в петухоне какое то свое понимание всего, я уже не уверен
>>28680
Я уже убрал все в класс и асинхронные методы и запускаю асинхронный main, результат - кольца в двух асинхронных методах выполняются поочередно, сначала один отработает до завершения потом второй.
Мне нужно вот это:
https://stackoverflow.com/questions/31623194/asyncio-two-loops-for-different-i-o-tasks
но оно не работает, возможно причина в stdin.read() который все жестко блокирует/останавливает, но как бы а асинхронщина на что?
Конкуренция автоматом подразумевает асинхронность, в обычном последовательном коде никакой конкуренции априори быть не может.
Есть еще что пиздануть не по делу?
Или что?
>По идее io это чтение/запись в какое то устройство (не в память), например в фаил
И почему ты решил, что либа с названием "asyncio" поможет тебе в параллельном одновременном выполнении блокирующего кода?
>Мне нужно вот это
Первый же ответ:
>The whole point of asyncio is that you can run multiple thousands of I/O-heavy tasks concurrently, so you don't need Threads at all, this is exactly what asyncio is made for.
>asyncio will not make simple blocking Python functions suddenly "async".
>возможно причина в stdin.read()
Скорее всего, ведь он блокирующий наверное; я 100 лет не писал на питухоне.
А вообще за всю историю питухона простого и понятного эвент лупа ни один питонодебил так и не смог сделать, о чём ещё в прошлом треде говорилось. Почему ты выбрал именно питухон?
Про GIL почитай, дегенерат. Узнаешь много нового.
А что сложного в питухоновском лупе? То что ты должен явно завернуть main в event_loop? JS этого не требует (потому что он изначально разрабатывался вокруг async операций), но все остальное там плюс-минус тоже самое.
CPU bound что в питухоне, что в js блокируют поток. IO Bound не блокируют. Если хочешь сделать аналог new Promise() - заверни задачу в таск или используй тредпул.
Че сложного то?
>И почему ты решил, что либа с названием "asyncio" поможет тебе в параллельном одновременном выполнении блокирующего кода?
Так изначально мной предполагалось что блокирующий код будет в основном синхронном потоке а другой цикл будет выполняться асинхронно, не важно в одном треде или в разных, там в одном цикле есть sleep(N) а другой ждет пока что то в stdin упадет, и вполне есть свободное время выполнять оба как в одном потоке так и в разных.
Но так естественно не получается нельзя из синхронного кода запустить асинхронный без ожидания, надо типа создавать два асинхронных и запускать, но и так тоже не работает циклы все равно запускаются по очереди и один ждет пока закончится другой. Не важно в каком порядке - даже если первый запущен тот что без stdin.read() он крутится бесконечно пока его не грохнешь, второй с обработкой ввода не запускается.
Питон потому, что нужен просто скрипт без компиляния и с системной обвязкой, из аналогов тоько руби наверное.
Горит от того, что теперь любой мимокрок через полгода-год обучения может тоже программировать и получать за это бабки? Уже не чувствуешь себя настолько элитой? Смирись с реальностью, браточек.
1) создаем залупу
2) назначаем залупу "обработчиком событий"
3) вызываем асинхронную функцию -> получаем объект@"корутину"
4) создаем с ней таск
5) добавляем таск в залупу
6) запускаем залупу
7) синхронно ждем пока там все закончится
Я бы понял если бы это был си:
int main() {
_ auto loop = acio.new_event_loop();
/ .... /
_ loop.run_forever(); // ждем что бы не произошло выхода
_ return 0;
}
но питон же рантайм язык, у него процедуры контекст не умирают после выхода, что за хуйня блять
>ждем что бы не произошло выхода
А ивенты будет Пушкин обрабатывать? Название run_forever тебе ни о чем не говорит? Ты запускаешь ивент луп, он должен быть, пока есть события для обработки, от корутин или тасок.
Читай Мэттью Фаулер - Asyncio и конкурентное программирование на Python. Там все паттерны, которые тебе нужны
У пистона есть рантайм, который модули динамически загружает/выгружает мусор собирает итд итп.
>Читай Мэттью Фаулер - Asyncio и конкурентное программирование на Python.
кек
Рантайм мусор собирает, но дескрипторы от ввода-вывода в селекте сам по себе не проверяет, это надо в коде делать. Кому-то асик-авейт не уперся, он мультитредингом или мультипроцессингом пользуется, зачем им ивенлуп в питон встроенный? Питон не нода чтобы вокруг ивент лупа быть построенным.
async def main():
- task = asyncio.create_task(delay(10))
- try:
- - result = await asyncio.wait_for(asyncio.shield(task), 2)
- - print(result)
- except TimeoutError:
- - print("Task took longer than five seconds, it will finish soon!")
- - result = await task
- - print(result)
asyncio.run(main())
ожидаемо манялогика которую непонятно как совместить с системным программированием.
Проблема подобных примеров в том, что они демонстрируют работу asyncio, но не дают понимания как это применяется на самом деле.
JS и Dart работают точно так же, ты как-будто никогда асинхронных языков не видел. Только они прячут луп под капот, потому что иначе они не умеют. Но в пайтоне луп необязателен, никто не запрещает тебе создавать треды и джоинить их.
Все что тебе надо сделать - создать луп одной строчкой asyncio.run() и просто запускать асинхронные функции из main и его стека функций. Все.
Хочешь промисы-фьючеры? Ну заверни тред с IO Bound в таск, тебе же дали блять to_thread(). Хочешь дождаться выполнения всех задач как в Promise.all? Ну используй gather. Не хочешь дожидаться вообще? Запусти таск без await и пусть он сам все разруливает. Что тебе не так не пойму.
>>28950
Так же как в JS. Если операция IO Bound - завернул в таск и погнал. Посмотри ради интереса как requests можно использовать асинхронно, не прибегая к помощи aiohttp.
А если тебе байтоебствовать надо и математику свою обсчитывать то ты наебался в тот самый момент как пришел в пайтон. Тут продукты кабанам пишут, а не токенайзеры с компиляторами.
>не нода чтобы вокруг ивент лупа быть построенным
Ну ладно это хуй с ним, мне не привыкать, быть было бы еще здорово, если бы эту хуйню еще и предоставили в виде библиотеки для си, но это мечты мечты.
Короче опытным путем было установлено что вот так программы работают асинхронно: кольцо в speedhack получает время, печатает после чего встает на sleep(N) управление передается на второе кольцо и там уже все встает на на ожидании stdin.read() и уже обратно не возвращается.
что интересно если не создавать таски а просто сделать:
task2 = obj_hack.speedhack(s,x)
task1 = obj_hack.keyhook() # асинхронные методы возвращающие корутины
await task2
await task1
то выполняться будет синхронно-последовательно 2-1, то есть бесконечный цикл в task2 будет вращаться бесконечно несмотря на наличие асинхронного sleep
Короче накрутили@наворотили какой то хуеты, которая непонятно как реализована, и непонятно для чего предназначена, но есть покупайте книжку фильки митюхина там все объяснят.
Мне кажется ты занимаешься какой-то хуйней. Тебе за многопоточностью с постоянными циклами для опроса клавиатуры лучше в Go идти. Вот там будешь как дома, хуярить свои stdin/stdout в отдельном треде, ловить это через каналы и исполнять в другом треде.
>то есть бесконечный цикл в task2 будет вращаться бесконечно несмотря на наличие асинхронного sleep
А ты чего ожидал? Await на то и await что дожидается исполнения функции и return'а. Если у тебя там бесконечный цикл то схуяли ты решил что начнется ожидание следующего таска?
В треде или процессе запускай, если тебе надо параллельное исполнение.
Если task1 task2 голые корутины, то будет последовательно эвейтится, если это таски, то возвращятся результат будет последовательно, а код в тасках выполнятся конкурентно. Конкурентно не значит паралельно. Это значит что пока одно таска ждет ио, то выполняется код другой таски.
>и там уже все встает на на ожидании stdin.read()
Потому что это блокирующее говно с while true под капотом, которое ничего не знает про asyncio. Тебе же сказали.
так в питоне await обязателен, без него функция даже не стартует.
ну и в общем все как >>29021 описал, фактически с тасками await-ы выполняются конкурентно, то есть пока в одном бесконечном цикле все остановилось на ожидании (у меня там таймер дожидается ~250 миллисекунд от системных часов), то в это время поднимается другой таск а в нем из за чтения с блокировкой уже всё. А привычной асинхронщины в петухоне нет вообще.
Мультитреды избыточны, я думал так: пока в основном цикле все уходит в сон, лезем читать stdin что туда нападало, вычитываем обрабатываем, выставляем флаги, возвращаемся и в зависимости от флагов либо завершаемся либо еще что-то
>>29021
>Это значит что пока одно таска ждет ио, то выполняется код другой таски.
А вот хуй, чтение файла или stdin (как в моем случае) блокирует поток и сасай кудасай
работает только с заурядным кодом
>>29009
Go надо компилировать, да еще и требует что бы Go барахло было в наличии, этож совсем некомильфо
Так и я сразу написал что "всё" и спектакль окончен
Что делать то? Писать свою асинхронную реализацию stdin.read(), это вообще возможно?
Тебе что надо? В отдельном потоке считывать данные с stdin и передавать в основной поток выполнения? Если да, то тебе вообще асинки не нужны, тебе нужны треды и процессы.
>А вот хуй, чтение файла или stdin (как в моем случае) блокирует поток и сасай кудасай
Естественно таска дожна содержать await для чтения
Для блокирующего ио используй или
ThreadPoolExecutor и loop.run_in_executor если без сторонних либ
или либы для асинхронного чтения файлов
> так в питоне await обязателен, без него функция даже не стартует.
Схуяли обязателен? Ты просто запускаешь таск и он сразу начинает исполняться. Точно так же как работает new Promise() в JS. Если тебе надо дождаться и получить результат выполнения - вот тогда ты уже используешь await.
> Go надо компилировать, да еще и требует что бы Go барахло было в наличии, этож совсем некомильфо
Где требует? Для разработки или для запуска? Для разработки у тебя любой язык будет требовать: что clang, что петухон, что голенг.
А вот для запуска нихуя тебе не надо будет кроме операционной системы. Ты просто получишь бинарник, который сможешь запустить как тебе удобно.
Думается мне что ты просто шизофренник-долбоеб, который занимается непойми чем.
> модули как в го подключаются? Как включения исходных файлов или динамически?
Статически скорее. Ближе к тому как c (хотя ты можешь исполнить функцию инциализации модуля во время подключения), но в рантайме ты уже не подключишь модули.
Хз зачем тебе это правда надо.
тык бля у меня и так принтхеловорд по сути.
Нихуя себе, все получилось.
Все в одном потоке асинхронно, stdin читает keyhook в stdout пишет сообщения speedhack тоже асинхронно вместо print.
Единственное
termios.tcsetattr(ifd_attrs, termios.TCSADRAIN, old_setts)
выпадал с ошибкой I/O (как я понимаю stdio закрыт или что-то такое) вне асинхронной функции с переносом ошибка пропала, либо она просто из асинхронной программы не вываливается, надо бы разобраться.
если пользователь уснет на кнопке P второй поток не будет сходить с ума проверяя условие которое меняется каждые 10 миллисекунд, тем более при его чтении/записи нет локов.
>По каким критериям ты решил что питон не язык для программистов?
Гвидо сам так говорил, что создавал язык для не-программистов.
Правда когда питон взлетел, влезли программисты, добавили кучу индустриальной хрени, технологий, всё усложнили. В C++ спасибо не превратили, то нынешний питон совсем не детский, не программист его нормально не вытянет.
>Дата сатанисту дохуя математики знать надо
Если хочешь понимать как все работает, то да, а если просто гиперпараметры теребонькать то нет.
В целом поддвачну. Но я видел смешное:
> Давай накидаем по-быстрому прототип на Пистоне, а потом - перепишем для пущей скорости.
> Ух, получилось ничёшно, а под нагрузкой как?
> Вау.
> Оставляйте на питоне, нахуй тратить время на переписывание, если оно итак хорошо работает.
Иногда, правда, стоит проводится профилирование и, может быть, вынести узкие места.
>>28085
>Один из этих языков, в зависимости от области ИТ.
Я лично считаю, что Питон обязателен длч каждого хотя бы из-за того, что он приучает следить за отступами.
Был у меня печальный опыт конфигурирования систем с логикой, описанной на каких-нибудь своих языках без IDE. Сколько лучей любви и нежности я посылал товарищу, за которым приходилось расставлять табы. 800+ строк даже без подсветки синтаксиса и вообще хуй разберёшь, где заканчивается ода вложенность и начинается другая потому что там не то что отступы (он их ВООБЩЕ, SUKA, НЕ ИСПОЛЬЗОВАЛ) - даже переносы строк были поставлены как повезёт (конец нескольких блоков на одной строке? да постоянно!).
>>28087
>как башодрисню можно помнить
>>28093
> в Линупсе, то Баш просто необходим.
Как человек, который на Баше делал реально интересные вещи ответственно заявляю: даже админы его знают поверхностно. В основном потому что если нужны вещи, требующие хитрых финтов - проще уже взять Перл или Питон.
Мне пришлось его освоить из-за GitLab CI. И я рад, но в работе админа это не так уж полезно.
>>29083
> модули как в го подключаются?
Зависит от флагов сборки.
>не программист его нормально не вытянет.
Это если глубоко разбираться - некоторые вещи сделаны настолько отвратительно и неинтуитивно, что не всякий программист разберётся. Для написания портянок а-ля for x in y: eat_this(libaname.dostuff(x, foo='bar')) всякими далёкими от программирования АНАЛИТИКАМИ это всё ещё сильно лучше, чем перл или ш.
>проще уже взять Перл или Питон
Проще, но все системные скрипты на Баше
>ответственно заявляю: даже админы его знают поверхностно
Видел старого пердуна виндового админа, так он двумя указательными пальцами печатал и без мышки впадал в ступор.
>Проще, но все системные скрипты на Баше
Нет, конечно. На питоне тоже делают, кроме того чисто скриптами делать моветон, сейчас активнее используют инструменты вроде ансибла, к слову на питоне написанном
Всё-равно эникейщик.
>>29389
>все системные скрипты на Баше
Ты системных скриптов не видел?
Типа:
> head -1 $(which apt-add-repository)
> #!/usr/bin/python3
И так можно много с чем сделать. На самом деле почти всё, что выполняется в системе это или скомпилированный не важно из чего бинарник или Питон (Перл как-то вышел из моды до того, как я им проникся).
Раньше можно было хотя бы говорить про SysV init scripts, но те времена давно прошли, как бы кто к этому ни относился.
Я, например, негативно. Политика системд по вытеснению всего и вся бесит.
Я вот не вдуплюсь в суть твоих претензий. На нем не пишут программисты? Или на нем не могут писать непрограммисты? И то и то пиздеж.
>На нем не пишут программисты?
Нет. Зачем программисту писать на питухоне, если даже на баше писать удобнее?
Свыня, портянки на баше сжимаются в несколько раз, становятся читаемее в разы и не срут коксом от пробелов в имени файла.
а мне нравится системд, в кои то веки настоящее решение для десктопа.
соглашусь с тем что на сервере или в эмбедщине/роутере он нахуй не нужон, инит-скрипты гораздо более предпочтительное решение, но не разделяю плохого мнения о том что системд слишком сильно завязан на линукс, слишком много на себя берет и на него слишком сильно завязаны DE.
Ну не получается нормальный десктоп на инитскриптах, нужны сервисы (в данном случае демоны root/user уровней как в макосном launchd) которые позволяют непривелигированным программам получить доступ к функциям доступным только в привелигированном режиме - примонтировать/отмонтировать устройство, перезагрузить пк, итд итп.
Понятно что станку на предприятии это не нужно, может быть даже не нужно тонким клиентам в каком нибудь классе или техподдержке, но на десктопе алены с твича запрашивать права на каждый чих или делать это через отваливающиеся костыли, как раньше было это не айс и сдерживает продвижение жнулинуксов в этой области.
>Ну не получается нормальный десктоп на инитскриптах, нужны сервисы (в данном случае демоны root/user уровней как в макосном launchd) которые позволяют непривелигированным программам получить доступ к функциям доступным только в привелигированном режиме - примонтировать/отмонтировать устройство, перезагрузить пк, итд итп.
Да, в этом работа системы инициализации. Например, «Апстарт» был системой инициализации. Замечательной. Но «Системд» — это уже давно монолитный монстр с гигатоннами своего ненужного кода, от своих бинарных логов (дважды фэйл) до своей системы контейнеризации. Это НЕ система инициализации. Это квазисистема управления системой. Если бы они смогли, они бы ещё и пакетный менеджер свой зашили бы.
Есть и другие претензии, но мы не на той доске, чтобы в них погружаться. Я лично просто держу в голове, что такими темпами скоро придётся переезжать на «Фряху».
>>29765
Сильно сомневаюсь. Хотя я и приводил выше объяснение: если что-то становится неудобным для баша — в ход идёт Питон. Спермачей, способных написать хоть что-то на ебучей ракушке, вообще полтора анонима. Я с ним знаком не понаслышке, и это пиздец, какой он кривой и контринтуитивный.
Но главная проблема в том, что пс — это шелл без задач. С его помощью можно очень ограниченно рулить локалхостом, но на этом всё заканчивается.
Для всех, кто хочет оценить «крутость» повершелла: в конце 10-х до майков дошло, что гуй на сервере неуместен, и они выпустили линейку серверных систем с суффиксом core с ракушкой для манипнипуляций (эх, хотел бы я узнать, какой процент виндовых серверов реально рулится из консоли в эти годы).
В итоге, правда, это выглядело откровенно смешно: это не была консольная система, повершелл работал В ОКНЕ, но самое ржачное, что в Server Core оставили ДВЕ гуёвые программы. Эмулятор терминала. И БЛОКНОТ. Блокнот, сука! Потому что в ебучей ракушке нельзя нормально поправить текстовый файл. Для этого просто нет инструментов.
Справедливости для: в поше есть 1 (ОДНА) реально хорошая штука: объектный пайп, благодаря которому всякие таблички от СОВМЕСТИМЫХ программ выводятся, сортируются и фильтруются намного удобнее: фактически cut + sort + uniq можно сделать одной дополнительной командой. Это не ультимативная киллер-фича, но это удобно. Впрочем, как я уже говорил, он настолько беззадачный, что это интересно, но не приносит реальной пользы.
>Ну не получается нормальный десктоп на инитскриптах, нужны сервисы (в данном случае демоны root/user уровней как в макосном launchd) которые позволяют непривелигированным программам получить доступ к функциям доступным только в привелигированном режиме - примонтировать/отмонтировать устройство, перезагрузить пк, итд итп.
Да, в этом работа системы инициализации. Например, «Апстарт» был системой инициализации. Замечательной. Но «Системд» — это уже давно монолитный монстр с гигатоннами своего ненужного кода, от своих бинарных логов (дважды фэйл) до своей системы контейнеризации. Это НЕ система инициализации. Это квазисистема управления системой. Если бы они смогли, они бы ещё и пакетный менеджер свой зашили бы.
Есть и другие претензии, но мы не на той доске, чтобы в них погружаться. Я лично просто держу в голове, что такими темпами скоро придётся переезжать на «Фряху».
>>29765
Сильно сомневаюсь. Хотя я и приводил выше объяснение: если что-то становится неудобным для баша — в ход идёт Питон. Спермачей, способных написать хоть что-то на ебучей ракушке, вообще полтора анонима. Я с ним знаком не понаслышке, и это пиздец, какой он кривой и контринтуитивный.
Но главная проблема в том, что пс — это шелл без задач. С его помощью можно очень ограниченно рулить локалхостом, но на этом всё заканчивается.
Для всех, кто хочет оценить «крутость» повершелла: в конце 10-х до майков дошло, что гуй на сервере неуместен, и они выпустили линейку серверных систем с суффиксом core с ракушкой для манипнипуляций (эх, хотел бы я узнать, какой процент виндовых серверов реально рулится из консоли в эти годы).
В итоге, правда, это выглядело откровенно смешно: это не была консольная система, повершелл работал В ОКНЕ, но самое ржачное, что в Server Core оставили ДВЕ гуёвые программы. Эмулятор терминала. И БЛОКНОТ. Блокнот, сука! Потому что в ебучей ракушке нельзя нормально поправить текстовый файл. Для этого просто нет инструментов.
Справедливости для: в поше есть 1 (ОДНА) реально хорошая штука: объектный пайп, благодаря которому всякие таблички от СОВМЕСТИМЫХ программ выводятся, сортируются и фильтруются намного удобнее: фактически cut + sort + uniq можно сделать одной дополнительной командой. Это не ультимативная киллер-фича, но это удобно. Впрочем, как я уже говорил, он настолько беззадачный, что это интересно, но не приносит реальной пользы.
Не ну про уровень его кода я наслышан, с этим не спорю, я про то что работает выполняет задачу.
А так ну надо эксплуатировать нарабатывать хороший опыт, потом сообществом форкать и убирать все говно, ну или в тихую пилить аналог, runit например
зачем перепиливать велосипед?
СистемД даёт немерянную массу возможностей, зависимости, разные типы задач, функционал крона, ограничители прав и дохуя всего ещё.
Ради чего перепиливать, делая кастрированный вариант?
Но это уже НЕ система инициализации (та, что была, была далека от идеала, но полностью справлялась с задачами). И это ёбаный монолит, заменяющий то, что хорошо работает, на свои аналоги, какими бы они ни были. И тебя вынуждают принять их все сразу, без возможности выбора.
Это хотя бы язык программирования, а не аналог комманд кома. На баше форыч по файлам со спец символами это уже событие, блядь.
Причем тут рулить? Я его и использовал для файловых задач, иногда для админства.
> СОВМЕСТИМЫХ
Шо-шо?
Выхлоп можно еще в жсон сохранить, ты охуеешь!
> Справедливости для: в поше есть 1 (ОДНА) реально хорошая штука: объектный пайп,
Киллер фича. Почему прыщепидоры в это не могут?
>>30078
Твой системд умеет о в объектый пайп?
>по файлам со спец символами
Спермоблядский ламер-гуманитариеблядок с двузначным IQ не осилил кавычки, ору.
>кококо язык ПОГРОМИРОВАНИЯ
Даун, спокуха, баш тоже полный по тьюрингу и прекрасно позволяет программировать всем, кроме спермодебилов-неосиляторов и прочих немогущих жить без джавапидорского классового бойлерплейта (или какие у тебя там критерии "пок пок настоящево языка ПОГРОМИРОВАНИЯ"). Иди переустанови шипдошс и прекрати позориться.
> Это хотя бы язык программирования
Это неудобная всратая говнина.
> На баше форыч по файлам со спец символами это уже событие, блядь.
Ты, видимо, видел только
> for i in $(ls folder)
Потому что В ЭТОМ СЛУЧАЕ обходится результат ls. А вот если у тебя
> for i in ./folder/*
То всё отрабатывает как должно. С абсолютном соответствии с философией языка. Только кавычки расставить не забудь. То, что Баш позволяет обращаться с ними весьма вольно не значит, что они вообще ненужны.
Об этом, кстати, сразу кричит шеллчек даже если ты не сделаешь, как надо:
https://www.shellcheck.net/wiki/SC2045
> Я его и использовал для файловых задач, иногда для админства.
И это всё, что он умеет и может, пытаться выжать из него больше — глупо, пс не справится. На баше же иногда извращаются и делают сложное, но это чисто по фану.
>Шо-шо?
То. Если у тебя рандомная консольная тулза, которая не возвращает объект — ты сосёшь. Например, если какой-нибудь kubectl возвращает текст, и хоть усрись — ты не получишь нормального опыта с ним в майковском недоразумении, потому что он его не обработает штатными инструментами, а других у тебя нет.
> Почему Баш не делает объектный пайп?
Потому что он справляется без этого. И в соответствии с идеологией.
Для тех, кому надо, есть другие инструменты, например ksh (отсюда твоё недоразумение и попёрло фичу, кстати) или squirrel shell, но, как показывает практика, это тупо не нужно в том виде, в котором есть.
> for i in ./folder/*
> То всё отрабатывает как должно. С абсолютном соответствии с философией языка. Только кавычки расставить не забудь. То, что Баш позволяет обращаться с ними весьма вольно не значит, что они вообще ненужны.
> Об этом, кстати, сразу кричит шеллчек даже если ты не сделаешь, как надо:
То есть эту ебань как-то нужно готовить? А в помершелле все работает как надо изкоробки.
Почему же тогда прыщеговно валится от пробелов в пути? Сигвин лучше даже не пытаться ставить в program files.
> И это всё, что он умеет и может, пытаться выжать из него больше — глупо, пс не справится. На баше же иногда извращаются и делают сложное, но это чисто по фану.
Мне похую, я не проф админ. На этот счет не знаю.
> То. Если у тебя рандомная консольная тулза, которая не возвращает объект — ты сосёшь. Например, если какой-нибудь kubectl возвращает текст, и хоть усрись — ты не получишь нормального опыта с ним в майковском недоразумении, потому что он его не обработает штатными инструментами, а других у тебя нет.
Так помершелл это не только powershell.exe, это еще и куча скриптлетов на все случаи жизни. А на прыщах даже такого нет.
> Потому что он справляется без этого. И в соответствии с идеологией.
> Для тех, кому надо, есть другие инструменты, например ksh (отсюда твоё недоразумение и попёрло фичу, кстати) или squirrel shell, но, как показывает практика, это тупо не нужно в том виде, в котором есть.
А, все понял, нинужно, кококо.
Я лучше на питоне писать буду чем на этом говнище. У меня после питона просто мозги не работают в этом направлении.
>>30103
> Спермоблядский ламер-гуманитариеблядок с двузначным IQ не осилил кавычки, ору.
А зачем их осиливать, прыщепидор? В cmd тоже какие-то кавычки есть, в рот я его ебал.
> полный по тьюрингу и
Это критерий языка программирования? Сколько таких полных по хуюрингу никому не нужные валяются?
>А на прыщах даже такого нет.
Можно сделать.
>program files
Спермоблядок, ты же понимаешь, что программисты не пользуются виндусом и не будут ничего ставить в програм файлс? Виндус - это прошивка, изначально ориентированная на неграмотных тётей сраков и прочих потребителей, которые не разбираются в сложных компуктерах и в лучшем случае обучены нажимать полторы кнопки, как обезьянки.
>А зачем их осиливать
Не знаю, я не прилагал для этого усилий и всё понял за минуту или вроде того. Ты просто тупая спермоблядь с айсикью ниже 80, раз такие элементарные вещи вызывают у тебя трудности.
>никому не нужные
То-то спермоблядский помершелл всем охуеть как нужен, лол. Видимо, поэтому все спермобляди-"разработчики" ануса не пытаются пропихивать везде помершелл вместо ужасного пердольного убожества, а ставят СИГВИН и пытаются запустить там баш, после чего ноют, что тот, видите ли, недостаточно инклюзивен и плохо учитывает культурные особенности небинарных спермобляд_ей со СПЕЦСИМВОЛАМИ в именах файлов.
> Можно сделать.
Забыл добавить в принципе
> Спермоблядок, ты же понимаешь, что программисты не пользуются виндусом и не будут ничего ставить в програм файлс? Виндус - это прошивка, изначально ориентированная на неграмотных тётей сраков и прочих потребителей, которые не разбираются в сложных компуктерах и в лучшем случае обучены нажимать полторы кнопки, как обезьянки.
Ебать дебил 😀 Не видел ни одного программиста на прыщах.
> Не знаю, я не прилагал для этого усилий и всё понял за минуту или вроде того. Ты просто тупая спермоблядь с айсикью ниже 80, раз такие элементарные вещи вызывают у тебя трудности.
Зачем осиливать что-то что уже за тебя осилили, пожиратель мозолек?
> спермобляди-"разработчики" ануса
Гомофурри с книжкой про перл.жпг
> а ставят СИГВИН
Сигвин ставят уж точно не ради баша.
Прыщедолбоеб, объясни, если баш позволяет работать с спецсимволами в именах файлов, почему прыщеговно не работает в пути с пробелами, а помершелл работает всегда, если только скрипт не прыщеблядь писала?
>Не видел ни одного программиста
Кто бы сомневался. Хули взять с тебя, спермохлёба Васяна, самого крутого прогера пхп на раёне.
>Прыщедолбоеб, объясни
Спермодолбоеб, объясни, если помершел такой охуенный ЯЗЫК ПРОГРАММИРОВАНИЯ, почему на нём никто ничего не программирует, а на баше дохуя всего написано и миллионы людей пользуются им каждый день?
>Так помершелл это не только powershell.exe, это еще и куча скриптлетов на все случаи жизни. А на прыщах даже такого нет.
На прыщах есть нормальные программы на си, плюсах, питоне, руби, ноде которые принимают аргументы от юниксшела и туда же возвращают. Помершел как я понимаю это вещь в себе как джава-аплеты, майкрософт наверное для этого это все и высрала, хотела аналог джавы, они вообще всему аналог пытаются высрать свои плюсы, свои компиляторы, своя джава (дотнет) и даже свой джаваскрипт (ака тейпскрипт) о котором никто не просил.
Видел на винде и макеч на прыщах почти не видел. Пшел нахуй.
> почему на нём никто ничего не программирует,
Как погодка в прыщемирке?
>>30486
> На прыщах есть нормальные программы на си, плюсах, питоне, руби, ноде которые принимают аргументы от юниксшела и туда же возвращают.
Это как?
Выше написано, помершелл - это 1) шелл ближе к питону чем к строковым ЯП вроде бат файлов 2) в пайпе объекты, а не текст как в 80-х. Потыкай хелловелд и назови прыщеаналог.
https://youtu.be/tc4ROCJYbm0
За 50 лет ничего не поменялось?
У меня к системд только одна претензия, процесс создания юнита и его старта занимает порой аж 1..3 секунд на серверах с большим количеством железа (не твой сервер под кроватью, да). Все упирается в тормоза systemctl daemon-reload , который долго генерит какую-то херню , а в последних убунтах он ещё перегружает конфиги netplan. Блять вы серьезно? Мне просто надо положить юнит файл сервиса и его стартануть.. тот же Runit это делает за 0 секунд. Поэтому приходится извращаться с созданием сервисов на лету при помощи systemd-run. Но это говно то ещё.
>шелл ближе к питону чем к строковым ЯП
>объекты. а не текст как в 80-х
ты живешь в каком то своем выдуманном мире.
какие нахуй объекты какой строковый яп че несет
Да это вообще пиздец полный, проигрываю с факпак/снап-дебилов, у которых системд в рантайме ссылки и ассоциацию файлов генерирует и все это дико тормозит
Как такую ебалу можно на серьезных щах продвигать как средство дистрибуции приложений.
Я тыкал, нужен был ноджс на винде.
Он срал какими то красными и желтыми стенами текста, я вообще не понял как это работает. Может быть из за того что винда в виртуалке была, хз.
Не сомневаюсь что оно как редактор текста emacs - может все, кроме редактирования текста настройки рабочего окружения и запуска программ.
Ну и да ничего не установил, ноджс ни даже помоему этот самый менеджер пакетов шоколатели нормально не работал, вчитываться в эти стены текста которые он там высирает небыло никакого желания учить скриптовый язык с ооп что бы исправить чье то говно ставить пакеты для разработки тем более.
Винда для разработки все еще не готова, так что нахуй.
Так менеджер пакетов написан на том самом помершел скрипте. Объектно-ориентированном, революционере.
Или на что ты дергаешь я не понял на иконку приложения что ли?
Что именно в нем тыкать?
Какое место ты находишь тут самым привлекательным? куда хочется непременно ввести команды или что вы туда вводите. Проясни
дык это не мое, у меня красного текста было больше, А тут всего лишь написано что какая то политика где то не включена. Если ебля с настройками политики и подключением неподключенного из коробки функционала, с постоянным гуглением это то на что у виндовз-даунов шишка колом, то в cmake такого порно полно, по крайней мере если брать старые версии
> Если ебля с настройками политики и подключением неподключенного из коробки функционала, с постоянным гуглением
Нету такого. Cmake тут каким концом?
>ПС ЦЕ:\\\ШИПДОШС\систем32> И"ЦЕ:\\\Програм Файлс\\\My Hello World.ps123"
Это и есть бест практисы того самого охуенно удобного ЯЗЫКА ПОГРОМИРОВАНИЯ, наголову превосходящего пердольные поделия, или ещё нет?
Свыня, если ты не осилил запустить ise то это твои проблемы.
Короче поставил дефолтный pycharm и тд
У меня какие-то проблемы с документацией, либо это считается нормой, не знаю.
Допустим по ctrl+q мы хотим получить инфу по методу, но во многих случаях либо там почти нет описания, либо просто сигнатура и ссылка на сайт питона, но когда перехожу по ней, мне вываливается дефолтная страница, где даже нет никаких описаний методов (к примеру asyncio либа), мне надо вручную как-то это настраивать или что? щас бы в 2к24 лазить искать доки по всему инету...
>щас бы в 2к24 лазить искать доки по всему инету...
Эээээ, так так все и делают, ты точно погромист?
Я не он, но для многих языков доступны исходники. Поскольку Python часто лишь обёртка, а внутри всё на C, исходников нет и надо искать документацию. Удобно, когда хотя бы она есть в исходниках - так тоже много где сделано.
А залупу на воротник не хочешь? Может тебе еще и хинты в стандартную библиотеку добавить? Вообще у меня набралось материала на фрактал плохого дизайна.
В питоне дохуя на питоне и там доков тоже нет.
Сначала учись писать в блокноте, потом обмазывайся ide. Я сам использую голый vim.
>мы хотим получить инфу по методу
Какую инфу по методу, Вы, Николай II, хотите получить? Какой тип метод принимает и какой высирает? Но эта инфа Вам ничего не даст полезного и она и так на поверхности. ну высирает метод строку, например, и что дальше, важно же понимать какую строку. А ещё метод ведь может менять объект десять раз по ходу своей логики. Так что кто-то должен всё бросить, пойти и описать логику метода с примерами. У питухона кстати в этом плане всё относительно не плохо, даже выше среднего, доки хорошие. Так что не бухти.
Я тоже уже вроде не школота. А то просто дебил.
Апидоков в своей жизни не видел?
захотел я тут потрогать AI для решения пары задач, нашел с десяток "готовых" решений и вот тут началось, приключения на десяток часов с 0 успехом.
одним проектам нужно чтобы версия 3.10 и не выше была, другим наоборот 3.11, но не 3.13
далее начался ад с зависимостями, я знаю об venv и естественно использовал его, но хер бы там плавал, не один проект не смог установится без конфликтов, при том в requirements все прописано по версиям прям четко ==, кое как вручную просмотрев какие версии есть у десятка библиотек я смог для 1 проекта подобрать так чтобы не было проблем, но опять хер мне, при запуске он выдал ошибку что в какой-то библиотеке чего-то там нет и я тупо забил
попутно я попытался пару проектов без venv поставить, вдруг в этом проблема...опять начался ад с зависимостями, одному numpy не выше 2.1 давай, другом же не ниже 2.1.3, проекты к слову друг от друга зависят типа как "микросервисы"
в результате я скачал какой-то дамп с venv внутри на ДЕСЯТОК ГИГОВ БЛЯТЬ, а там даже моделей нет, попытался запустить и у меня почему-то завис gradio
дальше "--------" ничего не идет
решил я тупо пример попробовать самый тупой, запустить этот gradio и он вообще ничего не выдает т.е python test.py и все, блок терминала и ничего, хер знает что я там сломал или оно уже было сломано, как это вообще адекватно дебажить чтобы понять где сломалось, тихий ужас, заново все переустанавливать? да в рот его наоборот...там же вручную чистить кучу всего надо так как адекватно оно удаляться не умеет...
вот вам и питон, удобство и простота, настоящий ад, любой компилируемый язык в десяток раз лучше, там хотя бы запустить что-то серьезное можно, а тут сотню гигов выкачаешь разного дерьма и оно не работает хер пойми почему
>если у тебя с venv ничего не получилось.
ну у меня получилась папочка на 7+ гигов, в которой невозможно решить конфликт НИКАК, а если закинуть вручную оно тупо не запускается.
да да, я тупой надо же добавить (изначально его там нет) omegaconf правильный и все будет, НО...
а все потому что оказывается 2.0.5 версия вроде как требует питона меньше 3.10 так как что там в нем требует версию ниже, скажешь ставь ниже и будет счастье? ну да, только другая либа требует МИНИМУМ 3.10, ахуенные требования
и это не косяк проекта, он точно работал когда-то (около год нет новых коммитов), с ним даже видео на ютубе есть где все запускается, это косяк языка который даже с жесткими версиями способен сломать то что вроде бы работало до этого
лозунг питона:
сделал однажды - ебись с этим вечно, иначе сломается
Нихуя не понял. У тебя модули внутри одного проекта конфликтовали? Так это не совсем проблема питона.
А в докере есть готовое?
>который не подходит не для чего, кроме как скриптинга
А для чего по твоему еще должен подходить скриптовый язык? Что ты на нем собрался делать?