Обновить
26
0
Maksim@MuLLtiQ

Software engineer

Отправить сообщение
console.log(!!(    Boolean(false))); //false
console.log(!!(new Boolean(false))); //true

Вообще лично я для объектов которые подразумеваются как «неизменяемые» пишу конструкторы без new, а для изменяемых — с new. В том же примере сверху — Vector — как раз «неизменяемый».
В чём-то вы правы. Но, к примеру, в Питоне new не надо писать и никто не страдает :)
Ну это если не strict-режим :)
А если использовать «typeof this»:
var Vector = function(x, y, z) {
	if (typeof this === "undefined") {
		return new Vector(x, y, z);
	}
	this.__x = x;
	this.__y = y;
	this.__z = z;
};
Жесть, никогда бы не подумал. А в реальном коде такое где-нибудь используется?
Тело функции переданное строкой в конструктор Function привязывается к глобальному контексту?
Потому что это модно.
IPC, конечно же дороже. Процессы в этом случае не используют. Процессы используют, например, при организации архитектуры сервера веб-приложений для параллельной обработки потока запросов.

Я просто о том, что использование нельзя использовать нативные потоки для реализации параллельных алгоритмов — когда вы пытаетесь запустить их несколько тысяч, затраты процессорного времени на их запуск и обслуживание нивелируют весь профит от их использования. А если их ещё и синхронизировать надо, то тут вообще всё плохо: синхронизация потоков — «тяжёлая» операция. Для таких вещей используют CUDA, OpenCV или OpenMP, которые позволяют запускать процедуры в чисто параллельном режиме. Но и там куча своих ограничений.
У меня наоборот — на Ubuntu 12.04 иксы виснут :) но это, кажется, проблема в криво поставленном драйвере интеловской графики :)
Ну кто его знает. Может Гвидо и Ко уже вынашивают в своих головах планы на 4-й Питон: с блэкджеком без GIL'а и с потоками :)
Linux Mint с его Cinnamon'ом и MATE?
Я не думаю что GIL считается «священной коровой»: просто была бы возможность сделать pure-параллельный Питон, без GIL, нативно написанный на C (а не «слоёный», как JPython и IronPython), то её реализуют. Просто сейчас наличие GIL не считается вселенским злом, которое мешает жить Питон-программистам. Ну есть GIL, и есть. Язык отличный, приложения на нём пишутся и прекрасно работают. А если надо реализовать какое-нибудь более производительное решение — берётся C и реализуется.
Ну а производительные многопоточные решения на мультиядерных системах никто на Питоне и не пишет: для это есть C, Go и Java, CUD'ы всякие, OpenMP и прочее.
Хм, представьте себе одноядерную однопроцессорную машину. Что будет быстрее выполняться на этой машине: программа которая исполняет параллельный алгоритм в многопоточном режиме или программа которая исполняет этот же алгоритм в последовательном режиме.
Потоки тяжелее в обслуживании чем процессы, потому что требуют затрат на синхронизацию адресного пространства процесса, в котором они работают.
Что вы подразумеваете под «вертикальной масштабируемостью»?
Да что ж вы всё потоки да потоки :)

Процессами всё масштабируется. В веб-приложениях это прекрасно работает.
А кто говорит что GIL ускоряет однопоточные программы?

Просто сравнивать Jav-у, С++ с Питоном нет смысла — это разные вещи. Питон — четкий однопоточный интерпретатор, по-крайней мере в классической реализации.

GIL — это просто решение, позволяющее разработчику абстрагироваться от потокобезопасности нативного кода, стоящего за инструкциями Питона. Для интерпретируемого языка для общих задач — вполне нормальное решение.

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность