LINUX.ORG.RU

Conexus – универсальная библиотека ввода/вывода для ЯП C++

 


0

0

При программировании на таких языках, как C++, особое внимание приходится уделять организации операций ввода и вывода. Я имею в виду не простейшие случаи ввода/вывода на стандартные устройства (консоль) – здесь не возникает никаких вопросов.
Источники ввода и цели вывода отличаются таким разнообразием, что поневоле возникает мысль о необходимости некоторого универсального решения этой проблемы.
Одним из предлагаемых решений является библиотека Conexus. Статья о ней будет полезна начинающим разработчикам приложений для unix-подобных операционных систем.

>>> Подробности

★★★

Проверено: isden ()

я уже что-то подобное на свежемясе видел

bernd ★★★★★ ()
Ответ на: комментарий от jim945

Если только приспешникам трупа страуса. Адекватным людям он не нужен.

balodja ★★★ ()

Как страшно жить.

Посмотрел листинги кода в статье и ужаснулся. Страшненько.

balodja ★★★ ()

Срань какая-то. Разве в ибм никогда не слышали, про STREAMS?

И да, плюсы в системном программировании абсолютно не нужны, особенно в метапрограммном варианте с шаблонами.

Sun-ch ()

fu*k C++, long live Common Lisp!

anonymous ()
Ответ на: комментарий от Sun-ch

Ого! Кто-то слышал про STREAMS может здесь есть кто-то кто слышал про socket?

alx_me ★★☆ ()
Ответ на: комментарий от anonymous

lisp конечно forewer, но C++ очень гибок. То есть оба нужны. Это вам не java с ruby на xml в эмуляторе.

alx_me ★★☆ ()
Ответ на: комментарий от alx_me

пардон, ет не вас случаем тут люди в белых халатах ищут?

anonymous ()
Ответ на: комментарий от alx_me

Все системные вещи надо писать исключительно на С, для всего остального - ява и функцианальные языки. с++ ненужен уже никому, особенно когда речь идет о новой разработке.

Sun-ch ()

втянули REBOL в C++ - точно так же, как раньше втягивали OCaml в Prop/Felix; сомневаюсь, что эта библиотека будет иметь сколько-нибудь заметную популярность

jtootf ★★★★★ ()
Ответ на: комментарий от Sun-ch

>Срань какая-то. Разве в ибм никогда не слышали, про STREAMS?

А как ты со STREAMS напишешь программу ввода вывода в последовательный порт: с обработкой таймаутов, ошибок чётности, CRC и др.? Я думаю, что они слышали, а у тебя просто очередной приступ высокомерия: типа я умный, а ИБМ дураки сидят.

И да, плюсы в системном программировании абсолютно не нужны, особенно в метапрограммном варианте с шаблонами.


Возможно, но C и С++ прекрасно друг друга дополняют и не мешают.

GladAlex ★★★★★ ()
Ответ на: комментарий от GladAlex

А как ты со STREAMS напишешь программу ввода вывода в последовательный порт

а зачем это делать с помощью этой библиотеки?

jtootf ★★★★★ ()
Ответ на: комментарий от jtootf

>а зачем это делать с помощью этой библиотеки?

Может и незачем, они только пишут, что с последовательными портами она умеет работать.

GladAlex ★★★★★ ()
Ответ на: комментарий от GladAlex

Этим как бы драйвер занимается.

anonymous ()
Ответ на: комментарий от anonymous

:) «конечно». Драйвер порта? :) Есть ещё программные протоколы типа Modbus - там самому нужно писать: синхронизацию, котроль, который я уже упоминал, расшифровку пакетов.

GladAlex ★★★★★ ()
Ответ на: комментарий от GladAlex

с обработкой таймаутов, ошибок чётности, CRC и др.?

ты с досом не перепутал? Лучше почитай man ioctl.

Sun-ch ()
Ответ на: комментарий от GladAlex

А в чем проблема? Встрой в цепочку вызовов свой обработчик и делай что хочешь, помоему ты нихрена не понял, что такое STREAMS.

Sun-ch ()
Ответ на: комментарий от Sun-ch

Я понял, что ты имел в виду и какие STREAMS. Я на них и писал. А обёртка С++ всё равно.

GladAlex ★★★★★ ()
Ответ на: комментарий от Sun-ch

> Все системные вещи надо писать исключительно на С, для всего остального - ява и функцианальные языки.

На каком языке писать приложения для десктопа и маемо?

anonymous ()
Ответ на: комментарий от anonymous

>> Все системные вещи надо писать исключительно на С, для всего остального - ява и функцианальные языки.

На каком языке писать приложения для десктопа

ява

и маемо?

функцианальные языки

// c: rawest human

anonymous ()

ИМХО, как раз именно потому, что источники ввода и цели вывода отличаются таким разнообразием, запихивать все в одну «универсальную» библиотеку - безблагодатное занятие. Вот и Джоэл от том же:

http://russian.joelonsoftware.com/Articles/LeakyAbstractions.html

Rolex ★★ ()
Ответ на: комментарий от anonymous

