LINUX.ORG.RU
ФорумTalks

C++ для Си-программиста

 , ,


1

7

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

Перемещено tailgunner из development

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

100500 раз уже называли, а вы так и не запомнили.

Мы запомнили, что ты убёг с цепепе на Раст :-)

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

А разве был вопрос?

Появился.

На любой вкус и цвет.

«От вкуса говна до цвета мочи», если речь идет о крестовых библиотеках. Есть ли вообще качественные C++ библиотеки кроме Qt?

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

100500 раз уже называли, а вы так и не запомнили.

Тогда тебя не затруднит повторить в сто тысяч пятьсот первый раз?

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

Есть ли вообще качественные C++ библиотеки кроме Qt?

Ну некий петушок kawaii_neko за мордор кукарекал вместо Авроры.

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

Появился.

Хде? Ну ответ на него сильно зависит от того, как больно человеку использовать C++ вообще.

«От вкуса говна до цвета мочи»

Сурово с вами жизнь обошлась...

Есть ли вообще качественные C++ библиотеки кроме Qt?

Вы бы хоть предметную область обозначили. А то ведь Qt сама может считаться редкостным говном за пределами GUI. Да и не всякий GUI на Qt имеет смысл делать.

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

Я выше поинтересовался, в каких вообще предметных областях C++ сияет.

Еще раз: где вы задавали такой вопрос?

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

А то ведь Qt сама может считаться редкостным говном за пределами GUI. Да и не всякий GUI на Qt имеет смысл делать.

Если уж Qt считать говном, то цепепе вообще не нужен :-)

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

Потоки (cin/cout/cerr/clog). - после этого прекращаешь использовать printf, scanf, ...

Религиозный фанатизм.

std::string - после этого прекращаешь ... бояться переполнений, и т. п.

std::string string;
string[-1] = '\0';
utf8nowhere ★★★
()
Ответ на: комментарий от Kroz

Потоки (cin/cout/cerr/clog). - после этого прекращаешь использовать printf, scanf, ...

Упитанно. Будьте добры, аналог

printf("%02d | %-10s | %4d | %6.2%%f\n", no, name, count, 100.0 * count / total);
в терминах std::cout.

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

качественные C++ библиотеки кроме Qt?

В каком месте современный Qt создаёт впечатление качественной библиотеки? Ну ладно, был вот Qt 4. Неплохо спроектирован, стабилен, лёгок, удобен в деплое, тут я с тобой согласен. А в Qt 5 пошли одни лишь регрессии, в том числе на 20% медленная работа QPainter.

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

ЕМНИП, исчерпывающий ответ на этот вопрос давным-давно дал Страуструп в книге «Дизайн и эволюция языка C++».

eao197 ★★★★★
()

Самый сок!

#include <functional>

int main() {
    auto fib = [i = 0, j = 1]() mutable {
        i = std::exchange(j, j + i);
        return i;
    };

    for (int i = 0; i < 10; ++i) {
        fib();
    }

    return fib();
}

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

ЕМНИП, исчерпывающий ответ на этот вопрос давным-давно дал Страуструп в книге «Дизайн и эволюция языка C++».

А есть что-то не из «давным-давно», когда кроме жабы, C и C++ не было больше ничего?

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

В каком месте современный Qt создаёт впечатление качественной библиотеки?

Различные части Qt хорошо дружат друг с другом: сетевые функции вроде как неплохо встраиваются в gui-поток, File можно передать как в поле POST-запроса, так и в картинку на формочке.

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

Ну а что в нишах C и C++ нового появилось с тех пор?

Rust, который пока еще слишком юн.

Разве что D2 и Go. Да и то, с некоторой натяжкой.

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

Ну а что в нишах C и C++ нового появилось с тех пор?

Я дождусь сегодня внятного перечисления «ниш C++»?

И не надо мешать теплое с мягким: на C не всегда удобно писать GUI, а C++ всегда будет хреновым выбором для ядра операционной системы.

kawaii_neko ★★★★
()

Си-программист навсегда обречён

Вся суть.

DawnCaster ★★
()

А вообще, зачем вам C++ ? Для системных задач - лучше C нет. Ну может RUST когда нибудь дорастёт до нормального уровня. А для прикладных задач, лучше уж что-то другое начать изучать. ИМХО, конечно.

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

А вообще, зачем вам C++ ? Для системных задач - лучше C нет

Си - убогое устаревшее говно. Если ты можешь не писать на нем - не пиши.

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

Я дождусь сегодня внятного перечисления «ниш C++»?

Вам уже дали конкретный адрес.

И не надо мешать теплое с мягким: на C не всегда удобно писать GUI, а C++ всегда будет хреновым выбором для ядра операционной системы.

Разработчики ряда ОС смотрят на вас с недоумением. Впрочем, эта тема уже обсуждалась.

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

