The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Анализ популярности языков программирования в 2012 году "
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для сортировки сообщений в нити по дате нажмите "Сортировка по времени, UBB".
. "Анализ популярности языков программирования в 2012 году " +/
Сообщение от Orduemail (ok), 09-Янв-13, 16:29 
>>>[оверквотинг удален]
>> Несмотря на всё это почему-то в C кооперативная многозадачность непопулярна.
> Кооперативной многозадачности в C чуть более, чем на каждом углу. Только реализуется
> она через FSM'ы и select/poll/etc, или через движки типа eventlib.

В некотором смысле, можно сказать и так. Но вы пробовали когда-нибудь писать используя thread_create? Одно дело писать программу в ивентуальном стиле, и совсем другое в чисто итеративном. В первом случае, без создания конечного автомата далеко не уедешь. Во втором же, всё как-то само по себе выходит.

Мы отклоняемся от темы. Говоря слова "многозадачность" мы всё же имеем в виду потоки выполнения, а не тысячи инстансов конечных автоматов разбирающих HTTP в apache, не так ли? Или это надо было отдельно оговорить?

> Боюсь, что то, что Вы рассказываете, объясняется личными проблемами libpth, а не
> общего подхода.

Нет, не думаю. У меня есть другое объяснение тому. Если потоков немного, то пенальти по производительности от kernel-space потоков, как правило невелики (хотя, конечно, бывают и яркие обратные примеры). А если потоков много, то как правило, приходится ориентироваться на многие тысячи файловых дескрипторов, а когда так, придётся мешать в одну кучу libpthread и libpth. А это мало того, что требует внимательности (писать ли pth_create или pthread_create?), так ведь каждый user-space поток, всё же, придётся писать с оглядкой на реентерабельность. В частности, придётся пользоваться реализацией примитивов синхронизации из libpthread, а не из libpth. То есть часть существенных преимуществ относящихся к простоте кода и его эффективности уже будет утеряна. Из плюсов подхода останется лишь итеративность кода, и возможность прозрачно организовать lazy aio. Стоит ли это лишнего депенданса -- ещё большой вопрос. Тем более, что привычный ивентуальный подход хорошо известен, проверен временем и десятком(-ами?) успешных известных примеров.

> Ну, во-первых, кооперативная, а не корпоративная:)

Точно-точно. =)

> Во-вторых, к чему Вы это?
> Хотите полноценную вытесняющую многозадачность в Python?

Нет, я не хочу. На python я давно забил. Собственно, никогда им особо и не интересовался. Скучный безликий язык. Если уж и разглядывать что-нибудь из языков этого класса, так ruby, по-моему, существенно приятнее. Как в плане синтаксических плюшек, так и в плане семантических.

> Модуль multiprocessing находится
> в стандартной поставке, начиная с 2.6. Представляете, там есть даже разделяемые
> переменные и возможность делать менеджеры доступа с персональной политикой синхронизации.

М-м-м... Но это же на самом деле полноценные тяжеленные процессы, так? Со своим адресным пространством. Значит надо возится с SHM, только для того, чтобы передать картинку? Вариант, конечно. Но, допустим, если мы попытаемся реализовать апач на python'e -- не знаю зачем, но допустим, -- как мы сможем создать три процесса, по двадцать пять kernel-space потоков в каждом процессе, так чтобы каждый поток по сотне файловых дескрипторов обрабатывал в параллели?

>> А вы не сталкивались с такой фишкой, как опциональная типизация переменных? То
>> есть когда язык позволяет создать как типизированную переменную, так и не
>> типизированную. Помимо удобств отладки (рантайм исключения, при попытки записать int в
>> переменную типа string), возникает офигенный простор для оптимизации, путём выпиливания
>> из бутылочных горлышек тормозов порождённых динамической типизацией.
> Ага, для этого давно уже есть Cython.

И как это чудо прикрутить к скриптам, которые мне иногда приходится писать в LibreOffice?
Cython -- это же уже не питон. Он уже язык с обязательной компиляцией. С другим синтаксисом. Дополнительными депендансами. Поэтому те python'овские скрипты, которые я использую в системе, так всегда и останутся питоновскими, и никогда не будут использовать статическую типизацию, даже если разработчики поймут, что в некоторых ситуациях это удобно и полезно.

>> Python неплохой язык, для простеньких задач. Но он начался с идеологии, и
>> до сих пор не может отказаться от этой идеологии "всё можно
>> сделать единственным путём". Идеологию фтопку. Есть вполне определённые практические
>> задачи, которые предъявляют вполне определённые требования к языку. Когда же язык,
>> вместо того, чтобы удовлетворять этим требованиям, начинает швыряться лозунгами, и говорить
>> что требования некошерны... Это как минимум странно.
> Там есть странные вещи, но, о чём Вы говорите, давно и успешно
> решается. Просто надо знать чуть шире, чем одно базовое средство.

Я бы поверил Вам на слово. Если бы речь шла не о Python'е. На заре своего существования, он был слишком увлечён противопоставлением себя Perl'у. Это фатально на нём сказалось. То есть он достаточно приятный язык, допустим PHP в разы хуже и неудобнее. Но и всё же, он далёк от идеала. По-крайней мере существенно дальше, чем ruby.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Анализ популярности языков программирования в 2012 году , opennews, 08-Янв-13, 13:03  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру