В Си требования по надзору куда жёстче, особенно емли сравнивать с "плюсами" начиная с 11-х. В плюсах какие-то Умные указатели есть, которые нередко самоуничтожаться могут. Так что, идеальным языком тоталитарного диктатора является именно C.
Я много лет в геймдеве и хотел бы сделать ремарку: не слушайте тех, кто боится C++, не такой уж он и сложный. Напротив, на мой взгляд, C++ намного проще Java и С#, т к его инфраструктура более прямолинейна. Да, нужно разобраться с тем как работает сборка(препроцессор, компилятор, линковщик), работа с памятью(стек, куча, malloc, free, new, delete, Smart Pointers). Но на этом все - остальное это надстройки стандартной библиотеки, которые вы можете изучить прямо в коде, посмотрев исходники. В C# же, чтобы разбираться в технологи надо читать документацию, книги обо всех фичах виртуальной машины, GC, какие-то поколения, все это устроено намного сложнее, чем в C++(поэтому оно и медленнее). Кстати, говорить, что C# отжал что-то у C++ в геймдеве не совсем корректно. В Unity на C# пишутся скрипты с игровой логикой, но под капотом все тот же C++. В других игровых движках используются другие скриптовые языки: Lua, Python, могут использоваться проприетарные языки или визуальный скриптинг(Blueprints в Unreal Engine). Тут скорее C# конкурирует с ними. Если вы хотите работать в геймдеве с чем-то кроме высокоуровневой игровой логики(графика, физика, анимации, ресурсы и пр) - это всегда C++.
@@sorrynomorenickname вы сами пишете, что это тонкости. Тонкостей, уверен, и в других языках предостаточно. Мой поинт в том, что начать писать игры на C++ - не сложно. А такие видео вводят в заблуждение и отбивают желание даже попробовать.
@@artie5913 Как раз для написания чего-то производительного и комплексного без знания этих тонкостей не получится обойтись. Иначе тогда нет особого смысла не использовать тот же C#.
12:30 Тут важно разделить понимание. C# в Unity используется как скриптовой язык. Это очень важно. А сам движок Unity написан на C++ и это понятно почему. Многие в недоумении просто будут думать что реализация таких задач как отрисовка DirectX, просчет физики в реальном времени, звуковой движок и тд, это заслуга C# в Unity.
Никто не знает C++. Там собираются дилетанты, принимают не протестированные решения и потом разрабы валят проекты. Даже в гугле есть свои правила C++, например не использовать эксепшены. А Qt во всю использует макросы в С++... Контейнеры часто делают бесполезные операции... Подходы в программировании часто бездумно меняются на 180 градусов... полный беспорядок в общем.
@@ВикторГиль-ф2ф В компаниях часто ограничивают C++, чтобы не провоцировать miss use. Через исключения некоторые норовят возвращать runtime ошибки, хотя это замедляет код в тысячи раз. Или пропускают отлов каких-то исключений, в результате чего программы неожиданно вылетают по необработанному исключению. Хотя всё это можно постепенно вычистить, но есть и концептуальная проблема. А можно ли в принципе продолжать исполнение кода после уместно сгенерённого исключения? Также многие запрещают использовать RTTI - чисто из-за размера доп.памяти на хранение информации о типах. В 1990-х запрещали использовать template. Сейчас же ввели в язык auto, что по своей мощи сравнимо с template.
@@alexanderbelov6892 Мое мнение, исключения приводят к дублированию кода по освобождению ресурсов. Соответсвенно нарушается принцип DRY + код становится неуправляемым, если кто то забыл проверку освобождения ресурсов во всех предполагаемых точках появления исключений. Т.е. исключения дают больше проблем чем решают. И там проблемы принципиальные. До сих пор стандарт один, но настолько сложный, что производители компиляторов давно игнорируют стандарт и каждый лепит что то свое. А постоянная разница в недоработанных стандартах привела к тому, что код написанный ранее может просто перестать компилироваться (почти гарантированно старый код не скомпилируется).
@@ВикторГиль-ф2ф Если используется подход RAII к захвату ресурсов метода, в котором есть try catch, то усилия по освобождению не растут. Расткрутка стека производит освобождение объектов методов на стеке автоматически.
Да он в своих книгах в коде косячит - часто break не ставит и типа у него правильно логика после этого работает )))). Да и пишет он конечно писец заумно, явно преподавать ни его призвание, но после плюсов смотришь на другие языки и уже все знаешь, синтаксис тот же на 80 процентов.
У меня забавный случай был пару лет назад когда в stl вошла библиотека ranges я смотрел конференцию по новому стандарту c++ там из зала прозвучал вопрос - "а как на счёт скорости?" - ответ "теоретически медленнее работать не должно". Меня это заинтересовало я написал тестовую програмку на common lisp замерил время выполнения, переписал её на "новый c++" используя ranges замерил время в 2 раза быстрее, переписал в стиле "старый c++" замерил время в 1,5 быстрее :) снова переписал её как "с разработчик" заменив все stl контейнеры на свои простенькие замерил время снова быстрее :) gcc, clang. Мои знакомые с++ разрабы пишут на pyton затем переписывают на с++ (^.^)
На С/С++ разрабатываю уже 30 лет. Никаких проблем никогда не было ни с оформлением ни с чтением кода. А говнокод можно написать на любом языке, на той же Java, к примеру, так как это зависит от человека, а не от языка программирования. А данный обзор о С/С++ от человека, который явно далек от С/С++, не соответствует реальности. Ну а поскольку на С/С++ написаны все интерпретаторы, и компиляторы, то можно смело сказать, что на С/С++ можно написать все, что угодно. К примеру, для тех кто не осилил указатели, С/С++ разработчики написали Java, и теперь Java программисты сидят и рассуждают о С/С++ говнокоде, наверное, имея в виду эту самую Java :).
Здравствуйте. Где в литературе можно найти информацию про то, как собрать готовый проект с использованием библиотек и сторонних технологий? В книгах используются простые консольные примеры, за исключением Страуструпа, который вопрос именно подключения библиотек обходит стороной
неистово плюсую! я тоже не очень понял как coding conventions и coding style связанны с самим языком, тем более что в последние лет 10 все можно свести к общему знаменателю используя clang-tidy и clang-format
@@OlexLebed ну, я бы не стал с таким уровнем понимания языка, механизмов защиты операционных систем, виртуальной памяти толкать вот эту всю дичь. Но пипл хватает :)
Полностью согласен. К сожалению Сергей не соизволил даже погуглить где и для чего используется с++. И С++ не "тяжелее С". В эмбедед его меньше используют потому, что не для всех микрочипов сделали компилятор С++. Та и не во всех микрочипах есть heap, поэтому смысла в фичах с++ нет.
Difference between C and C++: C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off. --Bjarne Stroustrup
По описанию прям "Великий могучий"- И все-то в нем есть и синонимы, и метафоры, а учить даже носители бояться, а иностранцы сложнее китайского считают.
Мде... автор видимо С++ пару раз в жизни палочкой тыкал, в 90х годах. Половину утверждений - куда-то мимо либо неверные. Цикл until - это вообще что такое в C++?
Кликбейт и развод на каменты? Если да, то норм, если нет, то обидно... Являюсь относительно "молодым" разработчиком, не могу сказать, что было 100500 лет назад, но: 1. Ни одна нормальная ОС(win, linux, mac) не даст тебе залезть в память другого процесса или ядра, т.е. ты не можешь поменять байтики в памяти которая тебе не принадлежит, получишь Access Violation или segfault. 2. Стандартная библиотека плюсов достаточно скромна, да, как правило все ещё используют boost, но до с++17, не было функций работы с файловой системой, приходилось использовать платформозависимые фунции, привет win32 и posix. Работы с сетью нет до сих пор, xml? - нет, json - тоже нет, ini-?..., ну я думаю понятно. Библиотека C# или Java значительно богаче. (Если я неуч, и dot и т.д. не является "стандартом" соряньте). 3. Ну, обосраться разрабатывая на C++, вероятность, бесспорно, больше, согласен, но современный с++ вполне удобен и относительно безопасен, Smart Pointers, RAII, ну, да, хорошо бы понимать как это работает. P.s. чёт пробило)) соряньте.
Ну то что на C++ можно читать/писать всё - спорно. Так или иначе на уровне ОС защита имеется(если эта самая ОС имеется), виртуальная память состоит из сегментов в которых находятся сегменты кучи, стэка, вручную при-mmap-ленных файлов, исполняемых библиотек и самой запущенной программы - ко всем этим сегментам существет определённые права доступа чтения/записи/исполнения. Если программа не запущена от root/администратора особо плохих вещей сотварить программа не сможет(одна из причин не запускать всякую хрень из инета под рутом). При обычных обстоятельствах в сегменты других программ вам вход так же закрыт(если конечно они сами не позволят войти). Так же не согласен, что в C++ нет фреймворков решающих большинство задач - Qt или Boost вполне справляются даже с самыми не тривиальными задачами, но появляются проблемы "иного порядка". Если используешь какой-либо фреймворк в C++ нужно именно знать как он функциклирует, в противном случае эффективный отстрел ног гарантирован. Умение читать/понимать документацию роляет в большинстве классических случаев использования фреймворков, а в неклассических - чтение/понимание header-файлов и немножечко дедукции. С библиотеками немного проще - они редко наводняют код сложными конструкциями которые можно не так использовать, особенно библиотеки Си - обернул в классы и не паришься при использовании. Вручную рулить памятью - да нужно, но RAII упрощает эту задачу - определил очистку выделенной в куче памяти в деструкторе и всё при выпадении экземпляра класса из стека память его полей так же корректно зачищается. В случае использовании фреймворков и C++ библиотек не актуально - там всё и так сделано за вас. При особом желании и умении можно использовать STL так не разу и не коснувшись динамической памяти ручками, в таком случае C++ покажется на одном уровне с C# или Java. То что C++ медленнее Си - действительно так. Причина тому RAII и множественные цепочки вызовов который он порождает - когда конструктор вызывает конструктор, тот вызывает конструктор экземпляра другого класса, за тем вызывается деструктор этого экземпляра, пару раз выделилась память в куче, один раз очистилась, а другой перенеслась по указателю - и всё это в одну строчку написанную программистом... понял это программист только через отладчик.
Ой какая прекрасная серия видео! 🥰 Предлагаю вам запустить курс для проджект менеджеров с обзором всяких айтишных технологий и языков. Я вот сейчас это всё по крупинкам хожу собираю 🐥
Не знаете вы историю. С ++ написал датчанин, ученик норвежца, который создал первый ООП язык Simula в конце 60-х. Simula в 70-е никакого применения не нашла. А Biarn Straustrup понял что пришло время ООП и решил сделать крутой ООП язык. А Smalltalk , это был второй ООП язык. Вообще если не скандинавы, то я не знаю как бы сейчас выглядело программирование
Smalltalk все таки был первым языком ООП. Само понятие и описание ООП ввел разработчик Smalltalk. Это уже потом симуловский вариант, который позаимствовал и С++, стали тоже называть ООП, хотя оно никакого отношения к ООП в видении и определении Алана Кэя не имеет. То есть существует ООП в изначальном классическом виде (SmallTalk) и тот вариант что потом назвали ООП (Simula, C++, Java, C# и т.д.)
Мне 16 лет, всегда был далёк от программирования в каком-либо проявлении. Но вот решил это изменить и приступил к изучению С++. За месяц есть уже некоторые успехи, получается писать примитивные коды. Учитывая, что запас знаний об этом языке программирования у меня скудный, получается даже использовать его для решения задач школьной программы и тп.
@@Aristotle314 це просто итак логично) я имел ввиду, если вы что-то читали и это вам помогло, то могли бы вы это посоветовать конкретнее (заранее спасибо)
Слушай, ты молодец. Но я начинал кодить примерно так же, как ты (сейчас мне 35, и кодить продолжаю). Единственное что бы я посоветовал - все-таки разобраться сначала с "обычным" Си, а потом накручивать плюсы. Хотя бы пару часов или денек посвяти этому, посмотри видосы. И потом уже добавляй туда ООП, шаблоны и прочие плюсовые штуки. Так просто знания будут структурированы и по факту "2 инструмента по цене одного" будут у тебя в руках, потому что они для разного.
А почему C++ считается таким сложным для изучения? я сам долго выбирал курсы по IT, рассматривал разные варианты, но в итоге остановился на Skypro. Проработав 7 лет в сфере обслуживания, я решился сменить профессию и не пожалел))
А что если мне нравиться концепция "спать" с паяльником и быть близко к железу, програмировать всякие платы и так далее но за свои 17 лет, я в жизне сам паяльник в руках не держал и в душе не знаю понравиться ли мне програмировать всякие там операционки для электро чайника? Мне стоит пробовать дальше учить плюсы, или ну их в баню?
Наконец хоть кто-то растасовал по понятиям. Что касается самой професси складывается ощущение что в программисты С++ очень высокий порог входа, там сразу ждут тех кто лет 5 его изучал в очень хорошем вузе у хорошего преподвателя.
Во всех проектах в которых я работал спокойно приходили студенты без опыта с непрофильных факультетов. Физики, математики без уклона в программирование, с желанием учиться и развиваться легко проходят собеседование, приходят на пол ставки и к концу универа и выходу на полную ставку уже официально числятся как мидлы, а не джуны. Высокий порог входа в плюсы это миф.
@@SirVestniK возможно вы правы если речь идет о москве и о каких то проектах где можно найти дело для начинающих. Лично я таких вакансий на хх ниразу не видел. Там сразу 5 лет опыта требуют.
@@12strel по моему опыту на эту графу в вакансии смотреть бесполезно. Если в вакансии написано что ищут middle или jun разработчика, то будут готовы взять толкового кандидата без опыта, способного прямо сейчас выполнять реальные задачи в коде и с хорошим потенциалом для профф роста. В любом проекте есть рой нужных но не сложных задач, на которых можно набираться опыта и для которых нужны руки. Кандидату при этом всё же нужно какой-то уровень самостоятельности иметь.
@@princessmary5556 То что я вижу в большинстве случаев одна и таже история , кадры начинают набирать когда жареный петух клюнул и деваться уже некуда. Везде стандартная фраза "у нас сроки горят и мы ищем не просто спецов с 10 летним опытом а чтобы ваще-ваще стразу сел и поехал на незнакомом коде в незнакомой области". Некоторые пишут о том что им нужны жуны но если почитать требования к этим жунам то складывается впечатление что жун для них это тот кто уже давно все умеет только не такой крутой "как мы тут пятый год на одном и том же проекте".
11:18 Так как C++ является обычным ООП языком на нём можно писать Enterprise приложения. Работа с памятью уже лет 20 должна вестись исключительно с помощью smart pointers, и в этом случае код можно на 99% сделать с автоматически управляемой памятью. Это не освободит от проблем ручного управления памятью в 1% случаев для массивов, но и для них придумали стандартные контейнеры, которыми настоятельно советуют пользоваться. ООП язык всё же.
@@kirillchurkin9318 Автор, видимо, просто не застал C++11 и более поздние стандарты, т.е. рассказывает по большей части про "С с классами", на котором писали во времена популярности C++Builder от Borland и Visual Studio 6 от Microsoft :). Тогда да, всё через new, delete писали, стандартные библиотечные контейнеры типа векторов вообще использовать было не модно (да о них и мало кто что-нибудь знал), с потоками (ввод-вывод) аналогично, а в учебниках по С++ тех времён основы языка объяснялись по сути на С без плюсов и к этому добавляли пару глав про классы.
@@MrLaSerj boost в те времена тоже не было, насколько помню %). Ну, то есть, формально либа уже была в 1999-2000 году, но не только лишь все про неё вообще знали ).
В 21м году говорить что в С++ надо прям вручную за объектами следить как то странно. Уж давно смарт-поинтеры и удобные контейнеры существуют, можно писать как на жаве, не думая. Даже авто вывод типов есть.
Не только в 21. Во времена с++03 или даже в с++98 тоже самое было с той лишь разницей, что смартов не было в стандартной библиотеке. А вот в проектах они были (бустовские или частные велосипеды). В качестве вывода типов использовались typeof (gcc) или особая шаблонная магия, которой, впрочем, сегодня уже никого не удивишь.
Как погроммист с/с++ с опытом 15 лет, заявляю: в выпуске примерно 50% - это мифы, легенды и сказания. Благо, что Сергей прямо сказал, что не смог выучить с++, но правда сказал это в самом конце
@@alexchoriy2182 C++ это не Бейсик или Паскаль , к которым можно применить фразу «применений не так много». К С++ можно применить утверждение «он переживет 95% всех остальных языков». В этом вопросе Надо отталкиваться от своих предпочтений и условий. Если можешь сразу и навсегда определиться со своей сферой IT, то осваивай наиболее популярный язык. В той сфере. Например, корпоративное ПО - Java. Веб - что-то своё. Десктоп - c++\c# …. У мобилок - своё. Если молодой и не можешь определиться в том, во чем хочешь специализироваться, то c++ - прекрасный старт для того чтобы потом любой другой язык пошёл у тебя легче
@@Alexey_Shtakerman я писал на питоне долго +- знаю его хорошо , но что-то захотелось более низкоуровневое програмирование изучить , попробовал плюсы вроде понравилось , но никогда не работал на таком низком уровне + никогда не интересовался электроникой поэтому немного сомневають что вывезу этот неймоверно большой поток информации + будет ли интересно мне. спасибо за коментарий , щас очень проблематично найти разработчиков на чем либо кроме питона успехов вам!
С++ прочно обосновался в игровой индустрии, насколько мне известно, в большинстве компьютерных игр вся логика написана на С++, собственно это основной язык весьма популярного реалтайм движка Unreal Engine
@@f1amezof В Unreal Engine 4 есть встроенная система визуального скриптинга. UE4 по умолчанию поддерживает сразу два языка программирования: текстовый C++, в котором нужно писать строчки кода, и визуальный язык Blueprints, в котором игровая логика выстраивается при помощи связанных между собой блоков.
Никто не заставляет использовать все детали синтаксиса С++. Сам Бьярн Страуструп говорит, что прежде чем комиссия по языку С++ что-то добавляет, проходят многие дебаты. Он сам не сторонник расширения синтаксиса и имеет очень веское слово в этой комиссии. Ну а сами программы на С++ становятся намного лаконичнее по сравнению с их аналогом написанным на С. Так же не будем забывать про простоту автоматического тестирования кода написанного как свойства / методы объектов.
@@gameboss5033 C++ в разработке читов - это процентов 20 от всей работы. Основная работа - это реверсинг, дампы памяти и тд. И конечно же обходы античитов. То есть надо писать драйверы на C, иначе обойти продвинутые kernelmode-античиты никак не получится
7:20 Почему code style имеет проблемы только с C/C++? В других языках code style определён в стандарте языка? Нет! В Java/C# также code style может быть любым.
Видимо, дело в том, что в других языках обычно всё же есть какой-то один принятый в сообществе стиль кодирования (бывает, IDE ещё и автоматически форматируют всё под этот стиль), а в плюсах у каждой команды свой "кодекс", нет какого-то общепринятого варианта, часто даже в рамках одной организации есть различия и надо постоянно учитывать код проекта какой из команд ты сейчас правишь :).
Про чтение "любой" памяти, т.е. не принадлежащей виртуальному адресному пространству процесса - это очень сильное заявление. Хотя.. если речь о программировании под MS DOS то почему нет )
Сергей Здравствуйте Вы не могли бы записать видео про гемдев на с++ Именно то что надо изучить для гемдева не касаясь лишней информации Да бы не тратить время впустую 🧐
Добрый день! Сделайте пожалуйста видео на тему популярности Embedded разработчика. Очень хотелось бы услышать ваше мнение, я являюсь Embedded разработчиком и в профессию эту, я входил с изучения нескольких Ассемблеров, на разную архитектуру ядра.
6:17 until в C++? Это вы, батенька, так комментарии со зрителей выбиваете или так хорошо знаете C++? Он там есть разве что так: #define repeat do #define until(exp) while(!(exp))
под Enterprise обычно понимается решение бизнес-задач, яндекс же занимается созданием высоконагруженных сервисов. поэтому там не используют ни явы ни шарпа, зато в ходу плюсы
@@z140140 И "явы и питоны" в Яндексе активно используются, и даже испытывают огромную нехватку спецов по этим языкам для чего организовали свою "школу Яндекса"... Знаю это точно.
@@JohnSmith-ps4uk я работал в яндексе в 2018-м и тогда четвёрка основных языков там была - ява, плюсы, питон и кажись js. Но в этом сообщении под "там" я имел в виду highload, а не яндекс в целом - для него в яндексе используют плюсы поскольку ява и тем более питон работают медленней
А можно ли на C++ теоретически написать небольшое и простенькое вебприложение которое просто будет принимать рест запросы ходить в базу и выдавать каких-то юзеров, аналогично как если испльзовать набор из спрингбута? Есть ли библиотеки? Понятно что кода больше будет, но интересует теоретическая возможность, и если она есть, то во сколько раз будет больше кода по сравнению с тем же приложением на спринге?
@@yurytuchkin5027 насколько я помню, там давали фишки C++20, насчет паттерном и шаблонного программирования - это общие вещи для большинства языков, я не уверен, что их стоит давать в вводном курсе по конкретному языку, который, к тому же, является мультипарадигмальным, потому что это увеличило бы его в 2 раза, что очень много, учитывая, что курс состоит из ~6 частей. Все еще считаю, что он довольно неплох для знакомства с языком и всем, кто хочет попробовать плюсы мог бы его рекомендовать, тем более, что он, как правило, бесплатный для студентов, однако, если вы можете посоветовать что-то лучше, то я буду очень благодарен
оператор точка .не переопределяется, переопределяется оператор -> . Макрос на скобочку невозможен. P.S. Но можно перегрузить оператор скобки , круглые и квадратные. И {} скобки могут теперь уже использоваться для вызова конструктора и при присвоении.
Простительная ошибка. Зато есть for, do, while - каждый из которых нужный и выполняет свою задачу. А Until есть в Коболе и если не ошибаюсь, в Паскале.
@@igorseledtsov7345 Реальный состав кода не известен. Но сервисы Windows вполне могут быть написаны на C#. Пусть не 90%, но 20% на C#, 70% на C++, 10% на C - вполне годный расклад. В Интернете есть даже более-менее точный размер исходников Windows на 01.2020 - порядка 581Gb в исходниках. Это плюс-минус 10 млрд. строк кода. Писать большую часть на C++ - это уже подвиг. Хотя Сергей вот считает, что на C++ не пишут Enterprise приложения. Зато пишут миллиарды строк кода операционной системы.
@@alexanderbelov6892 как это не известен не раз утекал полный код.. дапже мне попадался.. с++ я там не видел.. писать на нём кернель это безумие. да и невозможно даже теоретически... а прикладные програмы конечно могут быть хоть на визуал басике... да и на си-шарпе могут. тут вопрос что считать операционкоя.. я то про кернель... вы видимо трактуете это малость пошире
Столько булшита про С++ я слышу только когда собеседую джуно-мидлов. «С быстрее С++ потому что в С++ есть ООП» - это что значит? Время компиляции? Время исполнения функции? Вы сами то понимаете что говорите?
Если вас спросят, какая машина быстрее - вы подумаете о том, какую машину быстрее сделать или какая машина быстрее ездит? Думаю и здесь так же - большинство не подумают про время компиляции, а про время исполнения. Или разработки. Только если вы не компилируете _все_ части программы каждый раз и программа на миллионы строчек.
Спасибо, интересно, я сам кодер на с/с++, обажаю язык, хотя пишу 60-70% на нем и 30% на Ява. Избыточный функционал дает такие большие возможности, расширение построения архитектуры программы.
@@botsynth Паттерны в теории знать хорошо, но мы живем в реальном мире, на практике они используются редко (в моей деятельности), но когда нужны тогда нужны. Использовал Singleton, Factory, Proxy. Другие на практике не использовал. Наверное я новичек. Но драйверы я не пишу, и ядро для Unreal Engine тоже ;) Заморачиваться лучше стоить реальными задачами, а не тратить время на теорию. Она забывается быстро. Особенно если не используется в дальнейшем.
не пинайте сильно ногами, я вообще не программер, но как то заинтересовала эта тема. Подскажите, а насколько сложно написать простенький терминал для торговли? Самый простой, просто свечи, несколько инструментов рисовалки и возможность размещать ордера, подсоединение к бирже по API. Почему задался таким вопросом. Все терминалы под Винду и единицы под МакОс. Под Линукс нет ничего (бесплатного). А я сижу на линуксе. Стоит ли вообще затеваться с этим делом (начинать осваивать программирование)? Спасибо.
что за цикл until? В жаве тоже есть while и есть do-while. Лучше бы вспомнили триграфы. И кстати, язык D есть. Говорят - неплохой. Но Rust все равно лучше.
Благодарю за толковый ролик. Могли бы вы еще ролик создать с темой: стоит ли "дергаться" старикам 50+? К этому возрасту существующая работа надоедает, как горькая редька и хочется хотя бы подработки в другой сфере. Могут ли хоть на что-то рассчитывать старики? Или их удел - дворники, ночные сторожа либо охранники в пятерочке?
Думаю данный вопрос решать нужно каждому для себя, если есть силы/возможность/желание можно освоить, другой вопрос это быть "джуном" в 50+ лет когда коллеги будут в 2-2.5 раз моложе.
По поводу "написание энтерпрайз-приложения займет в 10 раз больше времени, чем на Шарпе или Джаве": С++ - это только язык, все зависит от используемых библиотек и фреймворков. Имею опыт написания одного модуля (правда, с довольно витиеватой и объемной логикой) сложной энтерпрайз-системы на С++, этот язык был выбран ибо этот модуль должен был без существенных доработок собираться под Виндовз, Линукс и Андроид. Использовались фреймворки Qt5 и Boost, разработка заняла не намного больше времени (примерно плюс 20-30%) относительно разработки аналогичного приложения на C# (основной язык системы, частью которой являлся модуль), ну и пришлось немного побороться с некоторыми сайд-эффектами от отсутствия управления памятью. Резюмируя скажу, что да, если не стоит специфичных задач, то С++ для написания UI-приложений энтерпрайз-уровня - не лучший выбор, однако, это не значит, что его так уж сложно использовать с такой целью, дополнительная сложность есть, но она не в 10 раз выше, чем на других более популярных языках,
Сергей ну что вы говорите.... Есть api операционки, и больше чем этот api позволяет сделать нельзя. Поэтому залезть в любую область памяти и большую часть вами названную сделать не получится.
Я думаю, что для людей, которые C++ в своей работе постоянно не используют (вернее вообще не использует), не то чтобы прям супер-интересно что пишут на языке программирования C++, НО сам по себе ролик интересный. Правда в нём, тема так и не была раскрыта. Чисто для себя понял, что C++ используется для написания операционных систем и написания компьютерных игр. А в основном автор рассказывал об особенностях самого языка, что в принципе тоже познавательно.
Где то слышал, что мак ос больше написана на object pascal ? Так ли это не знаю, Но мне проще написать программу с начало на object pascal. Потом перевести всё в си++. Знаю из врат, Но реально паскаль более упорядочен, и программу писать намного легче. Конечно после паскаля Go для меня это дауншифтинг... Пробывал и go и С++ остановился на Pascal. Конечно железки проще на си писать чем на паскале... Но большую часть времени это Lazarus, кросс платформа для разных осей...
Until в c++ небыло и нет. Никогда не понимал людей использующих венгерскую нотации. Операционные системы, ныне существующие, компиляторы, интерприьаторы, СУБД, написаны на си, а не с++.
нет например, reflection, который мне иногда так нужен и это очень печально. Например для сериализации и десериализации в С++ нужно писать функцию для обхода всех объектов в ручную! А вот в Python reflection есть, и сериализация или трансформация в JSON занимает одну строчку кода. Но, тем не менее С++ - это мой фаворит, особенно, если умело использовать его со знанием С/glib/stl.
То что в языке С++ нужно следить за выделением и освобождением ресурсов - это правда, но я не соглашусь с тем, что в современном С++ это нужно делась прямо явным образом во всех местах программы и уделять этому особое внимание. Для языка Си это наверно более актуально, а в С++ это автоматизируется за счёт конструкторов/деструкторов класса, динамических контейнеров, умных указателей, и других возможностей. Т.е. операторы new и delete всё реже используются в коде таким вот явным образом.
Вот я - занимаюсь работами с физикой и электротехникой. Требуется создавать программы (с управлением от компьютера) для управления теми или иными физическими приборами. Что посоветуете?
Хреново ты подготовился к выпуску, дядя. Ты просто вводишь людей в заблуждение, а твои воззрения сильно устарели. 6:12 Какой еще until в C++?! 6:36 Перегрузка оператора точка?! O'RLY? 7:54 Наоборот, венгерская нотация как раз и была придумана для повышения читаемости. Т.к. C/C++ это язык со строгой типизацией, а на то время, компиляторы обладали очень слабым статическим анализом, и чтобы избежать ошибок при использовании типов, эта нотация позволяла хотя бы визуально отслеживать, что как используется. Это сейчас есть интерактивные супер-удобные IDE с компиляцией прямо на лету, которые все ошибки подсвечивают, а тогда это был просто текстовый редактор и что пропустил компилятор (а пропускал он очень много), то ты потом часами отлавливал в отладчике. 9:55 Все не настолько печально - мы же имеем дело с объектами, а значит с инкапсуляцией. Как минимум, можно полагаться на области видимости и смарт-поинтеры, а также есть техники с подсчетом ссылок. 10:04 Здесь начинается полная чушь. Если имеются в виду современные операционные системы (Windows, Linux, macOS), то C++ позволяет сделать ровно то, что ему позволяет операционная система. Это просто способ записи алгоритмов, а не какая-то супер сила, которая позволяет обойти ОС и защиту процессора. Те же штуки с памятью можно проделывать и в C# например (да, есть там прямой доступ к памяти - читайте Рихтера) потому что есть API и есть поддержка среды исполнения. Все отличие от C++ при этом - это просто нельзя сделать случайно, но можно если действительно надо. 10:50 При наличии фреймворков и библиотек, писать на С+ не сложнее чем на других языках. На С++/Qt например, оно вообще от C#/.NET мало отличается. 11:20 Оценка сильно завышена. Да, оно сложнее, но не в 10 раз. При наличии опыта с определенной технологией, продуктивность например на Qt/Qml будет сравнима с тем же C#/WPF. При этом ограничений будет сильно меньше, а производительность лучше. 15:55 Фишка в том, что ВЕСЬ C++ учить и не надо. Достаточно знать в целом, что есть что и что пришло в язык в определенном стандарте, а детально изучать по необходимости. Т.к. не бывает проектов, в которых используется АБСОЛЮТНО ВСЕ из C++.
Тоже прифигел с until. Чувак вообще не в теме, чисто начитался интернетов без понимания. Ага, на С++ он программировал. Очевидно рекламируемые курсы ровно такие де
@@metrstiln1159 учи Си - не помешает. А потом можно более сложный С++, если будет желание. Я не назову себя большим профессионалом, но Си думаю знаю не плохо, по сравнению с С++. А по практическому применению, ну я например писал на Си свои дипломные писал и еще cgi-скрипты для своего сервера.
В некоторых вузах до сих пор одной из работ для допуска к зачету, является написание простенькой программы на ассемблере. И студентам на неё хватает от одного вечера до месяца. Да и программа занимает примерно от 100 до 500 строк, из которых 20-30 одинаковые (константы, указатели). Шикарный язык, для изучения устройства процессора, а так же для понимания что любые данные, независимо от типа это про набор байтов, ибо немного поигравшись, можно написать программу, которая сама себя переписывает! Ну или при ошибке можно записать данные в область видеопамяти или ещё куда и получить весёлые артефакты.
писал на многих языках, C++ как качественный multitool, но иногда тяжело читаемый (хотя зависит от качества программиста), хотя новые стандарты вносят свои коррективы. в случае когда нужен performance (редкие ситуации) я беру С и иногда поглядываю что там у С++ нового, а нового из boost в стандарт много чего добавляют, судя по всему, С++ активно развивается и начинает выглядеть всё более привлекательным по сравнению с другими языками, иногда подумываю обратно к нему вернуться уже 7 лет на нём продуктового ничего не писал )
Всегда оставляю фигурную скобку на строке, это очень удобно в написании, но иногда надо закомментить все условие, и тогда приходится ее переносить, чтобы не искать и не комментить закрывающую. Мне кажется, это не очень большая проблема :)
На 9:57 не совсем правда. А как же COM ATL и так называемые умные классы и типы? Не нужно следить за всеми объектами. При уходе из области видимости память освобождается в простых случаях. Достаточно переопределить деструктор и конструктор класса определенным образом. Посмотрите к примеру реализацию шаблона CAtlArray и в частности его деструктор. А коллектор реализовать для объектов COM совсем просто. Только разница в том что выполнение коды не останавливается при очистке объектов или освобождении памяти. И реализация поколений может быть своя наиболее эффективная даже чем в JAVA. Изучите шаблоны и ATL на этом сделано всё нутро Windows. Технология пришла из Linux там называется Cobra.
Где-то в 19м году подучил с++ пару дней и теперь любой язык интуитивно понятен, уже в 22м пишу ботов для игр и программы для оптимизации любых игр(даже танков запустил на старом компе сделав какие-то 15 строчек)
Хотите стать классным программистом, учитесь на C, параллельно Cpp. Потом Java, C#, тем более Python станут доступными очень быстро. По поводу уборки мусора. В C# можно очистить ресурсы в ручную, но уборщик сделает это быстрее (проверено). Современный С++., компилятор ++20 делает исходники, которые быстрее чистого С. При программировании микроконтроллеров все больше переходят с С на С++. Поэтому С++ и С будут востребованы еще долгое время. Тесты в Google обязательно включают С++. И центральное место в них управление памятью. Windows написан на C и С++. Последние версии Framework на C#.
@@nikitabelov1478 Знаю C, знаю СPP, знаю C#, знаю Java - кому как. Но сейчас учу студентов в Калифорнии и Европе. 1 курс С, C++. Там, кто на 1 курсе не прошел C и С++ выбирают смежные специальности. Например в Австрии на зачете тебе дают пустой листок и ты должен написать код на С не пользуясь компьютером. Кроме того Алгоритмы и стуктуры данных, формальные грамматики и языки, дискретная математика и т.д. Например в Гугл считают, что если ты овладел C, то овладеешь и go. Там тест C, C++ обязательный!
@@woodlandfantomas2044 Ну да, все же сразу в Гугл пойдут работать и обязательно туда, где требуется C/C++, даже если они до этого программировали на Java. Ты-то знаешь, но ты не в начале своего пути, а человек с опытом уже.
С++ - хороший язык, просто нужно знать, как его готовить. Когда я создаю новый класс, я в первую очередь продумываю, как он будет занимать память и как освобождать. Потом уже его наполняю функциональным содержимым. Так же, язык очень любит, когда проект нормально структурирован, каждая сущность является самостоятельной, а проекте чётко распланирована последовательность всех действий. Много раз встречал проекты, где одна структура заполняется по частям в различных частях программы что в итоге выливается в то, что правка кода в одном месте ломает функционал в другом. Если такая ситуация происходит при разработке, значит что-то не так со структурой проекта и она должна быть пересмотрена.
Ну-ну, пока ты пересматриваешь структуру проекта, уйдёт много часов чтобы заново всё отрефакторить. Если какая-то часть кода сложно модифицируется, но работает без багов и прочих проблем, то нужно не менять существующее, а надстраивать новое, раз уж структура программы по вашему неудачная. А вот потом уже как будут силы со временем, можно будет переделать тот кусок хардкода, когда это будет целесообразно.
Звучит как прохладная история человека, который никогда не нюхал пороху. Я вот вообще не думаю об управлении памятью. Нафига??? delete используется только по праздникам, раз в пятилетку. Хороший проект - это проект, который вообще не нужно никак специально структуировать. А напротив, можно говнокодить по принципу "тяп ляп" и в продакшен.
Не знаешь что такое уровень валентной зоны, постоянная планка, арсенид галлия, квантовая оптика, вектор обратной решетки, собственная проводимость, экситонные спектры, p-n переход - не программист
Я конечно понимаю, что вы скорее блогер, чем разработчик, но может не стоит на столько вводить в заблуждение. Доступа к регистрам в с++ нет(без ассемблерных вставок). Доступ к памяти разных процессов разруливается на уровне железа(у процессора есть специальный модуль), конечно есть атаки типа мелдауна или спектра, но их можно реализовать даже на js.
На С++ писать сложнее чем на питоне раза в 2, а не в 10. Просто, когда выделяешь память, тут же нужно прописывать ее высвобождение. Да и изучить минимально необходимое количество синтаксиса можно, а более сложные конструкции осваивать позже. Очень зависит от того, как подается материал.
@@MrLaSerj Если что-то можешь сделать сам - делай. Придется проект на предыдущих версиях делать - будешь долго удивляться потери памяти. Поддерживать приходится проекты и 10 и 20 летней давности. Тем более на встраиваемых микроконтроллерах. На них нового компилятора может и не быть. Как и лишней памяти. Как минимум, это нужно уметь. А для того - практиковаться.
Видео неплохое, но все же очень поверхностное. Например, "запустил код, а компьютер БУМ" у меня ни разу не возникало. Память это вообще вечная мантра тех, кто С++ толком не связывался. Весь stl написан с учетом RAII, boost, по сути, тоже. Если откровенно не говнокодить - возможность потерять память ничтожно мала.
C++ намного более защищенный язык чем С, там можно понаделать ограничений как защита от дурака. В то же время я не встречал C++ проектов, которые были бы написаны канонически по книжкам и были легко читаемы. Код на С намного проще переваривается, кое-где его даже и получается меньше, ну да есть большие шансы выстрелить в ногу, но C код можно хотя бы поддерживать другому человеку, а не сразу выбрасывать и переписывать. Боб Мартин сказал, что проблема С была в бесконтрольном использовании указателей на функции, поэтому были сделаны вот эти классы с виртуальными вызовами. Но делать интерфейс с одной единственной виртуальной функцией не то ли самое, как просто передать указатель на функцию? Понимаю их любовь к C++ конструкциям и к библиотеке boost, это люди которым нравится все красивое, дорогие спортивные автомобили, яхты, меткие и емкие выражения, жесткие структуры, которые другой програмист недоучка не сможет не только адаптировать под себя, но и даже понять, авторитарное управление проектом. По-моему C++ в отличие от C позволяет очень долго поддерживать плохую архитектуру, вставляя костыли. Это и хорошо и плохо. С одной стороны проект как бы развивается, с другой он мог бы быть более понятным, на C сложные конструкции невозможно поддерживать уже на первых этапах и от них приходится отказываться. Еще один минус - в C++ как например лямбда, STL или исключение транслируется в ассемблер? Как это все писать под микроконтроллер, если ты не контролируешь выход?
Не надо писать под контроллеры с исключениями и STL)) Но если очень хочется, то выход ассемблера всегда можно посмотреть и оценить, потянет по перфомансу или всё же лучше написать в стиле Си.
Я не программировал на C++, но программировал на СИ, и на самом деле, слушая видео, я понимаю, что основные "крутые возможности" C++ - свободно себя чувствуют на СИ, по типу например, полного контроля памяти, определение того, к чему она принадлежит, макросы, это всё есть в СИ
Как специалист могу сказать что на плюсах пишут всьо, просто фсьооо, от калькулятора даже самого простого который только и умеет что складывать два числа и все, и вплоть до квантовой механики и принципа функционирования атомов, по этому учите плюсы детишки!
10 ошибок в поисках работы программистом - ua-cam.com/video/OchgKVPR7fc/v-deo.html
Почему UNREAL, а не CRYENGINE ? Direct X же куда лучше чем OPEN GL ? 😁
while и do оба небходимы в одинаковой степени! программирую 37 лет. никакой избыточности тут нет
Как говорилось на Java можно написать всё, а на C++ можно написать Java
UPD: Ещё немного и коммент обгонит ролик по лайкам)
Большая часть Java написана на Java, а если JVM написана на C++, это не значит, что доя этого не подходит любой другой не managed язык.
@@IExSet ну да, после создания языка, его пересоздают с помощью его же самого.
на Assembler можно написать C++
@@user-wm3sb9gj7q отчасти, но в основном компиляторы пишут на C/C++
@@IExSet какие бывают клоуны... эхх
"Каждый объектик должен быть под надзором!". Настоящие диктаторы прогают на С++ )
У плохих же диктаторов объекты сбегают от надзора.
Ленивые диктаторы кодят на Rust.
Оригинальная шутка:)))
В Си требования по надзору куда жёстче, особенно емли сравнивать с "плюсами" начиная с 11-х. В плюсах какие-то Умные указатели есть, которые нередко самоуничтожаться могут.
Так что, идеальным языком тоталитарного диктатора является именно C.
Дедушка Адольф пошёл учить MASM
@@levoradikal в 92году помню начинал с тасма, закончил мясом
Я много лет в геймдеве и хотел бы сделать ремарку: не слушайте тех, кто боится C++, не такой уж он и сложный. Напротив, на мой взгляд, C++ намного проще Java и С#, т к его инфраструктура более прямолинейна. Да, нужно разобраться с тем как работает сборка(препроцессор, компилятор, линковщик), работа с памятью(стек, куча, malloc, free, new, delete, Smart Pointers). Но на этом все - остальное это надстройки стандартной библиотеки, которые вы можете изучить прямо в коде, посмотрев исходники. В C# же, чтобы разбираться в технологи надо читать документацию, книги обо всех фичах виртуальной машины, GC, какие-то поколения, все это устроено намного сложнее, чем в C++(поэтому оно и медленнее).
Кстати, говорить, что C# отжал что-то у C++ в геймдеве не совсем корректно. В Unity на C# пишутся скрипты с игровой логикой, но под капотом все тот же C++. В других игровых движках используются другие скриптовые языки: Lua, Python, могут использоваться проприетарные языки или визуальный скриптинг(Blueprints в Unreal Engine). Тут скорее C# конкурирует с ними. Если вы хотите работать в геймдеве с чем-то кроме высокоуровневой игровой логики(графика, физика, анимации, ресурсы и пр) - это всегда C++.
Посоветуйте материалы для изучения, если не сложно)
@@aleksandr3938 cppreference
Далеко не все. А как же правила вывода типов, тонкости со sfinae, rv/cv spec, rvo/nrvo, трайты, концепты, виды инициализаций и т.д. ?
@@sorrynomorenickname вы сами пишете, что это тонкости. Тонкостей, уверен, и в других языках предостаточно. Мой поинт в том, что начать писать игры на C++ - не сложно. А такие видео вводят в заблуждение и отбивают желание даже попробовать.
@@artie5913 Как раз для написания чего-то производительного и комплексного без знания этих тонкостей не получится обойтись. Иначе тогда нет особого смысла не использовать тот же C#.
12:30 Тут важно разделить понимание. C# в Unity используется как скриптовой язык. Это очень важно. А сам движок Unity написан на C++ и это понятно почему. Многие в недоумении просто будут думать что реализация таких задач как отрисовка DirectX, просчет физики в реальном времени, звуковой движок и тд, это заслуга C# в Unity.
В unity просто не .NET а Mono, т.е. С# в IL код, IL код в C++, C++ в машинный
На языке программирования C++ пишутся практически все курсовые и контрольные работы в ВУЗе )))
builder 2003 vibes
Говорят даже Страуструп до конца не знает С++
Никто не знает C++. Там собираются дилетанты, принимают не протестированные решения и потом разрабы валят проекты. Даже в гугле есть свои правила C++, например не использовать эксепшены. А Qt во всю использует макросы в С++... Контейнеры часто делают бесполезные операции... Подходы в программировании часто бездумно меняются на 180 градусов... полный беспорядок в общем.
@@ВикторГиль-ф2ф
В компаниях часто ограничивают C++, чтобы не провоцировать miss use. Через исключения некоторые норовят возвращать runtime ошибки, хотя это замедляет код в тысячи раз. Или пропускают отлов каких-то исключений, в результате чего программы неожиданно вылетают по необработанному исключению. Хотя всё это можно постепенно вычистить, но есть и концептуальная проблема. А можно ли в принципе продолжать исполнение кода после уместно сгенерённого исключения?
Также многие запрещают использовать RTTI - чисто из-за размера доп.памяти на хранение информации о типах.
В 1990-х запрещали использовать template. Сейчас же ввели в язык auto, что по своей мощи сравнимо с template.
@@alexanderbelov6892 Мое мнение, исключения приводят к дублированию кода по освобождению ресурсов. Соответсвенно нарушается принцип DRY + код становится неуправляемым, если кто то забыл проверку освобождения ресурсов во всех предполагаемых точках появления исключений. Т.е. исключения дают больше проблем чем решают. И там проблемы принципиальные. До сих пор стандарт один, но настолько сложный, что производители компиляторов давно игнорируют стандарт и каждый лепит что то свое. А постоянная разница в недоработанных стандартах привела к тому, что код написанный ранее может просто перестать компилироваться (почти гарантированно старый код не скомпилируется).
@@ВикторГиль-ф2ф Если используется подход RAII к захвату ресурсов метода, в котором есть try catch, то усилия по освобождению не растут. Расткрутка стека производит освобождение объектов методов на стеке автоматически.
Да он в своих книгах в коде косячит - часто break не ставит и типа у него правильно логика после этого работает )))). Да и пишет он конечно писец заумно, явно преподавать ни его призвание, но после плюсов смотришь на другие языки и уже все знаешь, синтаксис тот же на 80 процентов.
У меня забавный случай был пару лет назад когда в stl вошла библиотека ranges я смотрел конференцию по новому стандарту c++ там из зала прозвучал вопрос - "а как на счёт скорости?" - ответ "теоретически медленнее работать не должно". Меня это заинтересовало я написал тестовую програмку на common lisp замерил время выполнения, переписал её на "новый c++" используя ranges замерил время в 2 раза быстрее, переписал в стиле "старый c++" замерил время в 1,5 быстрее :) снова переписал её как "с разработчик" заменив все stl контейнеры на свои простенькие замерил время снова быстрее :) gcc, clang.
Мои знакомые с++ разрабы пишут на pyton затем переписывают на с++ (^.^)
На С/С++ разрабатываю уже 30 лет. Никаких проблем никогда не было ни с оформлением ни с чтением кода. А говнокод можно написать на любом языке, на той же Java, к примеру, так как это зависит от человека, а не от языка программирования.
А данный обзор о С/С++ от человека, который явно далек от С/С++, не соответствует реальности.
Ну а поскольку на С/С++ написаны все интерпретаторы, и компиляторы, то можно смело сказать, что на С/С++ можно написать все, что угодно. К примеру, для тех кто не осилил указатели, С/С++ разработчики написали Java, и теперь Java программисты сидят и рассуждают о С/С++ говнокоде, наверное, имея в виду эту самую Java :).
Здравствуйте. Где в литературе можно найти информацию про то, как собрать готовый проект с использованием библиотек и сторонних технологий? В книгах используются простые консольные примеры, за исключением Страуструпа, который вопрос именно подключения библиотек обходит стороной
@@sagrer128 Спасибо большое. Буду изучать эти инструменты. Иначе, по всей видимости, ни как.
Не важно на каком языке пишешь, важно кто пишеть на этих языках😀
неистово плюсую! я тоже не очень понял как coding conventions и coding style связанны с самим языком, тем более что в последние лет 10 все можно свести к общему знаменателю используя clang-tidy и clang-format
Так си или С++ ? языки похржи только синтксически А аот методу программировения и рядом не лежали...
В этом ролике можно узреть максимальное незнание C++, и не только.
він в кінці так і сказав! що він його не вивчив!
@@OlexLebed ну, я бы не стал с таким уровнем понимания языка, механизмов защиты операционных систем, виртуальной памяти толкать вот эту всю дичь. Но пипл хватает :)
@@serg_joker та якийсь випуск тільки заради хайпу, привернути увагу. Інформативності нуль.
Полностью согласен. К сожалению Сергей не соизволил даже погуглить где и для чего используется с++.
И С++ не "тяжелее С".
В эмбедед его меньше используют потому, что не для всех микрочипов сделали компилятор С++. Та и не во всех микрочипах есть heap, поэтому смысла в фичах с++ нет.
@@kolyan199816 Вы работаете в embedded разработке?
Difference between C and C++:
C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
--Bjarne Stroustrup
Есть умные указатели которые умеют сами освобождать память
Вот вот. А еще есть деструкторы, которые сами автоматически подчистят ресурсы. А в java забыл поставить finally { object.close() } и труба.
Ключевого слова "until" в С++ нет.
По описанию прям "Великий могучий"- И все-то в нем есть и синонимы, и метафоры, а учить даже носители бояться, а иностранцы сложнее китайского считают.
То чувство когда не совсем всё знаешь по теме будущего видоса но видидос сделать и залить на ютуб надо!
когда ничерта не знаешь*
Мде... автор видимо С++ пару раз в жизни палочкой тыкал, в 90х годах. Половину утверждений - куда-то мимо либо неверные. Цикл until - это вообще что такое в C++?
Кликбейт и развод на каменты? Если да, то норм, если нет, то обидно...
Являюсь относительно "молодым" разработчиком, не могу сказать, что было 100500 лет назад, но:
1. Ни одна нормальная ОС(win, linux, mac) не даст тебе залезть в память другого процесса или ядра, т.е. ты не можешь поменять байтики в памяти которая тебе не принадлежит, получишь Access Violation или segfault.
2. Стандартная библиотека плюсов достаточно скромна, да, как правило все ещё используют boost, но до с++17, не было функций работы с файловой системой, приходилось использовать платформозависимые фунции, привет win32 и posix. Работы с сетью нет до сих пор, xml? - нет, json - тоже нет, ini-?..., ну я думаю понятно. Библиотека C# или Java значительно богаче. (Если я неуч, и dot и т.д. не является "стандартом" соряньте).
3. Ну, обосраться разрабатывая на C++, вероятность, бесспорно, больше, согласен, но современный с++ вполне удобен и относительно безопасен, Smart Pointers, RAII, ну, да, хорошо бы понимать как это работает.
P.s. чёт пробило)) соряньте.
Ну то что на C++ можно читать/писать всё - спорно. Так или иначе на уровне ОС защита имеется(если эта самая ОС имеется), виртуальная память состоит из сегментов в которых находятся сегменты кучи, стэка, вручную при-mmap-ленных файлов, исполняемых библиотек и самой запущенной программы - ко всем этим сегментам существет определённые права доступа чтения/записи/исполнения. Если программа не запущена от root/администратора особо плохих вещей сотварить программа не сможет(одна из причин не запускать всякую хрень из инета под рутом). При обычных обстоятельствах в сегменты других программ вам вход так же закрыт(если конечно они сами не позволят войти).
Так же не согласен, что в C++ нет фреймворков решающих большинство задач - Qt или Boost вполне справляются даже с самыми не тривиальными задачами, но появляются проблемы "иного порядка". Если используешь какой-либо фреймворк в C++ нужно именно знать как он функциклирует, в противном случае эффективный отстрел ног гарантирован. Умение читать/понимать документацию роляет в большинстве классических случаев использования фреймворков, а в неклассических - чтение/понимание header-файлов и немножечко дедукции. С библиотеками немного проще - они редко наводняют код сложными конструкциями которые можно не так использовать, особенно библиотеки Си - обернул в классы и не паришься при использовании.
Вручную рулить памятью - да нужно, но RAII упрощает эту задачу - определил очистку выделенной в куче памяти в деструкторе и всё при выпадении экземпляра класса из стека память его полей так же корректно зачищается. В случае использовании фреймворков и C++ библиотек не актуально - там всё и так сделано за вас. При особом желании и умении можно использовать STL так не разу и не коснувшись динамической памяти ручками, в таком случае C++ покажется на одном уровне с C# или Java.
То что C++ медленнее Си - действительно так. Причина тому RAII и множественные цепочки вызовов который он порождает - когда конструктор вызывает конструктор, тот вызывает конструктор экземпляра другого класса, за тем вызывается деструктор этого экземпляра, пару раз выделилась память в куче, один раз очистилась, а другой перенеслась по указателю - и всё это в одну строчку написанную программистом... понял это программист только через отладчик.
Очень приятно было послушать историю возникновения и развития языка. Сразу понимаешь сферу применения
Ой какая прекрасная серия видео! 🥰 Предлагаю вам запустить курс для проджект менеджеров с обзором всяких айтишных технологий и языков. Я вот сейчас это всё по крупинкам хожу собираю 🐥
Не знаете вы историю. С ++ написал датчанин, ученик норвежца, который создал первый ООП язык Simula в конце 60-х. Simula в 70-е никакого применения не нашла. А Biarn Straustrup понял что пришло время ООП и решил сделать крутой ООП язык. А Smalltalk , это был второй ООП язык. Вообще если не скандинавы, то я не знаю как бы сейчас выглядело программирование
Smalltalk все таки был первым языком ООП. Само понятие и описание ООП ввел разработчик Smalltalk. Это уже потом симуловский вариант, который позаимствовал и С++, стали тоже называть ООП, хотя оно никакого отношения к ООП в видении и определении Алана Кэя не имеет.
То есть существует ООП в изначальном классическом виде (SmallTalk) и тот вариант что потом назвали ООП (Simula, C++, Java, C# и т.д.)
У Сергея крутая дикция. По этому видео отлично смотрится на скорости 2х.
Мне 16 лет, всегда был далёк от программирования в каком-либо проявлении. Но вот решил это изменить и приступил к изучению С++.
За месяц есть уже некоторые успехи, получается писать примитивные коды. Учитывая, что запас знаний об этом языке программирования у меня скудный, получается даже использовать его для решения задач школьной программы и тп.
Отлично, продолжай в том же духе
А откуда ты брал информацию для обучения скажи пожалуйста? (спрашиваю так как только хочу начать)
@@Andruxa03 можно с Ютуба, можно по книге, можно от преподавателя
@@Aristotle314 це просто итак логично) я имел ввиду, если вы что-то читали и это вам помогло, то могли бы вы это посоветовать конкретнее (заранее спасибо)
Слушай, ты молодец. Но я начинал кодить примерно так же, как ты (сейчас мне 35, и кодить продолжаю). Единственное что бы я посоветовал - все-таки разобраться сначала с "обычным" Си, а потом накручивать плюсы. Хотя бы пару часов или денек посвяти этому, посмотри видосы. И потом уже добавляй туда ООП, шаблоны и прочие плюсовые штуки. Так просто знания будут структурированы и по факту "2 инструмента по цене одного" будут у тебя в руках, потому что они для разного.
на C++ Builder писать код + верстать диалоги было легко и приятно)
А почему C++ считается таким сложным для изучения? я сам долго выбирал курсы по IT, рассматривал разные варианты, но в итоге остановился на Skypro. Проработав 7 лет в сфере обслуживания, я решился сменить профессию и не пожалел))
Вы про с++? Сложно это было?, обучение с++?
Плохая реклама, переделывай
Гений маркетинга
А что если мне нравиться концепция "спать" с паяльником и быть близко к железу, програмировать всякие платы и так далее но за свои 17 лет, я в жизне сам паяльник в руках не держал и в душе не знаю понравиться ли мне програмировать всякие там операционки для электро чайника? Мне стоит пробовать дальше учить плюсы, или ну их в баню?
На плюсах пишут код.
Спасибо сио посмотрел видео ставьте лайки подписывайтесь .
В следующем видео расскажу что пишут на Джаваскрипт
Неужели код?
Наконец хоть кто-то растасовал по понятиям. Что касается самой професси складывается ощущение что в программисты С++ очень высокий порог входа, там сразу ждут тех кто лет 5 его изучал в очень хорошем вузе у хорошего преподвателя.
Во всех проектах в которых я работал спокойно приходили студенты без опыта с непрофильных факультетов. Физики, математики без уклона в программирование, с желанием учиться и развиваться легко проходят собеседование, приходят на пол ставки и к концу универа и выходу на полную ставку уже официально числятся как мидлы, а не джуны.
Высокий порог входа в плюсы это миф.
@@SirVestniK возможно вы правы если речь идет о москве и о каких то проектах где можно найти дело для начинающих. Лично я таких вакансий на хх ниразу не видел. Там сразу 5 лет опыта требуют.
@@12strel по моему опыту на эту графу в вакансии смотреть бесполезно. Если в вакансии написано что ищут middle или jun разработчика, то будут готовы взять толкового кандидата без опыта, способного прямо сейчас выполнять реальные задачи в коде и с хорошим потенциалом для профф роста.
В любом проекте есть рой нужных но не сложных задач, на которых можно набираться опыта и для которых нужны руки.
Кандидату при этом всё же нужно какой-то уровень самостоятельности иметь.
Смотря где. Есть компании, которые нацелены на состоявшихся специалистов. А есть такие, которые набирают "старт карьеры" (джунов)
@@princessmary5556 То что я вижу в большинстве случаев одна и таже история , кадры начинают набирать когда жареный петух клюнул и деваться уже некуда. Везде стандартная фраза "у нас сроки горят и мы ищем не просто спецов с 10 летним опытом а чтобы ваще-ваще стразу сел и поехал на незнакомом коде в незнакомой области". Некоторые пишут о том что им нужны жуны но если почитать требования к этим жунам то складывается впечатление что жун для них это тот кто уже давно все умеет только не такой крутой "как мы тут пятый год на одном и том же проекте".
11:18 Так как C++ является обычным ООП языком на нём можно писать Enterprise приложения. Работа с памятью уже лет 20 должна вестись исключительно с помощью smart pointers, и в этом случае код можно на 99% сделать с автоматически управляемой памятью. Это не освободит от проблем ручного управления памятью в 1% случаев для массивов, но и для них придумали стандартные контейнеры, которыми настоятельно советуют пользоваться. ООП язык всё же.
Автор сам не понимает о чём говорит, сразу видно, что почитал мемов и даже не программировал на cpp
@@kirillchurkin9318 он сам сказал, что не смог изучить до конца.
@@kirillchurkin9318 Автор, видимо, просто не застал C++11 и более поздние стандарты, т.е. рассказывает по большей части про "С с классами", на котором писали во времена популярности C++Builder от Borland и Visual Studio 6 от Microsoft :). Тогда да, всё через new, delete писали, стандартные библиотечные контейнеры типа векторов вообще использовать было не модно (да о них и мало кто что-нибудь знал), с потоками (ввод-вывод) аналогично, а в учебниках по С++ тех времён основы языка объяснялись по сути на С без плюсов и к этому добавляли пару глав про классы.
@@sagrer128 Еще есть объемная библиотека boost
@@MrLaSerj boost в те времена тоже не было, насколько помню %). Ну, то есть, формально либа уже была в 1999-2000 году, но не только лишь все про неё вообще знали ).
В 21м году говорить что в С++ надо прям вручную за объектами следить как то странно. Уж давно смарт-поинтеры и удобные контейнеры существуют, можно писать как на жаве, не думая. Даже авто вывод типов есть.
Не только в 21. Во времена с++03 или даже в с++98 тоже самое было с той лишь разницей, что смартов не было в стандартной библиотеке. А вот в проектах они были (бустовские или частные велосипеды). В качестве вывода типов использовались typeof (gcc) или особая шаблонная магия, которой, впрочем, сегодня уже никого не удивишь.
Как погроммист с/с++ с опытом 15 лет, заявляю: в выпуске примерно 50% - это мифы, легенды и сказания.
Благо, что Сергей прямо сказал, что не смог выучить с++, но правда сказал это в самом конце
начал учить C++ и решил посмотреть видос , автор отбил все желание учить яп
@@alexchoriy2182 чем именно отбил ?
@@Alexey_Shtakerman незнаю просто так завуалировано намекает что применений плюсам уже не так и много
@@alexchoriy2182 C++ это не Бейсик или Паскаль , к которым можно применить фразу «применений не так много». К С++ можно применить утверждение «он переживет 95% всех остальных языков». В этом вопросе Надо отталкиваться от своих предпочтений и условий.
Если можешь сразу и навсегда определиться со своей сферой IT, то осваивай наиболее популярный язык. В той сфере. Например, корпоративное ПО - Java. Веб - что-то своё. Десктоп - c++\c# ….
У мобилок - своё.
Если молодой и не можешь определиться в том, во чем хочешь специализироваться, то c++ - прекрасный старт для того чтобы потом любой другой язык пошёл у тебя легче
@@Alexey_Shtakerman я писал на питоне долго +- знаю его хорошо , но что-то захотелось более низкоуровневое програмирование изучить , попробовал плюсы вроде понравилось , но никогда не работал на таком низком уровне + никогда не интересовался электроникой поэтому немного сомневають что вывезу этот неймоверно большой поток информации + будет ли интересно мне. спасибо за коментарий , щас очень проблематично найти разработчиков на чем либо кроме питона успехов вам!
С++ прочно обосновался в игровой индустрии, насколько мне известно, в большинстве компьютерных игр вся логика написана на С++, собственно это основной язык весьма популярного реалтайм движка Unreal Engine
На с++ пишется движок. А вот игровая логика - по возможности, на скриптовых языках.
@@princessmary5556 Игровая логика тоже на C++ в UE.
@@f1amezof В Unreal Engine 4 есть встроенная система визуального скриптинга. UE4 по умолчанию поддерживает сразу два языка программирования: текстовый C++, в котором нужно писать строчки кода, и визуальный язык Blueprints, в котором игровая логика выстраивается при помощи связанных между собой блоков.
-В c++ нет сборщика мусора, ты должен всё помнить и делать вручную!
-Умные указатели: ну да, ну да, пошли мы на х*р.
Никто не заставляет использовать все детали синтаксиса С++. Сам Бьярн Страуструп говорит, что прежде чем комиссия по языку С++ что-то добавляет, проходят многие дебаты. Он сам не сторонник расширения синтаксиса и имеет очень веское слово в этой комиссии. Ну а сами программы на С++ становятся намного лаконичнее по сравнению с их аналогом написанным на С. Так же не будем забывать про простоту автоматического тестирования кода написанного как свойства / методы объектов.
Изучил его когда-то только ради написания читов к игре, в итоге работаю теперь по с++
Сейчас как раз таки пишу)
Как так получилось? Да ты гений похоже, мега сложный язык выучить по приколу)))
Ахах,тоже учу его ради читов сейчас 😂😂😂😂
@@gameboss5033 C++ в разработке читов - это процентов 20 от всей работы. Основная работа - это реверсинг, дампы памяти и тд. И конечно же обходы античитов. То есть надо писать драйверы на C, иначе обойти продвинутые kernelmode-античиты никак не получится
Батя, спасибо за твой труд по просвещению населения в ИТ-технологий.
Вот интересно С++ стоит начинать изучать сразу в Linux или Windows?
7:20 Почему code style имеет проблемы только с C/C++? В других языках code style определён в стандарте языка? Нет! В Java/C# также code style может быть любым.
Видимо, дело в том, что в других языках обычно всё же есть какой-то один принятый в сообществе стиль кодирования (бывает, IDE ещё и автоматически форматируют всё под этот стиль), а в плюсах у каждой команды свой "кодекс", нет какого-то общепринятого варианта, часто даже в рамках одной организации есть различия и надо постоянно учитывать код проекта какой из команд ты сейчас правишь :).
С чего вы взяли, что в других языках есть какой то один принятый стиль?
Сижу вот думаю, с какого языка начать изучение какого либо языка. до 30 лет было до лампочки на всё это, и тут возникает интерес к неизвестности)))
Про чтение "любой" памяти, т.е. не принадлежащей виртуальному адресному пространству процесса - это очень сильное заявление. Хотя.. если речь о программировании под MS DOS то почему нет )
WPM/RPM ?)
ошибка сегментирования (стек памяти сброшен на диск)
Добрый день, на седьмой минуте говорите: "Например: есть цикл do, while и есть цикл until" - можно пример с кодом последнего цикла? )
Так мне кажется от с программированием связан тем, что на видео что-то там рассказывает
Для написания программ для работы микроконтролеров не так много альтернатив. Это Асемблер, С и С++ по этому С++ для меня на первом месте.
Си лучше, меньше вероятности пропустить ошибку.
Сергей Здравствуйте
Вы не могли бы записать видео про гемдев на с++
Именно то что надо изучить для гемдева не касаясь лишней информации
Да бы не тратить время впустую 🧐
Добрый день! Сделайте пожалуйста видео на тему популярности Embedded разработчика. Очень хотелось бы услышать ваше мнение, я являюсь Embedded разработчиком и в профессию эту, я входил с изучения нескольких Ассемблеров, на разную архитектуру ядра.
6:17 until в C++? Это вы, батенька, так комментарии со зрителей выбиваете или так хорошо знаете C++? Он там есть разве что так:
#define repeat do
#define until(exp) while(!(exp))
Подумываю изучить C++ как дополнение к своим C# WPF проектам. Если будет нужно поработать с компьютером более "интимно"
Уважаемый Сергей, для этого видео лучше бы пригласили Антона Полухина их Яндекса. Он пишет на нем как раз Enterprise решения.
под Enterprise обычно понимается решение бизнес-задач, яндекс же занимается созданием высоконагруженных сервисов. поэтому там не используют ни явы ни шарпа, зато в ходу плюсы
@@z140140 И "явы и питоны" в Яндексе активно используются, и даже испытывают огромную нехватку спецов по этим языкам для чего организовали свою "школу Яндекса"... Знаю это точно.
@@JohnSmith-ps4uk я работал в яндексе в 2018-м и тогда четвёрка основных языков там была - ява, плюсы, питон и кажись js. Но в этом сообщении под "там" я имел в виду highload, а не яндекс в целом - для него в яндексе используют плюсы поскольку ява и тем более питон работают медленней
А можно ли на C++ теоретически написать небольшое и простенькое вебприложение которое просто будет принимать рест запросы ходить в базу и выдавать каких-то юзеров, аналогично как если испльзовать набор из спрингбута? Есть ли библиотеки? Понятно что кода больше будет, но интересует теоретическая возможность, и если она есть, то во сколько раз будет больше кода по сравнению с тем же приложением на спринге?
Можно, посмотрите в сторону Qt Networking.
Там точно есть tcp/udp сокеты, но вроде прямо веб сервер тоже был
Так что же пишут а этом языке "X"?)
Много про него слышал) Но курсов нигде нету)
Значит, нужно его срочно создать, ведь вселенной так не хватает еще одного языка, который спасет человечество от кОтострофы
Есть отличный курс от МФТИ и Яндекса на курсере
@@danilapoddubny3734 я же не про С++, а про таинственный язык "X")
Вроде на заборах на нём что-то писали.
@@yurytuchkin5027 насколько я помню, там давали фишки C++20, насчет паттерном и шаблонного программирования - это общие вещи для большинства языков, я не уверен, что их стоит давать в вводном курсе по конкретному языку, который, к тому же, является мультипарадигмальным, потому что это увеличило бы его в 2 раза, что очень много, учитывая, что курс состоит из ~6 частей. Все еще считаю, что он довольно неплох для знакомства с языком и всем, кто хочет попробовать плюсы мог бы его рекомендовать, тем более, что он, как правило, бесплатный для студентов, однако, если вы можете посоветовать что-то лучше, то я буду очень благодарен
оператор точка .не переопределяется, переопределяется оператор -> . Макрос на скобочку невозможен. P.S. Но можно перегрузить оператор скобки , круглые и квадратные. И {} скобки могут теперь уже использоваться для вызова конструктора и при присвоении.
Я не си++ программист, но видел картинку где кто-то дефайнами переопределил скобочку на "правая скобка" Типо делали язык программирования на русском
@@bentonitt слово менять на скобку можно, как и в си
За то можно запятую переопределить :-)
@@bentonitt это детский сишный макрос, любая книжка начинается с демонстрации подобного
Насколько помню, можно ещё true на false поменять и наоборот
На будущее лучше не говорить про синтаксис плохо знакомого языка. Никаких until в С++ нет. Дефайны - это наследие Си и т.д.
Простительная ошибка. Зато есть for, do, while - каждый из которых нужный и выполняет свою задачу. А Until есть в Коболе и если не ошибаюсь, в Паскале.
@@yuriy333 и do-while и while-do. repeat-until - это да.. это паскаль
@@MrCter Самый полный набор этих видов циклов в Visual Basic, там "while/until" можешь ставить как в начале цикла Do-Loop, так и в конце.
Операционные системы это на 90% С, а не С++
да всё на 80 это С.. не питайте иллюзий..
хотя из своих сре где живётся кажется что это не так
Windows - это на 90% C#. Microsoft не зря его делали.
@@alexanderbelov6892 делали они его чтоб продавать.. а не чтоб тело видовс писать писать, они конечно мазохисты но не настолько-же...
@@igorseledtsov7345 Реальный состав кода не известен. Но сервисы Windows вполне могут быть написаны на C#.
Пусть не 90%, но 20% на C#, 70% на C++, 10% на C - вполне годный расклад.
В Интернете есть даже более-менее точный размер исходников Windows на 01.2020 - порядка 581Gb в исходниках. Это плюс-минус 10 млрд. строк кода. Писать большую часть на C++ - это уже подвиг. Хотя Сергей вот считает, что на C++ не пишут Enterprise приложения. Зато пишут миллиарды строк кода операционной системы.
@@alexanderbelov6892 как это не известен не раз утекал полный код.. дапже мне попадался..
с++ я там не видел.. писать на нём кернель это безумие. да и невозможно даже теоретически...
а прикладные програмы конечно могут быть хоть на визуал басике...
да и на си-шарпе могут.
тут вопрос что считать операционкоя.. я то про кернель... вы видимо трактуете это малость пошире
Столько булшита про С++ я слышу только когда собеседую джуно-мидлов. «С быстрее С++ потому что в С++ есть ООП» - это что значит? Время компиляции? Время исполнения функции? Вы сами то понимаете что говорите?
ООП подразумевает большее потребление памяти, по сравнению с таким же кодом в процедурном стиле
Если вас спросят, какая машина быстрее - вы подумаете о том, какую машину быстрее сделать или какая машина быстрее ездит? Думаю и здесь так же - большинство не подумают про время компиляции, а про время исполнения. Или разработки. Только если вы не компилируете _все_ части программы каждый раз и программа на миллионы строчек.
вот я тоже че-то не понял. Если C++ подразумевает zero-cost abstractions, то почему он должен быть прям медленнее
@@СергейПресняков-о4р и больше сгенерированного машинного кода при использовании ООП.
@@PTolkachev Какого, виртуальных таблиц с rtti, да скрытый указатель?
Расскажите на каких компьютерах сейчас можно работать?А то от всего глаза болят.Должно же что-то быть для продолжительной работы!
IPS, anti blur, режим чтения
Спасибо, интересно, я сам кодер на с/с++, обажаю язык, хотя пишу 60-70% на нем и 30% на Ява. Избыточный функционал дает такие большие возможности, расширение построения архитектуры программы.
А что вы пишите на C++ и на C?
@@interesting4899 Ну много чего, разные перегонки данных, интеграционные системы, сервисы и т д. Для линукса давно не писал. на виндовс все.
@Dima Kiprich Не могу сказать
@@andreynaralchuk4382 скажи пожалуйста, паттерны ты когда изучил? сложно было?
@@botsynth Паттерны в теории знать хорошо, но мы живем в реальном мире, на практике они используются редко (в моей деятельности), но когда нужны тогда нужны.
Использовал Singleton, Factory, Proxy. Другие на практике не использовал.
Наверное я новичек. Но драйверы я не пишу, и ядро для Unreal Engine тоже ;)
Заморачиваться лучше стоить реальными задачами, а не тратить время на теорию.
Она забывается быстро. Особенно если не используется в дальнейшем.
не пинайте сильно ногами, я вообще не программер, но как то заинтересовала эта тема. Подскажите, а насколько сложно написать простенький терминал для торговли? Самый простой, просто свечи, несколько инструментов рисовалки и возможность размещать ордера, подсоединение к бирже по API. Почему задался таким вопросом. Все терминалы под Винду и единицы под МакОс. Под Линукс нет ничего (бесплатного). А я сижу на линуксе. Стоит ли вообще затеваться с этим делом (начинать осваивать программирование)? Спасибо.
Как забавно наблюдать букву Z на ноуте в сегодняшних реалиях
Хотя он вроде украинец
Ага, а я уже подумал что он из этих...
@@БоднарОлександр-г8к Ноутбук Украинец? Ладно шучу. Это HP Zbook, классный ноут и ничего общего с заблудившимися мудаками не имеет.
А он и не hoхол...
@@AlexEl327 а кто он? набутылка?
что за цикл until? В жаве тоже есть while и есть do-while. Лучше бы вспомнили триграфы. И кстати, язык D есть. Говорят - неплохой. Но Rust все равно лучше.
Благодарю за толковый ролик. Могли бы вы еще ролик создать с темой: стоит ли "дергаться" старикам 50+? К этому возрасту существующая работа надоедает, как горькая редька и хочется хотя бы подработки в другой сфере. Могут ли хоть на что-то рассчитывать старики? Или их удел - дворники, ночные сторожа либо охранники в пятерочке?
Думаю данный вопрос решать нужно каждому для себя, если есть силы/возможность/желание можно освоить, другой вопрос это быть "джуном" в 50+ лет когда коллеги будут в 2-2.5 раз моложе.
мдя, грубовато. Но - ладно. Идти вперед имеет смысл, если будет ожидаться какое-то вознаграждение.@@pushpushok
По поводу "написание энтерпрайз-приложения займет в 10 раз больше времени, чем на Шарпе или Джаве": С++ - это только язык, все зависит от используемых библиотек и фреймворков. Имею опыт написания одного модуля (правда, с довольно витиеватой и объемной логикой) сложной энтерпрайз-системы на С++, этот язык был выбран ибо этот модуль должен был без существенных доработок собираться под Виндовз, Линукс и Андроид. Использовались фреймворки Qt5 и Boost, разработка заняла не намного больше времени (примерно плюс 20-30%) относительно разработки аналогичного приложения на C# (основной язык системы, частью которой являлся модуль), ну и пришлось немного побороться с некоторыми сайд-эффектами от отсутствия управления памятью. Резюмируя скажу, что да, если не стоит специфичных задач, то С++ для написания UI-приложений энтерпрайз-уровня - не лучший выбор, однако, это не значит, что его так уж сложно использовать с такой целью, дополнительная сложность есть, но она не в 10 раз выше, чем на других более популярных языках,
Привязывать говнокод к конкретному ЯП... ну такое себе, говнокод больше относится к программисту.
подскажите где найти курс по языку "A" ? мне нужно по быстренькому написать REST API под него
Когда изучал С++ был реально удивлен, когда узнал, что и сам С++ написан на С++. Этим не может похвастаться ни один другой язык программирования. :-)
From some point C is written in C.
From some point Linux is developed in Linux.
From some point any language could be written on itself.
Python написанный на Python: PyPy
Python написанный на C: CPython
И таких куча вариаций
а си написан на C++
@@arbo_leet а С написан на PDP-11
@@arbo_leet а С написан на PDP-11
Сергей ну что вы говорите.... Есть api операционки, и больше чем этот api позволяет сделать нельзя. Поэтому залезть в любую область памяти и большую часть вами названную сделать не получится.
Что пишут на С++? … -Java… все что угодно на свете - это Java - подумал Сергей;)
Пойду вирусов накатаю 😂😂😂
Первое не унылое видео про програмирование увиденное мной в принципе! Всё по делу без воды, очень интересно, спасибо.
Я думаю, что для людей, которые C++ в своей работе постоянно не используют (вернее вообще не использует), не то чтобы прям супер-интересно что пишут на языке программирования C++, НО сам по себе ролик интересный. Правда в нём, тема так и не была раскрыта. Чисто для себя понял, что C++ используется для написания операционных систем и написания компьютерных игр. А в основном автор рассказывал об особенностях самого языка, что в принципе тоже познавательно.
Одна из моих любимых рубрик! Лайк до просмотра.
Где то слышал, что мак ос больше написана на object pascal ? Так ли это не знаю, Но мне проще написать программу с начало на object pascal. Потом перевести всё в си++. Знаю из врат, Но реально паскаль более упорядочен, и программу писать намного легче. Конечно после паскаля Go для меня это дауншифтинг... Пробывал и go и С++ остановился на Pascal. Конечно железки проще на си писать чем на паскале... Но большую часть времени это Lazarus, кросс платформа для разных осей...
Until в c++ небыло и нет. Никогда не понимал людей использующих венгерскую нотации. Операционные системы, ныне существующие, компиляторы, интерприьаторы, СУБД, написаны на си, а не с++.
нет например, reflection, который мне иногда так нужен и это очень печально. Например для сериализации и десериализации в С++ нужно писать функцию для обхода всех объектов в ручную! А вот в Python reflection есть, и сериализация или трансформация в JSON занимает одну строчку кода. Но, тем не менее С++ - это мой фаворит, особенно, если умело использовать его со знанием С/glib/stl.
То что в языке С++ нужно следить за выделением и освобождением ресурсов - это правда, но я не соглашусь с тем, что в современном С++ это нужно делась прямо явным образом во всех местах программы и уделять этому особое внимание. Для языка Си это наверно более актуально, а в С++ это автоматизируется за счёт конструкторов/деструкторов класса, динамических контейнеров, умных указателей, и других возможностей. Т.е. операторы new и delete всё реже используются в коде таким вот явным образом.
auto ptr = make_shared();
Как-то так. А код с new/delete заворачивается на ревью сразу.
Вот я - занимаюсь работами с физикой и электротехникой. Требуется создавать программы (с управлением от компьютера) для управления теми или иными физическими приборами. Что посоветуете?
Python
Хреново ты подготовился к выпуску, дядя. Ты просто вводишь людей в заблуждение, а твои воззрения сильно устарели.
6:12 Какой еще until в C++?!
6:36 Перегрузка оператора точка?! O'RLY?
7:54 Наоборот, венгерская нотация как раз и была придумана для повышения читаемости. Т.к. C/C++ это язык со строгой типизацией, а на то время, компиляторы обладали очень слабым статическим анализом, и чтобы избежать ошибок при использовании типов, эта нотация позволяла хотя бы визуально отслеживать, что как используется. Это сейчас есть интерактивные супер-удобные IDE с компиляцией прямо на лету, которые все ошибки подсвечивают, а тогда это был просто текстовый редактор и что пропустил компилятор (а пропускал он очень много), то ты потом часами отлавливал в отладчике.
9:55 Все не настолько печально - мы же имеем дело с объектами, а значит с инкапсуляцией. Как минимум, можно полагаться на области видимости и смарт-поинтеры, а также есть техники с подсчетом ссылок.
10:04 Здесь начинается полная чушь. Если имеются в виду современные операционные системы (Windows, Linux, macOS), то C++ позволяет сделать ровно то, что ему позволяет операционная система. Это просто способ записи алгоритмов, а не какая-то супер сила, которая позволяет обойти ОС и защиту процессора. Те же штуки с памятью можно проделывать и в C# например (да, есть там прямой доступ к памяти - читайте Рихтера) потому что есть API и есть поддержка среды исполнения. Все отличие от C++ при этом - это просто нельзя сделать случайно, но можно если действительно надо.
10:50 При наличии фреймворков и библиотек, писать на С+ не сложнее чем на других языках. На С++/Qt например, оно вообще от C#/.NET мало отличается.
11:20 Оценка сильно завышена. Да, оно сложнее, но не в 10 раз. При наличии опыта с определенной технологией, продуктивность например на Qt/Qml будет сравнима с тем же C#/WPF. При этом ограничений будет сильно меньше, а производительность лучше.
15:55 Фишка в том, что ВЕСЬ C++ учить и не надо. Достаточно знать в целом, что есть что и что пришло в язык в определенном стандарте, а детально изучать по необходимости. Т.к. не бывает проектов, в которых используется АБСОЛЮТНО ВСЕ из C++.
Тоже прифигел с until. Чувак вообще не в теме, чисто начитался интернетов без понимания. Ага, на С++ он программировал.
Очевидно рекламируемые курсы ровно такие де
А то c++ гораздо сложнее других популярных языков, к примеру Java, это правда?
@@metrstiln1159 учи Си - не помешает. А потом можно более сложный С++, если будет желание. Я не назову себя большим профессионалом, но Си думаю знаю не плохо, по сравнению с С++. А по практическому применению, ну я например писал на Си свои дипломные писал и еще cgi-скрипты для своего сервера.
В некоторых вузах до сих пор одной из работ для допуска к зачету, является написание простенькой программы на ассемблере.
И студентам на неё хватает от одного вечера до месяца.
Да и программа занимает примерно от 100 до 500 строк, из которых 20-30 одинаковые (константы, указатели).
Шикарный язык, для изучения устройства процессора, а так же для понимания что любые данные, независимо от типа это про набор байтов, ибо немного поигравшись, можно написать программу, которая сама себя переписывает!
Ну или при ошибке можно записать данные в область видеопамяти или ещё куда и получить весёлые артефакты.
Про байты я узнал в самом начале изучения C#, а вот про повторение кода - неужели там нету функций?
Судя по вашей логике. Да он нам и ***** не нужен ваш c++
писал на многих языках, C++ как качественный multitool, но иногда тяжело читаемый (хотя зависит от качества программиста), хотя новые стандарты вносят свои коррективы. в случае когда нужен performance (редкие ситуации) я беру С и иногда поглядываю что там у С++ нового, а нового из boost в стандарт много чего добавляют, судя по всему, С++ активно развивается и начинает выглядеть всё более привлекательным по сравнению с другими языками, иногда подумываю обратно к нему вернуться уже 7 лет на нём продуктового ничего не писал )
Всегда оставляю фигурную скобку на строке, это очень удобно в написании, но иногда надо закомментить все условие, и тогда приходится ее переносить, чтобы не искать и не комментить закрывающую. Мне кажется, это не очень большая проблема :)
Что в этом удобного?
На 9:57 не совсем правда. А как же COM ATL и так называемые умные классы и типы? Не нужно следить за всеми объектами. При уходе из области видимости память освобождается в простых случаях. Достаточно переопределить деструктор и конструктор класса определенным образом. Посмотрите к примеру реализацию шаблона CAtlArray и в частности его деструктор. А коллектор реализовать для объектов COM совсем просто. Только разница в том что выполнение коды не останавливается при очистке объектов или освобождении памяти. И реализация поколений может быть своя наиболее эффективная даже чем в JAVA. Изучите шаблоны и ATL на этом сделано всё нутро Windows. Технология пришла из Linux там называется Cobra.
Сергей, сделайте видео про Solidity пожалуйста :)
Не проще от профильных каналов посмотреть? Что он тебе расскажет, как много смартконтрактов он написал?)
Где-то в 19м году подучил с++ пару дней и теперь любой язык интуитивно понятен, уже в 22м пишу ботов для игр и программы для оптимизации любых игр(даже танков запустил на старом компе сделав какие-то 15 строчек)
Ноут Ваш в 2022 крипово выглядит(((((((
Нет, серьезно.
Смотрю ролик с тем как Сергей что-то рассказывает интересное и как-то настраиваюсь на работу, а дальше переключаюсь на музыку)
Хотите стать классным программистом, учитесь на C, параллельно Cpp. Потом Java, C#, тем более Python станут доступными очень быстро. По поводу уборки мусора. В C# можно очистить ресурсы в ручную, но уборщик сделает это быстрее (проверено). Современный С++., компилятор ++20 делает исходники, которые быстрее чистого С. При программировании микроконтроллеров все больше переходят с С на С++. Поэтому С++ и С будут востребованы еще долгое время. Тесты в Google обязательно включают С++. И центральное место в них управление памятью. Windows написан на C и С++. Последние версии Framework на C#.
Нет, учите технологию, которой планируете пользоваться. Вот и все. Никаких С потом CPP потом Java. Такой путь займет ооочень много времени.
@@nikitabelov1478 Знаю C, знаю СPP, знаю C#, знаю Java - кому как. Но сейчас учу студентов в Калифорнии и Европе. 1 курс С, C++. Там, кто на 1 курсе не прошел C и С++ выбирают смежные специальности. Например в Австрии на зачете тебе дают пустой листок и ты должен написать код на С не пользуясь компьютером. Кроме того Алгоритмы и стуктуры данных, формальные грамматики и языки, дискретная математика и т.д. Например в Гугл считают, что если ты овладел C, то овладеешь и go. Там тест C, C++ обязательный!
Не сдал, выгонят сразу.
@@woodlandfantomas2044 Ну да, все же сразу в Гугл пойдут работать и обязательно туда, где требуется C/C++, даже если они до этого программировали на Java.
Ты-то знаешь, но ты не в начале своего пути, а человек с опытом уже.
@@nikitabelov1478 первый тест С/ C++ алгоритмы и структуры данных. Я говорю про то, что изучают на первых курсах университетов программисты.
Что за until в C++, можно поподробнее? :)
С++ - хороший язык, просто нужно знать, как его готовить. Когда я создаю новый класс, я в первую очередь продумываю, как он будет занимать память и как освобождать. Потом уже его наполняю функциональным содержимым. Так же, язык очень любит, когда проект нормально структурирован, каждая сущность является самостоятельной, а проекте чётко распланирована последовательность всех действий.
Много раз встречал проекты, где одна структура заполняется по частям в различных частях программы что в итоге выливается в то, что правка кода в одном месте ломает функционал в другом. Если такая ситуация происходит при разработке, значит что-то не так со структурой проекта и она должна быть пересмотрена.
Ну-ну, пока ты пересматриваешь структуру проекта, уйдёт много часов чтобы заново всё отрефакторить. Если какая-то часть кода сложно модифицируется, но работает без багов и прочих проблем, то нужно не менять существующее, а надстраивать новое, раз уж структура программы по вашему неудачная. А вот потом уже как будут силы со временем, можно будет переделать тот кусок хардкода, когда это будет целесообразно.
Как писал Страуструп - "Появилось понятие, создай для него класс"
Звучит как прохладная история человека, который никогда не нюхал пороху. Я вот вообще не думаю об управлении памятью. Нафига??? delete используется только по праздникам, раз в пятилетку. Хороший проект - это проект, который вообще не нужно никак специально структуировать. А напротив, можно говнокодить по принципу "тяп ляп" и в продакшен.
Если его не удастся выучить полностью, получится ли на нём работать(трудоустроиться) ?
Не знаешь С++, не программист!
не, не знаешь ассемблер - не программист!
Не знаешь машинных кодов - не программист)
Не знаешь что такое [RS, T, D] Flip Flop, EEPROM, сдвиговый регистр, прерывания? - не программист
Не знаешь что такое уровень валентной зоны, постоянная планка, арсенид галлия, квантовая оптика, вектор обратной решетки, собственная проводимость, экситонные спектры, p-n переход - не программист
@@macaronivirus5913 А это нужно знать?Вот в чем вопрос)
Я конечно понимаю, что вы скорее блогер, чем разработчик, но может не стоит на столько вводить в заблуждение. Доступа к регистрам в с++ нет(без ассемблерных вставок). Доступ к памяти разных процессов разруливается на уровне железа(у процессора есть специальный модуль), конечно есть атаки типа мелдауна или спектра, но их можно реализовать даже на js.
Спасибо за ваш контент он сильно помогает
То есть на курсе по UE научат с++ с нуля и для использования в движке?
На С++ писать сложнее чем на питоне раза в 2, а не в 10. Просто, когда выделяешь память, тут же нужно прописывать ее высвобождение. Да и изучить минимально необходимое количество синтаксиса можно, а более сложные конструкции осваивать позже. Очень зависит от того, как подается материал.
в C++11 уже давно smart pointer есть, он сам осовобождает.
@@MrLaSerj Если что-то можешь сделать сам - делай. Придется проект на предыдущих версиях делать - будешь долго удивляться потери памяти. Поддерживать приходится проекты и 10 и 20 летней давности. Тем более на встраиваемых микроконтроллерах. На них нового компилятора может и не быть. Как и лишней памяти. Как минимум, это нужно уметь. А для того - практиковаться.
Видео неплохое, но все же очень поверхностное. Например, "запустил код, а компьютер БУМ" у меня ни разу не возникало. Память это вообще вечная мантра тех, кто С++ толком не связывался. Весь stl написан с учетом RAII, boost, по сути, тоже. Если откровенно не говнокодить - возможность потерять память ничтожно мала.
ну да конечно, баги в плюсах сами себя ловят
C++ намного более защищенный язык чем С, там можно понаделать ограничений как защита от дурака. В то же время я не встречал C++ проектов, которые были бы написаны канонически по книжкам и были легко читаемы. Код на С намного проще переваривается, кое-где его даже и получается меньше, ну да есть большие шансы выстрелить в ногу, но C код можно хотя бы поддерживать другому человеку, а не сразу выбрасывать и переписывать. Боб Мартин сказал, что проблема С была в бесконтрольном использовании указателей на функции, поэтому были сделаны вот эти классы с виртуальными вызовами. Но делать интерфейс с одной единственной виртуальной функцией не то ли самое, как просто передать указатель на функцию? Понимаю их любовь к C++ конструкциям и к библиотеке boost, это люди которым нравится все красивое, дорогие спортивные автомобили, яхты, меткие и емкие выражения, жесткие структуры, которые другой програмист недоучка не сможет не только адаптировать под себя, но и даже понять, авторитарное управление проектом. По-моему C++ в отличие от C позволяет очень долго поддерживать плохую архитектуру, вставляя костыли. Это и хорошо и плохо. С одной стороны проект как бы развивается, с другой он мог бы быть более понятным, на C сложные конструкции невозможно поддерживать уже на первых этапах и от них приходится отказываться. Еще один минус - в C++ как например лямбда, STL или исключение транслируется в ассемблер? Как это все писать под микроконтроллер, если ты не контролируешь выход?
Не надо писать под контроллеры с исключениями и STL)) Но если очень хочется, то выход ассемблера всегда можно посмотреть и оценить, потянет по перфомансу или всё же лучше написать в стиле Си.
Что за язык А? Разве язык B не появился как упрощенная версия BCPL?
Стрим будет?
Я не программировал на C++, но программировал на СИ, и на самом деле, слушая видео, я понимаю, что основные "крутые возможности" C++ - свободно себя чувствуют на СИ, по типу например, полного контроля памяти, определение того, к чему она принадлежит, макросы, это всё есть в СИ
А классы? А модули?
@@linuxoidovich Я говорю о тех вещах, которые сказаны в видео, а модули... ты серьёзно?) Какой язык программирования обходится без модулей?)
@@bonefort1437 Си. Там модулей нету.
В видео же сказано что ++ это надстройка ООП над си, и всё.
Как специалист могу сказать что на плюсах пишут всьо, просто фсьооо, от калькулятора даже самого простого который только и умеет что складывать два числа и все, и вплоть до квантовой механики и принципа функционирования атомов, по этому учите плюсы детишки!
вопрос не в том, что на нем можно написать все, а за что тебе заплатят деньги
Воу, давно не было видосов по плюсам, спасибки!