|
|
3.72, Аноним (72), 21:44, 18/05/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Котлин jvm Онли ну ещё за немного жс
Для утомлённых джавой вопщем
Хотя форсят как мульт платформ
А хекс истинный мультиплатформенный яп
| |
|
|
|
2.6, Аноним (4), 12:50, 17/05/2020 [^] [^^] [^^^] [ответить]
| +7 +/– |
Проблема с GIL только у кодеров, которые не понимают зачем нужен GIL и питон вообще
| |
|
3.12, Аноним (12), 14:00, 17/05/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Расскажи нам, зачем же нужен GIL? Почему нельзя без GIL обойтись?
| |
|
4.16, jOKer (ok), 14:25, 17/05/2020 [^] [^^] [^^^] [ответить]
| +2 +/– |
Может быть потому что без GIL весьма велика вероятность возникновения состояния "гонка за ресурсами", а накладные расходы интерпретатора существенно возрастают?
ЗЫ Вообще-то на этот вопрос, в свое время, Гвидо уже ответил весьма и весьма развернуто. Больше читаем, и меньше возмущаемся на формах, приятель. А заодно учимся понимать как могут помочь делу сопрограммы, и почему в бинарных библиотеках ограничения GIL не действуют.
| |
|
|
6.39, jOKer (ok), 18:56, 17/05/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Тут все немного сложнее. Событийно-ориентированного механизма на этом уровне нет. Следовательно, требуется реализовать несколько нитей-тредов и заставить один из них тупо ждать пока бинарная библиотека не отработает.
В момент, когда такой поток делает запрос к бинарной библиотеке он отпускает GIL (глобальная блокировка так же отпускается при переходе потока-владельца в ожидание событий ввода-вывода и каждые 100 тиков проца), и другие нити могут спокойно в это время работать. Когда же от бинарной библиотеки приходит ответ, то нить может сохранить полученный ответ в очереди для использования другими потоками. Конечно, в этот момент /момент сохранения/ так же будут действовать правила GIL, но это будет уже не так важно, потому что тяжелые много-поточные вычисления, реализованные на уровне внешней библиотеки, к этому моменту уже будут завершены.
| |
|
7.43, анонимут (?), 20:12, 17/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
Чтобы обойти ущербность Python разрабатывали вложенные интерпретаторы для обхода GIL, но что-то пошло не так. Запустить несколько экземпляров Python интерпретаторов реализуемо. Pandas и Numpy это расширения написанные на C. Me
| |
|
8.47, jOKer (ok), 21:37, 17/05/2020 [^] [^^] [^^^] [ответить] | +1 +/– | Несколько интерпретаторов точнее субинтрепретаторы subinterpreters появилис... текст свёрнут, показать | |
|
|
|
|
4.40, Owlet (?), 19:58, 17/05/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Он позволяет не беспокоиться о состояниях гонки внутри интерпретатора. Использование для этого более гранулярных локов очень сильно затормозило бы однопоточные программы, для которых питон чаще всего и используют. А введение async/await (ну и всякие twisted с greenlet) позволяют и сетевые программы успешно писать.
| |
4.44, topin89 (ok), 20:36, 17/05/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Для чего нужен GIL?
Он нужен для конкурентной многозадачности без сложного кода атомарного доступа к одним и тем же объектам из разных потоков. Это нужно, чтобы банальное присвоение любого объекта не прерывалось на середине. Я не знаю, когда был введён GIL, но судя по патчу для Python 1.4, который его удаляет, в 1996 году он уже стал частью Питона.
Глобальный блокировщик -- идея очень простая, и введена как раз поэтому. Да, она не позволяет работать на множестве ядер, но будем честными, в 1996 году об этом точно никто не задумывался. Я не знаю, когда именно был введён GIL, но первые x86 двухядерные процы появились сильно позже, да и многопроцессорные системы были достаточно редкими, чтобы о них париться.
В ядре линукса было что-то похожее, Big Kernel Lock
> Почему нельзя без GIL обойтись?
Можно. Если есть деньги на развитие и поддержку проекта, то вполне можно заменить мегалок на много атомарных. В Джаве нет. В Шарпе нет. В Linux нет с 2011 года (заметим, спустя шесть лет с выхода многоядерного x86).
Но это сложно, однозначно приведёт огромному количеству сложноуловимых багов и на первых порах сильно просадит однопоток. А на последних сделает добавление новых фич очень затратным делом.
Теперь ответ на вопрос, а какие есть альтернативы в Питоне: многопроцесность. Да, как в хроме, можно запустить питонов по количеству ядер и организовать проброс сообщений между ними через очереди (Queue). В большинстве случаев этого хватает. Тот же flask так делает. Часто сложный, долгий код выносят в C(++), где можно наплодить потоков как душе угодно, если они не меняют в разных потоках переменные питоновского кода.
Кстати, GIL -- это то самое "лучше чем ничего". Года три назад, в PHP многопоток был небезопасен, в JavaScript его не было вовсе, в Lua каком-нибудь и до сих пор нет. В нативных языках типа C(++) или Fortran атомарное присвоение не гарантируется, там проще. В Rust подрублен серьёзный статический анализ. Не знаю, как там в остальных языках.
| |
|
5.46, Вы забыли заполнить поле Name (?), 21:30, 17/05/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Кстати, GIL -- это то самое "лучше чем ничего". Года три назад, в PHP многопоток был небезопасен, в JavaScript его не было вовсе
В JavaScript такая же кооперативная многозадачность, чем по сути GIL и является. Ну а node.js в libuv есть пул потоков.
> В нативных языках типа C(++) или Fortran атомарное присвоение не гарантируется, там проще.
В C++ начиная с 11 года стандартизирована модель памяти и есть атомики.
| |
5.75, анонимут (?), 12:18, 19/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Глобальный блокировщик -- идея очень простая, и введена как раз поэтому
От которой постоянно пытаются избавиться
Так Python создавался для обработки текста. И как замена bash скриптам ok. Но писать на нем приложения в десятки тысяч строк идиотизм потому что они рассыпаются из-за обычных опечаток. Или писать миллионы тестов
| |
|
6.77, Вы забыли заполнить поле Name (?), 17:23, 19/05/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
> Так Python создавался для обработки текста.
Откуда инфа? Это про perl.
> потому что они рассыпаются из-за обычных опечаток
Ну это претензия к любому динамически типизируеимому языку. Да и зависит от связности кода. А по теме есть опциональная проверка типов.
| |
|
|
|
|
|
|
|
3.41, Gogi (??), 20:10, 17/05/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
Хипстерам же, ну! Чё б ни изучать, лишь бы не работать. :)
| |
|
|
1.8, Аноним (-), 13:07, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –9 +/– |
Нет ничего более убогого, чем фигурные скобки в качестве операторных.
| |
|
|
3.64, Аноним (63), 13:20, 18/05/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Пора бы уже свести все языки к принудительным отступам со скобками, чтобы все страдали и этот унылый срач закончился.
| |
|
4.71, Аноним (71), 20:43, 18/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
И никаких Lint. А если бы еще проверяло орфографию в названиях переменных и т.д. - брал бы сразу. Как наделают своих сокращений и завернут в крокодилы/простыни - сиди и думай что сказать то хотели. А так сразу на уровне компиляции по рукам давать.
| |
|
|
|
|
|
|
4.65, Аноним (63), 13:21, 18/05/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Для ненужнов нужна космическая капсула, чтобы выкинуть их всех в космос и они перестами переводить ресурсы на земле.
| |
|
5.68, mos87 (ok), 20:04, 18/05/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Для ненужнов нужна космическая капсула, чтобы выкинуть их всех в космос и
> они перестами переводить ресурсы на земле.
верно. авторы сабжа займут места в партере.
| |
|
|
|
|
3.69, mos87 (ok), 20:04, 18/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
> https://haxe.org/use-cases/
> Веб еще норм, особенно если захочешь потом написать мобильное приложение, реюзнув логику
> / структуры данных клиента/сервера.
не-гумновеб структуры нельзя реюзать??
| |
|
4.70, Аноним (70), 20:18, 18/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
Узнай что такое структуры данных пожалуйста, вместо триггеринга на слово веб в предложении
| |
|
|
|
1.11, Аноним (11), 13:52, 17/05/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
final people = [
"Elizabeth" => "Programming",
"Joel" => "Design"
];
Выглядит по PHP-шному, где это просто ядерная смесь понятия "массив" и "ассоциативный массив" -- реально бесит в итоге.
| |
|
2.13, Мока (?), 14:11, 17/05/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
Это синтаксис ассоциативного массива (Map<String, String> если точнее), для обычных будет [1, 2, 3] например (Array<Int>)
| |
2.17, КО (?), 14:36, 17/05/2020 [^] [^^] [^^^] [ответить]
| –3 +/– |
Это пол беды, а вот как он узнает, что "Elizabeth" это name?
| |
|
3.21, snut (?), 14:59, 17/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
name это имя переменной о которой знает программист который этот код написал. Не передергивайте
| |
|
4.23, пох. (?), 15:41, 17/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
я полагаю, он не передергивает, а реально не понял, что за херня тут написана и где определения этих name и job. А их и нету ;-)
| |
|
5.30, анонимуслинус (?), 16:27, 17/05/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
ну учитывая, что это строгая типизация то вполне справедливое замечание. но видимо этот язык похож этой чертой на питона, где такое норма, но все же действительно странно.
| |
|
|
3.22, пох. (?), 15:40, 17/05/2020 [^] [^^] [^^^] [ответить]
| –1 +/– |
из for name => job - где name и job - это просто первое что придумал афтырь, очевидно же ж.
| |
3.31, Мока (?), 16:47, 17/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
Потому что Map это структура ключ-значение. Такой for тоже (key => value), где можно назвать их как удобнее для итерации. Знает, потому что ключ слева, а значение справа =)
| |
3.33, Аноним (33), 17:17, 17/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
А как узнать, что 180 - это количество комментариев на опеннете, а не iq?
Как всегда, либо называть понятным образом переменные, либо добавлять domain level типизацию через инструменты определения пользовательских типов, присутствующие в данном языке.
| |
|
2.34, Аноним (33), 17:18, 17/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
По пхпшному - это смешать все в кучу. Тут же явно задаётся map string-string.
| |
|
|
|
3.37, mos87 (ok), 18:13, 17/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Вменяемые люди, рационально используют свое время
покупают поддержку Майкрософт Лангуаге Фор Професионалс Про++ !!!1111 пыщпыщ
| |
|
2.36, Эксперт (?), 17:50, 17/05/2020 [^] [^^] [^^^] [ответить]
| –2 +/– |
Что пережитки коммунизма не делают, лишь бы теплое с мягким сравнивать.
| |
|
3.79, Аноним (79), 23:17, 23/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
> почитать пол часа ман перл
> пережитки коммунизма
Распространенный вариант, когда под одним идиотским комментарием оставили другой идиотский комментарий :)
| |
|
|
3.42, Gogi (??), 20:12, 17/05/2020 [^] [^^] [^^^] [ответить]
| –4 +/– |
Ответ на вопрос, "зачем нужен нахе"? Ответ: нахе-р не нужен.
| |
|
4.62, MPEG LA (ok), 13:12, 18/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
> Ответ на вопрос, "зачем нужен нахе"? Ответ: нахе-р не нужен.
мимо, для ответа на этот вопрос перл не нужен.
| |
|
|
2.54, Аноним (79), 01:52, 18/05/2020 [^] [^^] [^^^] [ответить]
| +1 +/– |
> ман перл
Эй некрофил, а по теме есть сказать что? А может новость почитать внимательнее и после комментировать? А еще лучше не полениться и вначале хотя бы вики глянуть по haxe?
| |
|
1.55, Аноним (55), 03:33, 18/05/2020 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
хороший язык, только не понятно как не нем начинать проект. В с++ просто, cmake, main.cpp, в rust тоже всё подробно описано в мануале, а тут?
| |
|
|
3.67, Аноним (79), 14:17, 18/05/2020 [^] [^^] [^^^] [ответить]
| +/– |
Спасибо за ссылки, сейчас копаюсь как оно в lua транслируется, идея супер у языка
| |
|
|
1.60, Аноним (60), 10:52, 18/05/2020 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Молодец. Защитил диплом-то?
А так чего не сделают, что бы C/C++ не изучать.
| |
|