LINUX.ORG.RU
ФорумTalks

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

 , ,


1

7

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

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

Маерса читай.

А вообще читай за раст уже. Хватит плодить говнокод на плюсах.

anonymous
()

Брюс Эккель Введение в стандарты С++

gssomi ★★
()

А так хочется попробовать смотреть на мир глазами чистого плюсовика.

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

Смотри лучше в сторону .NET или Java.

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

А вообще читай за раст уже. Хватит плодить говнокод на плюсах.

Ой хипстота пошла. А по делу если ТС говнокодер, то на любом языке он будет говнокодить.

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

Как в 2016 можно не понимать, что язык - это просто инструмент. Дотнет и ява - это управляемый код с ВМ и профурсетками. C/C++ - это маш.код без подобного дерьма. Если на выходе нужен маш.код, то берешь C/C++/что-то еще и пишешь. По этим критериям нормальные люди выбирают языки, а не потому, что синтаксис не нравится.

crutch_master ★★★★★
()

Страуструп, A Tour of C++.

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

Думаю, в итоге будет легаси из 03/11 стандартов

Мощно задвинули, прям в своих лучших традициях. Внушаить. Прям чувствуется, что у тупизны дна нет.

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

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

Как в 2016 можно не понимать, что язык - это просто инструмент

Ты бы выбрал в качестве инструмента молоток, у которого из ручки гвозди торчат?

C++ - это маш.код без подобного дерьма

Дерьма в современном C++ очень много и с каждым стандартом становится все больше.

По этим критериям нормальные люди выбирают языки

Языки выбирают по «батарейкам» в комплекте и стоимости поддержки. Кресты по совокупности этих параметров разве что brainfuck обогнать могут.

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

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

Сынок, 2017 год на носу, а ты одиннадцатые кресты к светлому будущему причисляешь. К слову, даже в 17-м стандарте не будет ни сокетов, ни файберов — и кому такое окостеневшее говно нужно?

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

На раст уже написали операционку: исошник 11 метров жрет ~800мб памяти.

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

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

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

Сразу видно «нешколоту», который для продакшена писал. Может быть даже для ынтерпрайза.

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

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

Имею возможность смотреть по сторонам.

К слову, даже в 17-м стандарте не будет ни сокетов, ни файберов

К слову, отсутствие всего этого в стандарте нисколько не мешало использовать C++ на протяжении 30 лет.

Ну интересно было бы посмотреть на список языков, у которых все это _в стандарте_.

eao197 ★★★★★
()

Посмотри на C++ со стороны Qt (того же Шлее). Мне кажется, это для сишника лучший способ посмотреть на язык с иной перспективы

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

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

А ты уже о C++17 мечтаешь :-) Лол :-)

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

Ну интересно было бы посмотреть на список языков, у которых все это _в стандарте_.

golang?

Тащемта все означенное есть в POSIX.1-2001, но плюсовый комитет объелся крестоупорину и старательно игнорирует POSIX. А могли бы ведь стандартизовать какой-нибудь набор врапперов

#include <posix.1>
#include <posix.1b>
#include <posix.1c>
Но вместо этого занимаются откровенной херней.

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

К слову, даже в 17-м стандарте не будет ни сокетов, ни файберов — и кому такое окостеневшее говно нужно?

А Страуструп утверждает, что «We need direction» :-)

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

golang?

Это там, где инклуды прям из мастера гитхаба тянутся? А потом чтоб добавить фишку и пересобрать все это говно начинается веселый квест под названием «попробуй угадать в каком из 50 инклудов и еще 100 косвенных инклудов что изменили». ладно если оно тупо не собирается. А если собирается и не работает, как работало раньше ... Я уже 2 конторы знаю, которые на руби вернулись с этого Goвна.

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

А Страуструп утверждает

