LINUX.ORG.RU

Программирование Linux С и С++

 , ,


0

2

Здравствуйте. Можно ли использовать С++ при программировании Linux? Поясню вопрос: в книгах по программированию под Linux примеры на С, я пробовал писать в С++ и вроде работает, но все ли так однозначно? На С++ просто удобнее, имхо, строки, например, обрабатывать и еще ряд «плюшек». Но может есть некие тонкости, о которых я, в силу не опытности не подозреваю? А можно ли часть программы писать на С(file1.c), а часть на С++(file2.cpp) - будет ли такое компоноваться потом?


Чувак, у меня от тебя горит почему-то. Если в кратце, то да, можно. Линукс в этом отношении полноценнее любых прочих систем.

anonymous
()

Язык C был создан специально для Unix, Linux и все *nix системы написаны на нем, так что это — его нативный язык.

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

А венда написана на ассемблере. Это значит что ассемблер — её нативный язык. Ой, подожди, нет.

anonymous
()

Здесь должна быть реклама Qt

И она есть. Qt — прогрессивный инструментарий для проганья под что угодно в/на C++.

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

anonymous

Если тебе ЯДРО нужно, то можно

хочу ООП использовать. например класс, который будет запускать процесс, не блокируя родительский, что-то делать, завершаться и тп. но чего-то мне кажется в ООП сие поудобнее, чем в процедурном стиле. Vsevolod-linuxoid

Язык C был создан специально для Unix

в каком году? вы видели тот Си, который создавался специально для Unix? думаю сильно удивитесь.

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

ООП можно и с си, это не имеет никакого значения. В плюсах слишком велик оверхед в самых неожиданных местах. К тому же придётся отказаться от rtti и всего прочего, за что плюсы любят, от рантайм-либ в том числе.

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

А венда написана на ассемблере.

вообще-то венда написана на паскале, потом переписали конечно.

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

В плюсах слишком велик оверхед в самых неожиданных местах.

Например?

К тому же придётся отказаться от rtti и всего прочего, за что плюсы любят, от рантайм-либ в том числе.

Человек же сказал, что в ядро ему не нужно. Так зачем от rtti отказываться?

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

Мне показалось он именно это и сказал, что ему нужно ядро. Я ни за что не агитирую, только констатирую факт того что язык в котором ты не можешь представить заранее результирующую сложность алгоритма не очень хорош для кернелспейса.

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

ООП можно и с си, это не имеет никакого значения.

это как?

В плюсах слишком велик оверхед в самых неожиданных местах.К тому же придётся отказаться от rtti и всего прочего, за что плюсы любят, от рантайм-либ в том числе.

поясните

смысл в том, что процедурный стиль сильно утомляет при написании «больших» (по моим меркам) программ.

еще вопрос, который остался без внимания: можно ли С и С++ компоновать? те часть кода на С, часть на С++?

может есть ссылка на данную тему? чтобы вопросов не задавать лишних много.

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

можно ли С и С++ компоновать? те часть кода на С, часть на С++?

Можно. Просто берете и компонуете.

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

это как?

Как в GTK.

еще вопрос, который остался без внимания: можно ли С и С++ компоновать? те часть кода на С, часть на С++?

Конечно. Учитывая, что компилятор C++ понимает и C, не понятно откуда такой вопрос.

В Linux среда KDE и все ее приложения на C++, например. Проблем с его использованием нет.

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

Я ни за что не агитирую, только констатирую факт того что язык в котором ты не можешь представить заранее результирующую сложность алгоритма не очень хорош для кернелспейса.

Понятно, что с кернелом свои заморочки. Но все-таки, где в C++ возникает оверхед «в неожиданных местах»?

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

еще вопрос, который остался без внимания: можно ли С и С++ компоновать? те часть кода на С, часть на С++?

extern C

только зачем тебе это надо?

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

Да хотя бы в контейнерах, нужно помнить особенности реализации этой конкретной версии, если всегда полагаться на привычное поведение можно нарваться на неожиданное поведение когда этого меньше всего ждёшь. На самом деле я просто боюсь плюсов, невермайнд ми. Я боюсь всего, чего не понимаю.

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

Мне показалось он именно это и сказал, что ему нужно ядро/

Поясню, по возможности, без двусмысленностей: Читаю книгу Н.Н. Иванов «Программирование Linux» там примеры на С system(), fork(), exec(), kill(), shmget() и тд и тп вопрос состоял в том, что могу ли я использовать примеры из книги, но только в собственных обертках и программах на С++ не натолкнусь ли я потом на какой-то айсберг. охото сразу понимать соотношения между С и С++. Может все эти fork() и в С++ есть и не надо замудряться. Хочу в качестве учебного примера написать службу под Linux. Служба будет обрабатывать входящие соединения, сжимать, шифровать и тд. Может это вообще можно чисто на С++ сделать. Вот только во всех книгах примеры на С. В общем немного запутался в трех березах. Разъясните или ссылку, если это в посте не разъяснить.

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

system(), fork(), exec(), kill(), shmget()