>>На каком языке писать приложения для десктопа

ява

А оно тормизить не будет?

и маемо?

функцианальные языки

Т. е. приложения для линукса теперь надо разрабатывать и поддерживать в двух экземплярах на разных языках?

anonymous ()
Ответ на: комментарий от Sun-ch

функцианальные


(смотрит на аватарку)
Это в Оракле вас так замучали? Буковки путаете?

pashazz ★★★★ ()
Ответ на: комментарий от Rolex

>Все нетривиальные абстракции дырявы.

Чувачок громко пернул. Он наверное никогла не слышал о методах создания надежных программ.

Sun-ch ()
Ответ на: комментарий от Sun-ch

методах создания надежных программ

в студию?

jcd ★★★★★ ()
Ответ на: комментарий от jcd

Формальная верификация самой программы. Сама абстракция не может быть дырявой.

Sun-ch ()

> В целом исходный код программы почти не отличается от обычного кода на C++

Чесслово, я в глубокой задумчивости зачем оно надо.

Casus ★★★★★ ()
Ответ на: комментарий от Sun-ch

> Он наверное никогла не слышал о методах создания надежных программ.

Надёжные (в смысле с проведённым теоретическим доказательством надёжности) программы — это миф. Пока ты будешь писать одну «надёжную», конкуренты напишут в 100 раз более навороченную «ненадёжную», но зато нужную.

Casus ★★★★★ ()

Переиначивая старый анекдот - Был VB и C++. VB умер, C++ остался. Была Java и C++. Java протормозила, C++ остался. Были ActiveX, COM, ATL, COM+. Все отвалили, C++ остался. Сейчас есть Python, C# и F#... Посмотрим кто выйдет в финал... :-)

eug ()
Ответ на: комментарий от Sun-ch

>Сама абстракция не может быть дырявой

Конечно. «Дырявы» реализации этих абстракций!

Rolex ★★ ()
Ответ на: комментарий от eug

Ты путаешь языки и технологии (COM+). Ява это не просто язык, а очень мощный набор технологий.

Sun-ch ()
Ответ на: комментарий от Sun-ch

>Все системные вещи надо писать исключительно на С, для всего остального - ява и функцианальные языки

Это кеды у меня должны быть на яве? Или на лиспе?

Бобер, выдыхай.

anonymous ()

> При программировании на таких языках, как C++, особое внимание приходится уделять организации операций ввода и вывода.

для unix-подобных операционных систем

Вот для них как раз вполне может хватить обычного fdset из stdio с последующими fprintf и fscanf (для текстовых протоколов обмена). Бинарные протоколы прекрасно реализуются через read/write без особых извращений (для сокетов, файлов, устройств и прочего...).

Чего тут надо было изобретать - совершенно непонятно.

anonymous ()
Ответ на: комментарий от Sun-ch

> Все системные вещи надо писать исключительно на С, для всего остального - ява и функцианальные языки. с++ ненужен уже никому, особенно когда речь идет о новой разработке.

s/C/Limbo/

FIXED

korvin_ ★★★★★ ()
Ответ на: комментарий от Sun-ch

> Все системные вещи надо писать исключительно на С, для всего остального - ява и функцианальные языки. с++ ненужен уже никому, особенно когда речь идет о новой разработке.

Это был вопрос? Или для уверенности повторять каждый час?

alx_me ★★☆ ()
Ответ на: комментарий от anonymous

> Любят на лоре всё хоронить. Бывает еще вылезти не успеет, а его уже лопатой по голове и в яму.

а ты как думал? лор — этож кладбище домашних животных^W^WЯП, ОС и прочих ИТ

korvin_ ★★★★★ ()
Ответ на: комментарий от korvin_

>а ты как думал? лор — этож кладбище домашних животных^W^WЯП, ОС и прочих ИТ

Тут как-то стремно думать, кто тогда мы ;)

anonymous ()

>>а ты как думал? лор — этож кладбище домашних животных^W^WЯП, ОС и прочих ИТ

Тут как-то стремно думать, кто тогда мы ;)

Асфальтоукладчики, пытаемся хоронить глобально и надежно.

mikhalich ★★ ()

Почему fp не смартпоинтер закрывающийся в деструкторе при выходе из области видимости? Как у нас с скрытыми аллокациями, они хоть в документации описаны? А то какой-то C с классами, не C++.

ranka-lee ()
Ответ на: комментарий от anonymous

> Т. е. приложения для линукса теперь надо разрабатывать и поддерживать в двух экземплярах на разных языках?

Нет ответа? Я так и думал.

anoyonymous ()
Ответ на: комментарий от Sun-ch

> Все системные вещи надо писать исключительно на С, для всего остального - ява и функцианальные языки. с++ ненужен уже никому, особенно когда речь идет о новой разработке.

Ну и чушь.

функцианальные языки

Опечатка по Фрейду. Действительно, не нужны.

northerner ★★★ ()
Ответ на: комментарий от anonymous

> Любят на лоре всё хоронить. Бывает еще вылезти не успеет, а его уже лопатой по голове и в яму.

и где там VB>?

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.