Что бы он там не утверждал, но ситуация печальная (https://en.wikipedia.org/wiki/C++17):

  • A file system library based on boost::filesystem (ублюдочна, как и сам boost)
  • Parallel versions of STL algorithms (wat? Весь мир уже для распараллеливания многих алгоритмов GPU предпочитает. Ну ничего, к 30-му стандарту может и запилят)
  • Additional mathematical special functions (и как мы без этого раньше жили?)
  • Most of Library Fundamentals TS I (e.g. std::optional, std::any) + std::variant, a type-safe union container (да своруйте уже var из C# или Object из Java и сделайте все объекты «умными указателями». Это вообще ни разу не та ниша, в которой у крестов есть шансы против языков с reflection)
  • A compile-time static if with the form if constexpr(expression) (кто-то радуется, кто-то готовит трактор, потому как крестоподелия окончательно становятся непознаваемо-неуправляемыми)
  • Structured bindings, allowing auto [a, b] = getTwoReturnValues(); (сахарок ведь нужнее, чем сокеты в эпоху IoT)
  • Template deduction of constructors (ок, работа над ошибками. Почему об этом не подумали, когда auto вводили — большой вопрос. Только код человеку читать станет еще проблематичнее)
  • Inline variables, which allows the declaration of variables in header files (даешь весь код в хидерах! К черту линкер, конпелируем всегда один гигантский исходник на каждый чих!)
kawaii_neko ★★★★
()
Ответ на: комментарий от eao197

Или вы не знаете, что такое _стандарт_?

Okay. Как насчет Pysthoon (не ручаюсь за правильность написания — постоянно путаюсь)? yield часть языка, сокеты, потоки, процессы — часть стандартной библиотеки.

А scheme? Да даже php «искаропки» умеет работать с сетью. Неудивительно, что плюсы никто не использует.

kawaii_neko ★★★★
()

А так хочется попробовать смотреть на мир глазами чистого плюсовика.

Не надо. Береги психику.

А вообще читай за раст уже.

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

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

(да своруйте уже var из C# или Object из Java и сделайте все объекты «умными указателями»

Когда kawaii_neko достигает дна, он начинает усердно копать.

eao197 ★★★★★
()

Тред не читал, Мейерса и Саттера наверняка советовали, а Дьюхерста? Я рекомендую с него начинать.

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

а своруйте уже var из C# или Object из Java и сделайте все объекты «умными указателями».

Ты что!!1 :-) Это же сделает язык менее типобезопасным! :-) Ведь как там Страуструп говорил, что классы типа Object - ненужный артефакт реализации, излишне обобщённый :-) Кажется так :-)

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

Специально для дебилов-переростков на пальцах: стандарт — это формальный документ, определяющий требования, которым должны удовлетворять реализации, претендующие на звание «соответствующих стандарту».

У упоминавшихся выше Python и PHP нет стандарта. Поэтому для них стандартная библиотека — это то, что включено в состав конкретной версии Python-а и PHP.

eao197 ★★★★★
()

Похоронная команда на марше

Опять налетели плюсЫ хоронить, вот только ни у кого это так и не получается.

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

это формальный документ, определяющий требования, которым должны удовлетворять реализации, претендующие на звание «соответствующих стандарту».

Т.е. мечты и теория :-)

У упоминавшихся выше Python и PHP нет стандарта.

Т.е. практика :-)

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

И что, у этих документов есть статус ISO-стандартов?

Лол :-) Зачем? :-)

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

И что, у этих документов есть статус ISO-стандартов?

Эти два языка из коробки могут скачать главную ЛОР-а и посчитать ее MD5 сумму, например на любой платформе. Поэтому эти языки востребованы, а C++ — удел маргиналов-одиночек, либо коллективов, погрязших в легаси по самые уши.

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

Эти два языка из коробки могут скачать главную ЛОР-а и посчитать ее MD5 сумму, например на любой платформе.

Во-первых, это никаким боком не относится к проблеме стандартов.

Во-вторых, как только вам потребуется отобразить главную страницу ЛОР-а обычному пользователю так, как это делают браузеры, то выяснится, что ни Python, ни PHP это просто так не сделает.

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

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

а C++ — удел маргиналов-одиночек, либо коллективов

