LINUX.ORG.RU

Расскажите, как изучали C++

 , , , ,


0

4

Какие учебники использовали, ресурсы? Что порекомендуете (сложность ресурса неважна), исходя из своего опыта? Как применили язык в первый раз на практике? Какие плюсы языка для себя вывели, сравнивая с чистым C? Как долго программируете (-овали) на C++? Заучивали ли UB? Помню из лекций по cpp Ильи Мещерина постоянные странные примеры, с которыми сталкивался он на практике, наподобие «int i = 0; i < v.size(); ++i = UB», куда резольвится имя, если using namespace N внутри цикла и в N есть x, и x есть в global namespace.



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

...аристотелианец...

Это в наши дни ничего не значит.

Я, может быть тоже этот , как его, ну, аристотелианец в общем. :⁠-⁠D И ведь не жужжу же.

sparkie ★★★★★
()

Взял исходняк Задней Дыры by Dildog и вперёд. Долго думал, как функцию вызывать, почему она не вызывается? А первая попытка была как в ассемблере : call myfnc смехота типа? Тогда, мне было не до смеха, интернета не было, спросить неукого. Додумался. Было это в начале столетия.

jnz
()

Советовать не нужно здесь. Программирование не семечки, не насладишься. Мне нужно было, чтобы прогу переделать и антивирус её не определял, а всё для того, чтобы доступ в интернет был. Денег у и меня небыло, а карточку для телефонного коннекта минимум от тридцати рублей был, что по деньгам как сейчас около двухсот. Днём за эту сумму можно было минут пятнадцать посидеть. После часа ночи можно до утра. В общем смысл в том, что сложно это программировать лишь для того, чтобы типа умею. Без практики, через две недели всё забудешь.

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

Нет, это для того чтобы можно было объявлять глобальные переменные объектного типа. Возможность инициализаторов это побочный эффект.

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

Да, но вполне могли бы ввести ограничения как для constexpr выражений, например требовать доступный тривиальный конструктор и тогда бы реализовывать глобальные конструкторы не понадобилось. Могу предположить, что хотели сделать возможность инициализировать глобалки типов std::string, std::vector

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

Эти ограничения смотрелись бы крайне странно. Объявляешь ты some_class x; а тебе в ответ ругань что у него неправильный конструктор. Причём конструктор мог стать неправильным из-за изменения версии какой-нить библиотеки. А ещё вовсе не везде конструктор инлайновый (реализован в хедере), точнее даже раньше он почти никогда таким не был.

С constexpr ситуация другая - ты явно указываешь что хочешь compile-time вычисление, соответственно ругань на невычислимый в compile-time конструктор смотрится уже понятнее. Ну и constexpr появились сильно позже.

хотели сделать возможность инициализировать глобалки типов std::string, std::vector

Думаю разрешённые глобальные конструкторы в С++ были всегда, а вот указанные типы (как и вообще STL) появились чуть позже чем язык.

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

а вот указанные типы (как и вообще STL) появились чуть позже чем язык.

Лучше бы не появлялись :)
Но да, ограничения создали бы больше проблем и проще было реализовать глобальну инициализацию

mittorn ★★★★★
()

Какие учебники и ресурсы? Зачем вообще нужны книги когда учишь какой-то язык программирования? Что мешает начать писать программы и по ходу дела разбираться в деталях, просто читая документацию, и спрашивая у ИИ не совсем понятные вещи?

Что за идея вот сесть читать какие-то талмуды нихера не делая? В голове ничего не отложится таким образом.

Мне вообще никогда не была понятна вот эта концепция сесть и начать учить некоторый язык программирования. Это че, как в видеоиграх типа, должно работать? Сел «учить», над тобой растет полосочка экспы, она заполнилась, и тут раз и выучил - и теперь эксперт. Так что ли?

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

lovesan ★★☆
()

Как долго программируете (-овали) на C++?

меньше, чем на С

Как применили язык в первый раз на практике?

Был самописный фреймворк на плюсах, для него писали Аппы. Наш был очень простой, но требовал очень опытного плюсовика, в нашейкоманде его не было, но мы писали клиенткую часть. Соответственно, раз я искал работу для кодинга на С и С++, её и получил.

Какие плюсы языка для себя вывели, сравнивая с чистым C?

мощнейшие механизмы абстракции. Статически компилируемые шаблоны - непревзойдены в индустрии. Полноценное ООП, с каким угодно наследованием. RAII позволяет детерминированное освобождение ресурсов без костылей типа defer в гошке, «with» в питоне. Единственное, чего нет - мултиметоды, но они вообще очень мало, где есть. Самая простая интеграция с С кодом в индустрии. И при всём при этом, ЯП не морализирует, высасывая «чистоту парадигмы», как в Java и проч. Естественно, уже есть ЯП типа Kotlin, которые убирает кондовость Java, но они для ВМ.

Если конкретно с сишкой сравнивать - наличие STL с контейнерами, в которых использование сырых указателей сведено к минимуму.

Заучивали ли UB?

естественно, нет. Достаточно знать про целочисленные заморочки из C и кое-какие вещи по теме владения объектами. Зубрёжка - это не про программирование вообще. Программисты либо наступают на грабли сами, либо читают об этом из книг. Я в основном из книг читал. На грабли наступил один единственный раз, и то, потому что особо не думал о деинициализации приложения, потому что всё выполнянось в полноценной ОС, которая сама все ресурсы освободила. Но команда QA ко мне привязалась с тикетом, и пришлось пару строк кода с «умным указательством» добавить.

«Учился» просто читая всё, что попадёт под руку. По плюсам на вскидку книг 6 прочитал точно.

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

Какие учебники и ресурсы? Зачем вообще нужны книги когда учишь какой-то язык программирования? Что мешает начать писать программы и по ходу дела разбираться в деталях, просто читая документацию, и спрашивая у ИИ не совсем понятные вещи?

Что за идея вот сесть читать какие-то талмуды нихера не делая? В голове ничего не отложится таким образом.

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

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

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

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

seiken ★★★★★
()

До сих пор помню свой первый класс. :) List. :) Список не помню чего, не шаблон. Простенький, на 1 экран (25x80). Я его два дня не мог заставить скомпиляться, не то что работать. Нынче, конечно, с интернетом и ИИшечой – любой дурак справится.

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

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

urxvt ★★★★★
()

Расскажите, как изучали C++

«Покажите на манекене, где Вас трогали»

Помню из лекций по cpp Ильи Мещерина постоянные странные примеры, с которыми сталкивался он на практике, наподобие «int i = 0; i < v.size(); ++i = UB», куда резольвится имя, если using namespace N внутри цикла и в N есть x, и x есть в global namespace.

Начинать изучения любого языка надо с написания рабочего кода, от простого к сложному. Вот эту всю эзотерику лучше оставить на после того, как базовые вещи выучил. Кресты тут не особенные.

Какие плюсы языка для себя вывели, сравнивая с чистым C?

Только те, которые в названии.

Bfgeshka ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.