Если по простому, все это функции из библиотек, написанных на C. Библиотеки C ты можешь использовать из C++ как родные. Вот и все.

curufinwe ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Парень просто просёк фишку: философия про программирование набирает 1000+ комментариев. Только троллит слишком толсто - удалят.

ZenitharChampion ★★★★★
()

Да, можно. Вообще по поводу взаимооношений C и C++ можно почитать книжку «Дизайн и эволюция языка C++» Страуструпа.

Если вкратце, то из C++ ты сможешь делать вызовы C кода. Из C кода ты сможешь делать вызовы C++ кода по имени функции только если используешь extern «C» для C++ кода.

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

Qt — прогрессивный инструментарий

Qt это совсем другое. Мне не нужна кроссплатформенность - интересует исключительно Linux


Qt - это не совсем другое, это тулкит, по-большей части, графический, который _может_ быть кроссплатформенным.

metawishmaster ★★★★★
()

Что, типичный тред для лора? Я вот не понял, зачем ему линукс программировать? Там свои программисты есть, поумнее ТСа. Если программировать свои программы для линукс, то можно хоть в basic, наверное.

anonymous
()

У ТСа 3 темы и все невероятно тупые. ТС, пользуйся гугелем

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

Ну уж нет! Ты же наверняка ожидал, что эта тема будет для флуда. Куда ты теперь уходишь?

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

Qt это совсем другое
например класс, который будет запускать процесс, не блокируя родительский

Но то, что ты хочешь, там есть, и уже готовое

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

Куте это не гуй. Хотя говорят в 5 версии гуи, я не знаю, но вообще нет. Просто ты в любом случае либо берёшь готовый плюсовый фреймворк, либо пишешь очень много кода с целью обернуть сишные интерфейсы в плюсы.

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

Там свои программисты есть, поумнее ТСа

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

Snorri
() автор топика
Ответ на: комментарий от XMs

Но то, что ты хочешь, там есть, и уже готовое

понял, посмотрю... спасибо

Snorri
() автор топика
Ответ на: комментарий от XMs

если посмотреть книгу Шлее Qt5, то там упор на виджеты, графику, звук и тп и на сайте все красивые окошечки.

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

Надо Федя, надо! Qt Core - вот тебе и удобные классы для работы с C++ на Linux.

Впрочем, дело твое, рано или поздно ты сам придешь к выводу что стоит использовать Qt Core или Boost.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от metawishmaster

Qt это не только GUI, в Qt 5 вообще GUI это опциональный модуль. Просто в Qt 5 много удобных классов и библиотек, а еще сигнал-слоты. Есть конечно Boost Signals, но мне Qt просто приятнее.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от Snorri

Шлее лох кстати, не стоит. И как писатель не очень. Да и по плюсам тоже всего пара нормальных авторов, вроде там Страуструпа и Саттера, ну может быть ещё Александреску, все остальные невозможное уг. Это, конечно же, лишь моё мнение.

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

Ну в смысле люди вроде Шлее пишут книги только чтобы получить за них денег, а не с целью поднять уровень программистов.

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

так я ж и написал, что он по большей части графический, а не только
и да, Qt - приятнее =)

metawishmaster ★★★★★
()
Последнее исправление: metawishmaster (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

вот тебе и удобные классы для работы с C++ на Linux.

по поводу удобных классов на Linux.

Честно сказать, (я новичок), но как-то я сразу мимо С++ проскочил к Java(только изучаю). Мимо Си, понятно, не проскочешь, а вот Java имхо как-то поприятней во многом (для меня). Когда начал более подробно изучать азы Linux и, естественно, столкнулся с системным программированием. Решая учебные примеры, как-то сложновато показалось в процедурном стиле писать достаточно большие, для меня, задачи и первая мысль - С++, а тут...

C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it.

...

C++ leads to really really bad design choices. You invariably start using the «nice» library features of the language like STL and Boost and other total and utter crap, that may «help» you program, but causes:

- infinite amounts of pain when they don't work (and anybody who tells me that STL and especially Boost are stable and portable is just so full of BS that it's not even funny)
Linus Torvalds <torvalds <at> linux-foundation.org>

«Вот тебе бабушка и юрьев день...»

Snorri
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Qt распространяется под тремя лицензиями: коммерческой, LGPL и GPL. Насколько я помню, далеко не вся Qt распространяется под LGPL.

Соответственно вопрос, если писать софт не под GPL, то из чьего кармана оплачивается стоимость коммерческой лицензии? Вы сами за нее платите или ваш работодатель это делает?

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

попробуй примеры Иванова реализовать в основном на sh (bash)

удивишься(возможно) как мало там нужно(в учебных а не в производительности целях) уходить в низ до сей.

ибо шэл для того и лепили такой какой получилось что бы можно было слеплять процессы из программ и описывать их коллективное взаимодействие.

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

Всё просто: я и мой работодатель хорошо умеют читать и понимать условия лицензии LGPL ;)

И да, функционала LGPL-части хватает выше крыши.

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