Если ты можешь не писать на нем - не пиши.

По-возможности, именно так и делаю.

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

Сынок, 2017 год на носу

Я так понимаю, вам уже не меньше 60 лет?

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

Это была корутина.

Это было что угодно, но не coroutine

static int fib()
{
  static int i = 0, j = 1;
  int tmp = i;
  i = j; j += tmp;
  return i;
}

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

Вам уже дали конкретный адрес.

Даже номера страницы нет, не говоря уже о «конкретном адресе» или цитаты. Крестодемагоги как они есть: не могут даже назвать, для чего их инструмент пригоден.

Разработчики ряда ОС смотрят на вас с недоумением

И тут ты такой показываешь исходники.

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

Ну, учитывая, что компилятор делает из этого

А теперь посмотри, что делает твой компилятор для i < 18 (gcc) и i < 102 (clang).

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

Даже номера страницы нет, не говоря уже о «конкретном адресе» или цитаты.

Так у меня и книги сейчас в наличии нет.

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

Нафига давать обезъяне гранату?

И тут ты такой показываешь исходники.

Предложу воспользоваться поиском. Даже тут на LOR-е был с полгода назад большой срач, где эта тема поднималась.

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

- Дзынь! - сказала пила.

- Ага! - сказали мужики.

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

Inline variables, which allows the declaration of variables in header files

Одна из самых нужных для меня фич. Сейчас из-за одной-единственной переменной приходится иметь .cpp-файл, а с inline variables можно будет превратит библиотеку в header-only.

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

Плохо иметь короткую память.

Какой это нахрен C++, если на каждом шагу mutex_acquire/mutex_lock? Для возврата с ошибкой используется goto, как и в классическом C. Ты читай иногда исходники, прежде чем ссылками кидаться.

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

Какой это нахрен C++

Насколько я могу судить по auto, это C++11

auto aspace = mxtl::AdoptRef(new (&ac) VmAspace(base, size, flags, name));

если [...]

То есть ты отказываешься признать это Си++? Ну окей, чо.

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

Насколько я могу судить по auto

Можно и по mxtl::DoublyLinkedList<VmAspace*>. Теперь я знаю, как выглядит «C с дженериками».

То есть ты отказываешься признать это Си++?

А это у нас C++? https://github.com/fuchsia-mirror/magenta/blob/master/kernel/kernel/mutex.c

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

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

До C++11 была надежда, что этот язык можно спасти, но сейчас в свете того, что пытаются из него сделать в новых стандартах, очевидно, что язык мертв.

И что такого плохого сделали в новых стандартах?

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

Теперь я знаю, как выглядит «C с дженериками».

Просто для протокола: в Си нет дженериков. А там, где дженерики - это уже не Си.

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

Я дал тебе ссылку на Си++ в ядре. Твой когнитивный диссонанс по этому поводу забавен.

Кстати, если ты забыл: GCC тоже написан на Си++ :D

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от eao197

Для многих разработчиков C++11 — это пока еще недостижимое светлое будущее.

Причем исключительно по причине «манагеры не разрешают». Потому что в CentOs и даже в Astra уже есть C++11 (в астре частично, gcc 4.7), мигрировать трудностей никаких, кроме манагера, которому ссыкотно что-то менять, потому что обязательно что-то сломается и за это он получит по шапке, а потому низззя ни при каком раскладе и вот вам мешок высосанных из пальца причин.

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

eao197
Сынок

Чувак, ты в полного неадеквата превратился... Раньше, хоть что-то полезное и аргументированное генерил. Если хочешь, чтобы сколько-нибудь разумная часть ЛОРа тебя воспринимала как полного дегенерата - то ты на верном пути.

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

Это проблема не языка и даже не его компилятора, а дизайна самой системы.

Другими словами фанаты раста не осилили сделать нормальный дизайн, зато умеют толпами бегать по сайтам и писать глупости, что Rast дает какие-то гарантии безопасности.

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

В книге «Дизайн и эволюция языка С++» на стр.209 начинается раздел 9.3.2 «Если С++ - это ответ, то на какой вопрос». Там несколько страниц. Djvu-шку с книгой легко найти хоть через Google, хоть через Yandex.

Если коротко, то Страуструп перечисляет следующие категории:

  • низкоуровневое системное программирование;
  • высокоуровневое системное программирование;
  • встроенные системы;
  • численные и научные расчеты;
  • общее прикладное программирование.

И дает более развернутый обзор каждому из них.

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

По поводу использования C++ в разработке ОС: вот ссылка на большой срач, который был не так давно на LOR-е.

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

Причем исключительно по причине «манагеры не разрешают»

Не только. Иногда заказчики сидят на древних версиях RedHat-а или еще чего-нибудь, что покупалось за серьезные деньги. И ничего менять не хотят пока.

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