LINUX.ORG.RU
ФорумTalks

[C++] Насоветуйте проектов с качественным кодом.

 


1

0

День добрый.
Посоветуйте каких-то проектов в качестве хорошего кода на C++, а то я что не ткну все на С. Хочется в них найти ответы на вопросы в духе «так правильно обрабатывать ошибки используя исключения», «так правильно вести логи», и т. д.
Желательно проекты без гуя, не большие по размеру.

Пока смотрю newsbeuter, ncmpcpp. Что еще есть?

★★★★★

Ответ на: комментарий от ShTH

>Желательно проекты без гуя, не большие по размеру

Тьфу не увидел.

linux4ever
()
Ответ на: KDE4 от linux4ever

А не будет там слишком много Qtзависимых вещей?

urxvt ★★★★★
() автор топика

xulrunner. За одно там хорошо объяснено как правильно строить модульную концепцию приложения.

ixrws ★★★
()

> Посоветуйте каких-то проектов в качестве хорошего кода на C++, а то я что не ткну все на С.

все на С


сам же и ответил на свой вопрос.

C++ - defective by design

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

Мне он тоже не нравится. Но сейчас вопрос не в том.

urxvt ★★★★★
() автор топика
Ответ на: комментарий от CL-USER

>C++ - defective by design


С++ как объектно-ориентированный язык прекрасно занимает свою нишу. В чём же его дефекты?

ShTH
()
Ответ на: комментарий от CL-USER

>о какой нише идет речь? У него нет ниш. ни одной.


С помощью объектно-ориентированных технологий легко симулировать отдельные сущности, туда же инкапсуляция. Удобно для работы с GUI например, и для игр.

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

С помощью объектно-ориентированных технологий легко симулировать отдельные сущности

а с помощью каких технологий сэмулировать отдельные сущности сложно?

инкапсуляция

инкапсуляция - частный (и далеко не всегда лучший) способ абстракции

Удобно для работы с GUI

ни разу. GUI - это декларативное описание разметки плюс реактивная система событий/поведений. ни для первого, ни для второго ООП не удобен

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

>а с помощью каких технологий сэмулировать отдельные сущности сложно?


Например в С потребуется гораздо больше нагромождений.

инкапсуляция - частный (и далеко не всегда лучший) способ абстракции


Её отсутствие часто создаёт путаницу и лишнюю видимость.

ни разу. GUI - это декларативное описание разметки плюс реактивная система событий/поведений. ни для первого, ни для второго ООП не удобен


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

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

>ни разу. GUI - это декларативное описание разметки плюс реактивная система событий/поведений. ни для первого, ни для второго ООП не удобен
Есть у меня кнопка, а я захотел кнопку с такой то пимпкой. В C++ я просто наследую класс кнопки и делаю кнопку с пимпкой и пользую ее везде. Расскажи теперь, как ты удобно сделаешь это без ООП.

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

>> а с помощью каких технологий сэмулировать отдельные сущности сложно?

Например в С потребуется гораздо больше нагромождений.


ой ли? не факт. мой опыт говорит о противополжном. + кроме Ц есть более подходыщие языки и язычки


инкапсуляция - частный (и далеко не всегда лучший) способ абстракции


Её отсутствие часто создаёт путаницу и лишнюю видимость.


ООП галавнаго моска

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


и много ты создал «полноценного, гибкого, и динамичного интерфейса"ов?

CL-USER
()
Ответ на: комментарий от ShTH

>В чём же его дефекты?

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

linuxfan
()
Ответ на: комментарий от CL-USER

>ООП галавнаго моска

А у Си-шников каша головного мозг. Но Си всё равно хорош. Для ведра и CLI.


мой опыт говорит о противополжном.

и много ты создал «полноценного, гибкого, и динамичного интерфейса"ов?




Представьте пример такого же лёгкого создания GUI на чистом С.

ShTH
()

char* is looking at all of you suspiciously.

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

Например в С потребуется гораздо больше нагромождений

можно сравнить printf и cout и оценить, где больше нагромождений

Её отсутствие часто создаёт путаницу и лишнюю видимость.

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

Вы фанат кактуса под названием гытыка?

чудо, а ты кроме Qt и GTK ничего для GUI не знаешь?

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