Ах да, среди них принято оправдывать крутость цепепе фактом существования WEB-браузеров, написанных на цепепе :-) Правда, факт тысяч человеколет, затраченных на написание этих самых браузеров маргинала-одиночку колышет мало :-) Главное, что есть доказательство годноты его любимого языка программирования, на изучение которого были затрачены годы :-) И это доказательство - WEB-браузеры :-) Лол :-)

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

Во-вторых, как только вам потребуется отобразить главную страницу ЛОР-а обычному пользователю так, как это делают браузеры, то выяснится, что ни Python, ни PHP это просто так не сделает.

Ох :-) Лол :-) А в цепепе так тем более из коробки так нельзя :-)

anonymous
()

По книге не подскажу, но по темам:
- класс, наследование и т. п.
- Потоки (cin/cout/cerr/clog). - после этого прекращаешь использовать printf, scanf, ...
- std::string - после этого прекращаешь хранить строки в char[], бояться переполнений, и т. п.
- Перегрузка операторов
- Шаблоны, итераторы, тип auto, конструкция вида for (int i : vec )
- STL (vector, map, list, ...) - после этого прекращаешь использовать динамическое выделение памяти, бояться утечек памяти и т. п.
- Исключения + std::exception - после этого почти полностью уходят коды возврата из функций
- https://www.youtube.com/watch?v=N9bR0ztmmEQ + https://www.youtube.com/watch?v=UiZfODgB-Oc - после этого уходят странные непонятные вылеты из программ (если уже ловил).

И все непонятные конструкции, которые ты встретишь по дороге.

Это для начала...

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

Во-первых ... Во-вторых

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

kawaii_neko ★★★★
()

Си-программист навсегда обречён использовать С++ как Си с классами

А зачем его использовать иначе? :-) Хочешь наворотов в компайл-тайме? :-) Так цепепе даже строчку в компайл-тайме нормально сделать не может со своими хвалёным шаблонами :-)

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

требуют существенных усилий по написанию врапперов для прочих языков.

Особенно если делать по всяким там разным канонам, гайдлайнам и паттернам :-) Потому что если делать не по паттернам, то немалый труд могут ведь и «говнокодом» обозвать :-)

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

В-нулевых, язык выбирают, исходя из задачи.

Ну и что вам мешает так делать?

Положа руку на сердце, C++ не может похвастаться каким-то преимуществами ни в одной области

Так сказал Заратуkawaii_neko...

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

А уж каково писать врапперы для библиотек на OCaml-е или Haskell-е... Или даже на D.

Только тех, кто пишет на OCaml-е и Haskell-е, да и на D, это мало волнует.

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

Пишу для крупного продакшена на C++14 каждый день на работе, что не так?

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

Ну и что вам мешает так делать?

Ничто не мешает. К чему этот вопрос?

Так сказал Заратуkawaii_neko...

Смотрю, ты побоялся назвать предметные области, где C++ будет хорошим выбором?

А уж каково писать врапперы для библиотек на OCaml-е или Haskell-е... Или даже на D.

Не знаю, как насчет D, а OCaml и Haskell совершенно точно не позиционируют себя как «инструменты, для создания библиотек». Большая часть крестофич в новых стандартах призвана «облегчить жизнь разработчикам библиотек».

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

Ничто не мешает. К чему этот вопрос?

Ну так берите и используете то, что вам удобно. К чему столько попаболи по поводу C++?

Смотрю, ты побоялся назвать предметные области, где C++ будет хорошим выбором?

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

Не знаю, как насчет D, а OCaml и Haskell совершенно точно не позиционируют себя как «инструменты, для создания библиотек». Большая часть крестофич в новых стандартах призвана «облегчить жизнь разработчикам библиотек».

С++ не позиционировался как «инструмент для создания библиотек для других языков программирования». Библиотеки для C++ на C++ создаются в изрядном количестве. На любой вкус и цвет.

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

Смотрю, ты побоялся назвать предметные области, где C++ будет хорошим выбором?

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

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