Последний ответ близок к правильному, но он не правилен по своей сути. ОС не меняет инструкции программ. ОС только перенацеливает процессор на выполнение разных программ в разные моменты времени.
Пост: «Процессор ничего не знает ни о потоках, ни о процессах.»
Ваш комментарий: «не смотря на наличие в архитектуре 80386 таких элементов как TR (Task Register), TSS (Task State Segment) и т.п., он определенно ничего не знал о multi-tasking и они были введены для каких-то других task'ов? ;)»
Да, о многозадачности, применяемой в операционных системах, процессор не знает. Да, task'и применяются для иных целей.
>От наличия ограничения в 8192 задачи, код современных ОС из императивного стал декларативным?
Честно говоря, не понимаю, при чем тут императивность или декларативность кода современных ОС. Код низкоуровневых частей ОС (в частности, управление памятью и планировщик процессов) просто обязан быть императивным, т.к. он исполняется на железе, которое не понимает иного подхода.
Дело не в концепции, а в ограничениях механизма task'ов. Чтобы создать task'у, нужно создать TSS (task state segment). Для этого надо выделить сегмент памяти; для этого надо сделать соответствующую запись в GDT. В GDT же можно поместить не более 8192 записей. Итого имеем, что нельзя создать более, чем 8192 задач.
cygwin ставится несложно — google, cygwin, install, next, next, next, run. Ну и cygwin полезен сам по себе, поэтому почему не решить эту задачу в рамках него?
Передо мной недавно стояла похожая задача, и я выбрал JewelCli. Плюсы:
1) у опций может быть много аргументов (т.е., значение опции может быть списком).
2) у common-cli я не нашел способа указать список файлов в качестве аргументов (т.е., «хвост» опций, которые передаются как есть). В JewelCli это есть.
3) В JewelCli проще задавать набор опций — описывается интерфейс (с нужными свойствами), и парсер аргументов возвращает экземпляр этого интерфейса
4) JewelCli парсит аргументы, а не отдает их в виде строки
Вы, видимо, неправильно поняли суть расширения. В хроме (кстати, и в любом другом браузере на webkit) из коробки идет хороший набор инструментов для разработки и отладки.
Я не специалист в этом вопросе, поэтому лучше дам ссылку на википедию. en.wikipedia.org/wiki/Task_State_Segment#Use_of_TSS_in_Linux
>Декларативный код упрощает реализацию кооперативной многозадачности.
Это все так. Но на саму реализацию многозадачности это не влияет.
Пост: «Процессор ничего не знает ни о потоках, ни о процессах.»
Ваш комментарий: «не смотря на наличие в архитектуре 80386 таких элементов как TR (Task Register), TSS (Task State Segment) и т.п., он определенно ничего не знал о multi-tasking и они были введены для каких-то других task'ов? ;)»
Да, о многозадачности, применяемой в операционных системах, процессор не знает. Да, task'и применяются для иных целей.
>От наличия ограничения в 8192 задачи, код современных ОС из императивного стал декларативным?
Честно говоря, не понимаю, при чем тут императивность или декларативность кода современных ОС. Код низкоуровневых частей ОС (в частности, управление памятью и планировщик процессов) просто обязан быть императивным, т.к. он исполняется на железе, которое не понимает иного подхода.
Про тормознутость уже сказали.
1) у опций может быть много аргументов (т.е., значение опции может быть списком).
2) у common-cli я не нашел способа указать список файлов в качестве аргументов (т.е., «хвост» опций, которые передаются как есть). В JewelCli это есть.
3) В JewelCli проще задавать набор опций — описывается интерфейс (с нужными свойствами), и парсер аргументов возвращает экземпляр этого интерфейса
4) JewelCli парсит аргументы, а не отдает их в виде строки
Это неверно. Компилируемость (или иная стратегия трансляции языка) не влияет на наличие или отсутствие делегатов.
Для обработки изображений есть, например, github.com/slyrus/opticl
en.wikipedia.org/wiki/Currying