>Языки не ограничиваются C и C++ (хинт: Java и C# тоже).


Java: Тормозной ынтырпрайз (из-за сборшика дерьма)
C#: недопиленный тормознутый полупроприетарный ынтырпрайз со сборщиком мусора. Про интерпретируемые языки не говорите, это уже совсем другая вещь.

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

4.2 Его ниша - унаследованные приложения на нём же.

виноват, упустил этот пункт

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

А декларативное описание уже несовместимо с ООП?

плохо совместимо

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

>можно сравнить printf и cout и оценить, где больше нагромождений


Для того, чтобы сделать что-то сложное. А в С++ много готовых и гибких решений.

чудо, а ты кроме Qt и GTK ничего для GUI не знаешь?



что ещё есть вменяемое для GUI?

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

Есть у меня кнопка, а я захотел кнопку с такой то пимпкой. В C++ я просто наследую класс кнопки и делаю кнопку с пимпкой и пользую ее везде. Расскажи теперь, как ты удобно сделаешь это без ООП.

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

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

Для того, чтобы сделать что-то сложное

сложное - да, это на C++ сделать не вопрос. вот с хорошим намного хуже

А в С++ много готовых и гибких решений

например?

что ещё есть вменяемое для GUI?

технологии или библиотеки?

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

плохо совместимо

На уровне, вот эта кнопка, а эта кнопка с рюшечками, наследованная от обычной кнопки, всё отлично совместимо.

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

Про прототипы функции знаю, а вот про прототипы кнопок не слышал :D Да и кто тебя знает, что ты имел ввиду под прототипом. Да, я так и не увидел красивого решения проблемы. Хочу кнопку и порожденную от нее другую кнопку. Как ты себе это видишь без ООП?

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

На уровне, вот эта кнопка, а эта кнопка с рюшечками, наследованная от обычной кнопки, всё отлично совместимо.

куда проще описать варьирование этой кнопки прямо по месту, как «кнопка с вот такой рюшечкой». тот факт, что плюсовое ООП не позволяет этого сделать иначе, как через наследование, не стоит просто воспринимать как данность. по другому тоже можно. более того, по-другому - удобней

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


сложное - да, это на C++ сделать не вопрос. вот с хорошим намного хуже


Чем же?

А в С++ много готовых и гибких решений


STL, std::




Qt это считай целая технология. Точнее набор технологий в виде тулкита.

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

Снова ООП

а с тобой мы однажды об этом уже спорили. это не то ООП, которое в С++. даже не рядом

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

>отыгрывать идиота - это счас так модно?


Как сделать наследование на чистом С? Если не хочется вручную копировать всё и вся. Вы видимо бородаты и не понимаете, для чего придуманно ООП с бле^W наследованием и классами.

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

STL, std::

это ты пошутил, да? стандартной библиотеки беднее и неудобнее плюсовой ещё поискать. ни кортежей, ни хэш-контейнеров, ни деревьев; интерфейс с файловой системой отсутствует; стандартные алгоритмы расчитаны на ФП-стиль, при том, что язык его практически не поддерживает. то, что в нормальном языке будет выглядеть как

map (+1) res

в C++ будет выглядеть как

std::transform(res.begin(), res.end(), res.begin(), std::bind2nd(std::plus<unsigned int>(), 1));

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

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

Ох лол, а при чем тут Си?

а я что, где-то хоть слово сказал о C? не моя вина, что вы больше языков не знаете

Да даже если и так, где ты видишь тут отсутствие ооп?

а где ты видишь тут наследование и виртуальные функции? и где ты видишь поддержку этого стиля в C++?

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

Как сделать наследование на чистом С?

man Objective-C, C--

Вы видимо бородаты и не понимаете, для чего придуманно ООП с бле^W наследованием и классами.

о да :) в этом, очевидно, всё и дело. ну так расскажи же, поделись мудростью

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

куда проще описать варьирование этой кнопки прямо по месту, как «кнопка с вот такой рюшечкой»

И превратится это потом в огород ифов, если кнопочек много. Тем более man виртуальные функции, которые в реальности делают именно то, что ты описал, но не так костыльно и тебе уже не нужно думать о таких мелочах. В общем блин в школу срочно учится программированию

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

> в C++ будет выглядеть как

это не совсем так, благодаря тому, что c++ таки развивается( а также gcc и msvc ), можно один раз написать макрос и упростить запись:

foreach( it, res ) ++it;

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